diff --git a/CHANGES.erp5.util.txt b/CHANGES.erp5.util.txt index 6d1749936d73e19401ba57955956b6506f6023f1..b6c10f2a55e102a8dff2998537932776f88d31b2 100644 --- a/CHANGES.erp5.util.txt +++ b/CHANGES.erp5.util.txt @@ -1,6 +1,31 @@ Changes ======= +0.4.22 (2013-01-08) +------------------- + + * erp5.util.taskdistribution: + + - fix regression when used on Python < 2.7 + +0.4.21 (2013-01-07) +------------------- + + * erp5.util.taskdistribution: + + - really fix lock to avoid errors with concurrent RPC calls + + * erp5.util.testnode: + + - do not run test suites on deleted branches + +0.4.20 (2012-12-19) +------------------ + + * erp5.util.testnode: + + - Make sure to kill grandchilds when killing a process [Sebastien Robin] + 0.4.19 (2012-12-17) ------------------ diff --git a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Accounting%20Transaction/add_accounting_transaction_line.xml b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Accounting%20Transaction/add_accounting_transaction_line.xml index 6bd4693e67bd2af7d656cd958146232c071f808c..28d98d116c6dcd588314e859bb7fb644155c2c9f 100644 --- a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Accounting%20Transaction/add_accounting_transaction_line.xml +++ b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Accounting%20Transaction/add_accounting_transaction_line.xml @@ -73,7 +73,7 @@ <dictionary> <item> <key> <string>text</string> </key> - <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?portal_type=Accounting+Transaction+Line</string> </value> + <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?line_portal_type=Accounting+Transaction+Line</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Internal%20Invoice%20Transaction/add_internal_invoice_transaction_line.xml b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Internal%20Invoice%20Transaction/add_internal_invoice_transaction_line.xml index 68298bf62703c8b706bf531c00ef277ba9e6ac47..de659178c58866eaba050a25129c9765f24e97d1 100644 --- a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Internal%20Invoice%20Transaction/add_internal_invoice_transaction_line.xml +++ b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Internal%20Invoice%20Transaction/add_internal_invoice_transaction_line.xml @@ -73,7 +73,7 @@ <dictionary> <item> <key> <string>text</string> </key> - <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?portal_type=Internal+Invoice+Transaction+Line</string> </value> + <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?line_portal_type=Internal+Invoice+Transaction+Line</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Payment%20Transaction/add_accounting_transaction_line.xml b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Payment%20Transaction/add_accounting_transaction_line.xml index 6bd4693e67bd2af7d656cd958146232c071f808c..28d98d116c6dcd588314e859bb7fb644155c2c9f 100644 --- a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Payment%20Transaction/add_accounting_transaction_line.xml +++ b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Payment%20Transaction/add_accounting_transaction_line.xml @@ -73,7 +73,7 @@ <dictionary> <item> <key> <string>text</string> </key> - <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?portal_type=Accounting+Transaction+Line</string> </value> + <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?line_portal_type=Accounting+Transaction+Line</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Purchase%20Invoice%20Transaction/add_purchase_invoice_transaction_line.xml b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Purchase%20Invoice%20Transaction/add_purchase_invoice_transaction_line.xml index 2dd0e43fa1a69c4abad2691e7f5cd9247bde11a0..58ecf53eb92958b90e9679c86bd0120772349807 100644 --- a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Purchase%20Invoice%20Transaction/add_purchase_invoice_transaction_line.xml +++ b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Purchase%20Invoice%20Transaction/add_purchase_invoice_transaction_line.xml @@ -73,7 +73,7 @@ <dictionary> <item> <key> <string>text</string> </key> - <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?portal_type=Purchase+Invoice+Transaction+Line</string> </value> + <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?line_portal_type=Purchase+Invoice+Transaction+Line</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Sale%20Invoice%20Transaction/add_sale_invoice_transaction_line.xml b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Sale%20Invoice%20Transaction/add_sale_invoice_transaction_line.xml index 89adf1abeb1a83e3841f7349f5fc7c42cf47a2c4..49bb7794e0268cdd3bb445d95dbdf69f3762fdbc 100644 --- a/bt5/erp5_accounting/ActionTemplateItem/portal_types/Sale%20Invoice%20Transaction/add_sale_invoice_transaction_line.xml +++ b/bt5/erp5_accounting/ActionTemplateItem/portal_types/Sale%20Invoice%20Transaction/add_sale_invoice_transaction_line.xml @@ -73,7 +73,7 @@ <dictionary> <item> <key> <string>text</string> </key> - <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?portal_type=Sale+Invoice+Transaction+Line</string> </value> + <value> <string>string:${object_url}/AccountingTransaction_viewAddAccountingTransactionLineDialog?line_portal_type=Sale+Invoice+Transaction+Line</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_addAccountingTransactionLine.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_addAccountingTransactionLine.xml index c6c4eea781312e2bea3880c7c727ec2b2f8861fa..c5896d5e3a2d19d29974d47d23f4499b79733646 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_addAccountingTransactionLine.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_addAccountingTransactionLine.xml @@ -58,7 +58,7 @@ from Products.ERP5Type.Message import translateString\n request = container.REQUEST\n \n for i in range(line_count):\n - context.newContent(portal_type=portal_type)\n + context.newContent(portal_type=line_portal_type)\n \n request.set(\'portal_status_message\',\n translateString(\'Accounting Transaction Lines added.\'),)\n @@ -67,7 +67,7 @@ return getattr(context, form_id)()\n </item> <item> <key> <string>_params</string> </key> - <value> <string>form_id=\'view\', portal_type=\'Accounting Transaction Line\', line_count=1</string> </value> + <value> <string>form_id=\'view\', line_portal_type=\'Accounting Transaction Line\', line_count=1</string> </value> </item> <item> <key> <string>id</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_init.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_init.xml index 22b415339b52a837c2d1286d40c10f02eaa35391..4d7275e56f1785c1fe32dedfdb1b7946f3f9e2cf 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_init.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_init.xml @@ -50,15 +50,15 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>transaction = context\n -\n -if kw.get(\'created_by_builder\', 0): \n + <value> <string>if kw.get(\'created_by_builder\', 0): \n return\n \n -transaction.newContent(portal_type=\'Accounting Transaction Line\', )\n -transaction.newContent(portal_type=\'Accounting Transaction Line\', )\n +preference_tool = context.getPortalObject().portal_preferences\n +context.setSourceSection(preference_tool.getPreferredAccountingTransactionSourceSection())\n +context.setResource(preference_tool.getPreferredAccountingTransactionCurrency())\n \n -context.AccountingTransaction_initFromPreferences()\n +context.newContent(portal_type=\'Accounting Transaction Line\', )\n +context.newContent(portal_type=\'Accounting Transaction Line\', )\n </string> </value> </item> <item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog.xml index f7c079412732f1ac426aed3b121361f867c01fb1..5827d2241e5e1b0ee8c046e3ca9fabdee2f28952 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog.xml @@ -86,7 +86,7 @@ <key> <string>left</string> </key> <value> <list> - <string>your_portal_type</string> + <string>your_line_portal_type</string> <string>your_line_count</string> </list> </value> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog/your_portal_type.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog/your_line_portal_type.xml similarity index 98% rename from bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog/your_portal_type.xml rename to bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog/your_line_portal_type.xml index be8c9578462643ea58a76c407fd51f242bb03554..afa5b614c46e2b4ca48b0222fb506ca98931dcaf 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog/your_portal_type.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_viewAddAccountingTransactionLineDialog/your_line_portal_type.xml @@ -8,7 +8,7 @@ <dictionary> <item> <key> <string>id</string> </key> - <value> <string>your_portal_type</string> </value> + <value> <string>your_line_portal_type</string> </value> </item> <item> <key> <string>message_values</string> </key> @@ -267,7 +267,7 @@ <dictionary> <item> <key> <string>_text</string> </key> - <value> <string>request/portal_type</string> </value> + <value> <string>request/line_portal_type</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/InternalInvoiceTransaction_init.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/InternalInvoiceTransaction_init.xml index 371ef5577d85c27fd940ae0058600949d8e7997a..8cbcdbafe59caf874a32a7eaf31a00fcb9a073eb 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/InternalInvoiceTransaction_init.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/InternalInvoiceTransaction_init.xml @@ -50,22 +50,15 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>transaction = context\n -\n -if kw.get(\'created_by_builder\', 0): \n + <value> <string>if kw.get(\'created_by_builder\', 0): \n return\n \n -transaction.newContent(portal_type=\'Internal Invoice Transaction Line\', )\n -transaction.newContent(portal_type=\'Internal Invoice Transaction Line\', )\n -\n -from Products.CMFCore.utils import getToolByName\n -\n -transaction = context\n -preference_tool = getToolByName(context, \'portal_preferences\')\n +preference_tool = context.getPortalObject().portal_preferences\n +context.setSourceSection(preference_tool.getPreferredAccountingTransactionSourceSection())\n +context.setResource(preference_tool.getPreferredAccountingTransactionCurrency())\n \n -transaction.edit (\n - source_section = preference_tool.getPreferredAccountingTransactionSourceSection(),\n - resource = preference_tool.getPreferredAccountingTransactionCurrency())\n +context.newContent(portal_type=\'Internal Invoice Transaction Line\', )\n +context.newContent(portal_type=\'Internal Invoice Transaction Line\', )\n </string> </value> </item> <item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_init.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_init.xml index f61b037978cd0de3fbbbc3a339ec2c163d3b24e4..b85b13fac300c0ee05ab39cfe7071e94fcbfd4fb 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_init.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_init.xml @@ -50,19 +50,19 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>transaction = context\n -\n -if kw.get(\'created_by_builder\', 0): \n + <value> <string>if kw.get(\'created_by_builder\', 0): \n return\n \n -transaction.newContent(portal_type=\'Accounting Transaction Line\',\n - id=\'receivable\', )\n -transaction.newContent(portal_type=\'Accounting Transaction Line\',\n - id=\'payable\', )\n -transaction.newContent(portal_type=\'Accounting Transaction Line\',\n - id=\'bank\', )\n +preference_tool = context.getPortalObject().portal_preferences\n +context.setSourceSection(preference_tool.getPreferredAccountingTransactionSourceSection())\n +context.setResource(preference_tool.getPreferredAccountingTransactionCurrency())\n \n -context.AccountingTransaction_initFromPreferences()\n +context.newContent(portal_type=\'Accounting Transaction Line\',\n + id=\'receivable\')\n +context.newContent(portal_type=\'Accounting Transaction Line\',\n + id=\'payable\')\n +context.newContent(portal_type=\'Accounting Transaction Line\',\n + id=\'bank\')\n </string> </value> </item> <item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_zSelectMovement.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_zSelectMovement.xml index 8d28cee2709f3e1b67e3c50b89ee8b6ba96dc753..5337677cc7d7de364b578570944f2844babfa8b7 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_zSelectMovement.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PaymentTransaction_zSelectMovement.xml @@ -25,7 +25,8 @@ <value> <string>from_table_list:list\r\n where_expression\r\n order_by_expression\r\n -max_movement_date</string> </value> +max_movement_date\r\n +limit_expression</string> </value> </item> <item> <key> <string>cache_time_</string> </key> @@ -55,11 +56,11 @@ max_movement_date</string> </value> </item> <item> <key> <string>max_cache_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>max_rows_</string> </key> - <value> <int>1000</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>src</string> </key> @@ -107,6 +108,9 @@ WHERE\n \n <dtml-if order_by_expression>\n ORDER BY <dtml-var order_by_expression>\n +</dtml-if>\n +<dtml-if limit_expression>\n +LIMIT <dtml-var limit_expression>\n </dtml-if> ]]></string> </value> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PurchaseInvoiceTransaction_init.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PurchaseInvoiceTransaction_init.xml index 32d87f65f5ae1ef372fba67ca4b2683c69e4b903..687b26f9b4a0c80bd954855f4e7153a514dfd172 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PurchaseInvoiceTransaction_init.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/PurchaseInvoiceTransaction_init.xml @@ -50,25 +50,22 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>transaction = context\n -\n -if kw.get(\'created_by_builder\', 0): \n + <value> <string>if kw.get(\'created_by_builder\', 0): \n return\n \n -from Products.CMFCore.utils import getToolByName\n -preference_tool = getToolByName(context, \'portal_preferences\')\n +preference_tool = context.getPortalObject().portal_preferences\n +context.setDestinationSection(preference_tool.getPreferredAccountingTransactionSourceSection())\n +context.setResource(preference_tool.getPreferredAccountingTransactionCurrency())\n \n -transaction.edit (\n - # XXX getPreferredAccountingTransactionSourceSection is definitively a bad name ...\n - destination_section = preference_tool.getPreferredAccountingTransactionSourceSection(),\n - resource = preference_tool.getPreferredAccountingTransactionCurrency())\n +if \'Invoice Line\' in context.getVisibleAllowedContentTypeList():\n + return\n \n -transaction.newContent(portal_type=\'Purchase Invoice Transaction Line\',\n - id=\'expense\', )\n -transaction.newContent(portal_type=\'Purchase Invoice Transaction Line\',\n - id=\'payable\', )\n -transaction.newContent(portal_type=\'Purchase Invoice Transaction Line\',\n - id=\'refundable_vat\', )\n +context.newContent(portal_type=\'Purchase Invoice Transaction Line\',\n + id=\'expense\', )\n +context.newContent(portal_type=\'Purchase Invoice Transaction Line\',\n + id=\'payable\', )\n +context.newContent(portal_type=\'Purchase Invoice Transaction Line\',\n + id=\'refundable_vat\', )\n </string> </value> </item> <item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SaleInvoiceTransaction_init.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SaleInvoiceTransaction_init.xml index f5cf7b7e500ae197269efc8aaae8482d22f0cf4c..cd08d6d57ae81e766e282d876ee989560375bf46 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SaleInvoiceTransaction_init.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SaleInvoiceTransaction_init.xml @@ -50,19 +50,22 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>transaction = context\n -\n -if kw.get(\'created_by_builder\', 0): \n + <value> <string>if kw.get(\'created_by_builder\', 0): \n return\n \n -transaction.newContent(portal_type=\'Sale Invoice Transaction Line\',\n - id=\'income\',)\n -transaction.newContent(portal_type=\'Sale Invoice Transaction Line\',\n - id=\'receivable\', )\n -transaction.newContent(portal_type=\'Sale Invoice Transaction Line\',\n - id=\'collected_vat\',)\n +preference_tool = context.getPortalObject().portal_preferences\n +context.setSourceSection(preference_tool.getPreferredAccountingTransactionSourceSection())\n +context.setResource(preference_tool.getPreferredAccountingTransactionCurrency())\n + \n +if \'Invoice Line\' in context.getVisibleAllowedContentTypeList():\n + return\n \n -context.AccountingTransaction_initFromPreferences()\n +context.newContent(portal_type=\'Sale Invoice Transaction Line\',\n + id=\'income\',)\n +context.newContent(portal_type=\'Sale Invoice Transaction Line\',\n + id=\'receivable\', )\n +context.newContent(portal_type=\'Sale Invoice Transaction Line\',\n + id=\'collected_vat\',)\n </string> </value> </item> <item> diff --git a/bt5/erp5_accounting/bt/revision b/bt5/erp5_accounting/bt/revision index f0cec364daf9d24c135402285daa00afa2fb66d9..2c87a4b00c1b121bb7d853c7d6db169a99cce76a 100644 --- a/bt5/erp5_accounting/bt/revision +++ b/bt5/erp5_accounting/bt/revision @@ -1 +1 @@ -1505 \ No newline at end of file +1508 \ No newline at end of file diff --git a/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_purchase_invoice_transaction_create_reversal.html.xml b/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_purchase_invoice_transaction_create_reversal.html.xml index 5a64612210f20e6a124e9638dc7f923ec75ab1fa..a57a3afd7802df739c73edf4a955217b52014099 100644 --- a/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_purchase_invoice_transaction_create_reversal.html.xml +++ b/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_purchase_invoice_transaction_create_reversal.html.xml @@ -77,6 +77,21 @@ Test for Creating Reversal Transaction for a Purchase Invoice Transaction\n <td>select_action</td>\n <td>Add Purchase Invoice Transaction</td>\n </tr>\n +<tr>\n + <td>selectAndWait</td>\n + <td>name=select_action</td>\n + <td>label=Add Accounting Transaction Lines</td>\n +</tr>\n +<tr>\n + <td>type</td>\n + <td>name=field_your_line_count</td>\n + <td>3</td>\n +</tr>\n +<tr>\n + <td>clickAndWait</td>\n + <td>id=dialog_submit_button</td>\n + <td></td>\n +</tr>\n <tr>\n <td>clickAndWait</td>\n <td>link=Accounting View</td>\n diff --git a/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_sale_invoice_transaction_create_reversal.html.xml b/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_sale_invoice_transaction_create_reversal.html.xml index 9ff9fe2884102d94b2eebb6ecf456ebc7dc6486a..7fe2c37bc4a8ee8b9bf420eb3818848b436b8044 100644 --- a/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_sale_invoice_transaction_create_reversal.html.xml +++ b/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/accounting_transaction_zuite/test_sale_invoice_transaction_create_reversal.html.xml @@ -77,6 +77,21 @@ Test for Creating Reversal Transaction for a Sale Invoice Transaction\n <td>select_action</td>\n <td>Add Sale Invoice Transaction</td>\n </tr>\n +<tr>\n + <td>selectAndWait</td>\n + <td>name=select_action</td>\n + <td>label=Add Accounting Transaction Lines</td>\n +</tr>\n +<tr>\n + <td>type</td>\n + <td>name=field_your_line_count</td>\n + <td>3</td>\n +</tr>\n +<tr>\n + <td>clickAndWait</td>\n + <td>id=dialog_submit_button</td>\n + <td></td>\n +</tr>\n <tr>\n <td>clickAndWait</td>\n <td>link=Accounting View</td>\n diff --git a/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/test_accounting_module/test_accounting_transaction_module_change_state.html.xml b/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/test_accounting_module/test_accounting_transaction_module_change_state.html.xml index 3fd106ad9ef121b8725f6a043744e5936d86e9cc..51d6ab753442d569cc83a6df479ff2726841e6ca 100644 --- a/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/test_accounting_module/test_accounting_transaction_module_change_state.html.xml +++ b/bt5/erp5_accounting_ui_test/PathTemplateItem/portal_tests/accounting_zuite/test_accounting_module/test_accounting_transaction_module_change_state.html.xml @@ -86,7 +86,7 @@ Test changing state in accounting module (with custom search)\n <tr>\n <td>assertText</td>\n <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n - <td>2 records</td>\n + <td>1 records</td>\n </tr>\n <tr>\n <td>assertText</td>\n diff --git a/bt5/erp5_advanced_invoicing/SkinTemplateItem/portal_skins/erp5_advanced_invoicing/Alarm_buildInvoice.xml b/bt5/erp5_advanced_invoicing/SkinTemplateItem/portal_skins/erp5_advanced_invoicing/Alarm_buildInvoice.xml index 60dd445be0ac3f2da6a60f5258c036acf27fdc33..a35e06ac7abdd0fd298dddb3635953662be3579a 100644 --- a/bt5/erp5_advanced_invoicing/SkinTemplateItem/portal_skins/erp5_advanced_invoicing/Alarm_buildInvoice.xml +++ b/bt5/erp5_advanced_invoicing/SkinTemplateItem/portal_skins/erp5_advanced_invoicing/Alarm_buildInvoice.xml @@ -78,6 +78,7 @@ for builder_id in builder_id_list:\n \'_updateSimulation\')\n activate_kw = dict(tag=index_tag)\n builder.activate(\n + limit=100,\n serialization_tag=serialization_tag,\n after_tag=after_tag,\n after_method_id=after_method_id).build(activate_kw=activate_kw)\n diff --git a/bt5/erp5_advanced_invoicing/bt/revision b/bt5/erp5_advanced_invoicing/bt/revision index e3b5acb83455926f7a928b8ab4de46bfdb4605bd..615088b548a173a5102a2accdb3bfc18588f1752 100644 --- a/bt5/erp5_advanced_invoicing/bt/revision +++ b/bt5/erp5_advanced_invoicing/bt/revision @@ -1 +1 @@ -107 \ No newline at end of file +108 \ No newline at end of file diff --git a/bt5/erp5_bearer_token/TestTemplateItem/testERP5BearerToken.py b/bt5/erp5_bearer_token/TestTemplateItem/testERP5BearerToken.py index a452d8ac95a1fe9fb32adb27010817807fc3cb67..3272246cbc4b93d2945bf7509cd502e70341808e 100644 --- a/bt5/erp5_bearer_token/TestTemplateItem/testERP5BearerToken.py +++ b/bt5/erp5_bearer_token/TestTemplateItem/testERP5BearerToken.py @@ -1,7 +1,6 @@ # Copyright (c) 2002-2012 Nexedi SA and Contributors. All Rights Reserved. from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -import transaction from DateTime import DateTime class TestERP5BearerToken(ERP5TypeTestCase): @@ -29,7 +28,6 @@ class TestERP5BearerToken(ERP5TypeTestCase): person = person_module.newContent(portal_type='Person', reference='P' + reference) person.newContent(portal_type = 'Assignment').open() - transaction.commit() self.tic() return person @@ -39,7 +37,6 @@ class TestERP5BearerToken(ERP5TypeTestCase): priority=1, preferred_bearer_token_key=self.test_id) self.preference.enable() - transaction.commit() self.tic() def setupBearerExtraction(self): @@ -53,7 +50,7 @@ class TestERP5BearerToken(ERP5TypeTestCase): ('IExtractionPlugin',)) elif len(bearer_extraction_list) > 1: raise ValueError - transaction.commit() + self.commit() def afterSetUp(self): """ @@ -64,12 +61,10 @@ class TestERP5BearerToken(ERP5TypeTestCase): self.person = self.createPerson(self.test_id) self.setUpBearerTokenKey() self.setupBearerExtraction() - transaction.commit() self.tic() def beforeTearDown(self): self.portal.portal_preferences.deleteContent(self.preference.getId()) - transaction.commit() self.tic() def test_working_token(self): @@ -94,16 +89,13 @@ class TestERP5BearerToken(ERP5TypeTestCase): def test_no_bearer_token_key(self): self.preference.edit(preferred_bearer_token_key='') - transaction.commit() self.tic() - transaction.commit() self.assertRaises(ValueError, self.person.Person_getBearerToken) def test_changed_bearer_token_key(self): token, expiration_time = self.person.Person_getBearerToken() self.portal.REQUEST._auth = 'Bearer %s' % token self.preference.edit(preferred_bearer_token_key='changed') - transaction.commit() self.tic() reference = self.getTokenCredential(self.portal.REQUEST) self.assertEqual(reference, None) diff --git a/bt5/erp5_bearer_token/bt/revision b/bt5/erp5_bearer_token/bt/revision index 9a037142aa3c1b4c490e1a38251620f113465330..9d607966b721abde8931ddd052181fae905db503 100644 --- a/bt5/erp5_bearer_token/bt/revision +++ b/bt5/erp5_bearer_token/bt/revision @@ -1 +1 @@ -10 \ No newline at end of file +11 \ No newline at end of file diff --git a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerUsername.xml b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerUsername.xml index 34208b3c78edde0c11006babfb95eea1520385ec..efa547169d87b7f6dc9791f0fe6b7d43e28d6b99 100644 --- a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerUsername.xml +++ b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerUsername.xml @@ -60,6 +60,11 @@ for reference in reference_list:\n portal = context.getPortalObject()\n reference = editor\n \n +# check this is a not a reference from acl_user\n +if portal.acl_users.getUserById(reference) is not None or \\\n + portal.aq_parent.acl_users.getUserById(reference) is not None:\n + return 0\n +\n # ... then check already created accounts\n if portal.portal_catalog.getResultValue(\n reference = reference, \n @@ -93,6 +98,14 @@ return 1\n <key> <string>_params</string> </key> <value> <string>editor, REQUEST</string> </value> </item> + <item> + <key> <string>_proxy_roles</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>BusinessConfiguration_validateCustomerUsername</string> </value> diff --git a/bt5/erp5_configurator/bt/revision b/bt5/erp5_configurator/bt/revision index ea5ca3642f81687180522c5054a661171fa6dea2..dd35c6b71fc80057f07694a1d0e0ee7348383b74 100644 --- a/bt5/erp5_configurator/bt/revision +++ b/bt5/erp5_configurator/bt/revision @@ -1 +1 @@ -547 \ No newline at end of file +548 \ No newline at end of file diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardInvoice.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardInvoice.xml index cb4f058aec42205724a59c37a1e19a9bd1ae30ec..36fcdb5cf2b4c095695e1cc9897894a1398f2da7 100644 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardInvoice.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardInvoice.xml @@ -85,6 +85,7 @@ for builder_id in builder_id_list:\n \'_updateSimulation\')\n activate_kw = dict(tag=index_tag)\n builder.activate(\n + limit=100,\n serialization_tag=serialization_tag,\n after_tag=after_tag,\n after_method_id=after_method_id).build(activate_kw=activate_kw)\n diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardPackingList.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardPackingList.xml index 7bad970e5f7a13eb29b25e9b73b7e48eb63537a7..c7d9b8ce2904fb4dc44fb44e856d048959089f5a 100644 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardPackingList.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/Alarm_buildConfiguratorStandardPackingList.xml @@ -82,6 +82,7 @@ for builder_id in builder_id_list:\n \'_updateSimulation\')\n activate_kw = dict(tag=index_tag)\n builder.activate(\n + limit=100,\n serialization_tag=serialization_tag,\n after_tag=after_tag,\n after_method_id=after_method_id).build(activate_kw=activate_kw)\n diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupEmployeeListForm/your_reference.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupEmployeeListForm/your_reference.xml index a40d1a3b3509cd9416e959ecbb5eab4a4826c8a9..1e519555b5d9bb687634ef711c8b177d22342a98 100644 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupEmployeeListForm/your_reference.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupEmployeeListForm/your_reference.xml @@ -10,6 +10,7 @@ <key> <string>delegated_list</string> </key> <value> <list> + <string>default</string> <string>external_validator</string> </list> </value> @@ -60,6 +61,16 @@ <key> <string>tales</string> </key> <value> <dictionary> + <item> + <key> <string>default</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> <item> <key> <string>field_id</string> </key> <value> <string></string> </value> @@ -79,10 +90,14 @@ <key> <string>values</string> </key> <value> <dictionary> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> <item> <key> <string>external_validator</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> <item> @@ -104,6 +119,19 @@ </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>string:user</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="Method" module="Products.Formulator.MethodField"/> </pickle> diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupPreferences.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupPreferences.xml index a6056343e99fcbe78baf442a6fd74ed58494e040..cc0a391734b29190e97de1e80711208a207d39d6 100755 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupPreferences.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_setupPreferences.xml @@ -88,34 +88,34 @@ organisation_configurator_item_obj.setPriceCurrency(currency_reference)\n # XXX I think here is not a good place.(yusei)\n service_list = (\n # sale opportunity\n - (\'product\', \'Product\'),\n - (\'service\', \'Service\'),\n + (\'product\', dict(title=\'Product\', use=\'crm/sale_opportunity\', )),\n + (\'service\', dict(title=\'Service\', use=\'crm/sale_opportunity\', )),\n # campaign\n - (\'marketing_campaign\', \'Marketing Campaign\'),\n - (\'marketing_survey\', \'Market Survey\'),\n - (\'marketing_purchases\', \'Purchases Campaign\'),\n - (\'marketing_sales\', \'Sales Campaign\'),\n - (\'marketing_other\', \'Other Marketing Service\'),\n + (\'marketing_campaign\', dict(title=\'Marketing Campaign\', use=\'crm/campaign\', )),\n + (\'marketing_survey\', dict(title=\'Market Survey\', use=\'crm/campaign\', )),\n + (\'marketing_purchases\', dict(title=\'Purchases Campaign\', use=\'crm/campaign\', )),\n + (\'marketing_sales\', dict(title=\'Sales Campaign\', use=\'crm/campaign\', )),\n + (\'marketing_other\', dict(title=\'Other Marketing Service\', use=\'crm/campaign\', )),\n # support request\n - (\'support_administrative\', \'Administrative Support\'),\n - (\'support_financial\', \'Financial Support\'),\n - (\'support_it\', \'IT Support\'),\n - (\'support_other\', \'Other Support Service\'),\n + (\'support_administrative\', dict(title=\'Administrative Support\', use=\'crm/support_request\', )),\n + (\'support_financial\', dict(title=\'Financial Support\', use=\'crm/support_request\', )),\n + (\'support_it\', dict(title=\'IT Support\', use=\'crm/support_request\', )),\n + (\'support_other\', dict(title=\'Other Support Service\', use=\'crm/support_request\', )),\n # meeting\n - (\'organisation_conference\', \'Conference\'),\n - (\'organisation_partnership\', \'Partnership Meeting\'),\n - (\'organisation_purchases\', \'Purchases Meeting\'),\n - (\'organisation_project\', \'Project Meeting\'),\n - (\'organisation_sales\', \'Sales Meeting\'),\n - (\'organisation_other\', \'Other Meeting\'),\n + (\'organisation_conference\', dict(title=\'Conference\', use=\'crm/meeting\', )),\n + (\'organisation_partnership\', dict(title=\'Partnership Meeting\', use=\'crm/meeting\', )),\n + (\'organisation_purchases\', dict(title=\'Purchases Meeting\', use=\'crm/meeting\', )),\n + (\'organisation_project\', dict(title=\'Project Meeting\', use=\'crm/meeting\', )),\n + (\'organisation_sales\', dict(title=\'Sales Meeting\', use=\'crm/meeting\', )),\n + (\'organisation_other\', dict(title=\'Other Meeting\', use=\'crm/meeting\', )),\n # event\n - (\'event_complaint\', \'Complaint\'),\n - (\'event_announcement\', \'Announcement\'),\n - (\'event_inquiry\', \'Inquiry\'),\n - (\'event_advertisement\', \'Advertisement\'),\n - (\'event_spam\', \'Spam\'),\n - (\'event_information\', \'Information\'),\n - (\'event_other\', \'Other event\'),\n + (\'event_complaint\', dict(title=\'Complaint\', use=\'crm/event\', )),\n + (\'event_announcement\', dict(title=\'Announcement\', use=\'crm/event\', )),\n + (\'event_inquiry\', dict(title=\'Inquiry\', use=\'crm/event\', )),\n + (\'event_advertisement\', dict(title=\'Advertisement\', use=\'crm/event\', )),\n + (\'event_spam\', dict(title=\'Spam\', use=\'crm/event\', )),\n + (\'event_information\', dict(title=\'Information\', use=\'crm/event\', )),\n + (\'event_other\', dict(title=\'Other event\', use=\'crm/event\', )),\n )\n configuration_save.addConfigurationItem("Service Configurator Item",\n configuration_list=service_list)\n @@ -159,38 +159,14 @@ configuration_save.addConfigurationItem(\n # some preparation\n system_prefs = dict(\n # CRM\n - preferred_campaign_resource_list = [\n - \'service_module/marketing_campaign\',\n - \'service_module/marketing_survey\',\n - \'service_module/marketing_purchases\',\n - \'service_module/marketing_sales\',\n - \'service_module/marketing_other\',],\n - preferred_event_resource_list = [\n - \'service_module/event_complaint\',\n - \'service_module/event_announcement\',\n - \'service_module/event_inquiry\',\n - \'service_module/event_advertisement\',\n - \'service_module/event_spam\',\n - \'service_module/event_information\',\n - \'service_module/event_other\',],\n - preferred_meeting_resource_list = [\n - \'service_module/organisation_conference\',\n - \'service_module/organisation_partnership\',\n - \'service_module/organisation_purchases\',\n - \'service_module/organisation_project\',\n - \'service_module/organisation_sales\',\n - \'service_module/organisation_other\',],\n - preferred_sale_opportunity_resource_list = [\n - \'service_module/product\',\n - \'service_module/service\',],\n - preferred_support_request_resource_list = [\n - \'service_module/support_administrative\',\n - \'service_module/support_financial\',\n - \'service_module/support_it\',\n - \'service_module/support_other\',],\n + preferred_campaign_use_list = [\'use/crm/campaign\'],\n + preferred_event_use_list = [\'use/crm/event\'],\n + preferred_meeting_use_list = [\'use/crm/meeting\'],\n + preferred_sale_opportunity_use_list = [\'use/crm/sale_opportunity\'],\n + preferred_support_request_use_list = [\'use/crm/support_request\'],\n preferred_event_sender_email = preferred_event_sender_email,\n preferred_event_assessment_form_id_list = [],\n - # dms\n + # DMS\n # XXX-Luke: (proposal) Allow to define, maybe use some magic of\n # representation\n preferred_document_file_name_regular_expression = \\\n @@ -202,23 +178,24 @@ system_prefs = dict(\n preferred_document_classification = \'collaborative/team\',\n preferred_synchronous_metadata_discovery = True,\n preferred_redirect_to_document = True,\n - # pdm\n + # PDM\n preferred_product_individual_variation_base_category_list = [\'variation\'],\n preferred_component_individual_variation_base_category_list = [\'variation\'],\n preferred_service_individual_variation_base_category_list = [\'variation\'],\n # trade\n - preferred_supplier_role_list = [\'supplier\'],\n - preferred_client_role_list = [\'client\'],\n - preferred_sale_use_list = [\'trade/sale\'],\n - preferred_purchase_use_list = [\'trade/purchase\'],\n - preferred_packing_use_list = [\'trade/container\'],\n - preferred_tax_use_list=[\'trade/tax\'])\n + preferred_supplier_role_list = [\'role/supplier\'],\n + preferred_client_role_list = [\'role/client\'],\n + preferred_sale_use_list = [\'use/trade/sale\'],\n + preferred_purchase_use_list = [\'use/trade/purchase\'],\n + preferred_packing_use_list = [\'use/trade/container\'],\n + preferred_tax_use_list=[\'use/trade/tax\'],\n + preferred_price_ratio_use_list=[\'use/trade/tax\'])\n \n configuration_save.addConfigurationItem(\n \'System Preference Configurator Item\',\n object_id = \'default_configurator_system_preference\',\n - description="The default system parameters for the site are set on this \'\\\n - \'preference",\n + description="The default system parameters for the site are set on this "\\\n + "preference",\n title="Default Configurator System Site Preference",\n **system_prefs)\n \n diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_business_process.ods.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_business_process.ods.xml index b50e303cf2157d15259249adcb3ca448f64e7841..44bff21704000915edd86dab02ea1667c8ea1881 100644 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_business_process.ods.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_business_process.ods.xml @@ -8,7 +8,7 @@ <dictionary> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts33428448.97</string> </value> + <value> <string>ts57808590.21</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -20,227 +20,189 @@ </item> <item> <key> <string>data</string> </key> - <value> <string encoding="base64">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 -HgR98qnGWXyWddqG1e1tN3aPWdBf+jVG6p3F13GMExo4s5UJwTFZ4QtWcXVmp+TBKodrAkbKmBDt -BZgvRVQ0knewFwCTH5WuvRgE4coz2gG4KCEfVb/wc33ED0XOlzmztmj0WSa17phiUs7Mld2Hyqzo -L8M+yaDTitWPKrjhekxiv92jlaqhoOjAKtna05syj7wBUJ+UunnCBvycJSBHuS/vjz7Zwu669aoe -SxkD93UcpgrgtnZCOP/laQQtnh5HPIMpilM10R7kNbw9es+kVBfb0PWJwTilmss3oAlN7QDHNp+g -54UJ3lt8T95TM/eMJ+pV2WJ+tSxhu6qgzy5C/aUBJUrMy9hwHkbPrBSKP6gOoUhsEb+IQ/XtzNNA -wKmc4V6k9Lb6Pwil/6jBzsd1MFqv6okcCadCHHs9Pag0nWqEmpkwUOYM/c21fvdd1r/FFmOD3tzc -3FwH3cF6pOwYoeN65UZ7YBMBjd+hd+QZ27jV36m91A+Ktun8NpFdrzHWo2BVtYx+kkLQs+M5097V -7/lOWHbRs6w9+zN1iClCn2js2WODk0TSJsQ8P+kZorVSa0inUGd1aKXwaFcFvZoD+foaAZkVRgs/ -vPLDS28ThoH+hGHNQgE3P80sYWAfhiv9caSHwqfN75vF1CxoAvWtb7NcNoFm7B+KvWA424Ph/65t -/gZQSwcIe41YmPEFAACdGwAAUEsDBBQAAAgAAMglg0CIy3SvjgMAAI4DAAAIAAAAbWV0YS54bWw8 -P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2ZmaWNlOmRvY3VtZW50LW1l -dGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9m -ZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxu -czpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOm1ldGE9InVybjpv -YXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiIHhtbG5zOm9vbz0iaHR0 -cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRkbD0iaHR0cDovL3d3dy53 -My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxvZmZpY2U6bWV0 -YT48bWV0YTppbml0aWFsLWNyZWF0b3I+cmFmYWVsIDwvbWV0YTppbml0aWFsLWNyZWF0b3I+PG1l -dGE6Y3JlYXRpb24tZGF0ZT4yMDEyLTAxLTE4VDAwOjMwOjM0PC9tZXRhOmNyZWF0aW9uLWRhdGU+ -PGRjOmRhdGU+MjAxMi0wNC0wM1QwMTo0NjoxNzwvZGM6ZGF0ZT48bWV0YTplZGl0aW5nLWR1cmF0 -aW9uPlBUMjFIMjVNNDBTPC9tZXRhOmVkaXRpbmctZHVyYXRpb24+PG1ldGE6ZWRpdGluZy1jeWNs -ZXM+OTwvbWV0YTplZGl0aW5nLWN5Y2xlcz48bWV0YTpnZW5lcmF0b3I+TGlicmVPZmZpY2UvMy41 -JExpbnV4X1g4Nl82NCBMaWJyZU9mZmljZV9wcm9qZWN0LzM1MG0xJEJ1aWxkLTIwMjwvbWV0YTpn -ZW5lcmF0b3I+PGRjOmNyZWF0b3I+cmFmYWVsIDwvZGM6Y3JlYXRvcj48bWV0YTpkb2N1bWVudC1z -dGF0aXN0aWMgbWV0YTp0YWJsZS1jb3VudD0iMiIgbWV0YTpjZWxsLWNvdW50PSI2MyIgbWV0YTpv -YmplY3QtY291bnQ9IjAiLz48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+UEsD -BBQACAgIAMglg0AAAAAAAAAAAAAAAAAnAAAAQ29uZmlndXJhdGlvbnMyL2FjY2VsZXJhdG9yL2N1 -cnJlbnQueG1sAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQAAAgAAMglg0AAAAAAAAAAAAAAAAAYAAAA -Q29uZmlndXJhdGlvbnMyL2Zsb2F0ZXIvUEsDBBQAAAgAAMglg0AAAAAAAAAAAAAAAAAYAAAAQ29u -ZmlndXJhdGlvbnMyL21lbnViYXIvUEsDBBQAAAgAAMglg0AAAAAAAAAAAAAAAAAaAAAAQ29uZmln -dXJhdGlvbnMyL3BvcHVwbWVudS9QSwMEFAAACAAAyCWDQAAAAAAAAAAAAAAAAB8AAABDb25maWd1 -cmF0aW9uczIvaW1hZ2VzL0JpdG1hcHMvUEsDBBQAAAgAAMglg0AAAAAAAAAAAAAAAAAcAAAAQ29u -ZmlndXJhdGlvbnMyL3Byb2dyZXNzYmFyL1BLAwQUAAAIAADIJYNAAAAAAAAAAAAAAAAAGAAAAENv -bmZpZ3VyYXRpb25zMi90b29sYmFyL1BLAwQUAAAIAADIJYNAAAAAAAAAAAAAAAAAGgAAAENvbmZp -Z3VyYXRpb25zMi9zdGF0dXNiYXIvUEsDBBQAAAgAAMglg0AAAAAAAAAAAAAAAAAaAAAAQ29uZmln -dXJhdGlvbnMyL3Rvb2xwYW5lbC9QSwMEFAAICAgAyCWDQAAAAAAAAAAAAAAAABUAAABNRVRBLUlO -Ri9tYW5pZmVzdC54bWytk0FuwjAQRfecIvI+dsuqsggskHoCegDXmSSW7LHlGSO4fRMkCG2pVBA7 -j/Xnv6/xeLU5BF/tIZOL2IhX+SIqQBtbh30jPnbv9ZvYrBerYNB1QKzPh2rsQ7qUjSgZdTTkSKMJ -QJqtjgmwjbYEQNbf9fpEulRXAZZivahmXuc81GN/Ps7qAK0zNR8TNMKk5J01PHarPbbyFEFekyWl -DKalAYD/Qs7XXfG+ToaHRiih7origulBJexv2+2GEj7ROE+Kz0c5qe+jMBxYjcO8DSFgHp+O5KR4 -prGNyNMwn+1LfPTw/LgB2DxgettsG7FzfcmnLaOlMtaCh7GMWdmS82Nz+bm5VHBykcVJew38X6YJ -vlK/vun6C1BLBwgiATxPFgEAAOEDAABQSwECFAAUAAAIAADIJYNAhWw5ii4AAAAuAAAACAAAAAAA -AAAAAAAAAAAAAAAAbWltZXR5cGVQSwECFAAUAAAIAADIJYNAxf6KyboRAAC6EQAAGAAAAAAAAAAA -AAAAAABUAAAAVGh1bWJuYWlscy90aHVtYm5haWwucG5nUEsBAhQAFAAICAgAyCWDQLjrLcYqBAAA -BiQAAAwAAAAAAAAAAAAAAAAARBIAAHNldHRpbmdzLnhtbFBLAQIUABQACAgIAMglg0BZVfboqQgA -AGZMAAALAAAAAAAAAAAAAAAAAKgWAABjb250ZW50LnhtbFBLAQIUABQACAgIAMglg0B7jViY8QUA -AJ0bAAAKAAAAAAAAAAAAAAAAAIofAABzdHlsZXMueG1sUEsBAhQAFAAACAAAyCWDQIjLdK+OAwAA -jgMAAAgAAAAAAAAAAAAAAAAAsyUAAG1ldGEueG1sUEsBAhQAFAAICAgAyCWDQAAAAAACAAAAAAAA -ACcAAAAAAAAAAAAAAAAAZykAAENvbmZpZ3VyYXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50Lnht -bFBLAQIUABQAAAgAAMglg0AAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAL4pAABDb25maWd1cmF0 -aW9uczIvZmxvYXRlci9QSwECFAAUAAAIAADIJYNAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAD0 -KQAAQ29uZmlndXJhdGlvbnMyL21lbnViYXIvUEsBAhQAFAAACAAAyCWDQAAAAAAAAAAAAAAAABoA -AAAAAAAAAAAAAAAAKioAAENvbmZpZ3VyYXRpb25zMi9wb3B1cG1lbnUvUEsBAhQAFAAACAAAyCWD -QAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAYioAAENvbmZpZ3VyYXRpb25zMi9pbWFnZXMvQml0 -bWFwcy9QSwECFAAUAAAIAADIJYNAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAACfKgAAQ29uZmln -dXJhdGlvbnMyL3Byb2dyZXNzYmFyL1BLAQIUABQAAAgAAMglg0AAAAAAAAAAAAAAAAAYAAAAAAAA -AAAAAAAAANkqAABDb25maWd1cmF0aW9uczIvdG9vbGJhci9QSwECFAAUAAAIAADIJYNAAAAAAAAA -AAAAAAAAGgAAAAAAAAAAAAAAAAAPKwAAQ29uZmlndXJhdGlvbnMyL3N0YXR1c2Jhci9QSwECFAAU -AAAIAADIJYNAAAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAABHKwAAQ29uZmlndXJhdGlvbnMyL3Rv -b2xwYW5lbC9QSwECFAAUAAgICADIJYNAIgE8TxYBAADhAwAAFQAAAAAAAAAAAAAAAAB/KwAATUVU -QS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAAQABAANgQAANgsAAAAAA==</string> </value> + <value> <string encoding="base64">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 +GnyUpDYcUyQVvPxA68HRpOkv/D5J1LlEV486ufVnqdBr365zfRVkeM8L1drT6zwN3AFQn5T+zggb +8FIegR0Tnro5xGQDuzt0mq2xmHMIXydg+njfVEHwZ0+fBHA5N+NYJDDFSKwn2oOigrdHb7hS+jOm +X9/w0TilissXoKl4PsCxzQf1ojAhevOvKXp65oaLSP9gxJ/5Fxdh6pgT3TnzzS+DyHFU/uwNIMGF +NcPhO90WZJE9xc9CX/+u9WkgoOlISC9Venv9H+TSf1Wx05mNRk+saiLFsnYhD42WGdSejrVCzVoY +OOhK+utL87POvPpbbggp0eurq6tL1B2sRvKOCJ3Y6zjaVzaV0Njuey+9Upt69bd6L9WDpl02gevA +rtcY61GwrlqiH6WAejqekva6+rnOEWXnPWXt2z/RrzFN6APFdh6WOEUVa0LK50c9IVortYZMDXVW +h2aKjPZV0K3VIM/08HAx8YNzzw88fd0PfOQHSI9ULDRw/YNjCQP7wF/68+X8cU16KH3a/L5YTjmo +CTQXn/Vi0QSWY58o99BwtaPh/02x/hdQSwcIDwS6pFsGAACNIQAAUEsDBBQAAAgAAExIKkJflWKJ +4wMAAOMDAAAIAAAAbWV0YS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/ +Pgo8b2ZmaWNlOmRvY3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6 +b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz +Lm9yZy8xOTk5L3hsaW5rIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEu +MS8iIHhtbG5zOm1ldGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0 +YToxLjAiIHhtbG5zOm9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxu +czpncmRkbD0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJz +aW9uPSIxLjIiIGdyZGRsOnRyYW5zZm9ybWF0aW9uPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9y +Zy9vZmZpY2UvMS4yL3hzbHQvb2RmMnJkZi54c2wiPjxvZmZpY2U6bWV0YT48bWV0YTppbml0aWFs +LWNyZWF0b3I+cmFmYWVsIDwvbWV0YTppbml0aWFsLWNyZWF0b3I+PG1ldGE6Y3JlYXRpb24tZGF0 +ZT4yMDEyLTAxLTE4VDAwOjMwOjM0PC9tZXRhOmNyZWF0aW9uLWRhdGU+PGRjOmRhdGU+MjAxMy0w +MS0xMFQxMDowMjoyMzwvZGM6ZGF0ZT48bWV0YTplZGl0aW5nLWR1cmF0aW9uPlBUMjNINU0xN1M8 +L21ldGE6ZWRpdGluZy1kdXJhdGlvbj48bWV0YTplZGl0aW5nLWN5Y2xlcz4xMzwvbWV0YTplZGl0 +aW5nLWN5Y2xlcz48bWV0YTpnZW5lcmF0b3I+T3Blbk9mZmljZS5vcmcvMy4zJFVuaXggT3Blbk9m +ZmljZS5vcmdfcHJvamVjdC8zMzBtMjAkQnVpbGQtOTU2NzwvbWV0YTpnZW5lcmF0b3I+PGRjOmNy +ZWF0b3I+SsOpcm9tZSBQZXJyaW48L2RjOmNyZWF0b3I+PG1ldGE6ZG9jdW1lbnQtc3RhdGlzdGlj +IG1ldGE6dGFibGUtY291bnQ9IjIiIG1ldGE6Y2VsbC1jb3VudD0iNzkiIG1ldGE6b2JqZWN0LWNv +dW50PSIwIi8+PC9vZmZpY2U6bWV0YT48L29mZmljZTpkb2N1bWVudC1tZXRhPlBLAwQUAAgICABM +SCpCAAAAAAAAAAAAAAAAGAAAAFRodW1ibmFpbHMvdGh1bWJuYWlsLnBuZ+2W+zsTigPGlZL7kmRN +pp6ebgfTIaRjqFzaKUZh5jKVUMbmurkmSp3TcTlS7uxINZnNN9usY2al0+ZyTC6TkSGXMVuGmI3p +23P+h/Pb+el9Pz+/7/s876/eXh562iBtNTU1PdgF18vfdUxNbZua5vbv7nXctKaamtYkzPWsb3Kl +tDKmuPb1np0vE6KMWPmCb9rCM6km1eJJ2+LVwp+f72jzdduUXd3d73Yvq4kqSlDfPbWUnH5bJZIv +jrNvq5SpqkChcRMD7aESJ5gNCobNJnJpRSqCKSzlK5AJJsxvfAX2M9IGeiyLEtZV6rGJFfnxFqO1 +xJ5+r35w7kzscrSngFw4rhkm+ls/Zm6qHFcRgu8yGJiqX/OOgJQcS0ktS8KviSRzbFvvlOw8ikRh +6641sPquA3sPZu9nZfgqwfnUdfsEMRoXGmLbS1AddWtYkYWeGAhpYYXr95hdpO+aikeN+d6HJWhQ +fnMPZJKWhQGoZzzNiImWAsZnnnfGV4EHLJRZa2I82ETAYL3q70aMgRRBFfWEzqplm31e6FZoMTOr +2/d8YUs6WP2ZDplBqhP+Ba19DHgcDsDNHuFexn3O1LbWF1TnfSnqXTYwXjv5UO4EabctMJThMLPh +nKBTM9S4bZmtBzJQZSKlASKOOc3QaV3hdnOnMsk9ZmbfgEFh6av7gbSK6dy6j4BXxdD/mW5kC8Ax +rabyJVXPGgHCjR9K3DC/gmio2bFL8EHwh/uesBI/n0XejwC+YUiVmByR8wqRCmlSAGTpbRbnEaZk +sEup+JCfM5D7C/Ju91NhVQa4nlpCj+7BLexN5OoNz6uYolYqOsAIuFcnJpBqWsGIb/RbwaYghX7G +1atNK1+TEj9IZrOrNPgCcLl9WONQuc/W4kxcYS9qgExmbMvlSe2Qzdb1fZ0F721G+Wt+Zo4i9M3X +P8i3tva0mSdrPdxcst7kppcueAS/lz4ah8h4WyxlWObK0lKcBRHdtWqTvlqsHxjjjfFEgPSG3PV0 ++/QWx9FtS4/ekDUqUvYwX+aSg5ZZSo/mq5rldC0PR6VD6sWPvkWJJjdudVdyXYqUvHvOIGIavR9k +7jEQkfDZYX5Mo9lIgNranJeLC2TXHvTGrQK7gC/dixzebfinjR5txxfUtTila27ECr4QeTjz+8R3 +XeNQcOeQcCjP0Gb/VGuakncpWQRBA2qMkjsvFce0TxJQEcbSBq5EaL+SXKiHtyA2co5Xa7jzZuyX +amQ4LGdJA5OzFouc8B+BmQeiWw6Mkz4SF1+vE2O6YqsLA5nD5yO7OfnIjiMOqreOMY5FZVL69G7H +LJI0jxNuAvfN3DKTq2ZGiEdO/6ra6CbB+aMzpZvv1tw/QWReRMi6LgYRkhb7T01UqkMTSGOJxSgy +vnJSOyrzTsNMu80p5BZrem4zJWL7g8ifPhw8rEprvRxdQbF/+HsY0dG70Wk/PZCcgVzHZKy/ouci +9BEUyQtTMsKKodFQWp9gTh1ZiLxP25j394a7x1RVoNt7c4frRUk4IAlhBmoJd5uoi/wGJrAdKGQE +uzR2veZMR5+p3tAQiVG6SFamwb+9vd7mlA5jKb0HazztJmVjKd3VrkFQIB4eue7CSh1+6NJRkrpq ++eeImaXk8hrwopiv7tPtmXWiQhdLs0+104+ETUSliS6NjHGiFXHjJOInmt3SMZcQWQDw5TQYY5ws +eg5ZB3lZjkGfjB5hh0xIFwG+vS0T5oCDwWfJJ/uM78lpwfxR2ywPePBzniXZxckv26UT/+cU80aI +SVs09vEFjdvL+XxSSVDBy7Vd+SqX0EYEW3Jj189tA3aLrGxOO6P8iXneCuj4YWdtEQVw4MJGPEtX +4gz/Y3ojxOfBI4tNmoXkh+BGp7/SsVbjhs9t/44MfXh0gV/wkRFsXTJIwheZ0D/bEDprUlejuZi7 +Udgsmj9LmXIsDcZKZTwoCghoRI3dSFwQgHSCY0LzzoBO43C3v8rFB7sBZAQg4Z9Eqa9RY1e2BJYG +c8VDPEPSu1VJkmeZ1Lui89xsSiCLfl8o+VZAZ1W2gRc8pl5gqUpzJm3oihhPO/Gbfh6Qp651zwp/ +avbDBSPKoaiqD/4jOf6J8GAOtbouabYpPNKWUmQdTidN3fXDeM7oiByHAKYdN5OZZXE3t9TnX1jC +aZnNHwOvYTMUcihWkZdZR1vLcyDp5gASOOq5kb/QqdDEvQr2Iix0oJfEviKq7bxxS/pjl3c42vwO +K/7a+t7eolASaT+iPivoFgLp8+W62TmUcaUPqgXaGOL4pJ5vxxcPivMFEDJjpvzLCYJuaBVFHARX +A1S/4a+JkH15b+UlVnOOhzZjZcs5OfD4k+qr4rBPEIV0+2IrETUGHqzzhR7OZQfByzp2TgaxniwY +ddV5dC7w5TlRGUIYd99xco9/89Pm2+loPg1lJqS2HiHs2NiNUYbVnv3ema5+jsutmAXXYujo+8IV +7mlQW1RAksPvyGcHk4yesNMglJaqE+RVD+jio0UAG3cdi78LfrolTw6cSHnr6RgcuFAQlWh0muPn +1jO64IY/zkmXkq0V7NphUIErWqtkCPMeCg0h0Bv30XCMamPh+DDFGGPah/88o7AefaEwiA5ZocC3 +i5YadDBVIzZeik1nOFIo3Zwr/75onkjO3PnG/s74obMGrTvcZHv2vr3ovcPqP/gP/m0ozNwWzPtp +J9UmJeH751ODuXm5Us5dzf4/UEsHCLTxKWPrBwAAGgoAAFBLAwQUAAgICABMSCpCAAAAAAAAAAAA +AAAAJwAAAENvbmZpZ3VyYXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbAMAUEsHCAAAAAAC +AAAAAAAAAFBLAwQUAAAIAABMSCpCAAAAAAAAAAAAAAAAHAAAAENvbmZpZ3VyYXRpb25zMi9wcm9n +cmVzc2Jhci9QSwMEFAAACAAATEgqQgAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0aW9uczIvZmxv +YXRlci9QSwMEFAAACAAATEgqQgAAAAAAAAAAAAAAABoAAABDb25maWd1cmF0aW9uczIvcG9wdXBt +ZW51L1BLAwQUAAAIAABMSCpCAAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi90b29scGFu +ZWwvUEsDBBQAAAgAAExIKkIAAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL21lbnViYXIv +UEsDBBQAAAgAAExIKkIAAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xiYXIvUEsD +BBQAAAgAAExIKkIAAAAAAAAAAAAAAAAfAAAAQ29uZmlndXJhdGlvbnMyL2ltYWdlcy9CaXRtYXBz +L1BLAwQUAAAIAABMSCpCAAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi9zdGF0dXNiYXIv +UEsDBBQACAgIAExIKkIAAAAAAAAAAAAAAAAMAAAAc2V0dGluZ3MueG1s7VrbcuI4EH3fr6D8Trjk +MoMrMAXMZpPd7EwKk+zMvAm7AdXIapckQ5ivXxnjVOLY4NjWbqWKJwpLOt1qqY9Oy7789OizxgqE +pMj7VuekbTWAu+hRvuhb99Or5kfr0+C3S5zPqQu2h27oA1dNCUrpLrKhh3Npx819KxTcRiKptDnx +QdrKtTEAngyzn/e2t8biJ4+M8p99a6lUYLda6/X6ZH16gmLR6vR6vda2NenqIp/TRVFTce/nphDx +yVA0IHZma6zbbp+14v9WY+fks9B0rUESh2T6g8udgfinSRX4UWwau8eRa31Lm7RXFNZPUbOyxr0c +80AlnTEYCiBTDKykUW0C3Ui5sgbty9ZrkDcB38JcmUH+h3pqmQV93u50zirDXwNdLDNd7/Y+XBSF +b/okaFLuwSN4aVOwzl6k7Ri9vcSmiMOwvvFSXkol9A6wBtF+6LzJ0wg05eeU6IAccvTlkFEoKQcp +G7dRTh2exDgUEsUdSqp0GnzLinnJ9XyJ/D0LuVcO+RoF/YVcEeYEjKq/0YP0KixRVNjoIBR1TaGn +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 +SwUGAAAAABAAEAA2BAAATyQAAAAA</string> </value> </item> <item> <key> <string>precondition</string> </key> @@ -248,7 +210,7 @@ QS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAAQABAANgQAANgsAAAAAA==</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>12580</int> </value> + <value> <int>10395</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_category.ods.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_category.ods.xml index 4a7edbf50e82d3811a179807c9062299f432517d..bd0d154768e474fb5e64ecae38a0579a91a38162 100644 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_category.ods.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_category.ods.xml @@ -8,7 +8,7 @@ <dictionary> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts26779444.9</string> </value> + <value> <string>ts56005723.64</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -20,876 +20,944 @@ </item> <item> <key> <string>data</string> </key> - <value> <string encoding="base64">UEsDBBQAAAgAADkuMUCFbDmKLgAAAC4AAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz -aXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0UEsDBBQAAAgAADkuMUBmblgPcwUAAHMFAAAIAAAA -bWV0YS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2ZmaWNlOmRv -Y3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50 -OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs -aW5rIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOm1l -dGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiIHhtbG5z -Om9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRkbD0iaHR0 -cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxv -ZmZpY2U6bWV0YT4KICAKICA8ZGM6dGl0bGU+RGVmYXVsdCBFeHByZXNzIFN0YW5kYXJkIENhdGVn -b3JpZXM8L2RjOnRpdGxlPgogIAogIDxkYzpkZXNjcmlwdGlvbj5NZXJnZSB0aGllcnJ5JmFwb3M7 -cyAwMDYgKCAgaHR0cDovL2VycDUubmV4ZWRpLmNvbS9kb2N1bWVudF9tb2R1bGUvMTA5NS92aWV3 -ICkgd2l0aCB5dXNlaSZhcG9zO3MgMDA2ICggaHR0cDovL2VycDUubmV4ZWRpLmNvbS9kb2N1bWVu -dF9tb2R1bGUvNjIyL3ZpZXcgKTwvZGM6ZGVzY3JpcHRpb24+CiAgCiAgPG1ldGE6Y3JlYXRpb24t -ZGF0ZT4yMDA2LTEwLTEzVDEyOjMyOjUyPC9tZXRhOmNyZWF0aW9uLWRhdGU+CiAgCiAgPGRjOmRh -dGU+MjAxMi0wMS0xN1QwMzo0OTo1MDwvZGM6ZGF0ZT4KICAKICA8bWV0YTplZGl0aW5nLWN5Y2xl -cz41Mjc8L21ldGE6ZWRpdGluZy1jeWNsZXM+CiAgCiAgPG1ldGE6ZWRpdGluZy1kdXJhdGlvbj5Q -OURUMjNINk0zN1M8L21ldGE6ZWRpdGluZy1kdXJhdGlvbj4KICAKICAKICAKICA8bWV0YTpnZW5l -cmF0b3I+TGlicmVPZmZpY2UvMy40JFVuaXggTGlicmVPZmZpY2VfcHJvamVjdC8zNDBtMSRCdWls -ZC00MDI8L21ldGE6Z2VuZXJhdG9yPgogIAogIAogIAogIAogIAogIAogIAogIAogIAogIDxtZXRh -OmRvY3VtZW50LXN0YXRpc3RpYyBtZXRhOnRhYmxlLWNvdW50PSIzMCIgbWV0YTpjZWxsLWNvdW50 -PSI1Mjk3IiBtZXRhOm9iamVjdC1jb3VudD0iMCIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5h -bWU9IkluZm8gNCIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9Ikxhbmd1YWdlIj5lbjwv -bWV0YTp1c2VyLWRlZmluZWQ+PG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0iUmVmZXJlbmNl -Ij5QLUVSUDVFWC1TdGFuZGFyZC5DYXRlZ29yaWVzPC9tZXRhOnVzZXItZGVmaW5lZD48bWV0YTp1 -c2VyLWRlZmluZWQgbWV0YTpuYW1lPSJWZXJzaW9uIj4wMTA8L21ldGE6dXNlci1kZWZpbmVkPjwv -b2ZmaWNlOm1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT5QSwMEFAAICAgAOS4xQAAAAAAAAAAA -AAAAAAwAAABzZXR0aW5ncy54bWztnW1X4jgUx9/vp+Dw3uFBZZSjzEFcR3cdxwV0duddaC+QtSSc -JBWZT79pAVexaKe0TtH/K49t87+3efjl5tKmB5/uRl7hlpTmUhwWKx/KxQIJR7pcDA6LV92Trb3i -p8ZvB7Lf5w7VXen4IxJmS5Mx9hJdsMWFrs9OHxZ9JeqSaa7rgo1I141Tl2MSi2L1h1fXQ2OzI3ce -FzeHxaEx43qpNJlMPky2P0g1KFX29/dL4dnFpY4UfT6Ia2p29UNTUsp7Q0GBmTOhsWq5vFOa/V8s -zJ18UDXVYmNRD4vbbxzMDcz+bHFDo6BuCvPDgWuHRWuyfstpcl9rxahyj8tcc817HjUVsa4cFxcn -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 -Ub7hYXlv/4fcxHZPLw/8NQ+yniqppxfXRCbUcjzh5qnKlUFi5b99FvWQUw859ZAzLezlVa6J3MK0 -MPAS10RuYVqY2bwCsmsi83iDr6dK6jnI8pWsvaufDDsV3KOeXsphYP1yJ5vfOzj1kFMPOfWQMy08 -1AmvidzCtPBer3JN5BamhXdxTWQ62jt2Z5ZurtTTRX0qePk5GFzdO1FA6umlcUi4dxjhFNRDTj3k -1EPOtPBoZ7smcgvTwru80DWRW5gW3quygJloHlhnu+cIp8llRT29uCYyuc0TjctPp6aeLs6USIV6 -yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesip -h5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYec -esiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrI -qYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmH -nHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6 -yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesiph5x6yKmHnHrIqYecesip -h9z7r1/PfghM6y+y8/MshAeVVwAAAABJRU5ErkJgglBLAwQUAAAIAAA5LjFAAAAAAAAAAAAAAAAA -HwAAAENvbmZpZ3VyYXRpb25zMi9pbWFnZXMvQml0bWFwcy9QSwMEFAAACAAAOS4xQAAAAAAAAAAA -AAAAABoAAABDb25maWd1cmF0aW9uczIvcG9wdXBtZW51L1BLAwQUAAAIAAA5LjFAAAAAAAAAAAAA -AAAAGgAAAENvbmZpZ3VyYXRpb25zMi90b29scGFuZWwvUEsDBBQAAAgAADkuMUAAAAAAAAAAAAAA -AAAaAAAAQ29uZmlndXJhdGlvbnMyL3N0YXR1c2Jhci9QSwMEFAAACAAAOS4xQAAAAAAAAAAAAAAA -ABwAAABDb25maWd1cmF0aW9uczIvcHJvZ3Jlc3NiYXIvUEsDBBQAAAgAADkuMUAAAAAAAAAAAAAA -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 -AAA=</string> </value> + <value> <string encoding="base64">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 +Dn9TDH14OZTPQ1H7UbLxAKIBRNcMogfT1uw4IQGY3HN6Z0jtGcA0gOkVTH+2NM+jNZU1CIyyWw8Y +GjB0zRj6VvMMOhd9s6e+WhmGaOvRedMBQAOArhpAR8+0Dc8LQHQ4WMDZKH5tlPHOAKkBUtcMqf85 +arZv+kHE+1fbLJ2V4vajZOMBRAOIrhlEbw3fNXVosC5sPYTqBgANAIoA9FcXkGx61mhAzICY3iFm +ml2BO/554+jH/enmIe/+/wFQSwcIZ6xRdHceAACAMAIAUEsDBBQAAAgAABZhlEHAQl0L8QUAAPEF +AAAIAAAAbWV0YS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2Zm +aWNlOmRvY3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRv +Y3VtZW50OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x +OTk5L3hsaW5rIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHht +bG5zOm1ldGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAi +IHhtbG5zOm9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRk +bD0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIx +LjIiIGdyZGRsOnRyYW5zZm9ybWF0aW9uPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZmZp +Y2UvMS4yL3hzbHQvb2RmMnJkZi54c2wiPjxvZmZpY2U6bWV0YT4KICAKICA8ZGM6dGl0bGU+RGVm +YXVsdCBFeHByZXNzIFN0YW5kYXJkIENhdGVnb3JpZXM8L2RjOnRpdGxlPgogIAogIDxkYzpkZXNj +cmlwdGlvbj5NZXJnZSB0aGllcnJ5JmFwb3M7cyAwMDYgKCAgaHR0cDovL2VycDUubmV4ZWRpLmNv +bS9kb2N1bWVudF9tb2R1bGUvMTA5NS92aWV3ICkgd2l0aCB5dXNlaSZhcG9zO3MgMDA2ICggaHR0 +cDovL2VycDUubmV4ZWRpLmNvbS9kb2N1bWVudF9tb2R1bGUvNjIyL3ZpZXcgKTwvZGM6ZGVzY3Jp +cHRpb24+CiAgCiAgPG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDA2LTEwLTEzVDEyOjMyOjUyPC9tZXRh +OmNyZWF0aW9uLWRhdGU+CiAgCiAgPGRjOmRhdGU+MjAxMi0xMi0yMFQxMzowODo0MzwvZGM6ZGF0 +ZT4KICAKICA8bWV0YTplZGl0aW5nLWN5Y2xlcz41Mjg8L21ldGE6ZWRpdGluZy1jeWNsZXM+CiAg +CiAgPG1ldGE6ZWRpdGluZy1kdXJhdGlvbj5QOURUMjNIMThNNDNTPC9tZXRhOmVkaXRpbmctZHVy +YXRpb24+CiAgCiAgCiAgCiAgPG1ldGE6Z2VuZXJhdG9yPk9wZW5PZmZpY2Uub3JnLzMuMyRVbml4 +IE9wZW5PZmZpY2Uub3JnX3Byb2plY3QvMzMwbTIwJEJ1aWxkLTk1Njc8L21ldGE6Z2VuZXJhdG9y +PgogIAogIAogIAogIAogIAogIAogIAogIAogIAogIDxkYzpjcmVhdG9yPkrDqXJvbWUgUGVycmlu +PC9kYzpjcmVhdG9yPjxtZXRhOmRvY3VtZW50LXN0YXRpc3RpYyBtZXRhOnRhYmxlLWNvdW50PSIz +MSIgbWV0YTpjZWxsLWNvdW50PSI1MzMwIiBtZXRhOm9iamVjdC1jb3VudD0iMCIvPjxtZXRhOnVz +ZXItZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gNCIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5h +bWU9Ikxhbmd1YWdlIj5lbjwvbWV0YTp1c2VyLWRlZmluZWQ+PG1ldGE6dXNlci1kZWZpbmVkIG1l +dGE6bmFtZT0iUmVmZXJlbmNlIj5QLUVSUDVFWC1TdGFuZGFyZC5DYXRlZ29yaWVzPC9tZXRhOnVz +ZXItZGVmaW5lZD48bWV0YTp1c2VyLWRlZmluZWQgbWV0YTpuYW1lPSJWZXJzaW9uIj4wMTA8L21l +dGE6dXNlci1kZWZpbmVkPjwvb2ZmaWNlOm1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT5QSwME +FAAICAgAFmGUQQAAAAAAAAAAAAAAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmdVVnkg0/8b +31xzT75uMUV0ybEc5c6VHCmVHCHHlhBKTIaFJVGpvo7IMYpEqGWTmCv3XCG2iRxpOTLzbebY/D59 +v32P31+f9z+f5/U8r+f1PK8nxdnJVkxYQRgEAonZHbc6DXx7QSAwSJAHeBVMBnwGgURu21lZnEE9 +WXriUUkzlLCSVzHqXoznx5c6gCAKL2DW3ZlUAqrP1qfnaSVM+kTFZSaStzZ7sjF+G70Wg9nDLseb +3aGJc9grxaErX591PFhqbtCBrcYVUOOLHqvCtYS4sH59nRqnSJuL92cMNicsN7ZRRLXNFLw+R1aS +NbKx6Y2czv20kdsYFbqx7U58uq0HT2Hrc0Uen8Iq9YtfJ5mgeW/hDsE/RJvHgxsmTbpF7VOC5zRY +WU7xHhl5s1V9Wz5zuabiE15hxO1sDoRsuuigOHSe2DyKER6QP8NYnYyXrRORZ/abERs8SbLteCX7 +T5uuTFdkPBcGr8Ymlewo6RfluHagEBR1R0Tmd/5R4h8nZZGbVWwUwxUpilCckKdGzFhnup3w8TGm +rbw5kZ4lkGfS5ff8XazAxuESFk/eEuOOkFZOyYs9i4KcqIS+Qp4IAelC+HNQngW/y1FVTcEjOtK1 +AfNNaBfcBW71/Hli4GDwmVLx2KzqL18XtPp4Dy+IIkiHhu07KvoE7e0A3It4+QCHEvG5zjUb8TRk +JtcValuiHf5h1DDe4gkaPuW8drcQr5SbduxTkqzeUEDJ7SNGIXK05Napr5bK2ua1W5Sh6h7ydUbb +KtpwFhyqUt/qAYk49z6BOm+BdAYfTRR2GqDkfUhwQUROGprU88zl7sN9vbI1xvXpyeO0RatDB8YR +2kGboR3BGUPxQXWcrKNeWS0ooCC8UmyClBekrS0821STP7oJpFpTfTN+3P63MhMVqBzjjrOEmyAQ +HaAcc1LEtdnY/OK8nyPnzRFl0z6Fg/ymL1s2X3nI+eTrywqx74XYYbHa+ReOn59tUKcHd+hH9B5X +80zyFT+keGN6SJz+7CNsEUYvmud+7iZomi5hfst4VdEpShfdb/5XBZ28vi27bQ35Vh2xlUd6jMfa +spA3OnmlSCxq8vGWFWjQO5xOvoUYPdiWXpGTOKUyyspyBVL0YRZVqxhFbCtGIWI6eQWSUnkHBg78 +6hMQWwWKKfchlUns2Q4xu4BUwmCMzR9kbBl8/ZELUQMrtMNTYa1eoUJA0HPDBUpCWYLmqlC56eLS +AYKe5ltfAF6AfEDdoagp8Z/+Y4x9RNfY/c1ol126GJkQ2DDr2T3uiN4uqLMoEcSkQWoaqLchx+T6 +D1ZtVsoRlCMIxVHr2GH0beVD+/aiWmEi0U0Y7uu9J4i9+32HsAcQANzV47sPqmeD/8rXHGlUW1Un +yMRkk28sQV/XEG6tl7SEis3epRBg69l+QEbtxkkZd0+3K3qMa+QmrZCnH/XihsMCkoFOtouu3nrZ +aIVw99zJxPD6zzdn5N00Br34JRBGYEFSzPYuMq9Ua4h7Gha39uJHxrjvWpbRF2H2G+HVJXZwofVD +Ye/uaT7v9wjquGQ7XqclsddL4Uo/7mSM2QBFCtEoA1fH2gtvlJbIjKPqr8OKJdDu2BUOMR4Pamoc +LlrwGduzGKPBCITC8c6FS8tkRN34SQ95+qLDx8HeUz8VBJDIxPiN074clZ3LvSM/M3H4XUPPBt8s ++M5jYxWjh/LBA3L9iIFzcWZPR0hVoTx5jlMBh6/5BwAigEdjzCRZwN+tSfb5E0wnktS/0zgLDpMm +G0ivRmOiu0J1pPTLN3aG3jI212k0LQw1o1TQ4Wi1NKSfV5Q3h1k6Yo508U8FteiTKAnNUtEY36ux +mEAtL6qyFuqbGtSQvCDp5ugv8N/YMktDG3m6iDnc2WUO3of0WNeNqDn8cU0vJDPB+LM2pVL+kZKs +1OPkleA75ETprFES+LQl0giBpoZB8dXvQuvFZ8H96UILzh0jgBIv/yIBTRVxi5RkYAD8bIhxDpZV +8U1O5loq87vRegj7zR1taOf4duZzzUV6bg0HE7W8hVlZ1PYK0ch/+ynAGF6I1yFdinmUcw+Hlvts +fy32atj9FdGCczvmwFOJmf4nSH5a3XNPo2eYV9DUoezBpFDVG59s/r+kP+mi+FfvaRvvXffCzTQq +AB2ofmN2bcnjIZ/n7HScXhpSx4AwN8lzVET741bat0mJL8pMkDV9hjgepPe98UjryDKrdRc0mwf3 +5O/l8Gdrh2pd7Pr3aU+eYb+8SV7hBi6oM9x6fo5Gtn+ZqwNiI9WaN9X+ZfLKwcK1QJjtve87+AQi +Shg/Nt0UveMu/CFjJg2AEFRUUiFb5QblK/H8TAxy4INQscbYrw0BAJkrMySnM2HEzPWS3TStztAh +3xMq1s1+tS+dRyA3oEAdYUEqeEMVj0PpIWw/nkTagYNJK8HJgnmICtd2vCgwjbBXZPqIt0wrTXey +DRY69JATCcirhbK2aWfyvZ+gSopBUa9/4AESmVtUDPd3l1f2tvqHvQLWzo9vF3KSozG7/wjEz8Bt +2nM+D+3XLdAn81K9QmKrRkoyLeX6I3fqEl9nHhjzs7VAGqVZ0tS7Fa111s4uMxWbSs8KFtfEp2dc +cqn7lHiy3PDp/eIrS6//u60Mxb5zxMgGHSizzFhPcQvlws7LrxU3a+sFZihSizPM3cCmQr0ULciZ +Id1gzRM3ptIhogwuqWpj9AvVUweWDiH7ZhqnZBa1KCocHSrMxv+zWp1m2mjbwcSkLtLSaiUTAKBv +LIZlmKMkB8fK96PLvuhKMrudzgoAiqy1TfU2GZCswdqLOfjtMHvTebKrb3K3Sewwox3FUkvW7zl/ +GXlXIoJgaY9r5MnJ4PNlSNyN3ZIQt59GsfI1Rg08IYCLxIJ1JXfIY04W6ZatI6ZRbI1jOg2cOjvl +MHEc10HtsjK0GLu4J17keej2D+8ySF4e+Vnjd8Ys7NlL5b+37Ofo59uD2pMO8ocE6feTxblIG/Mf +6ZC9x2ZIROkNzCV1bQwkDSnzm57yUszG5lvIT79xrknJ3otHnvJQhQ74ZxyZs8gWZpemAvbZ9tTT +apxP8ZfVmC5dfK8kZ4A0IfOeTlrev0hhPJNxFPkYHr4SKN0epUTFl2RFbzX9bkPYk2zSDu85VaAf +RHHVy2kvT6nAwS2XhxDsctw+XN8TWnU+q/Jn/+EOY/iWF2IhE9JWLEAjfC1FS4wyeq34v9ZWEkHI +mVleMViO60mwNGDjmsPx+3gAn9v76coDcHm/ilOunrhHXB43v4v3nCJZ2aw6zA0+mBRCyNTsFnB/ +umv1g5iwhnz/6TmXmwPZvTYWvWTU+s9rgVvaa3Nwdex+WF2FqtFZs99JTIsJcUCcoqD3/H1Rornf +sncZoXjLQu4P/jWhv7j9Aa66mvh2yhoY1KQvo76O5mM7zsO0VQ6yDIJ4tiRvknROr2rnL6GoCY2P +ouL56WTJdsephLdzlaXPQxIB+9RUCxxUyo3OOFBy09gcZ9nVRRcSpQfL+P8h/KvgaJAnP1DcpMrx +nVAYUsz98IWGA7NgYW+CWWN4ehfvVrO29Xm+dny23T7/cqcmTF8kW8wdoYA8ZeFh6KkBlRso1yin +LBcg1m+i6m8vAhYsp9N7WEDs7yskRrfusl9ZIHgVhGUFxqClqTj3+7hJ2lXvKLb6pmroAz3gKEEb +ab46H5tC0PfBXqM9kUqizk3Olkq36uQ/I3vPvOmN7GwxmV+L68HK5S2N2WAHrBdoSUo/ApPjI0rC +xwbrv1pqvBVEU8GUfkIDdZyNSyVgsxY4E7iVoPxblIVd28tHGYEQ44vjyWvfaPbwr/LcU423tBbZ +kdHYQrx97XQH1wHsCByMCQWNcQ2bmk08W5ChS3djI+9V1wOnOcjO2smq8phPwv8AUEsHCFck74pZ +CwAAwQsAAFBLAwQUAAgICAAWYZRBAAAAAAAAAAAAAAAAJwAAAENvbmZpZ3VyYXRpb25zMi9hY2Nl +bGVyYXRvci9jdXJyZW50LnhtbAMAUEsHCAAAAAACAAAAAAAAAFBLAwQUAAAIAAAWYZRBAAAAAAAA +AAAAAAAAHAAAAENvbmZpZ3VyYXRpb25zMi9wcm9ncmVzc2Jhci9QSwMEFAAACAAAFmGUQQAAAAAA +AAAAAAAAABgAAABDb25maWd1cmF0aW9uczIvZmxvYXRlci9QSwMEFAAACAAAFmGUQQAAAAAAAAAA +AAAAABoAAABDb25maWd1cmF0aW9uczIvcG9wdXBtZW51L1BLAwQUAAAIAAAWYZRBAAAAAAAAAAAA +AAAAGgAAAENvbmZpZ3VyYXRpb25zMi90b29scGFuZWwvUEsDBBQAAAgAABZhlEEAAAAAAAAAAAAA +AAAYAAAAQ29uZmlndXJhdGlvbnMyL21lbnViYXIvUEsDBBQAAAgAABZhlEEAAAAAAAAAAAAAAAAY +AAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xiYXIvUEsDBBQAAAgAABZhlEEAAAAAAAAAAAAAAAAfAAAA +Q29uZmlndXJhdGlvbnMyL2ltYWdlcy9CaXRtYXBzL1BLAwQUAAAIAAAWYZRBAAAAAAAAAAAAAAAA +GgAAAENvbmZpZ3VyYXRpb25zMi9zdGF0dXNiYXIvUEsDBBQACAgIABZhlEEAAAAAAAAAAAAAAAAM +AAAAc2V0dGluZ3MueG1s7Z3bdto4FIbv5ylYvk855NCG1dBF6KTtTNpmgKQzvRP2BjQREkuSQ+jT +j2wgkxCTEGHTtP2vsmJb/97W4dPewpZfv7keidIVacOVPAqqLypBiWSoIi4HR8F592TnVfCm8dtr +1e/zkOqRCuMRSbtjyFp3iSm54tLUZ6ePgljLumKGm7pkIzJ1G9bVmOSiWP321fXU2OzIteDy8igY +Wjuul8uTyeTFZPeF0oNy9fDwsJyeXVwaKtnng3VNza6+bUopdWMoKTBzJjVWq1T2yrP/g9LcyVtV +Uwsai3pY3H7j9dzA7M8OtzRK6qY0P5y4dhQ4k/UrTpObWguyyt0tc8EN7wlqamJdNQ4WJ+107E5y +aYNG5XX5vsiThE+pb4tR/sIjO8ySru2/2q1tLP+e+GCY6Xq1tl87OFzXwP2m6moWXlLUGjI5IHPh +Gq2zfpt1hmoyL7nkW08pQUwGDatj8rv9RLwZhjS2N+6tMtJnwmxgpU3/Uli4lbn68fQts2T5iLZl +56OKlm2ZodL+/T7TygnXxq64tWhxuFGrVCs7lYOdWq1brdZr+/W9PH3okLsm+k5ONGPrarXoRp1Z ++cTu3Z6x2o3aoPxEvZYaJbNH0W7PzXTpetmUp9/trQzVmZVTblZ7nWEkoWwmfUdsvMNlRNcULaOe +JtnATcu4mtPTdSYMmnyIsj1tJPNxde15IrGaiC752WVuQnrM0btFmqHlV9xO15hOWrE2Sp8pw62L +QP7Ocaa+q/xPjsrvlebflLRMdMaC29xZe0Ha8rAo9SXvFxWUZ4x02/8C9NPuRal6Olizq8czAlv4 +m3PcuJBtrwrqNtTNN35eqB4ra9UoS3j/pZ/yV6VGXSeTa5dORC+YiJdVZ9FyxbcS2IASvD6ofrBC +PGuKeBDrq1h6zAyVmiMVJ9aAU+AUOP0JcboB+EDTp9A0NlySMaXm2PX3kKVDCVgFVoFVYBVY9cVq +SzBjeD9XoK69wP1koHqOOQAVQAVQAdRtAPUtCdfX3dGUAwhQwVPwFDwFT715yk2YLKGW0lrLhafV +3cKAuuspDaKCqCAqiLoNop5wyWTImSh1KMwv66/uFZf2H4CqoCqo6kPVfVB1O1SNZZ4wLS5ErSLp +B0wBUy+Y4tGp7cD0HcmINFZPAVKA9KcEKXL9LYFUM/wKBY6Co+AoOLoRR1U8BkfBUXAUHAVHvTn6 +QYbKkh4BpUApUAqUAqXeKP3INLfJj/iW2Xid/V8AVAAVQAVQAdSVQL0kW+rQIN1jB0AFUAFUABVA +9QYqWc3DH+PBfc8nO4BT4BQ4BU63gdNP6Sv6TOS2PV9x7+njLSjQFDQFTZ8xTT9rPGEKjoKj4Cg4 +uglHz9g0WS7NcbuTIl8kBU/BU/AUPH3GPNUqikNbOuUSD+4Dp8ApcAqcboDTuLfYLTrf7U5AVVAV +VAVVf0mq/hUzabmdls4lz+lJqQJ/26/h5ygQFUQFUZ8xUds0+BF24sPmUUApUAqUPmuUKoGVU2AU +GAVGgVF/jHaYYO7YKV2RAE6BU+AUOAVO/XHqTgKjwCgwCowCo/4YveQC4Sg4Co6Co+DoBhxV6Reg +ThT24gNNQVPQFDTdnKZdbvP66anq+d2udV7OrwKoACqACqA+X6B2k++WlM6GzOTE0+L2Oqni46TA +KXAKnD57nCY7RT//nfiqr8BT8BQ8BU+fL0/P8wpLi3zrCXEpOAqOgqNb5+iq04nlaN0B0GU9ca8i +reZyEDRuL7dujIlQKyF6TH/hkR1m1cLLA8+I9FfpDo+Jd4Zqkhg41sQuzzRdOUNL+j2lBDEZNPpM +GM82Tcx8Ja1S/80qA1bHG+h/UrYo6XeaR/krJ6otJZRekhYqGUjV2sFurbbvGSncadcCauU9M871 +eCTbavKeXAarizHSGRJZx5sC1D+Yz7EVXFJnOuopYTq0PD3mYqQj2bir2sxYWm7oPEbWTPiDueCG +36dyfhbaZFx7rw6WK754W5Zf8W7rZvKduBfxK1dFq9zPSTzbed+uM5NvXnPTmcpwqJXk38gDRJ4x +AZcRXSdRQdYFhmxmVuaO370NpdT8gline/0kl1gXK6zzXbSmEI5jLrKwf6hei8mQRBFj9E/Ssmk4 +k2exDG3MMtKGPEbSKZeX5+OIWVqdW3kmnWkdua5INl4Ox3vM0MHeMZdMT4Pydx4xRQcChY7I5ngs +pueG9Ftm2Y823RUdEfzY00SRsdipYlHbxUhKimlBsXVBsW/xwUXh8dEcjJ/cP9kZ6xpELC4FaA2Z +ZqHzr6VGY00mIVbuaWlBsfrtGOGuwROlezyKSN7cXvZc//AC79IgYnIQs/tLbms3YkvFiSXv8hdM +uwBhOUVYv/wxDbhMd471VfhdRg+W32AJfdP6b/S15wB4qFUaJ23PdWC01QNtRbKItnp3/Iu21aPp +0+Nz4FYWIt6qME4+B9BxUF6dRW40l+eVsD5mqRlb1WIijEXy1ET+oTK7ogs3abnJ+LNsCWWKiHxm +ieCJVqMujcZ+N7IyMS+rfp+HVF+k2v8fiea94CYLb/wHUEsHCKUWTg1rBwAAycUAAFBLAwQUAAgI +CAAWYZRBAAAAAAAAAAAAAAAAFQAAAE1FVEEtSU5GL21hbmlmZXN0LnhtbLWVTW7CMBCF95wi8j5x +y6qKCJVaqSegBxicSbDkP3nGCG7fBBVIWxYFxTvbGn/vje3xrF4P1hR7jKS9a8Rz9SQKdMq32vWN ++Nx8lC/idb1YWXC6Q+L6PCiGfY4u00ak6GoPpKl2YJFqVrUP6FqvkkXH9c/4elRaL4oruNMGyyEw +HourGLYaSj4GbASEYLQCHnzKvWurk1Y1lagoRISWdogsrpBJcsvJcpeMKQPwrhFSyLusMB5YDvnc +pinveHQzBszJJT4apNmxFhkegN6GbXbJbh1oQ5LPwyq4fm74LLx37zrdp3h6U7SUoBQaHKY+SpVi +fOwS79fKIhCi7yMSbSGTQGc8MOZy70MKQ02nPHj23gRwaPLgR+PZzn30ng2uLfRI8k2zhZCpzL41 +srCJgdMjb/53d6Hkxtqvkq7UVON/Nub995F56MaXn38l/zTj9RdQSwcIgT3rMlEBAADHBwAAUEsB +AhQAFAAACAAAFmGUQYVsOYouAAAALgAAAAgAAAAAAAAAAAAAAAAAAAAAAG1pbWV0eXBlUEsBAhQA +FAAICAgAFmGUQT4MJ/kgkAAAvBcPAAsAAAAAAAAAAAAAAAAAVAAAAGNvbnRlbnQueG1sUEsBAhQA +FAAICAgAFmGUQWesUXR3HgAAgDACAAoAAAAAAAAAAAAAAAAArZAAAHN0eWxlcy54bWxQSwECFAAU +AAAIAAAWYZRBwEJdC/EFAADxBQAACAAAAAAAAAAAAAAAAABcrwAAbWV0YS54bWxQSwECFAAUAAgI +CAAWYZRBVyTvilkLAADBCwAAGAAAAAAAAAAAAAAAAABztQAAVGh1bWJuYWlscy90aHVtYm5haWwu +cG5nUEsBAhQAFAAICAgAFmGUQQAAAAACAAAAAAAAACcAAAAAAAAAAAAAAAAAEsEAAENvbmZpZ3Vy +YXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbFBLAQIUABQAAAgAABZhlEEAAAAAAAAAAAAA +AAAcAAAAAAAAAAAAAAAAAGnBAABDb25maWd1cmF0aW9uczIvcHJvZ3Jlc3NiYXIvUEsBAhQAFAAA +CAAAFmGUQQAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAo8EAAENvbmZpZ3VyYXRpb25zMi9mbG9h +dGVyL1BLAQIUABQAAAgAABZhlEEAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAANnBAABDb25maWd1 +cmF0aW9uczIvcG9wdXBtZW51L1BLAQIUABQAAAgAABZhlEEAAAAAAAAAAAAAAAAaAAAAAAAAAAAA +AAAAABHCAABDb25maWd1cmF0aW9uczIvdG9vbHBhbmVsL1BLAQIUABQAAAgAABZhlEEAAAAAAAAA +AAAAAAAYAAAAAAAAAAAAAAAAAEnCAABDb25maWd1cmF0aW9uczIvbWVudWJhci9QSwECFAAUAAAI +AAAWYZRBAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAB/wgAAQ29uZmlndXJhdGlvbnMyL3Rvb2xi +YXIvUEsBAhQAFAAACAAAFmGUQQAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAtcIAAENvbmZpZ3Vy +YXRpb25zMi9pbWFnZXMvQml0bWFwcy9QSwECFAAUAAAIAAAWYZRBAAAAAAAAAAAAAAAAGgAAAAAA +AAAAAAAAAADywgAAQ29uZmlndXJhdGlvbnMyL3N0YXR1c2Jhci9QSwECFAAUAAgICAAWYZRBpRZO +DWsHAADJxQAADAAAAAAAAAAAAAAAAAAqwwAAc2V0dGluZ3MueG1sUEsBAhQAFAAICAgAFmGUQYE9 +6zJRAQAAxwcAABUAAAAAAAAAAAAAAAAAz8oAAE1FVEEtSU5GL21hbmlmZXN0LnhtbFBLBQYAAAAA +EAAQADYEAABjzAAAAAA=</string> </value> </item> <item> <key> <string>precondition</string> </key> @@ -897,7 +965,7 @@ AAA=</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>49535</int> </value> + <value> <int>53423</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_service_list.ods.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_service_list.ods.xml deleted file mode 100644 index a870d3488f896909bd93ab31448b9effcbb6ea59..0000000000000000000000000000000000000000 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_service_list.ods.xml +++ /dev/null @@ -1,239 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="File" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts01664584.88</string> </value> - </item> - <item> - <key> <string>__name__</string> </key> - <value> <string>standard_service_list.ods</string> </value> - </item> - <item> - <key> <string>content_type</string> </key> - <value> <string>application/vnd.oasis.opendocument.spreadsheet</string> </value> - </item> - <item> - <key> <string>data</string> </key> - <value> <string encoding="base64">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 -zaLmv33HYUtotoYeEYIzeV9x5h+kTldY0+Yextg+WvtLPydY/3bxaQ7GGQ1cpVpCOJisCCSvhL5K -U3pnncNzgWAtJuRfAfKlmMlWkg1e0SD53umVH4MhPH1GL2YXJfSdvsa/b+7gocj5uMNsFI0+SFJ7 -HFMkFbx+ugdQQTX9RdgniQ46pOZTB7d+gsRBt3Uq9cXP8I5XqrOnl2Ue+QOgPin9AoUNBDlPwI6J -QN3uz2QNu9vf252xlHM4voMD0yV53RxCOPvhPILOy4xjkcEUI6me6A6KBt4dveVK6Qdu6No3NE6p -4fIFaEKvOcCxywf1TmHC6c2/ptPTM7dcJPons3AWXlzEuWcquncSmj8GUeKk/lUWINGFNcPxW32V -F4mt4idxqP9x+rQQ0ChkpBcqvb3+D2Lpv6rY/ZGNRitWM5Fj6VzIfVdmBrWnY31TOxcGCl1Nf3Vp -fgUvm7/lmpAavbq+vr5Eh4PNSHkgwsHZ63O0VzaV0IzuepderY1b/bXeS/Ohadcd4yqy67XGehSs -q47oRymgno73SXvT/OJ3RNl5T1l7+2f6GtOE3lNs72GNU1SxNqT+ftQTorNSZ8jk0MHq0EyR0b4K -ujUHCkzDD4+JMIqC8CwIIYbCCIVnSI80LDRw9Z1nCQP7KFxGp8vzhSM9FD5dfl8spjzUBpr32Wqx -aAPrsc8Ue2g429Hw/2db/QNQSwcIStYTNioGAACnGwAAUEsDBBQAAAgAAL1pgT4pm/8UUwMAAFMD -AAAIAAAAbWV0YS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2Zm -aWNlOmRvY3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRv -Y3VtZW50OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x -OTk5L3hsaW5rIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHht -bG5zOm1ldGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAi -IHhtbG5zOm9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRk -bD0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIx -LjIiIGdyZGRsOnRyYW5zZm9ybWF0aW9uPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZmZp -Y2UvMS4yL3hzbHQvb2RmMnJkZi54c2wiPjxvZmZpY2U6bWV0YT48bWV0YTpjcmVhdGlvbi1kYXRl -PjIwMTEtMDQtMDFUMTA6MTM6NTk8L21ldGE6Y3JlYXRpb24tZGF0ZT48bWV0YTplZGl0aW5nLWR1 -cmF0aW9uPlAwRDwvbWV0YTplZGl0aW5nLWR1cmF0aW9uPjxtZXRhOmVkaXRpbmctY3ljbGVzPjE8 -L21ldGE6ZWRpdGluZy1jeWNsZXM+PG1ldGE6ZG9jdW1lbnQtc3RhdGlzdGljIG1ldGE6dGFibGUt -Y291bnQ9IjEiIG1ldGE6Y2VsbC1jb3VudD0iNTEiIG1ldGE6b2JqZWN0LWNvdW50PSIwIi8+PG1l -dGE6Z2VuZXJhdG9yPkxpYnJlT2ZmaWNlLzMuMyRVbml4IE9wZW5PZmZpY2Uub3JnX3Byb2plY3Qv -MzMwbTkkQnVpbGQtMTwvbWV0YTpnZW5lcmF0b3I+PC9vZmZpY2U6bWV0YT48L29mZmljZTpkb2N1 -bWVudC1tZXRhPlBLAwQUAAgICAC9aYE+AAAAAAAAAAAAAAAAGAAAAFRodW1ibmFpbHMvdGh1bWJu -YWlsLnBuZ61X91sTTLMNUQxSTEAMTZNQpUmvEiKB0Js0AaUGEEEFUTpEIwlBOkSqIEWCdGkKCiJF -EIQXqSIdpXeQBAxNPt579bv/wN1fdp9nd57ZmTNnzm7kVRNdNmZeZgAAwKavhzE/ntcAAAYAE/B4 -1Rt2UwYAgIjoY9CWgZlrz9nI4+KsRH2ruKT9bERAp2FWrc2pQwTrKf5f1smDMSAXQddTARnPs0/j -qbu7v6Y2phoDsj8lHuxts+RSm6bi6OmOh2scvkbSjwSvfWh4EXAXI2S9Jd9YXHfSpiMyJBY4p7t7 -iSOYYSrIKASIt6CPSAHXwxIDedKskUwinV30TpfWYKJEsCqJaT5YphzATk9tTzMbP5X7oKXnyqPf -qygQQEe2W+LhAT23IKRaI/C3zvfg3FZ0PAdWpaUR+QV3z0e7ejQtSsNRWlL9l/h9o1dH1DG5a/pn -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 -L+1V9Ic+2Z1dfm60ib712LN9nh/opBAgqVaVbQDleIsHAwUAf+rkXyJpwP5PTDpc/vtP/P/fPmKY -XH+mSmryiwQcD31tE8wrTaew/wBQSwcIuAeSFtwPAABfEAAAUEsDBBQACAgIAL1pgT4AAAAAAAAA -AAAAAAAnAAAAQ29uZmlndXJhdGlvbnMyL2FjY2VsZXJhdG9yL2N1cnJlbnQueG1sAwBQSwcIAAAA -AAIAAAAAAAAAUEsDBBQAAAgAAL1pgT4AAAAAAAAAAAAAAAAcAAAAQ29uZmlndXJhdGlvbnMyL3By -b2dyZXNzYmFyL1BLAwQUAAAIAAC9aYE+AAAAAAAAAAAAAAAAGAAAAENvbmZpZ3VyYXRpb25zMi9m -bG9hdGVyL1BLAwQUAAAIAAC9aYE+AAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi9wb3B1 -cG1lbnUvUEsDBBQAAAgAAL1pgT4AAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xw -YW5lbC9QSwMEFAAACAAAvWmBPgAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0aW9uczIvbWVudWJh -ci9QSwMEFAAACAAAvWmBPgAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0aW9uczIvdG9vbGJhci9Q -SwMEFAAACAAAvWmBPgAAAAAAAAAAAAAAAB8AAABDb25maWd1cmF0aW9uczIvaW1hZ2VzL0JpdG1h -cHMvUEsDBBQAAAgAAL1pgT4AAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJhdGlvbnMyL3N0YXR1c2Jh -ci9QSwMEFAAICAgAvWmBPgAAAAAAAAAAAAAAAAwAAABzZXR0aW5ncy54bWztWVFzmzgQfr9f4eHd -wSape2Fidxx3esldrs0YJ+31TYa1rYnQMpIwcX/9CTAdh0JDMMpNZ+7JYyR9u6x2P32LLt49hqy3 -BSEp8rE1PBlYPeA+BpSvx9bd4kP/d+vd5LcLXK2oD26AfhwCV30JSukpsqeXc+nmw2MrFtxFIql0 -OQlBusp3MQJeLHMPZ7uZsfzJI6P8YWxtlIpc206S5CQ5PUGxtofn5+d2NlpM9ZGv6LqpqXz2oSlE -/G4oXZA7kxlzBoMzO/9v9fZOHoTGsSZFHIrXn1zsDeQ/faogTGPT2z9OXRtb2qS7pZB8j5pVte7p -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 -NgQAAA0oAAAAAA==</string> </value> - </item> - <item> - <key> <string>precondition</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>size</string> </key> - <value> <int>11353</int> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>Standard Services</string> </value> - </item> - </dictionary> - </pickle> - </record> -</ZopeData> diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_simulation_rule.ods.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_simulation_rule.ods.xml index 52c943198d0ef18f9ba8da68a9627082469e8018..afc701770a79f3f9f246f0fbb94414c7c4f8ade8 100644 --- a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_simulation_rule.ods.xml +++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/standard_simulation_rule.ods.xml @@ -8,7 +8,7 @@ <dictionary> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts27064663.06</string> </value> + <value> <string>ts56011467.79</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -20,172 +20,165 @@ </item> <item> <key> <string>data</string> </key> - <value> <string encoding="base64">UEsDBBQAAAgAAKBkNECFbDmKLgAAAC4AAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz -aXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0UEsDBBQAAAgAAKBkNECKaaIeggMAAIIDAAAIAAAA -bWV0YS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2ZmaWNlOmRv -Y3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50 -OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs -aW5rIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOm1l -dGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiIHhtbG5z -Om9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRkbD0iaHR0 -cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxv -ZmZpY2U6bWV0YT48bWV0YTppbml0aWFsLWNyZWF0b3I+cmFmYWVsIDwvbWV0YTppbml0aWFsLWNy -ZWF0b3I+PG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDEyLTAxLTIwVDA5OjUxOjMwPC9tZXRhOmNyZWF0 -aW9uLWRhdGU+PGRjOmRhdGU+MjAxMi0wMS0yMFQxMDozNzowMDwvZGM6ZGF0ZT48ZGM6Y3JlYXRv -cj5yYWZhZWwgPC9kYzpjcmVhdG9yPjxtZXRhOmVkaXRpbmctZHVyYXRpb24+UFQ2TTExUzwvbWV0 -YTplZGl0aW5nLWR1cmF0aW9uPjxtZXRhOmVkaXRpbmctY3ljbGVzPjI8L21ldGE6ZWRpdGluZy1j -eWNsZXM+PG1ldGE6Z2VuZXJhdG9yPkxpYnJlT2ZmaWNlLzMuNCRVbml4IExpYnJlT2ZmaWNlX3By -b2plY3QvMzQwbTEkQnVpbGQtNDAyPC9tZXRhOmdlbmVyYXRvcj48bWV0YTpkb2N1bWVudC1zdGF0 -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 -gLhAQFwgIC4QEBcIiAsExAUC4gIBcYGAuEBAXCAgLhAQFwiICwTEBQLiAgFxgYC4QEBcICAuEBAX -CIgLBMQFAuICAXGBgLhAQFwgIC4QEBcIiAsExAUC4gIBcYGAuEBAXCAgLhAQFwiICwTEBQLiAgFx -gYC4QEBcICAuEBAXCIgLBMQFAuICAXGBgLhAQFwgIC4QEBcIiAsExAUC4gIBcYGAuEBAXCAgLhAQ -FwiICwTEBQLiAgFxgYC4QEBcICAuEBAXCIgLBMQFAuICAXGBgLhAQFwgIC4QEBcIiAsExAUC4gIB -cYGAuEBAXCAgLhAQFwiICwTEBQLiAgFxgYC4QEBcICAuEBAXCIgLBMQFAuICAXGBgLhAQFwgIC4Q -EBcIiAsExAUC4gIBcYGAuEBAXCAgLhAQFwiICwTEBQLiAgFxgYC4QEBcICAuEBAXCIgLBMQFAuIC -AXGBgLhAQFwgIC4QEBcIiAsExAUC4gIBcYGAuEBAXCAgLhAQFwiICwTEBQLiAgFxgYC4QEBcICAu -EBAXCIgLBMQFAuICAXGBgLhAQFwgIC4QEBcIiAsExAUC4gIBcYGAuEBAXCAgLhAQFwj+A3qxbZ5z -bljAAAAAAElFTkSuQmCCUEsDBBQAAAgAAKBkNEAAAAAAAAAAAAAAAAAfAAAAQ29uZmlndXJhdGlv -bnMyL2ltYWdlcy9CaXRtYXBzL1BLAwQUAAAIAACgZDRAAAAAAAAAAAAAAAAAGgAAAENvbmZpZ3Vy -YXRpb25zMi9wb3B1cG1lbnUvUEsDBBQAAAgAAKBkNEAAAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJh -dGlvbnMyL3Rvb2xwYW5lbC9QSwMEFAAACAAAoGQ0QAAAAAAAAAAAAAAAABoAAABDb25maWd1cmF0 -aW9uczIvc3RhdHVzYmFyL1BLAwQUAAAIAACgZDRAAAAAAAAAAAAAAAAAHAAAAENvbmZpZ3VyYXRp -b25zMi9wcm9ncmVzc2Jhci9QSwMEFAAACAAAoGQ0QAAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0 -aW9uczIvdG9vbGJhci9QSwMEFAAACAAAoGQ0QAAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0aW9u -czIvbWVudWJhci9QSwMEFAAACAAAoGQ0QAAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0aW9uczIv -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 -BgAAAAAQABAANgQAAIQgAAAAAA==</string> </value> + <value> <string encoding="base64">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 +sjVhjDZiMPlR6dqPQRBeISbbr4sS+l4362d1fx2LnE9zZm3R6KNM2rhjjkkFt6/AAZQmTf8qHJJE +vTmoftTBrQf/OOgOSKXu5gwfeKU6d3pd5pE/AhqS0m9ycIEg5wnIMRGou6NPtnC7YzPurKWcg/t6 +DtPlfVs7IVx8dxHBfGXWschgi5FUb3QXRQ3vrt5xpfSLYuiGNDRNqebyBWjCRDnCscsHDbwww3vL +r8l7eueOi0R/egoX4eVlnHumontnofkxiBIn9usmQKLLRgzH7/RYUCRNFT+LQ/3L2aeFgKEjI4NQ +Gdz1fxBL/1WLPRzZaLJi1Rs5lk6FPA5aZlFrOjUKtXNhpNBZ+ptr8zW5rP+WW0IsenNzc3ON+ov1 +StkzQs/32o9Ny6YSBtvDoOlZ27jT3+q71A+ath0CN1FzXmttQKFR1TH6SQpoYMeHTHtbfzk7Ydnl +wLJN9890G9OEPtDY3mOLU1SxNsQ+PxkYonNSZ8nkUO90GKbI5FwF05oDBWaGhxeTMFoG8HsJybEM +UbREeqVmoYGbb72GMLCPnq4uwtXFU0d6LHy6/L5YTHmoDTQvPpurqzbQrv1DsYfGsx2N/3/V5m9Q +SwcIObs41gEGAADvGgAAUEsDBBQAAAgAAFtulEH9l/qF3wMAAN8DAAAIAAAAbWV0YS54bWw8P3ht +bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2ZmaWNlOmRvY3VtZW50LW1ldGEg +eG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmlj +ZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpk +Yz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOm1ldGE9InVybjpvYXNp +czpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiIHhtbG5zOm9vbz0iaHR0cDov +L29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRkbD0iaHR0cDovL3d3dy53My5v +cmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIxLjIiIGdyZGRsOnRyYW5zZm9y +bWF0aW9uPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZmZpY2UvMS4yL3hzbHQvb2RmMnJk +Zi54c2wiPjxvZmZpY2U6bWV0YT48bWV0YTppbml0aWFsLWNyZWF0b3I+cmFmYWVsIDwvbWV0YTpp +bml0aWFsLWNyZWF0b3I+PG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDEyLTAxLTIwVDA5OjUxOjMwPC9t +ZXRhOmNyZWF0aW9uLWRhdGU+PGRjOmRhdGU+MjAxMi0xMi0yMFQxNDo1MDo1NDwvZGM6ZGF0ZT48 +ZGM6Y3JlYXRvcj5Kw6lyb21lIFBlcnJpbjwvZGM6Y3JlYXRvcj48bWV0YTplZGl0aW5nLWR1cmF0 +aW9uPlBUNk0zMFM8L21ldGE6ZWRpdGluZy1kdXJhdGlvbj48bWV0YTplZGl0aW5nLWN5Y2xlcz4z +PC9tZXRhOmVkaXRpbmctY3ljbGVzPjxtZXRhOmdlbmVyYXRvcj5PcGVuT2ZmaWNlLm9yZy8zLjMk +VW5peCBPcGVuT2ZmaWNlLm9yZ19wcm9qZWN0LzMzMG0yMCRCdWlsZC05NTY3PC9tZXRhOmdlbmVy +YXRvcj48bWV0YTpkb2N1bWVudC1zdGF0aXN0aWMgbWV0YTp0YWJsZS1jb3VudD0iMSIgbWV0YTpj +ZWxsLWNvdW50PSIzMCIgbWV0YTpvYmplY3QtY291bnQ9IjAiLz48L29mZmljZTptZXRhPjwvb2Zm +aWNlOmRvY3VtZW50LW1ldGE+UEsDBBQACAgIAFtulEEAAAAAAAAAAAAAAAAYAAAAVGh1bWJuYWls +cy90aHVtYm5haWwucG5n7dXpWxIIAgZwzKZATXuYvEvbEd0dLchMMrynlPWu0DwHJcyjQNtRMfHA +IY8Zt9FdTdMRU0cd80CdNsG8j1F0PXCKAAVlzQtlFBPBkGt79r/Y55lP7+/z++F9v78ZiDylY6YD +AABO+fz1xu1POQgAaAGAxz6JXB+ZCQCcpPvc8Ax+RNlZwhDew03yMYeU9rvs31zTApZQHHteXdUY +K60xqHad883pPTf3N3qTL4eNL12FqMIaV5PoPMYmKUetNEWrVhkl7JAa7SP6dlWryZisQ+ImljM7 +LXmkLIvvFR+4FuWKED8rjKibp8XT5SSW4cXmBaj1TJZ2drvgF+RDOyPemV393dc0k9eV9UgF1/LN +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</string> </value> </item> <item> <key> <string>precondition</string> </key> @@ -193,7 +186,7 @@ BgAAAAAQABAANgQAAIQgAAAAAA==</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>9424</int> </value> + <value> <int>9063</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_configurator_standard/TestTemplateItem/testStandardConfigurationWorkflow.py b/bt5/erp5_configurator_standard/TestTemplateItem/testStandardConfigurationWorkflow.py old mode 100755 new mode 100644 index 5e7ff4d04c6abfb1a43092915f90b43c2256613a..376ef3a3b7545d4a4fd94c5f624ae447b874a1d4 --- a/bt5/erp5_configurator_standard/TestTemplateItem/testStandardConfigurationWorkflow.py +++ b/bt5/erp5_configurator_standard/TestTemplateItem/testStandardConfigurationWorkflow.py @@ -49,6 +49,7 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): stepCheckPersonInformationList stepCheckValidOrganisationList stepCheckValidCurrencyList + stepCheckValidServiceList stepCheckAlarmList stepCheckPublicGadgetList stepCheckPreferenceList @@ -69,6 +70,8 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): stepViewAddGadget stepViewEventModule stepAddEvent + stepCheckEventResourceItemList + stepCheckTicketResourceItemList stepSentEventWorkflow stepViewAccountModule stepAddAccountModule @@ -80,6 +83,7 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): stepCopyAndPasteOrganisation stepEntityWorkflow stepViewCreatedPersons + stepCheckSocialTitleCategory stepViewCreatedOrganisations stepViewCreatedAssignemnts stepAddAccoutingPeriod @@ -222,6 +226,12 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): self.assertEquals(len(assignment_list), 1) self.assertEquals('my_group', assignment_list[0].getGroup()) + def stepCheckSocialTitleCategory(self, sequence=None,sequence_list=None, **kw): + """Check that the social title category is configured. + """ + self.assertNotEquals(0, + len(self.portal.portal_categories.social_title.contentValues())) + def stepCheckValidOrganisationList(self, sequence=None, sequence_list=None, **kw): """ Check if after the configuration the Organisation objects are validated. @@ -283,6 +293,18 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): self.assertEquals('validated', currency.getValidationState()) currency.Base_checkConsistency() + def stepCheckValidServiceList(self, sequence=None, sequence_list=None, **kw): + """ + Check if after configuration the Service objects are validated. + """ + business_configuration = sequence.get("business_configuration") + service_list = self.getBusinessConfigurationObjectList(business_configuration, 'Service') + self.assertNotEquals(len(service_list), 0) + for service in service_list: + self.assertEquals('validated', service.getValidationState()) + self.assertNotEquals(None, service.getUseValue()) + service.Base_checkConsistency() + def stepCheckAlarmList(self, sequence=None, sequence_list=None, **kw): """ Check if after configuration the Alarms objects are enabled. @@ -361,12 +383,53 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): preference_tool.getPreferredAccountingTransactionSimulationStateList()) # trade - self.assertEquals(['supplier'], preference_tool.getPreferredSupplierRoleList()) - self.assertEquals(['client'], preference_tool.getPreferredClientRoleList()) - self.assertEquals(['trade/sale'], preference_tool.getPreferredSaleUseList()) - self.assertEquals(['trade/purchase'], preference_tool.getPreferredPurchaseUseList()) - self.assertEquals(['trade/container'], preference_tool.getPreferredPackingUseList()) - self.assertEquals(['trade/tax'], preference_tool.getPreferredTaxUseList()) + self.assertEquals(['role/supplier'], preference_tool.getPreferredSupplierRoleList()) + self.assertEquals(['role/client'], preference_tool.getPreferredClientRoleList()) + self.assertEquals(['use/trade/sale'], preference_tool.getPreferredSaleUseList()) + self.assertEquals(['use/trade/purchase'], preference_tool.getPreferredPurchaseUseList()) + self.assertEquals(['use/trade/container'], preference_tool.getPreferredPackingUseList()) + self.assertEquals(['use/trade/tax'], preference_tool.getPreferredTaxUseList()) + + # CRM + self.assertEquals(['use/crm/event'], preference_tool.getPreferredEventUseList()) + self.assertEquals(['use/crm/campaign'], preference_tool.getPreferredCampaignUseList()) + self.assertEquals(['use/crm/sale_opportunity'], preference_tool.getPreferredSaleOpportunityUseList()) + self.assertEquals(['use/crm/support_request'], preference_tool.getPreferredSupportRequestUseList()) + self.assertEquals(['use/crm/meeting'], preference_tool.getPreferredMeetingUseList()) + + def stepCheckEventResourceItemList(self, sequence=None, sequence_list=None): + self.assertTrue(self.all_username_list) + for username in self.all_username_list: + for event_type in ('Visit', 'Web Message', 'Letter', 'Note', + 'Phone Call', 'Mail Message', 'Fax Message'): + self._loginAsUser(username) + event = self.portal.event_module.newContent(portal_type=event_type) + self.assertTrue(('Complaint', 'service_module/event_complaint') + in event.Event_getResourceItemList()) + + def stepCheckTicketResourceItemList(self, sequence=None, sequence_list=None): + self.assertTrue(self.all_username_list) + for username in self.all_username_list: + self._loginAsUser(username) + ticket = self.portal.support_request_module.newContent( + portal_type='Support Request') + self.assertTrue(('Financial Support', 'service_module/support_financial') + in ticket.Ticket_getResourceItemList()) + + ticket = self.portal.meeting_module.newContent( + portal_type='Meeting') + self.assertTrue(('Conference', 'service_module/organisation_conference') + in ticket.Ticket_getResourceItemList()) + + ticket = self.portal.sale_opportunity_module.newContent( + portal_type='Sale Opportunity') + self.assertTrue(('Product', 'service_module/product') + in ticket.Ticket_getResourceItemList()) + + ticket = self.portal.campaign_module.newContent( + portal_type='Campaign') + self.assertTrue(('Marketing Campaign', 'service_module/marketing_campaign') + in ticket.Ticket_getResourceItemList()) def stepCheckModulesBusinessApplication(self, sequence=None, sequence_list=None, **kw): """ @@ -575,12 +638,20 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): self.assertEquals(invoicing_path.getTradeDate(), 'trade_phase/trade/delivery') self.assertEquals(invoicing_path.getTestMethodId(), None) + tax_path = getattr(business_process, "tax_path", None) + self.assertNotEquals(tax_path, None) + self.assertEquals(tax_path.getEfficiency(), 1.0) + self.assertEquals(tax_path.getTradePhase(), 'trade/tax') + self.assertEquals(tax_path.getTradeDate(), 'trade_phase/trade/invoicing') + self.assertEquals(tax_path.getTestMethodId(), None) + accounting_credit_path = getattr(business_process, "accounting_credit_path", None) self.assertNotEquals(accounting_credit_path, None) self.assertEquals(accounting_credit_path.getEfficiency(), -1.0) self.assertEquals(accounting_credit_path.getTradePhase(), 'trade/accounting') self.assertEquals(accounting_credit_path.getTradeDate(), 'trade_phase/trade/invoicing') self.assertEquals(accounting_credit_path.getSource(), "account_module/receivable") + self.assertEquals(accounting_credit_path.getDestination(), "account_module/payable") accounting_debit_path = getattr(business_process, "accounting_debit_path", None) self.assertNotEquals(accounting_debit_path, None) @@ -588,6 +659,7 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): self.assertEquals(accounting_debit_path.getTradePhase(), 'trade/accounting') self.assertEquals(accounting_debit_path.getTradeDate(), 'trade_phase/trade/invoicing') self.assertEquals(accounting_debit_path.getSource(), "account_module/sales") + self.assertEquals(accounting_debit_path.getDestination(), "account_module/purchase") order_link = getattr(business_process, "order_link", None) self.assertNotEquals(order_link, None) @@ -625,8 +697,20 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): self.assertEquals(invoice_link.getDeliveryBuilderList(), ["portal_deliveries/purchase_invoice_builder", - "portal_deliveries/purchase_invoice_transaction_trade_model_builder", - "portal_deliveries/sale_invoice_builder", + "portal_deliveries/sale_invoice_builder"]) + + tax_link = getattr(business_process, "tax_link", None) + self.assertNotEquals(tax_link, None) + #self.assertFalse(tax_link.getDeliverable()) + self.assertEquals(tax_link.getSuccessor(),"trade_state/trade/invoiced") + self.assertEquals(tax_link.getPredecessor(),"trade_state/trade/invoiced") + self.assertEquals(tax_link.getCompletedStateList(), + ['confirmed','delivered','started','stopped']) + self.assertEquals(tax_link.getFrozenStateList(),['delivered','stopped']) + self.assertEquals(tax_link.getTradePhase(),'trade/tax') + + self.assertEquals(tax_link.getDeliveryBuilderList(), + ["portal_deliveries/purchase_invoice_transaction_trade_model_builder", "portal_deliveries/sale_invoice_transaction_trade_model_builder"]) account_link = getattr(business_process, "account_link", None) @@ -648,8 +732,9 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): self.assertEquals(pay_link.getTradePhase(), 'trade/payment') self.assertEquals(pay_link.getSuccessor(), None) self.assertEquals(pay_link.getPredecessor(),"trade_state/trade/accounted") - self.assertEquals(pay_link.getCompletedState(), None) - self.assertEquals(pay_link.getFrozenState(), None) + self.assertEquals(pay_link.getCompletedStateList(), + ['confirmed','delivered','started','stopped']) + self.assertEquals(pay_link.getFrozenStateList(),['delivered','stopped']) self.assertEquals(pay_link.getDeliveryBuilderList(), ["portal_deliveries/payment_transaction_builder"]) @@ -692,8 +777,9 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): sale_trade_condition.getTitle()) self.assertEquals("STC-General", sale_trade_condition.getReference()) - self.assertNotEquals(None, sale_trade_condition.getEffectiveDate()) - self.assertNotEquals(None, sale_trade_condition.getExpirationDate()) + # Trade condition does not need dates + self.assertEquals(None, sale_trade_condition.getEffectiveDate()) + self.assertEquals(None, sale_trade_condition.getExpirationDate()) # Check relation with Business Process business_process_list = \ @@ -738,8 +824,9 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): purchase_trade_condition.getTitle()) self.assertEquals("PTC-General", purchase_trade_condition.getReference()) - self.assertNotEquals(None, purchase_trade_condition.getEffectiveDate()) - self.assertNotEquals(None, purchase_trade_condition.getExpirationDate()) + # Trade condition does not need dates + self.assertEquals(None, purchase_trade_condition.getEffectiveDate()) + self.assertEquals(None, purchase_trade_condition.getExpirationDate()) # Check relation with Business Process business_process_list = \ @@ -869,8 +956,7 @@ class StandardConfigurationMixin(TestLiveConfiguratorWorkflowMixin): resource.validate() self.tic() - start_date = sale_trade_condition.getEffectiveDate() + 1 - stop_date = sale_trade_condition.getExpirationDate() - 1 + start_date = stop_date = DateTime() order = module.newContent( portal_type='Sale Order', specialise=(sale_trade_condition.getRelativeUrl(),), diff --git a/bt5/erp5_configurator_standard/bt/revision b/bt5/erp5_configurator_standard/bt/revision index 0c1a9b6f06b7455bfa5e5419b38675b5d46eb95a..f95076e1d68b84bd07c51af7c6b823f41522e3ab 100644 --- a/bt5/erp5_configurator_standard/bt/revision +++ b/bt5/erp5_configurator_standard/bt/revision @@ -1 +1 @@ -645 \ No newline at end of file +662 \ No newline at end of file diff --git a/bt5/erp5_crm/PortalTypeHiddenContentTypeTemplateItem/hidden_content_type_list.xml b/bt5/erp5_crm/PortalTypeHiddenContentTypeTemplateItem/hidden_content_type_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bab38139cd3c238eb6e0a553f7a956a72bae1c5 --- /dev/null +++ b/bt5/erp5_crm/PortalTypeHiddenContentTypeTemplateItem/hidden_content_type_list.xml @@ -0,0 +1,5 @@ +<hidden_content_type_list> + <portal_type id="Event Module"> + <item>Acknowledgement</item> + </portal_type> +</hidden_content_type_list> \ No newline at end of file diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewEventList/ticket_listbox.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewEventList/ticket_listbox.xml index 0cb5d8e95d97c6b4d8382824b3926983510d8a73..febd263b1f7f4c3e5691a5e0d4118f278d63be6e 100644 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewEventList/ticket_listbox.xml +++ b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewEventList/ticket_listbox.xml @@ -91,9 +91,13 @@ <string>Title</string> </tuple> <tuple> - <string>resource_title</string> + <string>portal_type</string> <string>Type</string> </tuple> + <tuple> + <string>resource_title</string> + <string>Resource</string> + </tuple> <tuple> <string>destination_section_title</string> <string>Client</string> diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/additionnal_javascript.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/additionnal_javascript.xml index a79c1855a98ba36b89f57b071fa894c03d506dff..1b080201cc812e16f0af197737959fab354dcc49 100644 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/additionnal_javascript.xml +++ b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/additionnal_javascript.xml @@ -186,9 +186,7 @@ </item> <item> <key> <string>title</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> + <value> <string></string> </value> </item> <item> <key> <string>unicode</string> </key> @@ -215,7 +213,7 @@ </item> <item> <key> <string>css_class</string> </key> - <value> <string>hidden</string> </value> + <value> <string>hidden hiddenLabel</string> </value> </item> <item> <key> <string>default</string> </key> @@ -225,54 +223,34 @@ $(function (){\n function toggleNatureField() {\n if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Support Request\') {\n -$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().removeClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").removeClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n +$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_support_request_resource\']").removeClass("hidden").parent().parent().removeClass("hidden");\n +$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n }\n else if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Campaign\'){\n -$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().removeClass("hidden");\n -$("select[name=\'field_your_follow_up_campaign_resource\']").removeClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n +$("select[name=\'field_your_follow_up_campaign_resource\']").removeClass("hidden").parent().parent().removeClass("hidden");\n +$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n }\n else if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Meeting\'){\n -$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().removeClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").removeClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n +$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_meeting_resource\']").removeClass("hidden").parent().parent().removeClass("hidden");\n +$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n }\n else if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Sale Opportunity\'){\n -$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().removeClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").removeClass("hidden");\n +$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").removeClass("hidden").parent().parent().removeClass("hidden");\n }\n else {\n -$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n -$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n +$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n +$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden").parent().parent().addClass("hidden");\n }\n }\n $("select[name=\'field_your_follow_up_ticket_type\']").change(function(){toggleNatureField()});\n @@ -332,7 +310,7 @@ toggleNatureField();\n </item> <item> <key> <string>title</string> </key> - <value> <string>show</string> </value> + <value> <string>Additional Javascript</string> </value> </item> <item> <key> <string>unicode</string> </key> @@ -352,17 +330,4 @@ toggleNatureField();\n </dictionary> </pickle> </record> - <record id="2" aka="AAAAAAAAAAI="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string>string:</string> </value> - </item> - </dictionary> - </pickle> - </record> </ZopeData> diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation.xml index 965543c5e45c279c62631f86cbcaad0f9e11d633..eb865c55a2d1ddd8738b480a98a090f9e01d3ed9 100644 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation.xml +++ b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation.xml @@ -88,7 +88,6 @@ <value> <list> <string>my_preferred_event_use_list</string> - <string>my_preferred_event_resource_list</string> <string>my_preferred_event_resource</string> <string>my_preferred_event_assessment_form_id_list</string> <string>my_preferred_event_sender_email</string> @@ -100,13 +99,10 @@ <value> <list> <string>my_preferred_sale_opportunity_use_list</string> - <string>my_preferred_sale_opportunity_resource_list</string> <string>my_preferred_sale_opportunity_resource</string> <string>my_preferred_campaign_use_list</string> - <string>my_preferred_campaign_resource_list</string> <string>my_preferred_campaign_resource</string> <string>my_preferred_support_request_use_list</string> - <string>my_preferred_support_request_resource_list</string> <string>my_preferred_support_request_resource</string> <string>my_preferred_meeting_use_list</string> <string>my_preferred_meeting_resource_list</string> diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_campaign_resource_list.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_campaign_resource_list.xml deleted file mode 100644 index d6cf768fd7c7465344a7b32dc38ddba1bc000057..0000000000000000000000000000000000000000 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_campaign_resource_list.xml +++ /dev/null @@ -1,332 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="LinesField" module="Products.Formulator.StandardFields"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>id</string> </key> - <value> <string>my_preferred_campaign_resource_list</string> </value> - </item> - <item> - <key> <string>message_values</string> </key> - <value> - <dictionary> - <item> - <key> <string>external_validator_failed</string> </key> - <value> <string>The input failed the external validator.</string> </value> - </item> - <item> - <key> <string>line_too_long</string> </key> - <value> <string>A line was too long.</string> </value> - </item> - <item> - <key> <string>required_not_found</string> </key> - <value> <string>Input is required but no input given.</string> </value> - </item> - <item> - <key> <string>too_long</string> </key> - <value> <string>You entered too many characters.</string> </value> - </item> - <item> - <key> <string>too_many_lines</string> </key> - <value> <string>You entered too many lines.</string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>overrides</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>tales</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> - </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>values</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> - <list/> - </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string>A list of relative URLs for the services to display in the "Nature" pop-up menu of Campaigns.</string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <int>5</int> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>Campaign Resources (Deprecated)</string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -<br /> - -]]></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <int>40</int> </value> - </item> - </dictionary> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="2" aka="AAAAAAAAAAI="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string>python: here.getPreferredCampaignResourceList() or preferences.getPreferredCampaignResourceList()</string> </value> - </item> - </dictionary> - </pickle> - </record> - <record id="3" aka="AAAAAAAAAAM="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -python: len(here.getPreference(field.getId().replace(\'my_\', \'\'))) > 1 - -]]></string> </value> - </item> - </dictionary> - </pickle> - </record> -</ZopeData> diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_sale_opportunity_resource_list.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_sale_opportunity_resource_list.xml deleted file mode 100644 index 1dc5d07e2311ff6fc9dc4445136d45b2274d7505..0000000000000000000000000000000000000000 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_sale_opportunity_resource_list.xml +++ /dev/null @@ -1,332 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="LinesField" module="Products.Formulator.StandardFields"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>id</string> </key> - <value> <string>my_preferred_sale_opportunity_resource_list</string> </value> - </item> - <item> - <key> <string>message_values</string> </key> - <value> - <dictionary> - <item> - <key> <string>external_validator_failed</string> </key> - <value> <string>The input failed the external validator.</string> </value> - </item> - <item> - <key> <string>line_too_long</string> </key> - <value> <string>A line was too long.</string> </value> - </item> - <item> - <key> <string>required_not_found</string> </key> - <value> <string>Input is required but no input given.</string> </value> - </item> - <item> - <key> <string>too_long</string> </key> - <value> <string>You entered too many characters.</string> </value> - </item> - <item> - <key> <string>too_many_lines</string> </key> - <value> <string>You entered too many lines.</string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>overrides</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>tales</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> - </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>values</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> - <list/> - </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string>A list of relative URLs for the services to display in the "Nature" pop-up menu of Sales Opportunities.</string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <int>5</int> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>Sale Opportunity Resources (Deprecated)</string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -<br /> - -]]></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <int>40</int> </value> - </item> - </dictionary> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="2" aka="AAAAAAAAAAI="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string>python: here.getPreferredSaleOpportunityResourceList() or preferences.getPreferredSaleOpportunityResourceList()</string> </value> - </item> - </dictionary> - </pickle> - </record> - <record id="3" aka="AAAAAAAAAAM="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -python: len(here.getPreference(field.getId().replace(\'my_\', \'\'))) > 1 - -]]></string> </value> - </item> - </dictionary> - </pickle> - </record> -</ZopeData> diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_support_request_resource_list.xml b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_support_request_resource_list.xml deleted file mode 100644 index ae15fe15c3eeebcf7e915b9c0e7190ec1a264cd4..0000000000000000000000000000000000000000 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_support_request_resource_list.xml +++ /dev/null @@ -1,332 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="LinesField" module="Products.Formulator.StandardFields"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>id</string> </key> - <value> <string>my_preferred_support_request_resource_list</string> </value> - </item> - <item> - <key> <string>message_values</string> </key> - <value> - <dictionary> - <item> - <key> <string>external_validator_failed</string> </key> - <value> <string>The input failed the external validator.</string> </value> - </item> - <item> - <key> <string>line_too_long</string> </key> - <value> <string>A line was too long.</string> </value> - </item> - <item> - <key> <string>required_not_found</string> </key> - <value> <string>Input is required but no input given.</string> </value> - </item> - <item> - <key> <string>too_long</string> </key> - <value> <string>You entered too many characters.</string> </value> - </item> - <item> - <key> <string>too_many_lines</string> </key> - <value> <string>You entered too many lines.</string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>overrides</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>tales</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> - </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>values</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> - <list/> - </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string>A list of relative URLs for the services to display in the "Nature" pop-up menu of Support Requests.</string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>height</string> </key> - <value> <int>5</int> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_linelength</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>max_lines</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>Support Request Resources (Deprecated)</string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>view_separator</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -<br /> - -]]></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>width</string> </key> - <value> <int>40</int> </value> - </item> - </dictionary> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="2" aka="AAAAAAAAAAI="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string>python: here.getPreferredSupportRequestResourceList() or preferences.getPreferredSupportRequestResourceList()</string> </value> - </item> - </dictionary> - </pickle> - </record> - <record id="3" aka="AAAAAAAAAAM="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -python: len(here.getPreference(field.getId().replace(\'my_\', \'\'))) > 1 - -]]></string> </value> - </item> - </dictionary> - </pickle> - </record> -</ZopeData> diff --git a/bt5/erp5_crm/WorkflowTemplateItem/portal_workflow/ticket_workflow/states/suspended.xml b/bt5/erp5_crm/WorkflowTemplateItem/portal_workflow/ticket_workflow/states/suspended.xml index 6a40fd367f78c371f8c881bd3d67617b777e21c1..e9b9d89e92473e54ce4cf154ab3d134684640dd7 100644 --- a/bt5/erp5_crm/WorkflowTemplateItem/portal_workflow/ticket_workflow/states/suspended.xml +++ b/bt5/erp5_crm/WorkflowTemplateItem/portal_workflow/ticket_workflow/states/suspended.xml @@ -61,6 +61,7 @@ <string>Assignee</string> <string>Assignor</string> <string>Auditor</string> + <string>Manager</string> </tuple> </value> </item> @@ -70,6 +71,7 @@ <tuple> <string>Assignee</string> <string>Assignor</string> + <string>Manager</string> </tuple> </value> </item> @@ -80,6 +82,7 @@ <string>Assignee</string> <string>Assignor</string> <string>Auditor</string> + <string>Manager</string> </tuple> </value> </item> diff --git a/bt5/erp5_crm/bt/revision b/bt5/erp5_crm/bt/revision index 316941dd7da08cf2cd5477dbe52ed1440256594c..1fb8d9e69e69176dcaf94f76f644aa67d53a7995 100644 --- a/bt5/erp5_crm/bt/revision +++ b/bt5/erp5_crm/bt/revision @@ -1 +1 @@ -599 \ No newline at end of file +601 \ No newline at end of file diff --git a/bt5/erp5_crm/bt/template_portal_type_hidden_content_type_list b/bt5/erp5_crm/bt/template_portal_type_hidden_content_type_list new file mode 100644 index 0000000000000000000000000000000000000000..e4f299623434756e05764f333cdac84182831615 --- /dev/null +++ b/bt5/erp5_crm/bt/template_portal_type_hidden_content_type_list @@ -0,0 +1 @@ +Event Module | Acknowledgement \ No newline at end of file diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Image_checkConversionFormatPermission.xml b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Image_checkConversionFormatPermission.xml new file mode 100644 index 0000000000000000000000000000000000000000..6688eaa8fc4c3dab187ebadb854bc6b066292f8e --- /dev/null +++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Image_checkConversionFormatPermission.xml @@ -0,0 +1,78 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +if format in (\'svg\',):\n + image_pixels = context.getHeight()* context.getWidth()\n + max_pixels = 128*128 # default thumbnail size\n + if image_pixels > max_pixels:\n + # image is too big to be handled safely by ERP5 as it can lead to \n + # really high memory consumptions\n + return 0\n +return 1\n + + +]]></string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>format, **kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Image_checkConversionFormatPermission</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_dms/bt/revision b/bt5/erp5_dms/bt/revision index f845c1c75762838dd1c65191eb917deda0142a9e..1080e3fef427da492654e2130316a2f971078632 100644 --- a/bt5/erp5_dms/bt/revision +++ b/bt5/erp5_dms/bt/revision @@ -1 +1 @@ -1267 \ No newline at end of file +1268 \ No newline at end of file diff --git a/bt5/erp5_immobilisation/SkinTemplateItem/portal_skins/erp5_immobilisation/AmortisationTransaction_zSelectMovement.xml b/bt5/erp5_immobilisation/SkinTemplateItem/portal_skins/erp5_immobilisation/AmortisationTransaction_zSelectMovement.xml index ef837e8c190ce5e1f12937387deb3158f2046a39..8fb722002022d593d1354fbfa2aced1f9a9d6bdf 100644 --- a/bt5/erp5_immobilisation/SkinTemplateItem/portal_skins/erp5_immobilisation/AmortisationTransaction_zSelectMovement.xml +++ b/bt5/erp5_immobilisation/SkinTemplateItem/portal_skins/erp5_immobilisation/AmortisationTransaction_zSelectMovement.xml @@ -16,7 +16,8 @@ <key> <string>arguments_src</string> </key> <value> <string>from_table_list:list\r\n where_expression\r\n -order_by_expression</string> </value> +order_by_expression\r\n +limit_expression</string> </value> </item> <item> <key> <string>cache_time_</string> </key> @@ -46,11 +47,11 @@ order_by_expression</string> </value> </item> <item> <key> <string>max_cache_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>max_rows_</string> </key> - <value> <int>1000</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>src</string> </key> @@ -77,12 +78,14 @@ WHERE\n 1=1\n <dtml-if where_expression>\n AND <dtml-var where_expression> \n - </dtml-if>\n - AND simulation_movement.uid = catalog.uid\n + </dtml-if> AND simulation_movement.uid = catalog.uid\n AND category.category_uid is NULL\n \n <dtml-if order_by_expression>\n ORDER BY <dtml-var order_by_expression>\n +</dtml-if>\n +<dtml-if limit_expression>\n +LIMIT <dtml-var limit_expression>\n </dtml-if> ]]></string> </value> diff --git a/bt5/erp5_immobilisation/bt/revision b/bt5/erp5_immobilisation/bt/revision index a14c1ee5ab423ef2b6365bb156245892bcd7dfa9..a5b5e0f80574a9027f0861599555b84284347a3b 100644 --- a/bt5/erp5_immobilisation/bt/revision +++ b/bt5/erp5_immobilisation/bt/revision @@ -1 +1 @@ -180 \ No newline at end of file +181 \ No newline at end of file diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_zSelectMovement.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_zSelectMovement.xml index c54b850829294ca8c92a2e48757d0eb109122410..29140cb448254e737c592c54ac0d93a76b6da078 100644 --- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_zSelectMovement.xml +++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_zSelectMovement.xml @@ -24,7 +24,8 @@ <key> <string>arguments_src</string> </key> <value> <string>from_table_list:list\r\n where_expression\r\n -order_by_expression</string> </value> +order_by_expression\r\n +limit_expression</string> </value> </item> <item> <key> <string>cache_time_</string> </key> @@ -52,11 +53,11 @@ order_by_expression</string> </value> </item> <item> <key> <string>max_cache_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>max_rows_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>src</string> </key> @@ -92,8 +93,9 @@ WHERE\n <dtml-if order_by_expression>\n ORDER BY <dtml-var order_by_expression>\n </dtml-if>\n -\n - +<dtml-if limit_expression>\n +LIMIT <dtml-var limit_expression>\n +</dtml-if> ]]></string> </value> </item> diff --git a/bt5/erp5_invoicing/bt/revision b/bt5/erp5_invoicing/bt/revision index 1380537bfd769da6c47bce5c91a7c45a57e7df7c..c4c828bd4ee315c1205df1586629eb43f5d672bd 100644 --- a/bt5/erp5_invoicing/bt/revision +++ b/bt5/erp5_invoicing/bt/revision @@ -1 +1 @@ -385 \ No newline at end of file +386 \ No newline at end of file diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.7.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.7.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..222cf528371f0366c20f459b77279112ec5348dc --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.7.js.xml @@ -0,0 +1,9519 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58329290.51</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-1.7.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>252881</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.7.2.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*!\n + * jQuery JavaScript Library v1.7.2\n + * http://jquery.com/\n + *\n + * Copyright 2011, John Resig\n + * Dual licensed under the MIT or GPL Version 2 licenses.\n + * http://jquery.org/license\n + *\n + * Includes Sizzle.js\n + * http://sizzlejs.com/\n + * Copyright 2011, The Dojo Foundation\n + * Released under the MIT, BSD, and GPL Licenses.\n + *\n + * Date: Wed Mar 21 12:46:34 2012 -0700\n + */\n +(function( window, undefined ) {\n +\n +// Use the correct document accordingly with window argument (sandbox)\n +var document = window.document,\n +\tnavigator = window.navigator,\n +\tlocation = window.location;\n +var jQuery = (function() {\n +\n +// Define a local copy of jQuery\n +var jQuery = function( selector, context ) {\n +\t\t// The jQuery object is actually just the init constructor \'enhanced\'\n +\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n +\t},\n +\n +\t// Map over jQuery in case of overwrite\n +\t_jQuery = window.jQuery,\n +\n +\t// Map over the $ in case of overwrite\n +\t_$ = window.$,\n +\n +\t// A central reference to the root jQuery(document)\n +\trootjQuery,\n +\n +\t// A simple way to check for HTML strings or ID strings\n +\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n +\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n +\n +\t// Check if a string has a non-whitespace character in it\n +\trnotwhite = /\\S/,\n +\n +\t// Used for trimming whitespace\n +\ttrimLeft = /^\\s+/,\n +\ttrimRight = /\\s+$/,\n +\n +\t// Match a standalone tag\n +\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n +\n +\t// JSON RegExp\n +\trvalidchars = /^[\\],:{}\\s]*$/,\n +\trvalidescape = /\\\\(?:["\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n +\trvalidtokens = /"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n +\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n +\n +\t// Useragent RegExp\n +\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n +\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n +\trmsie = /(msie) ([\\w.]+)/,\n +\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n +\n +\t// Matches dashed string for camelizing\n +\trdashAlpha = /-([a-z]|[0-9])/ig,\n +\trmsPrefix = /^-ms-/,\n +\n +\t// Used by jQuery.camelCase as callback to replace()\n +\tfcamelCase = function( all, letter ) {\n +\t\treturn ( letter + "" ).toUpperCase();\n +\t},\n +\n +\t// Keep a UserAgent string for use with jQuery.browser\n +\tuserAgent = navigator.userAgent,\n +\n +\t// For matching the engine and version of the browser\n +\tbrowserMatch,\n +\n +\t// The deferred used on DOM ready\n +\treadyList,\n +\n +\t// The ready event handler\n +\tDOMContentLoaded,\n +\n +\t// Save a reference to some core methods\n +\ttoString = Object.prototype.toString,\n +\thasOwn = Object.prototype.hasOwnProperty,\n +\tpush = Array.prototype.push,\n +\tslice = Array.prototype.slice,\n +\ttrim = String.prototype.trim,\n +\tindexOf = Array.prototype.indexOf,\n +\n +\t// [[Class]] -> type pairs\n +\tclass2type = {};\n +\n +jQuery.fn = jQuery.prototype = {\n +\tconstructor: jQuery,\n +\tinit: function( selector, context, rootjQuery ) {\n +\t\tvar match, elem, ret, doc;\n +\n +\t\t// Handle $(""), $(null), or $(undefined)\n +\t\tif ( !selector ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle $(DOMElement)\n +\t\tif ( selector.nodeType ) {\n +\t\t\tthis.context = this[0] = selector;\n +\t\t\tthis.length = 1;\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// The body element only exists once, optimize finding it\n +\t\tif ( selector === "body" && !context && document.body ) {\n +\t\t\tthis.context = document;\n +\t\t\tthis[0] = document.body;\n +\t\t\tthis.selector = selector;\n +\t\t\tthis.length = 1;\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle HTML strings\n +\t\tif ( typeof selector === "string" ) {\n +\t\t\t// Are we dealing with HTML string or an ID?\n +\t\t\tif ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {\n +\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n +\t\t\t\tmatch = [ null, selector, null ];\n +\n +\t\t\t} else {\n +\t\t\t\tmatch = quickExpr.exec( selector );\n +\t\t\t}\n +\n +\t\t\t// Verify a match, and that no context was specified for #id\n +\t\t\tif ( match && (match[1] || !context) ) {\n +\n +\t\t\t\t// HANDLE: $(html) -> $(array)\n +\t\t\t\tif ( match[1] ) {\n +\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n +\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n +\n +\t\t\t\t\t// If a single string is passed in and it\'s a single tag\n +\t\t\t\t\t// just do a createElement and skip the rest\n +\t\t\t\t\tret = rsingleTag.exec( selector );\n +\n +\t\t\t\t\tif ( ret ) {\n +\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n +\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n +\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n +\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn jQuery.merge( this, selector );\n +\n +\t\t\t\t// HANDLE: $("#id")\n +\t\t\t\t} else {\n +\t\t\t\t\telem = document.getElementById( match[2] );\n +\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t// Handle the case where IE and Opera return items\n +\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n +\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n +\t\t\t\t\t\tthis.length = 1;\n +\t\t\t\t\t\tthis[0] = elem;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tthis.context = document;\n +\t\t\t\t\tthis.selector = selector;\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\n +\t\t\t// HANDLE: $(expr, $(...))\n +\t\t\t} else if ( !context || context.jquery ) {\n +\t\t\t\treturn ( context || rootjQuery ).find( selector );\n +\n +\t\t\t// HANDLE: $(expr, context)\n +\t\t\t// (which is just equivalent to: $(context).find(expr)\n +\t\t\t} else {\n +\t\t\t\treturn this.constructor( context ).find( selector );\n +\t\t\t}\n +\n +\t\t// HANDLE: $(function)\n +\t\t// Shortcut for document ready\n +\t\t} else if ( jQuery.isFunction( selector ) ) {\n +\t\t\treturn rootjQuery.ready( selector );\n +\t\t}\n +\n +\t\tif ( selector.selector !== undefined ) {\n +\t\t\tthis.selector = selector.selector;\n +\t\t\tthis.context = selector.context;\n +\t\t}\n +\n +\t\treturn jQuery.makeArray( selector, this );\n +\t},\n +\n +\t// Start with an empty selector\n +\tselector: "",\n +\n +\t// The current version of jQuery being used\n +\tjquery: "1.7.2",\n +\n +\t// The default length of a jQuery object is 0\n +\tlength: 0,\n +\n +\t// The number of elements contained in the matched element set\n +\tsize: function() {\n +\t\treturn this.length;\n +\t},\n +\n +\ttoArray: function() {\n +\t\treturn slice.call( this, 0 );\n +\t},\n +\n +\t// Get the Nth element in the matched element set OR\n +\t// Get the whole matched element set as a clean array\n +\tget: function( num ) {\n +\t\treturn num == null ?\n +\n +\t\t\t// Return a \'clean\' array\n +\t\t\tthis.toArray() :\n +\n +\t\t\t// Return just the object\n +\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n +\t},\n +\n +\t// Take an array of elements and push it onto the stack\n +\t// (returning the new matched element set)\n +\tpushStack: function( elems, name, selector ) {\n +\t\t// Build a new jQuery matched element set\n +\t\tvar ret = this.constructor();\n +\n +\t\tif ( jQuery.isArray( elems ) ) {\n +\t\t\tpush.apply( ret, elems );\n +\n +\t\t} else {\n +\t\t\tjQuery.merge( ret, elems );\n +\t\t}\n +\n +\t\t// Add the old object onto the stack (as a reference)\n +\t\tret.prevObject = this;\n +\n +\t\tret.context = this.context;\n +\n +\t\tif ( name === "find" ) {\n +\t\t\tret.selector = this.selector + ( this.selector ? " " : "" ) + selector;\n +\t\t} else if ( name ) {\n +\t\t\tret.selector = this.selector + "." + name + "(" + selector + ")";\n +\t\t}\n +\n +\t\t// Return the newly-formed element set\n +\t\treturn ret;\n +\t},\n +\n +\t// Execute a callback for every element in the matched set.\n +\t// (You can seed the arguments with an array of args, but this is\n +\t// only used internally.)\n +\teach: function( callback, args ) {\n +\t\treturn jQuery.each( this, callback, args );\n +\t},\n +\n +\tready: function( fn ) {\n +\t\t// Attach the listeners\n +\t\tjQuery.bindReady();\n +\n +\t\t// Add the callback\n +\t\treadyList.add( fn );\n +\n +\t\treturn this;\n +\t},\n +\n +\teq: function( i ) {\n +\t\ti = +i;\n +\t\treturn i === -1 ?\n +\t\t\tthis.slice( i ) :\n +\t\t\tthis.slice( i, i + 1 );\n +\t},\n +\n +\tfirst: function() {\n +\t\treturn this.eq( 0 );\n +\t},\n +\n +\tlast: function() {\n +\t\treturn this.eq( -1 );\n +\t},\n +\n +\tslice: function() {\n +\t\treturn this.pushStack( slice.apply( this, arguments ),\n +\t\t\t"slice", slice.call(arguments).join(",") );\n +\t},\n +\n +\tmap: function( callback ) {\n +\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n +\t\t\treturn callback.call( elem, i, elem );\n +\t\t}));\n +\t},\n +\n +\tend: function() {\n +\t\treturn this.prevObject || this.constructor(null);\n +\t},\n +\n +\t// For internal use only.\n +\t// Behaves like an Array\'s method, not like a jQuery method.\n +\tpush: push,\n +\tsort: [].sort,\n +\tsplice: [].splice\n +};\n +\n +// Give the init function the jQuery prototype for later instantiation\n +jQuery.fn.init.prototype = jQuery.fn;\n +\n +jQuery.extend = jQuery.fn.extend = function() {\n +\tvar options, name, src, copy, copyIsArray, clone,\n +\t\ttarget = arguments[0] || {},\n +\t\ti = 1,\n +\t\tlength = arguments.length,\n +\t\tdeep = false;\n +\n +\t// Handle a deep copy situation\n +\tif ( typeof target === "boolean" ) {\n +\t\tdeep = target;\n +\t\ttarget = arguments[1] || {};\n +\t\t// skip the boolean and the target\n +\t\ti = 2;\n +\t}\n +\n +\t// Handle case when target is a string or something (possible in deep copy)\n +\tif ( typeof target !== "object" && !jQuery.isFunction(target) ) {\n +\t\ttarget = {};\n +\t}\n +\n +\t// extend jQuery itself if only one argument is passed\n +\tif ( length === i ) {\n +\t\ttarget = this;\n +\t\t--i;\n +\t}\n +\n +\tfor ( ; i < length; i++ ) {\n +\t\t// Only deal with non-null/undefined values\n +\t\tif ( (options = arguments[ i ]) != null ) {\n +\t\t\t// Extend the base object\n +\t\t\tfor ( name in options ) {\n +\t\t\t\tsrc = target[ name ];\n +\t\t\t\tcopy = options[ name ];\n +\n +\t\t\t\t// Prevent never-ending loop\n +\t\t\t\tif ( target === copy ) {\n +\t\t\t\t\tcontinue;\n +\t\t\t\t}\n +\n +\t\t\t\t// Recurse if we\'re merging plain objects or arrays\n +\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n +\t\t\t\t\tif ( copyIsArray ) {\n +\t\t\t\t\t\tcopyIsArray = false;\n +\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Never move original objects, clone them\n +\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n +\n +\t\t\t\t// Don\'t bring in undefined values\n +\t\t\t\t} else if ( copy !== undefined ) {\n +\t\t\t\t\ttarget[ name ] = copy;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Return the modified object\n +\treturn target;\n +};\n +\n +jQuery.extend({\n +\tnoConflict: function( deep ) {\n +\t\tif ( window.$ === jQuery ) {\n +\t\t\twindow.$ = _$;\n +\t\t}\n +\n +\t\tif ( deep && window.jQuery === jQuery ) {\n +\t\t\twindow.jQuery = _jQuery;\n +\t\t}\n +\n +\t\treturn jQuery;\n +\t},\n +\n +\t// Is the DOM ready to be used? Set to true once it occurs.\n +\tisReady: false,\n +\n +\t// A counter to track how many items to wait for before\n +\t// the ready event fires. See #6781\n +\treadyWait: 1,\n +\n +\t// Hold (or release) the ready event\n +\tholdReady: function( hold ) {\n +\t\tif ( hold ) {\n +\t\t\tjQuery.readyWait++;\n +\t\t} else {\n +\t\t\tjQuery.ready( true );\n +\t\t}\n +\t},\n +\n +\t// Handle when the DOM is ready\n +\tready: function( wait ) {\n +\t\t// Either a released hold or an DOMready/load event and not yet ready\n +\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n +\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n +\t\t\tif ( !document.body ) {\n +\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n +\t\t\t}\n +\n +\t\t\t// Remember that the DOM is ready\n +\t\t\tjQuery.isReady = true;\n +\n +\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n +\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// If there are functions bound, to execute\n +\t\t\treadyList.fireWith( document, [ jQuery ] );\n +\n +\t\t\t// Trigger any bound ready events\n +\t\t\tif ( jQuery.fn.trigger ) {\n +\t\t\t\tjQuery( document ).trigger( "ready" ).off( "ready" );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tbindReady: function() {\n +\t\tif ( readyList ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\treadyList = jQuery.Callbacks( "once memory" );\n +\n +\t\t// Catch cases where $(document).ready() is called after the\n +\t\t// browser event has already occurred.\n +\t\tif ( document.readyState === "complete" ) {\n +\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n +\t\t\treturn setTimeout( jQuery.ready, 1 );\n +\t\t}\n +\n +\t\t// Mozilla, Opera and webkit nightlies currently support this event\n +\t\tif ( document.addEventListener ) {\n +\t\t\t// Use the handy event callback\n +\t\t\tdocument.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.addEventListener( "load", jQuery.ready, false );\n +\n +\t\t// If IE event model is used\n +\t\t} else if ( document.attachEvent ) {\n +\t\t\t// ensure firing before onload,\n +\t\t\t// maybe late but safe also for iframes\n +\t\t\tdocument.attachEvent( "onreadystatechange", DOMContentLoaded );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.attachEvent( "onload", jQuery.ready );\n +\n +\t\t\t// If IE and not a frame\n +\t\t\t// continually check to see if the document is ready\n +\t\t\tvar toplevel = false;\n +\n +\t\t\ttry {\n +\t\t\t\ttoplevel = window.frameElement == null;\n +\t\t\t} catch(e) {}\n +\n +\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n +\t\t\t\tdoScrollCheck();\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// See test/unit/core.js for details concerning isFunction.\n +\t// Since version 1.3, DOM methods and functions like alert\n +\t// aren\'t supported. They return false on IE (#2968).\n +\tisFunction: function( obj ) {\n +\t\treturn jQuery.type(obj) === "function";\n +\t},\n +\n +\tisArray: Array.isArray || function( obj ) {\n +\t\treturn jQuery.type(obj) === "array";\n +\t},\n +\n +\tisWindow: function( obj ) {\n +\t\treturn obj != null && obj == obj.window;\n +\t},\n +\n +\tisNumeric: function( obj ) {\n +\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n +\t},\n +\n +\ttype: function( obj ) {\n +\t\treturn obj == null ?\n +\t\t\tString( obj ) :\n +\t\t\tclass2type[ toString.call(obj) ] || "object";\n +\t},\n +\n +\tisPlainObject: function( obj ) {\n +\t\t// Must be an Object.\n +\t\t// Because of IE, we also have to check the presence of the constructor property.\n +\t\t// Make sure that DOM nodes and window objects don\'t pass through, as well\n +\t\tif ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\ttry {\n +\t\t\t// Not own constructor property must be Object\n +\t\t\tif ( obj.constructor &&\n +\t\t\t\t!hasOwn.call(obj, "constructor") &&\n +\t\t\t\t!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t} catch ( e ) {\n +\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// Own properties are enumerated firstly, so to speed up,\n +\t\t// if last one is own, then all properties are own.\n +\n +\t\tvar key;\n +\t\tfor ( key in obj ) {}\n +\n +\t\treturn key === undefined || hasOwn.call( obj, key );\n +\t},\n +\n +\tisEmptyObject: function( obj ) {\n +\t\tfor ( var name in obj ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\treturn true;\n +\t},\n +\n +\terror: function( msg ) {\n +\t\tthrow new Error( msg );\n +\t},\n +\n +\tparseJSON: function( data ) {\n +\t\tif ( typeof data !== "string" || !data ) {\n +\t\t\treturn null;\n +\t\t}\n +\n +\t\t// Make sure leading/trailing whitespace is removed (IE can\'t handle it)\n +\t\tdata = jQuery.trim( data );\n +\n +\t\t// Attempt to parse using the native JSON parser first\n +\t\tif ( window.JSON && window.JSON.parse ) {\n +\t\t\treturn window.JSON.parse( data );\n +\t\t}\n +\n +\t\t// Make sure the incoming data is actual JSON\n +\t\t// Logic borrowed from http://json.org/json2.js\n +\t\tif ( rvalidchars.test( data.replace( rvalidescape, "@" )\n +\t\t\t.replace( rvalidtokens, "]" )\n +\t\t\t.replace( rvalidbraces, "")) ) {\n +\n +\t\t\treturn ( new Function( "return " + data ) )();\n +\n +\t\t}\n +\t\tjQuery.error( "Invalid JSON: " + data );\n +\t},\n +\n +\t// Cross-browser xml parsing\n +\tparseXML: function( data ) {\n +\t\tif ( typeof data !== "string" || !data ) {\n +\t\t\treturn null;\n +\t\t}\n +\t\tvar xml, tmp;\n +\t\ttry {\n +\t\t\tif ( window.DOMParser ) { // Standard\n +\t\t\t\ttmp = new DOMParser();\n +\t\t\t\txml = tmp.parseFromString( data , "text/xml" );\n +\t\t\t} else { // IE\n +\t\t\t\txml = new ActiveXObject( "Microsoft.XMLDOM" );\n +\t\t\t\txml.async = "false";\n +\t\t\t\txml.loadXML( data );\n +\t\t\t}\n +\t\t} catch( e ) {\n +\t\t\txml = undefined;\n +\t\t}\n +\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {\n +\t\t\tjQuery.error( "Invalid XML: " + data );\n +\t\t}\n +\t\treturn xml;\n +\t},\n +\n +\tnoop: function() {},\n +\n +\t// Evaluates a script in a global context\n +\t// Workarounds based on findings by Jim Driscoll\n +\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n +\tglobalEval: function( data ) {\n +\t\tif ( data && rnotwhite.test( data ) ) {\n +\t\t\t// We use execScript on Internet Explorer\n +\t\t\t// We use an anonymous function so that context is window\n +\t\t\t// rather than jQuery in Firefox\n +\t\t\t( window.execScript || function( data ) {\n +\t\t\t\twindow[ "eval" ].call( window, data );\n +\t\t\t} )( data );\n +\t\t}\n +\t},\n +\n +\t// Convert dashed to camelCase; used by the css and data modules\n +\t// Microsoft forgot to hump their vendor prefix (#9572)\n +\tcamelCase: function( string ) {\n +\t\treturn string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );\n +\t},\n +\n +\tnodeName: function( elem, name ) {\n +\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n +\t},\n +\n +\t// args is for internal usage only\n +\teach: function( object, callback, args ) {\n +\t\tvar name, i = 0,\n +\t\t\tlength = object.length,\n +\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n +\n +\t\tif ( args ) {\n +\t\t\tif ( isObj ) {\n +\t\t\t\tfor ( name in object ) {\n +\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < length; ) {\n +\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// A special, fast, case for the most common use of each\n +\t\t} else {\n +\t\t\tif ( isObj ) {\n +\t\t\t\tfor ( name in object ) {\n +\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < length; ) {\n +\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn object;\n +\t},\n +\n +\t// Use native String.trim function wherever possible\n +\ttrim: trim ?\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\ttrim.call( text );\n +\t\t} :\n +\n +\t\t// Otherwise use our own trimming functionality\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\ttext.toString().replace( trimLeft, "" ).replace( trimRight, "" );\n +\t\t},\n +\n +\t// results is for internal usage only\n +\tmakeArray: function( array, results ) {\n +\t\tvar ret = results || [];\n +\n +\t\tif ( array != null ) {\n +\t\t\t// The window, strings (and functions) also have \'length\'\n +\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n +\t\t\tvar type = jQuery.type( array );\n +\n +\t\t\tif ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {\n +\t\t\t\tpush.call( ret, array );\n +\t\t\t} else {\n +\t\t\t\tjQuery.merge( ret, array );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tinArray: function( elem, array, i ) {\n +\t\tvar len;\n +\n +\t\tif ( array ) {\n +\t\t\tif ( indexOf ) {\n +\t\t\t\treturn indexOf.call( array, elem, i );\n +\t\t\t}\n +\n +\t\t\tlen = array.length;\n +\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n +\n +\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\t// Skip accessing in sparse arrays\n +\t\t\t\tif ( i in array && array[ i ] === elem ) {\n +\t\t\t\t\treturn i;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn -1;\n +\t},\n +\n +\tmerge: function( first, second ) {\n +\t\tvar i = first.length,\n +\t\t\tj = 0;\n +\n +\t\tif ( typeof second.length === "number" ) {\n +\t\t\tfor ( var l = second.length; j < l; j++ ) {\n +\t\t\t\tfirst[ i++ ] = second[ j ];\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\twhile ( second[j] !== undefined ) {\n +\t\t\t\tfirst[ i++ ] = second[ j++ ];\n +\t\t\t}\n +\t\t}\n +\n +\t\tfirst.length = i;\n +\n +\t\treturn first;\n +\t},\n +\n +\tgrep: function( elems, callback, inv ) {\n +\t\tvar ret = [], retVal;\n +\t\tinv = !!inv;\n +\n +\t\t// Go through the array, only saving the items\n +\t\t// that pass the validator function\n +\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n +\t\t\tretVal = !!callback( elems[ i ], i );\n +\t\t\tif ( inv !== retVal ) {\n +\t\t\t\tret.push( elems[ i ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\t// arg is for internal usage only\n +\tmap: function( elems, callback, arg ) {\n +\t\tvar value, key, ret = [],\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length,\n +\t\t\t// jquery objects are treated as arrays\n +\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n +\n +\t\t// Go through the array, translating each of the items to their\n +\t\tif ( isArray ) {\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tvalue = callback( elems[ i ], i, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// Go through every key on the object,\n +\t\t} else {\n +\t\t\tfor ( key in elems ) {\n +\t\t\t\tvalue = callback( elems[ key ], key, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Flatten any nested arrays\n +\t\treturn ret.concat.apply( [], ret );\n +\t},\n +\n +\t// A global GUID counter for objects\n +\tguid: 1,\n +\n +\t// Bind a function to a context, optionally partially applying any\n +\t// arguments.\n +\tproxy: function( fn, context ) {\n +\t\tif ( typeof context === "string" ) {\n +\t\t\tvar tmp = fn[ context ];\n +\t\t\tcontext = fn;\n +\t\t\tfn = tmp;\n +\t\t}\n +\n +\t\t// Quick check to determine if target is callable, in the spec\n +\t\t// this throws a TypeError, but we will just return undefined.\n +\t\tif ( !jQuery.isFunction( fn ) ) {\n +\t\t\treturn undefined;\n +\t\t}\n +\n +\t\t// Simulated bind\n +\t\tvar args = slice.call( arguments, 2 ),\n +\t\t\tproxy = function() {\n +\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n +\t\t\t};\n +\n +\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n +\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n +\n +\t\treturn proxy;\n +\t},\n +\n +\t// Mutifunctional method to get and set values to a collection\n +\t// The value/s can optionally be executed if it\'s a function\n +\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n +\t\tvar exec,\n +\t\t\tbulk = key == null,\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length;\n +\n +\t\t// Sets many values\n +\t\tif ( key && typeof key === "object" ) {\n +\t\t\tfor ( i in key ) {\n +\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n +\t\t\t}\n +\t\t\tchainable = 1;\n +\n +\t\t// Sets one value\n +\t\t} else if ( value !== undefined ) {\n +\t\t\t// Optionally, function values get executed if exec is true\n +\t\t\texec = pass === undefined && jQuery.isFunction( value );\n +\n +\t\t\tif ( bulk ) {\n +\t\t\t\t// Bulk operations only iterate when executing function values\n +\t\t\t\tif ( exec ) {\n +\t\t\t\t\texec = fn;\n +\t\t\t\t\tfn = function( elem, key, value ) {\n +\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n +\t\t\t\t\t};\n +\n +\t\t\t\t// Otherwise they run against the entire set\n +\t\t\t\t} else {\n +\t\t\t\t\tfn.call( elems, value );\n +\t\t\t\t\tfn = null;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( fn ) {\n +\t\t\t\tfor (; i < length; i++ ) {\n +\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tchainable = 1;\n +\t\t}\n +\n +\t\treturn chainable ?\n +\t\t\telems :\n +\n +\t\t\t// Gets\n +\t\t\tbulk ?\n +\t\t\t\tfn.call( elems ) :\n +\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n +\t},\n +\n +\tnow: function() {\n +\t\treturn ( new Date() ).getTime();\n +\t},\n +\n +\t// Use of jQuery.browser is frowned upon.\n +\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n +\tuaMatch: function( ua ) {\n +\t\tua = ua.toLowerCase();\n +\n +\t\tvar match = rwebkit.exec( ua ) ||\n +\t\t\tropera.exec( ua ) ||\n +\t\t\trmsie.exec( ua ) ||\n +\t\t\tua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||\n +\t\t\t[];\n +\n +\t\treturn { browser: match[1] || "", version: match[2] || "0" };\n +\t},\n +\n +\tsub: function() {\n +\t\tfunction jQuerySub( selector, context ) {\n +\t\t\treturn new jQuerySub.fn.init( selector, context );\n +\t\t}\n +\t\tjQuery.extend( true, jQuerySub, this );\n +\t\tjQuerySub.superclass = this;\n +\t\tjQuerySub.fn = jQuerySub.prototype = this();\n +\t\tjQuerySub.fn.constructor = jQuerySub;\n +\t\tjQuerySub.sub = this.sub;\n +\t\tjQuerySub.fn.init = function init( selector, context ) {\n +\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n +\t\t\t\tcontext = jQuerySub( context );\n +\t\t\t}\n +\n +\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n +\t\t};\n +\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n +\t\tvar rootjQuerySub = jQuerySub(document);\n +\t\treturn jQuerySub;\n +\t},\n +\n +\tbrowser: {}\n +});\n +\n +// Populate the class2type map\n +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {\n +\tclass2type[ "[object " + name + "]" ] = name.toLowerCase();\n +});\n +\n +browserMatch = jQuery.uaMatch( userAgent );\n +if ( browserMatch.browser ) {\n +\tjQuery.browser[ browserMatch.browser ] = true;\n +\tjQuery.browser.version = browserMatch.version;\n +}\n +\n +// Deprecated, use jQuery.browser.webkit instead\n +if ( jQuery.browser.webkit ) {\n +\tjQuery.browser.safari = true;\n +}\n +\n +// IE doesn\'t match non-breaking spaces with \\s\n +if ( rnotwhite.test( "\\xA0" ) ) {\n +\ttrimLeft = /^[\\s\\xA0]+/;\n +\ttrimRight = /[\\s\\xA0]+$/;\n +}\n +\n +// All jQuery objects should point back to these\n +rootjQuery = jQuery(document);\n +\n +// Cleanup functions for the document ready method\n +if ( document.addEventListener ) {\n +\tDOMContentLoaded = function() {\n +\t\tdocument.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\t\tjQuery.ready();\n +\t};\n +\n +} else if ( document.attachEvent ) {\n +\tDOMContentLoaded = function() {\n +\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n +\t\tif ( document.readyState === "complete" ) {\n +\t\t\tdocument.detachEvent( "onreadystatechange", DOMContentLoaded );\n +\t\t\tjQuery.ready();\n +\t\t}\n +\t};\n +}\n +\n +// The DOM ready check for Internet Explorer\n +function doScrollCheck() {\n +\tif ( jQuery.isReady ) {\n +\t\treturn;\n +\t}\n +\n +\ttry {\n +\t\t// If IE is used, use the trick by Diego Perini\n +\t\t// http://javascript.nwbox.com/IEContentLoaded/\n +\t\tdocument.documentElement.doScroll("left");\n +\t} catch(e) {\n +\t\tsetTimeout( doScrollCheck, 1 );\n +\t\treturn;\n +\t}\n +\n +\t// and execute any waiting functions\n +\tjQuery.ready();\n +}\n +\n +return jQuery;\n +\n +})();\n +\n +\n +// String to Object flags format cache\n +var flagsCache = {};\n +\n +// Convert String-formatted flags into Object-formatted ones and store in cache\n +function createFlags( flags ) {\n +\tvar object = flagsCache[ flags ] = {},\n +\t\ti, length;\n +\tflags = flags.split( /\\s+/ );\n +\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n +\t\tobject[ flags[i] ] = true;\n +\t}\n +\treturn object;\n +}\n +\n +/*\n + * Create a callback list using the following parameters:\n + *\n + *\tflags:\tan optional list of space-separated flags that will change how\n + *\t\t\tthe callback list behaves\n + *\n + * By default a callback list will act like an event callback list and can be\n + * "fired" multiple times.\n + *\n + * Possible flags:\n + *\n + *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n + *\n + *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n + *\t\t\t\t\tafter the list has been fired right away with the latest "memorized"\n + *\t\t\t\t\tvalues (like a Deferred)\n + *\n + *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n + *\n + *\tstopOnFalse:\tinterrupt callings when a callback returns false\n + *\n + */\n +jQuery.Callbacks = function( flags ) {\n +\n +\t// Convert flags from String-formatted to Object-formatted\n +\t// (we check in cache first)\n +\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n +\n +\tvar // Actual callback list\n +\t\tlist = [],\n +\t\t// Stack of fire calls for repeatable lists\n +\t\tstack = [],\n +\t\t// Last fire value (for non-forgettable lists)\n +\t\tmemory,\n +\t\t// Flag to know if list was already fired\n +\t\tfired,\n +\t\t// Flag to know if list is currently firing\n +\t\tfiring,\n +\t\t// First callback to fire (used internally by add and fireWith)\n +\t\tfiringStart,\n +\t\t// End of the loop when firing\n +\t\tfiringLength,\n +\t\t// Index of currently firing callback (modified by remove if needed)\n +\t\tfiringIndex,\n +\t\t// Add one or several callbacks to the list\n +\t\tadd = function( args ) {\n +\t\t\tvar i,\n +\t\t\t\tlength,\n +\t\t\t\telem,\n +\t\t\t\ttype,\n +\t\t\t\tactual;\n +\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n +\t\t\t\telem = args[ i ];\n +\t\t\t\ttype = jQuery.type( elem );\n +\t\t\t\tif ( type === "array" ) {\n +\t\t\t\t\t// Inspect recursively\n +\t\t\t\t\tadd( elem );\n +\t\t\t\t} else if ( type === "function" ) {\n +\t\t\t\t\t// Add if not in unique mode and callback is not in\n +\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n +\t\t\t\t\t\tlist.push( elem );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Fire callbacks\n +\t\tfire = function( context, args ) {\n +\t\t\targs = args || [];\n +\t\t\tmemory = !flags.memory || [ context, args ];\n +\t\t\tfired = true;\n +\t\t\tfiring = true;\n +\t\t\tfiringIndex = firingStart || 0;\n +\t\t\tfiringStart = 0;\n +\t\t\tfiringLength = list.length;\n +\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n +\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n +\t\t\t\t\tmemory = true; // Mark as halted\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tfiring = false;\n +\t\t\tif ( list ) {\n +\t\t\t\tif ( !flags.once ) {\n +\t\t\t\t\tif ( stack && stack.length ) {\n +\t\t\t\t\t\tmemory = stack.shift();\n +\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n +\t\t\t\t\t}\n +\t\t\t\t} else if ( memory === true ) {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t} else {\n +\t\t\t\t\tlist = [];\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Actual Callbacks object\n +\t\tself = {\n +\t\t\t// Add a callback or a collection of callbacks to the list\n +\t\t\tadd: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tvar length = list.length;\n +\t\t\t\t\tadd( arguments );\n +\t\t\t\t\t// Do we need to add the callbacks to the\n +\t\t\t\t\t// current firing batch?\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tfiringLength = list.length;\n +\t\t\t\t\t// With memory, if we\'re not firing then\n +\t\t\t\t\t// we should call right away, unless previous\n +\t\t\t\t\t// firing was halted (stopOnFalse)\n +\t\t\t\t\t} else if ( memory && memory !== true ) {\n +\t\t\t\t\t\tfiringStart = length;\n +\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Remove a callback from the list\n +\t\t\tremove: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tvar args = arguments,\n +\t\t\t\t\t\targIndex = 0,\n +\t\t\t\t\t\targLength = args.length;\n +\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n +\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n +\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n +\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n +\t\t\t\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n +\t\t\t\t\t\t\t\t\t\tfiringLength--;\n +\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n +\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n +\t\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t// Remove the element\n +\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n +\t\t\t\t\t\t\t\t// If we have some unicity property then\n +\t\t\t\t\t\t\t\t// we only need to do this once\n +\t\t\t\t\t\t\t\tif ( flags.unique ) {\n +\t\t\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Control if a given callback is in the list\n +\t\t\thas: function( fn ) {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tvar i = 0,\n +\t\t\t\t\t\tlength = list.length;\n +\t\t\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\t\t\tif ( fn === list[ i ] ) {\n +\t\t\t\t\t\t\treturn true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t},\n +\t\t\t// Remove all callbacks from the list\n +\t\t\tempty: function() {\n +\t\t\t\tlist = [];\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Have the list do nothing anymore\n +\t\t\tdisable: function() {\n +\t\t\t\tlist = stack = memory = undefined;\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it disabled?\n +\t\t\tdisabled: function() {\n +\t\t\t\treturn !list;\n +\t\t\t},\n +\t\t\t// Lock the list in its current state\n +\t\t\tlock: function() {\n +\t\t\t\tstack = undefined;\n +\t\t\t\tif ( !memory || memory === true ) {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it locked?\n +\t\t\tlocked: function() {\n +\t\t\t\treturn !stack;\n +\t\t\t},\n +\t\t\t// Call all callbacks with the given context and arguments\n +\t\t\tfireWith: function( context, args ) {\n +\t\t\t\tif ( stack ) {\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tif ( !flags.once ) {\n +\t\t\t\t\t\t\tstack.push( [ context, args ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n +\t\t\t\t\t\tfire( context, args );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Call all the callbacks with the given arguments\n +\t\t\tfire: function() {\n +\t\t\t\tself.fireWith( this, arguments );\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// To know if the callbacks have already been called at least once\n +\t\t\tfired: function() {\n +\t\t\t\treturn !!fired;\n +\t\t\t}\n +\t\t};\n +\n +\treturn self;\n +};\n +\n +\n +\n +\n +var // Static reference to slice\n +\tsliceDeferred = [].slice;\n +\n +jQuery.extend({\n +\n +\tDeferred: function( func ) {\n +\t\tvar doneList = jQuery.Callbacks( "once memory" ),\n +\t\t\tfailList = jQuery.Callbacks( "once memory" ),\n +\t\t\tprogressList = jQuery.Callbacks( "memory" ),\n +\t\t\tstate = "pending",\n +\t\t\tlists = {\n +\t\t\t\tresolve: doneList,\n +\t\t\t\treject: failList,\n +\t\t\t\tnotify: progressList\n +\t\t\t},\n +\t\t\tpromise = {\n +\t\t\t\tdone: doneList.add,\n +\t\t\t\tfail: failList.add,\n +\t\t\t\tprogress: progressList.add,\n +\n +\t\t\t\tstate: function() {\n +\t\t\t\t\treturn state;\n +\t\t\t\t},\n +\n +\t\t\t\t// Deprecated\n +\t\t\t\tisResolved: doneList.fired,\n +\t\t\t\tisRejected: failList.fired,\n +\n +\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n +\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\t\t\t\talways: function() {\n +\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n +\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n +\t\t\t\t\t\tjQuery.each( {\n +\t\t\t\t\t\t\tdone: [ fnDone, "resolve" ],\n +\t\t\t\t\t\t\tfail: [ fnFail, "reject" ],\n +\t\t\t\t\t\t\tprogress: [ fnProgress, "notify" ]\n +\t\t\t\t\t\t}, function( handler, data ) {\n +\t\t\t\t\t\t\tvar fn = data[ 0 ],\n +\t\t\t\t\t\t\t\taction = data[ 1 ],\n +\t\t\t\t\t\t\t\treturned;\n +\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n +\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n +\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n +\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n +\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n +\t\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\t\tnewDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t});\n +\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t});\n +\t\t\t\t\t}).promise();\n +\t\t\t\t},\n +\t\t\t\t// Get a promise for this deferred\n +\t\t\t\t// If obj is provided, the promise aspect is added to the object\n +\t\t\t\tpromise: function( obj ) {\n +\t\t\t\t\tif ( obj == null ) {\n +\t\t\t\t\t\tobj = promise;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tfor ( var key in promise ) {\n +\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\treturn obj;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tdeferred = promise.promise({}),\n +\t\t\tkey;\n +\n +\t\tfor ( key in lists ) {\n +\t\t\tdeferred[ key ] = lists[ key ].fire;\n +\t\t\tdeferred[ key + "With" ] = lists[ key ].fireWith;\n +\t\t}\n +\n +\t\t// Handle state\n +\t\tdeferred.done( function() {\n +\t\t\tstate = "resolved";\n +\t\t}, failList.disable, progressList.lock ).fail( function() {\n +\t\t\tstate = "rejected";\n +\t\t}, doneList.disable, progressList.lock );\n +\n +\t\t// Call given func if any\n +\t\tif ( func ) {\n +\t\t\tfunc.call( deferred, deferred );\n +\t\t}\n +\n +\t\t// All done!\n +\t\treturn deferred;\n +\t},\n +\n +\t// Deferred helper\n +\twhen: function( firstParam ) {\n +\t\tvar args = sliceDeferred.call( arguments, 0 ),\n +\t\t\ti = 0,\n +\t\t\tlength = args.length,\n +\t\t\tpValues = new Array( length ),\n +\t\t\tcount = length,\n +\t\t\tpCount = length,\n +\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n +\t\t\t\tfirstParam :\n +\t\t\t\tjQuery.Deferred(),\n +\t\t\tpromise = deferred.promise();\n +\t\tfunction resolveFunc( i ) {\n +\t\t\treturn function( value ) {\n +\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n +\t\t\t\tif ( !( --count ) ) {\n +\t\t\t\t\tdeferred.resolveWith( deferred, args );\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t\tfunction progressFunc( i ) {\n +\t\t\treturn function( value ) {\n +\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n +\t\t\t\tdeferred.notifyWith( promise, pValues );\n +\t\t\t};\n +\t\t}\n +\t\tif ( length > 1 ) {\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n +\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n +\t\t\t\t} else {\n +\t\t\t\t\t--count;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tif ( !count ) {\n +\t\t\t\tdeferred.resolveWith( deferred, args );\n +\t\t\t}\n +\t\t} else if ( deferred !== firstParam ) {\n +\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n +\t\t}\n +\t\treturn promise;\n +\t}\n +});\n +\n +\n +\n +\n +jQuery.support = (function() {\n +\n +\tvar support,\n +\t\tall,\n +\t\ta,\n +\t\tselect,\n +\t\topt,\n +\t\tinput,\n +\t\tfragment,\n +\t\ttds,\n +\t\tevents,\n +\t\teventName,\n +\t\ti,\n +\t\tisSupported,\n +\t\tdiv = document.createElement( "div" ),\n +\t\tdocumentElement = document.documentElement;\n +\n +\t// Preliminary tests\n +\tdiv.setAttribute("className", "t");\n +\tdiv.innerHTML = " <link/><table></table><a href=\'/a\' style=\'top:1px;float:left;opacity:.55;\'>a</a><input type=\'checkbox\'/>";\n +\n +\tall = div.getElementsByTagName( "*" );\n +\ta = div.getElementsByTagName( "a" )[ 0 ];\n +\n +\t// Can\'t get basic test support\n +\tif ( !all || !all.length || !a ) {\n +\t\treturn {};\n +\t}\n +\n +\t// First batch of supports tests\n +\tselect = document.createElement( "select" );\n +\topt = select.appendChild( document.createElement("option") );\n +\tinput = div.getElementsByTagName( "input" )[ 0 ];\n +\n +\tsupport = {\n +\t\t// IE strips leading whitespace when .innerHTML is used\n +\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n +\n +\t\t// Make sure that tbody elements aren\'t automatically inserted\n +\t\t// IE will insert them into empty tables\n +\t\ttbody: !div.getElementsByTagName("tbody").length,\n +\n +\t\t// Make sure that link elements get serialized correctly by innerHTML\n +\t\t// This requires a wrapper element in IE\n +\t\thtmlSerialize: !!div.getElementsByTagName("link").length,\n +\n +\t\t// Get the style information from getAttribute\n +\t\t// (IE uses .cssText instead)\n +\t\tstyle: /top/.test( a.getAttribute("style") ),\n +\n +\t\t// Make sure that URLs aren\'t manipulated\n +\t\t// (IE normalizes it by default)\n +\t\threfNormalized: ( a.getAttribute("href") === "/a" ),\n +\n +\t\t// Make sure that element opacity exists\n +\t\t// (IE uses filter instead)\n +\t\t// Use a regex to work around a WebKit issue. See #5145\n +\t\topacity: /^0.55/.test( a.style.opacity ),\n +\n +\t\t// Verify style float existence\n +\t\t// (IE uses styleFloat instead of cssFloat)\n +\t\tcssFloat: !!a.style.cssFloat,\n +\n +\t\t// Make sure that if no value is specified for a checkbox\n +\t\t// that it defaults to "on".\n +\t\t// (WebKit defaults to "" instead)\n +\t\tcheckOn: ( input.value === "on" ),\n +\n +\t\t// Make sure that a selected-by-default option has a working selected property.\n +\t\t// (WebKit defaults to false instead of true, IE too, if it\'s in an optgroup)\n +\t\toptSelected: opt.selected,\n +\n +\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n +\t\tgetSetAttribute: div.className !== "t",\n +\n +\t\t// Tests for enctype support on a form(#6743)\n +\t\tenctype: !!document.createElement("form").enctype,\n +\n +\t\t// Makes sure cloning an html5 element does not cause problems\n +\t\t// Where outerHTML is undefined, this still works\n +\t\thtml5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",\n +\n +\t\t// Will be defined later\n +\t\tsubmitBubbles: true,\n +\t\tchangeBubbles: true,\n +\t\tfocusinBubbles: false,\n +\t\tdeleteExpando: true,\n +\t\tnoCloneEvent: true,\n +\t\tinlineBlockNeedsLayout: false,\n +\t\tshrinkWrapBlocks: false,\n +\t\treliableMarginRight: true,\n +\t\tpixelMargin: true\n +\t};\n +\n +\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n +\tjQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");\n +\n +\t// Make sure checked status is properly cloned\n +\tinput.checked = true;\n +\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n +\n +\t// Make sure that the options inside disabled selects aren\'t marked as disabled\n +\t// (WebKit marks them as disabled)\n +\tselect.disabled = true;\n +\tsupport.optDisabled = !opt.disabled;\n +\n +\t// Test to see if it\'s possible to delete an expando from an element\n +\t// Fails in Internet Explorer\n +\ttry {\n +\t\tdelete div.test;\n +\t} catch( e ) {\n +\t\tsupport.deleteExpando = false;\n +\t}\n +\n +\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n +\t\tdiv.attachEvent( "onclick", function() {\n +\t\t\t// Cloning a node shouldn\'t copy over any\n +\t\t\t// bound event handlers (IE does this)\n +\t\t\tsupport.noCloneEvent = false;\n +\t\t});\n +\t\tdiv.cloneNode( true ).fireEvent( "onclick" );\n +\t}\n +\n +\t// Check if a radio maintains its value\n +\t// after being appended to the DOM\n +\tinput = document.createElement("input");\n +\tinput.value = "t";\n +\tinput.setAttribute("type", "radio");\n +\tsupport.radioValue = input.value === "t";\n +\n +\tinput.setAttribute("checked", "checked");\n +\n +\t// #11217 - WebKit loses check when the name is after the checked attribute\n +\tinput.setAttribute( "name", "t" );\n +\n +\tdiv.appendChild( input );\n +\tfragment = document.createDocumentFragment();\n +\tfragment.appendChild( div.lastChild );\n +\n +\t// WebKit doesn\'t clone checked state correctly in fragments\n +\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n +\n +\t// Check if a disconnected checkbox will retain its checked\n +\t// value of true after appended to the DOM (IE6/7)\n +\tsupport.appendChecked = input.checked;\n +\n +\tfragment.removeChild( input );\n +\tfragment.appendChild( div );\n +\n +\t// Technique from Juriy Zaytsev\n +\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n +\t// We only care about the case where non-standard event systems\n +\t// are used, namely in IE. Short-circuiting here helps us to\n +\t// avoid an eval call (in setAttribute) which can cause CSP\n +\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n +\tif ( div.attachEvent ) {\n +\t\tfor ( i in {\n +\t\t\tsubmit: 1,\n +\t\t\tchange: 1,\n +\t\t\tfocusin: 1\n +\t\t}) {\n +\t\t\teventName = "on" + i;\n +\t\t\tisSupported = ( eventName in div );\n +\t\t\tif ( !isSupported ) {\n +\t\t\t\tdiv.setAttribute( eventName, "return;" );\n +\t\t\t\tisSupported = ( typeof div[ eventName ] === "function" );\n +\t\t\t}\n +\t\t\tsupport[ i + "Bubbles" ] = isSupported;\n +\t\t}\n +\t}\n +\n +\tfragment.removeChild( div );\n +\n +\t// Null elements to avoid leaks in IE\n +\tfragment = select = opt = div = input = null;\n +\n +\t// Run tests that need a body at doc ready\n +\tjQuery(function() {\n +\t\tvar container, outer, inner, table, td, offsetSupport,\n +\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n +\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n +\t\t\tbody = document.getElementsByTagName("body")[0];\n +\n +\t\tif ( !body ) {\n +\t\t\t// Return for frameset docs that don\'t have a body\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tconMarginTop = 1;\n +\t\tpaddingMarginBorder = "padding:0;margin:0;border:";\n +\t\tpositionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";\n +\t\tpaddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";\n +\t\tstyle = "style=\'" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";\n +\t\thtml = "<div " + style + "display:block;\'><div style=\'" + paddingMarginBorder + "0;display:block;overflow:hidden;\'></div></div>" +\n +\t\t\t"<table " + style + "\' cellpadding=\'0\' cellspacing=\'0\'>" +\n +\t\t\t"<tr><td></td></tr></table>";\n +\n +\t\tcontainer = document.createElement("div");\n +\t\tcontainer.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";\n +\t\tbody.insertBefore( container, body.firstChild );\n +\n +\t\t// Construct the test element\n +\t\tdiv = document.createElement("div");\n +\t\tcontainer.appendChild( div );\n +\n +\t\t// Check if table cells still have offsetWidth/Height when they are set\n +\t\t// to display:none and there are still other visible table cells in a\n +\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n +\t\t// determining if an element has been hidden directly using\n +\t\t// display:none (it is still safe to use offsets if a parent element is\n +\t\t// hidden; don safety goggles and see bug #4512 for more information).\n +\t\t// (only IE 8 fails this test)\n +\t\tdiv.innerHTML = "<table><tr><td style=\'" + paddingMarginBorder + "0;display:none\'></td><td>t</td></tr></table>";\n +\t\ttds = div.getElementsByTagName( "td" );\n +\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\ttds[ 0 ].style.display = "";\n +\t\ttds[ 1 ].style.display = "none";\n +\n +\t\t// Check if empty table cells still have offsetWidth/Height\n +\t\t// (IE <= 8 fail this test)\n +\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\t// Check if div with explicit width and no margin-right incorrectly\n +\t\t// gets computed margin-right based on width of container. For more\n +\t\t// info see bug #3333\n +\t\t// Fails in WebKit before Feb 2011 nightlies\n +\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\tif ( window.getComputedStyle ) {\n +\t\t\tdiv.innerHTML = "";\n +\t\t\tmarginDiv = document.createElement( "div" );\n +\t\t\tmarginDiv.style.width = "0";\n +\t\t\tmarginDiv.style.marginRight = "0";\n +\t\t\tdiv.style.width = "2px";\n +\t\t\tdiv.appendChild( marginDiv );\n +\t\t\tsupport.reliableMarginRight =\n +\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n +\t\t}\n +\n +\t\tif ( typeof div.style.zoom !== "undefined" ) {\n +\t\t\t// Check if natively block-level elements act like inline-block\n +\t\t\t// elements when setting their display to \'inline\' and giving\n +\t\t\t// them layout\n +\t\t\t// (IE < 8 does this)\n +\t\t\tdiv.innerHTML = "";\n +\t\t\tdiv.style.width = div.style.padding = "1px";\n +\t\t\tdiv.style.border = 0;\n +\t\t\tdiv.style.overflow = "hidden";\n +\t\t\tdiv.style.display = "inline";\n +\t\t\tdiv.style.zoom = 1;\n +\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n +\n +\t\t\t// Check if elements with layout shrink-wrap their children\n +\t\t\t// (IE 6 does this)\n +\t\t\tdiv.style.display = "block";\n +\t\t\tdiv.style.overflow = "visible";\n +\t\t\tdiv.innerHTML = "<div style=\'width:5px;\'></div>";\n +\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n +\t\t}\n +\n +\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n +\t\tdiv.innerHTML = html;\n +\n +\t\touter = div.firstChild;\n +\t\tinner = outer.firstChild;\n +\t\ttd = outer.nextSibling.firstChild.firstChild;\n +\n +\t\toffsetSupport = {\n +\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n +\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n +\t\t};\n +\n +\t\tinner.style.position = "fixed";\n +\t\tinner.style.top = "20px";\n +\n +\t\t// safari subtracts parent border width here which is 5px\n +\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n +\t\tinner.style.position = inner.style.top = "";\n +\n +\t\touter.style.overflow = "hidden";\n +\t\touter.style.position = "relative";\n +\n +\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n +\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n +\n +\t\tif ( window.getComputedStyle ) {\n +\t\t\tdiv.style.marginTop = "1%";\n +\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";\n +\t\t}\n +\n +\t\tif ( typeof container.style.zoom !== "undefined" ) {\n +\t\t\tcontainer.style.zoom = 1;\n +\t\t}\n +\n +\t\tbody.removeChild( container );\n +\t\tmarginDiv = div = container = null;\n +\n +\t\tjQuery.extend( support, offsetSupport );\n +\t});\n +\n +\treturn support;\n +})();\n +\n +\n +\n +\n +var rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n +\trmultiDash = /([A-Z])/g;\n +\n +jQuery.extend({\n +\tcache: {},\n +\n +\t// Please use with caution\n +\tuuid: 0,\n +\n +\t// Unique for each copy of jQuery on the page\n +\t// Non-digits removed to match rinlinejQuery\n +\texpando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, "" ),\n +\n +\t// The following elements throw uncatchable exceptions if you\n +\t// attempt to add expando properties to them.\n +\tnoData: {\n +\t\t"embed": true,\n +\t\t// Ban all objects except for Flash (which handle expandos)\n +\t\t"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",\n +\t\t"applet": true\n +\t},\n +\n +\thasData: function( elem ) {\n +\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n +\t\treturn !!elem && !isEmptyDataObject( elem );\n +\t},\n +\n +\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n +\t\tif ( !jQuery.acceptData( elem ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar privateCache, thisCache, ret,\n +\t\t\tinternalKey = jQuery.expando,\n +\t\t\tgetByName = typeof name === "string",\n +\n +\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n +\t\t\t// can\'t GC object references properly across the DOM-JS boundary\n +\t\t\tisNode = elem.nodeType,\n +\n +\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n +\t\t\t// attached directly to the object so GC can occur automatically\n +\t\t\tcache = isNode ? jQuery.cache : elem,\n +\n +\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n +\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n +\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n +\t\t\tisEvents = name === "events";\n +\n +\t\t// Avoid doing any more work than we need to when trying to get data on an\n +\t\t// object that has no data at all\n +\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( !id ) {\n +\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n +\t\t\t// ends up in the global cache\n +\t\t\tif ( isNode ) {\n +\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n +\t\t\t} else {\n +\t\t\t\tid = internalKey;\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( !cache[ id ] ) {\n +\t\t\tcache[ id ] = {};\n +\n +\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n +\t\t\t// is serialized using JSON.stringify\n +\t\t\tif ( !isNode ) {\n +\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n +\t\t// shallow copied over onto the existing cache\n +\t\tif ( typeof name === "object" || typeof name === "function" ) {\n +\t\t\tif ( pvt ) {\n +\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n +\t\t\t} else {\n +\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n +\t\t\t}\n +\t\t}\n +\n +\t\tprivateCache = thisCache = cache[ id ];\n +\n +\t\t// jQuery data() is stored in a separate object inside the object\'s internal data\n +\t\t// cache in order to avoid key collisions between internal data and user-defined\n +\t\t// data.\n +\t\tif ( !pvt ) {\n +\t\t\tif ( !thisCache.data ) {\n +\t\t\t\tthisCache.data = {};\n +\t\t\t}\n +\n +\t\t\tthisCache = thisCache.data;\n +\t\t}\n +\n +\t\tif ( data !== undefined ) {\n +\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n +\t\t}\n +\n +\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n +\t\t// it is undocumented and subject to change. But does anyone listen? No.\n +\t\tif ( isEvents && !thisCache[ name ] ) {\n +\t\t\treturn privateCache.events;\n +\t\t}\n +\n +\t\t// Check for both converted-to-camel and non-converted data property names\n +\t\t// If a data property was specified\n +\t\tif ( getByName ) {\n +\n +\t\t\t// First Try to find as-is property data\n +\t\t\tret = thisCache[ name ];\n +\n +\t\t\t// Test for null|undefined property data\n +\t\t\tif ( ret == null ) {\n +\n +\t\t\t\t// Try to find the camelCased property\n +\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n +\t\t\t}\n +\t\t} else {\n +\t\t\tret = thisCache;\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n +\t\tif ( !jQuery.acceptData( elem ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar thisCache, i, l,\n +\n +\t\t\t// Reference to internal data cache key\n +\t\t\tinternalKey = jQuery.expando,\n +\n +\t\t\tisNode = elem.nodeType,\n +\n +\t\t\t// See jQuery.data for more information\n +\t\t\tcache = isNode ? jQuery.cache : elem,\n +\n +\t\t\t// See jQuery.data for more information\n +\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n +\n +\t\t// If there is already no cache entry for this object, there is no\n +\t\t// purpose in continuing\n +\t\tif ( !cache[ id ] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( name ) {\n +\n +\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n +\n +\t\t\tif ( thisCache ) {\n +\n +\t\t\t\t// Support array or space separated string names for data keys\n +\t\t\t\tif ( !jQuery.isArray( name ) ) {\n +\n +\t\t\t\t\t// try the string as a key before any manipulation\n +\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t} else {\n +\n +\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n +\t\t\t\t\t\tname = jQuery.camelCase( name );\n +\t\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tname = name.split( " " );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n +\t\t\t\t\tdelete thisCache[ name[i] ];\n +\t\t\t\t}\n +\n +\t\t\t\t// If there is no data left in the cache, we want to continue\n +\t\t\t\t// and let the cache object itself get destroyed\n +\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// See jQuery.data for more information\n +\t\tif ( !pvt ) {\n +\t\t\tdelete cache[ id ].data;\n +\n +\t\t\t// Don\'t destroy the parent cache unless the internal data object\n +\t\t\t// had been the only thing left in it\n +\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n +\t\t// the window, but it will allow it on all other JS objects; other browsers\n +\t\t// don\'t care\n +\t\t// Ensure that `cache` is not a window object #10080\n +\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n +\t\t\tdelete cache[ id ];\n +\t\t} else {\n +\t\t\tcache[ id ] = null;\n +\t\t}\n +\n +\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n +\t\t// false lookups in the cache for entries that no longer exist\n +\t\tif ( isNode ) {\n +\t\t\t// IE does not allow us to delete expando properties from nodes,\n +\t\t\t// nor does it have a removeAttribute function on Document nodes;\n +\t\t\t// we must handle all of these cases\n +\t\t\tif ( jQuery.support.deleteExpando ) {\n +\t\t\t\tdelete elem[ internalKey ];\n +\t\t\t} else if ( elem.removeAttribute ) {\n +\t\t\t\telem.removeAttribute( internalKey );\n +\t\t\t} else {\n +\t\t\t\telem[ internalKey ] = null;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// For internal use only.\n +\t_data: function( elem, name, data ) {\n +\t\treturn jQuery.data( elem, name, data, true );\n +\t},\n +\n +\t// A method for determining if a DOM node can handle the data expando\n +\tacceptData: function( elem ) {\n +\t\tif ( elem.nodeName ) {\n +\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n +\n +\t\t\tif ( match ) {\n +\t\t\t\treturn !(match === true || elem.getAttribute("classid") !== match);\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn true;\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tdata: function( key, value ) {\n +\t\tvar parts, part, attr, name, l,\n +\t\t\telem = this[0],\n +\t\t\ti = 0,\n +\t\t\tdata = null;\n +\n +\t\t// Gets all values\n +\t\tif ( key === undefined ) {\n +\t\t\tif ( this.length ) {\n +\t\t\t\tdata = jQuery.data( elem );\n +\n +\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {\n +\t\t\t\t\tattr = elem.attributes;\n +\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n +\t\t\t\t\t\tname = attr[i].name;\n +\n +\t\t\t\t\t\tif ( name.indexOf( "data-" ) === 0 ) {\n +\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n +\n +\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tjQuery._data( elem, "parsedAttrs", true );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn data;\n +\t\t}\n +\n +\t\t// Sets multiple values\n +\t\tif ( typeof key === "object" ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery.data( this, key );\n +\t\t\t});\n +\t\t}\n +\n +\t\tparts = key.split( ".", 2 );\n +\t\tparts[1] = parts[1] ? "." + parts[1] : "";\n +\t\tpart = parts[1] + "!";\n +\n +\t\treturn jQuery.access( this, function( value ) {\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\tdata = this.triggerHandler( "getData" + part, [ parts[0] ] );\n +\n +\t\t\t\t// Try to fetch any internally stored data first\n +\t\t\t\tif ( data === undefined && elem ) {\n +\t\t\t\t\tdata = jQuery.data( elem, key );\n +\t\t\t\t\tdata = dataAttr( elem, key, data );\n +\t\t\t\t}\n +\n +\t\t\t\treturn data === undefined && parts[1] ?\n +\t\t\t\t\tthis.data( parts[0] ) :\n +\t\t\t\t\tdata;\n +\t\t\t}\n +\n +\t\t\tparts[1] = value;\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar self = jQuery( this );\n +\n +\t\t\t\tself.triggerHandler( "setData" + part, parts );\n +\t\t\t\tjQuery.data( this, key, value );\n +\t\t\t\tself.triggerHandler( "changeData" + part, parts );\n +\t\t\t});\n +\t\t}, null, value, arguments.length > 1, null, false );\n +\t},\n +\n +\tremoveData: function( key ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeData( this, key );\n +\t\t});\n +\t}\n +});\n +\n +function dataAttr( elem, key, data ) {\n +\t// If nothing was found internally, try to fetch any\n +\t// data from the HTML5 data-* attribute\n +\tif ( data === undefined && elem.nodeType === 1 ) {\n +\n +\t\tvar name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();\n +\n +\t\tdata = elem.getAttribute( name );\n +\n +\t\tif ( typeof data === "string" ) {\n +\t\t\ttry {\n +\t\t\t\tdata = data === "true" ? true :\n +\t\t\t\tdata === "false" ? false :\n +\t\t\t\tdata === "null" ? null :\n +\t\t\t\tjQuery.isNumeric( data ) ? +data :\n +\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n +\t\t\t\t\tdata;\n +\t\t\t} catch( e ) {}\n +\n +\t\t\t// Make sure we set the data so it isn\'t changed later\n +\t\t\tjQuery.data( elem, key, data );\n +\n +\t\t} else {\n +\t\t\tdata = undefined;\n +\t\t}\n +\t}\n +\n +\treturn data;\n +}\n +\n +// checks a cache object for emptiness\n +function isEmptyDataObject( obj ) {\n +\tfor ( var name in obj ) {\n +\n +\t\t// if the public data object is empty, the private is still empty\n +\t\tif ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tif ( name !== "toJSON" ) {\n +\t\t\treturn false;\n +\t\t}\n +\t}\n +\n +\treturn true;\n +}\n +\n +\n +\n +\n +function handleQueueMarkDefer( elem, type, src ) {\n +\tvar deferDataKey = type + "defer",\n +\t\tqueueDataKey = type + "queue",\n +\t\tmarkDataKey = type + "mark",\n +\t\tdefer = jQuery._data( elem, deferDataKey );\n +\tif ( defer &&\n +\t\t( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&\n +\t\t( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {\n +\t\t// Give room for hard-coded callbacks to fire first\n +\t\t// and eventually mark/queue something else on the element\n +\t\tsetTimeout( function() {\n +\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n +\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n +\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n +\t\t\t\tdefer.fire();\n +\t\t\t}\n +\t\t}, 0 );\n +\t}\n +}\n +\n +jQuery.extend({\n +\n +\t_mark: function( elem, type ) {\n +\t\tif ( elem ) {\n +\t\t\ttype = ( type || "fx" ) + "mark";\n +\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n +\t\t}\n +\t},\n +\n +\t_unmark: function( force, elem, type ) {\n +\t\tif ( force !== true ) {\n +\t\t\ttype = elem;\n +\t\t\telem = force;\n +\t\t\tforce = false;\n +\t\t}\n +\t\tif ( elem ) {\n +\t\t\ttype = type || "fx";\n +\t\t\tvar key = type + "mark",\n +\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n +\t\t\tif ( count ) {\n +\t\t\t\tjQuery._data( elem, key, count );\n +\t\t\t} else {\n +\t\t\t\tjQuery.removeData( elem, key, true );\n +\t\t\t\thandleQueueMarkDefer( elem, type, "mark" );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tqueue: function( elem, type, data ) {\n +\t\tvar q;\n +\t\tif ( elem ) {\n +\t\t\ttype = ( type || "fx" ) + "queue";\n +\t\t\tq = jQuery._data( elem, type );\n +\n +\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n +\t\t\tif ( data ) {\n +\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n +\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n +\t\t\t\t} else {\n +\t\t\t\t\tq.push( data );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn q || [];\n +\t\t}\n +\t},\n +\n +\tdequeue: function( elem, type ) {\n +\t\ttype = type || "fx";\n +\n +\t\tvar queue = jQuery.queue( elem, type ),\n +\t\t\tfn = queue.shift(),\n +\t\t\thooks = {};\n +\n +\t\t// If the fx queue is dequeued, always remove the progress sentinel\n +\t\tif ( fn === "inprogress" ) {\n +\t\t\tfn = queue.shift();\n +\t\t}\n +\n +\t\tif ( fn ) {\n +\t\t\t// Add a progress sentinel to prevent the fx queue from being\n +\t\t\t// automatically dequeued\n +\t\t\tif ( type === "fx" ) {\n +\t\t\t\tqueue.unshift( "inprogress" );\n +\t\t\t}\n +\n +\t\t\tjQuery._data( elem, type + ".run", hooks );\n +\t\t\tfn.call( elem, function() {\n +\t\t\t\tjQuery.dequeue( elem, type );\n +\t\t\t}, hooks );\n +\t\t}\n +\n +\t\tif ( !queue.length ) {\n +\t\t\tjQuery.removeData( elem, type + "queue " + type + ".run", true );\n +\t\t\thandleQueueMarkDefer( elem, type, "queue" );\n +\t\t}\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tqueue: function( type, data ) {\n +\t\tvar setter = 2;\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tdata = type;\n +\t\t\ttype = "fx";\n +\t\t\tsetter--;\n +\t\t}\n +\n +\t\tif ( arguments.length < setter ) {\n +\t\t\treturn jQuery.queue( this[0], type );\n +\t\t}\n +\n +\t\treturn data === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar queue = jQuery.queue( this, type, data );\n +\n +\t\t\t\tif ( type === "fx" && queue[0] !== "inprogress" ) {\n +\t\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t\t}\n +\t\t\t});\n +\t},\n +\tdequeue: function( type ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.dequeue( this, type );\n +\t\t});\n +\t},\n +\t// Based off of the plugin by Clint Helfers, with permission.\n +\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n +\tdelay: function( time, type ) {\n +\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n +\t\ttype = type || "fx";\n +\n +\t\treturn this.queue( type, function( next, hooks ) {\n +\t\t\tvar timeout = setTimeout( next, time );\n +\t\t\thooks.stop = function() {\n +\t\t\t\tclearTimeout( timeout );\n +\t\t\t};\n +\t\t});\n +\t},\n +\tclearQueue: function( type ) {\n +\t\treturn this.queue( type || "fx", [] );\n +\t},\n +\t// Get a promise resolved when queues of a certain type\n +\t// are emptied (fx is the type by default)\n +\tpromise: function( type, object ) {\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tobject = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\ttype = type || "fx";\n +\t\tvar defer = jQuery.Deferred(),\n +\t\t\telements = this,\n +\t\t\ti = elements.length,\n +\t\t\tcount = 1,\n +\t\t\tdeferDataKey = type + "defer",\n +\t\t\tqueueDataKey = type + "queue",\n +\t\t\tmarkDataKey = type + "mark",\n +\t\t\ttmp;\n +\t\tfunction resolve() {\n +\t\t\tif ( !( --count ) ) {\n +\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n +\t\t\t}\n +\t\t}\n +\t\twhile( i-- ) {\n +\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n +\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n +\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n +\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {\n +\t\t\t\tcount++;\n +\t\t\t\ttmp.add( resolve );\n +\t\t\t}\n +\t\t}\n +\t\tresolve();\n +\t\treturn defer.promise( object );\n +\t}\n +});\n +\n +\n +\n +\n +var rclass = /[\\n\\t\\r]/g,\n +\trspace = /\\s+/,\n +\trreturn = /\\r/g,\n +\trtype = /^(?:button|input)$/i,\n +\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n +\trclickable = /^a(?:rea)?$/i,\n +\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n +\tgetSetAttribute = jQuery.support.getSetAttribute,\n +\tnodeHook, boolHook, fixSpecified;\n +\n +jQuery.fn.extend({\n +\tattr: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveAttr: function( name ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeAttr( this, name );\n +\t\t});\n +\t},\n +\n +\tprop: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveProp: function( name ) {\n +\t\tname = jQuery.propFix[ name ] || name;\n +\t\treturn this.each(function() {\n +\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n +\t\t\ttry {\n +\t\t\t\tthis[ name ] = undefined;\n +\t\t\t\tdelete this[ name ];\n +\t\t\t} catch( e ) {}\n +\t\t});\n +\t},\n +\n +\taddClass: function( value ) {\n +\t\tvar classNames, i, l, elem,\n +\t\t\tsetClass, c, cl;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( value && typeof value === "string" ) {\n +\t\t\tclassNames = value.split( rspace );\n +\n +\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n +\t\t\t\t\t\telem.className = value;\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tsetClass = " " + elem.className + " ";\n +\n +\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n +\t\t\t\t\t\t\tif ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {\n +\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + " ";\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tremoveClass: function( value ) {\n +\t\tvar classNames, i, l, elem, className, c, cl;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( (value && typeof value === "string") || value === undefined ) {\n +\t\t\tclassNames = ( value || "" ).split( rspace );\n +\n +\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n +\t\t\t\t\tif ( value ) {\n +\t\t\t\t\t\tclassName = (" " + elem.className + " ").replace( rclass, " " );\n +\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n +\t\t\t\t\t\t\tclassName = className.replace(" " + classNames[ c ] + " ", " ");\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\telem.className = jQuery.trim( className );\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\telem.className = "";\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\ttoggleClass: function( value, stateVal ) {\n +\t\tvar type = typeof value,\n +\t\t\tisBool = typeof stateVal === "boolean";\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( i ) {\n +\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tif ( type === "string" ) {\n +\t\t\t\t// toggle individual class names\n +\t\t\t\tvar className,\n +\t\t\t\t\ti = 0,\n +\t\t\t\t\tself = jQuery( this ),\n +\t\t\t\t\tstate = stateVal,\n +\t\t\t\t\tclassNames = value.split( rspace );\n +\n +\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n +\t\t\t\t\t// check each className given, space seperated list\n +\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n +\t\t\t\t\tself[ state ? "addClass" : "removeClass" ]( className );\n +\t\t\t\t}\n +\n +\t\t\t} else if ( type === "undefined" || type === "boolean" ) {\n +\t\t\t\tif ( this.className ) {\n +\t\t\t\t\t// store className if set\n +\t\t\t\t\tjQuery._data( this, "__className__", this.className );\n +\t\t\t\t}\n +\n +\t\t\t\t// toggle whole className\n +\t\t\t\tthis.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\thasClass: function( selector ) {\n +\t\tvar className = " " + selector + " ",\n +\t\t\ti = 0,\n +\t\t\tl = this.length;\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\tif ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {\n +\t\t\t\treturn true;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\tval: function( value ) {\n +\t\tvar hooks, ret, isFunction,\n +\t\t\telem = this[0];\n +\n +\t\tif ( !arguments.length ) {\n +\t\t\tif ( elem ) {\n +\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n +\n +\t\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {\n +\t\t\t\t\treturn ret;\n +\t\t\t\t}\n +\n +\t\t\t\tret = elem.value;\n +\n +\t\t\t\treturn typeof ret === "string" ?\n +\t\t\t\t\t// handle most common string cases\n +\t\t\t\t\tret.replace(rreturn, "") :\n +\t\t\t\t\t// handle cases where value is null/undef or number\n +\t\t\t\t\tret == null ? "" : ret;\n +\t\t\t}\n +\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tisFunction = jQuery.isFunction( value );\n +\n +\t\treturn this.each(function( i ) {\n +\t\t\tvar self = jQuery(this), val;\n +\n +\t\t\tif ( this.nodeType !== 1 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tif ( isFunction ) {\n +\t\t\t\tval = value.call( this, i, self.val() );\n +\t\t\t} else {\n +\t\t\t\tval = value;\n +\t\t\t}\n +\n +\t\t\t// Treat null/undefined as ""; convert numbers to string\n +\t\t\tif ( val == null ) {\n +\t\t\t\tval = "";\n +\t\t\t} else if ( typeof val === "number" ) {\n +\t\t\t\tval += "";\n +\t\t\t} else if ( jQuery.isArray( val ) ) {\n +\t\t\t\tval = jQuery.map(val, function ( value ) {\n +\t\t\t\t\treturn value == null ? "" : value + "";\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n +\n +\t\t\t// If set returns undefined, fall back to normal setting\n +\t\t\tif ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {\n +\t\t\t\tthis.value = val;\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +jQuery.extend({\n +\tvalHooks: {\n +\t\toption: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n +\t\t\t\t// uses .value. See #6932\n +\t\t\t\tvar val = elem.attributes.value;\n +\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n +\t\t\t}\n +\t\t},\n +\t\tselect: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar value, i, max, option,\n +\t\t\t\t\tindex = elem.selectedIndex,\n +\t\t\t\t\tvalues = [],\n +\t\t\t\t\toptions = elem.options,\n +\t\t\t\t\tone = elem.type === "select-one";\n +\n +\t\t\t\t// Nothing was selected\n +\t\t\t\tif ( index < 0 ) {\n +\t\t\t\t\treturn null;\n +\t\t\t\t}\n +\n +\t\t\t\t// Loop through all the selected options\n +\t\t\t\ti = one ? index : 0;\n +\t\t\t\tmax = one ? index + 1 : options.length;\n +\t\t\t\tfor ( ; i < max; i++ ) {\n +\t\t\t\t\toption = options[ i ];\n +\n +\t\t\t\t\t// Don\'t return options that are disabled or in a disabled optgroup\n +\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&\n +\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {\n +\n +\t\t\t\t\t\t// Get the specific value for the option\n +\t\t\t\t\t\tvalue = jQuery( option ).val();\n +\n +\t\t\t\t\t\t// We don\'t need an array for one selects\n +\t\t\t\t\t\tif ( one ) {\n +\t\t\t\t\t\t\treturn value;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Multi-Selects return an array\n +\t\t\t\t\t\tvalues.push( value );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n +\t\t\t\tif ( one && !values.length && options.length ) {\n +\t\t\t\t\treturn jQuery( options[ index ] ).val();\n +\t\t\t\t}\n +\n +\t\t\t\treturn values;\n +\t\t\t},\n +\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tvar values = jQuery.makeArray( value );\n +\n +\t\t\t\tjQuery(elem).find("option").each(function() {\n +\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n +\t\t\t\t});\n +\n +\t\t\t\tif ( !values.length ) {\n +\t\t\t\t\telem.selectedIndex = -1;\n +\t\t\t\t}\n +\t\t\t\treturn values;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattrFn: {\n +\t\tval: true,\n +\t\tcss: true,\n +\t\thtml: true,\n +\t\ttext: true,\n +\t\tdata: true,\n +\t\twidth: true,\n +\t\theight: true,\n +\t\toffset: true\n +\t},\n +\n +\tattr: function( elem, name, value, pass ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set attributes on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( pass && name in jQuery.attrFn ) {\n +\t\t\treturn jQuery( elem )[ name ]( value );\n +\t\t}\n +\n +\t\t// Fallback to prop when attributes are not supported\n +\t\tif ( typeof elem.getAttribute === "undefined" ) {\n +\t\t\treturn jQuery.prop( elem, name, value );\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\t// All attributes are lowercase\n +\t\t// Grab necessary hook if one is defined\n +\t\tif ( notxml ) {\n +\t\t\tname = name.toLowerCase();\n +\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\n +\t\t\tif ( value === null ) {\n +\t\t\t\tjQuery.removeAttr( elem, name );\n +\t\t\t\treturn;\n +\n +\t\t\t} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\telem.setAttribute( name, "" + value );\n +\t\t\t\treturn value;\n +\t\t\t}\n +\n +\t\t} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\treturn ret;\n +\n +\t\t} else {\n +\n +\t\t\tret = elem.getAttribute( name );\n +\n +\t\t\t// Non-existent attributes return null, we normalize to undefined\n +\t\t\treturn ret === null ?\n +\t\t\t\tundefined :\n +\t\t\t\tret;\n +\t\t}\n +\t},\n +\n +\tremoveAttr: function( elem, value ) {\n +\t\tvar propName, attrNames, name, l, isBool,\n +\t\t\ti = 0;\n +\n +\t\tif ( value && elem.nodeType === 1 ) {\n +\t\t\tattrNames = value.toLowerCase().split( rspace );\n +\t\t\tl = attrNames.length;\n +\n +\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\tname = attrNames[ i ];\n +\n +\t\t\t\tif ( name ) {\n +\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\t\t\t\t\tisBool = rboolean.test( name );\n +\n +\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n +\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n +\t\t\t\t\tif ( !isBool ) {\n +\t\t\t\t\t\tjQuery.attr( elem, name, "" );\n +\t\t\t\t\t}\n +\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n +\n +\t\t\t\t\t// Set corresponding property to false for boolean attributes\n +\t\t\t\t\tif ( isBool && propName in elem ) {\n +\t\t\t\t\t\telem[ propName ] = false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattrHooks: {\n +\t\ttype: {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\t// We can\'t allow the type property to be changed (since it causes problems in IE)\n +\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n +\t\t\t\t\tjQuery.error( "type property can\'t be changed" );\n +\t\t\t\t} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {\n +\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n +\t\t\t\t\t// Reset value to it\'s default in case type is set after value\n +\t\t\t\t\t// This is for element creation\n +\t\t\t\t\tvar val = elem.value;\n +\t\t\t\t\telem.setAttribute( "type", value );\n +\t\t\t\t\tif ( val ) {\n +\t\t\t\t\t\telem.value = val;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Use the value property for back compat\n +\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n +\t\tvalue: {\n +\t\t\tget: function( elem, name ) {\n +\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, "button" ) ) {\n +\t\t\t\t\treturn nodeHook.get( elem, name );\n +\t\t\t\t}\n +\t\t\t\treturn name in elem ?\n +\t\t\t\t\telem.value :\n +\t\t\t\t\tnull;\n +\t\t\t},\n +\t\t\tset: function( elem, value, name ) {\n +\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, "button" ) ) {\n +\t\t\t\t\treturn nodeHook.set( elem, value, name );\n +\t\t\t\t}\n +\t\t\t\t// Does not return so that setAttribute is also used\n +\t\t\t\telem.value = value;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropFix: {\n +\t\ttabindex: "tabIndex",\n +\t\treadonly: "readOnly",\n +\t\t"for": "htmlFor",\n +\t\t"class": "className",\n +\t\tmaxlength: "maxLength",\n +\t\tcellspacing: "cellSpacing",\n +\t\tcellpadding: "cellPadding",\n +\t\trowspan: "rowSpan",\n +\t\tcolspan: "colSpan",\n +\t\tusemap: "useMap",\n +\t\tframeborder: "frameBorder",\n +\t\tcontenteditable: "contentEditable"\n +\t},\n +\n +\tprop: function( elem, name, value ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set properties on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\tif ( notxml ) {\n +\t\t\t// Fix name and attach hooks\n +\t\t\tname = jQuery.propFix[ name ] || name;\n +\t\t\thooks = jQuery.propHooks[ name ];\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\t\t\tif ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn ( elem[ name ] = value );\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn elem[ name ];\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropHooks: {\n +\t\ttabIndex: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// elem.tabIndex doesn\'t always return the correct value when it hasn\'t been explicitly set\n +\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n +\t\t\t\tvar attributeNode = elem.getAttributeNode("tabindex");\n +\n +\t\t\t\treturn attributeNode && attributeNode.specified ?\n +\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n +\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n +\t\t\t\t\t\t0 :\n +\t\t\t\t\t\tundefined;\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\n +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n +\n +// Hook for boolean attributes\n +boolHook = {\n +\tget: function( elem, name ) {\n +\t\t// Align boolean attributes with corresponding properties\n +\t\t// Fall back to attribute presence where some booleans are not supported\n +\t\tvar attrNode,\n +\t\t\tproperty = jQuery.prop( elem, name );\n +\t\treturn property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n +\t\t\tname.toLowerCase() :\n +\t\t\tundefined;\n +\t},\n +\tset: function( elem, value, name ) {\n +\t\tvar propName;\n +\t\tif ( value === false ) {\n +\t\t\t// Remove boolean attributes when set to false\n +\t\t\tjQuery.removeAttr( elem, name );\n +\t\t} else {\n +\t\t\t// value is true since we know at this point it\'s type boolean and not false\n +\t\t\t// Set boolean attributes to the same name and set the DOM property\n +\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\t\t\tif ( propName in elem ) {\n +\t\t\t\t// Only set the IDL specifically if it already exists on the element\n +\t\t\t\telem[ propName ] = true;\n +\t\t\t}\n +\n +\t\t\telem.setAttribute( name, name.toLowerCase() );\n +\t\t}\n +\t\treturn name;\n +\t}\n +};\n +\n +// IE6/7 do not support getting/setting some attributes with get/setAttribute\n +if ( !getSetAttribute ) {\n +\n +\tfixSpecified = {\n +\t\tname: true,\n +\t\tid: true,\n +\t\tcoords: true\n +\t};\n +\n +\t// Use this for any attribute in IE6/7\n +\t// This fixes almost every IE6/7 issue\n +\tnodeHook = jQuery.valHooks.button = {\n +\t\tget: function( elem, name ) {\n +\t\t\tvar ret;\n +\t\t\tret = elem.getAttributeNode( name );\n +\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?\n +\t\t\t\tret.nodeValue :\n +\t\t\t\tundefined;\n +\t\t},\n +\t\tset: function( elem, value, name ) {\n +\t\t\t// Set the existing or create a new attribute node\n +\t\t\tvar ret = elem.getAttributeNode( name );\n +\t\t\tif ( !ret ) {\n +\t\t\t\tret = document.createAttribute( name );\n +\t\t\t\telem.setAttributeNode( ret );\n +\t\t\t}\n +\t\t\treturn ( ret.nodeValue = value + "" );\n +\t\t}\n +\t};\n +\n +\t// Apply the nodeHook to tabindex\n +\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n +\n +\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n +\t// This is for removals\n +\tjQuery.each([ "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tif ( value === "" ) {\n +\t\t\t\t\telem.setAttribute( name, "auto" );\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t});\n +\n +\t// Set contenteditable to false on removals(#10429)\n +\t// Setting to empty string throws an error as an invalid value\n +\tjQuery.attrHooks.contenteditable = {\n +\t\tget: nodeHook.get,\n +\t\tset: function( elem, value, name ) {\n +\t\t\tif ( value === "" ) {\n +\t\t\t\tvalue = "false";\n +\t\t\t}\n +\t\t\tnodeHook.set( elem, value, name );\n +\t\t}\n +\t};\n +}\n +\n +\n +// Some attributes require a special call on IE\n +if ( !jQuery.support.hrefNormalized ) {\n +\tjQuery.each([ "href", "src", "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n +\t\t\t\treturn ret === null ? undefined : ret;\n +\t\t\t}\n +\t\t});\n +\t});\n +}\n +\n +if ( !jQuery.support.style ) {\n +\tjQuery.attrHooks.style = {\n +\t\tget: function( elem ) {\n +\t\t\t// Return undefined in the case of empty string\n +\t\t\t// Normalize to lowercase since IE uppercases css property names\n +\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n +\t\t},\n +\t\tset: function( elem, value ) {\n +\t\t\treturn ( elem.style.cssText = "" + value );\n +\t\t}\n +\t};\n +}\n +\n +// Safari mis-reports the default selected property of an option\n +// Accessing the parent\'s selectedIndex property fixes it\n +if ( !jQuery.support.optSelected ) {\n +\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n +\t\tget: function( elem ) {\n +\t\t\tvar parent = elem.parentNode;\n +\n +\t\t\tif ( parent ) {\n +\t\t\t\tparent.selectedIndex;\n +\n +\t\t\t\t// Make sure that it also works with optgroups, see #5701\n +\t\t\t\tif ( parent.parentNode ) {\n +\t\t\t\t\tparent.parentNode.selectedIndex;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn null;\n +\t\t}\n +\t});\n +}\n +\n +// IE6/7 call enctype encoding\n +if ( !jQuery.support.enctype ) {\n +\tjQuery.propFix.enctype = "encoding";\n +}\n +\n +// Radios and checkboxes getter/setter\n +if ( !jQuery.support.checkOn ) {\n +\tjQuery.each([ "radio", "checkbox" ], function() {\n +\t\tjQuery.valHooks[ this ] = {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// Handle the case where in Webkit "" is returned instead of "on" if a value isn\'t specified\n +\t\t\t\treturn elem.getAttribute("value") === null ? "on" : elem.value;\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +jQuery.each([ "radio", "checkbox" ], function() {\n +\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n +\t\tset: function( elem, value ) {\n +\t\t\tif ( jQuery.isArray( value ) ) {\n +\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n +\t\t\t}\n +\t\t}\n +\t});\n +});\n +\n +\n +\n +\n +var rformElems = /^(?:textarea|input|select)$/i,\n +\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n +\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n +\trkeyEvent = /^key/,\n +\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n +\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n +\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n +\tquickParse = function( selector ) {\n +\t\tvar quick = rquickIs.exec( selector );\n +\t\tif ( quick ) {\n +\t\t\t// 0 1 2 3\n +\t\t\t// [ _, tag, id, class ]\n +\t\t\tquick[1] = ( quick[1] || "" ).toLowerCase();\n +\t\t\tquick[3] = quick[3] && new RegExp( "(?:^|\\\\s)" + quick[3] + "(?:\\\\s|$)" );\n +\t\t}\n +\t\treturn quick;\n +\t},\n +\tquickIs = function( elem, m ) {\n +\t\tvar attrs = elem.attributes || {};\n +\t\treturn (\n +\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n +\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n +\t\t\t(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))\n +\t\t);\n +\t},\n +\thoverHack = function( events ) {\n +\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );\n +\t};\n +\n +/*\n + * Helper functions for managing events -- not part of the public interface.\n + * Props to Dean Edwards\' addEvent library for many of the ideas.\n + */\n +jQuery.event = {\n +\n +\tadd: function( elem, types, handler, data, selector ) {\n +\n +\t\tvar elemData, eventHandle, events,\n +\t\t\tt, tns, type, namespaces, handleObj,\n +\t\t\thandleObjIn, quick, handlers, special;\n +\n +\t\t// Don\'t attach events to noData or text/comment nodes (allow plain objects tho)\n +\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an object of custom data in lieu of the handler\n +\t\tif ( handler.handler ) {\n +\t\t\thandleObjIn = handler;\n +\t\t\thandler = handleObjIn.handler;\n +\t\t\tselector = handleObjIn.selector;\n +\t\t}\n +\n +\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n +\t\tif ( !handler.guid ) {\n +\t\t\thandler.guid = jQuery.guid++;\n +\t\t}\n +\n +\t\t// Init the element\'s event structure and main handler, if this is the first\n +\t\tevents = elemData.events;\n +\t\tif ( !events ) {\n +\t\t\telemData.events = events = {};\n +\t\t}\n +\t\teventHandle = elemData.handle;\n +\t\tif ( !eventHandle ) {\n +\t\t\telemData.handle = eventHandle = function( e ) {\n +\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n +\t\t\t\t// when an event is called after a page has unloaded\n +\t\t\t\treturn typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?\n +\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n +\t\t\t\t\tundefined;\n +\t\t\t};\n +\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n +\t\t\teventHandle.elem = elem;\n +\t\t}\n +\n +\t\t// Handle multiple events separated by a space\n +\t\t// jQuery(...).bind("mouseover mouseout", fn);\n +\t\ttypes = jQuery.trim( hoverHack(types) ).split( " " );\n +\t\tfor ( t = 0; t < types.length; t++ ) {\n +\n +\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = tns[1];\n +\t\t\tnamespaces = ( tns[2] || "" ).split( "." ).sort();\n +\n +\t\t\t// If event changes its type, use the special event handlers for the changed type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// If selector defined, determine special event api type, otherwise given type\n +\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n +\n +\t\t\t// Update special based on newly reset type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// handleObj is passed to all event handlers\n +\t\t\thandleObj = jQuery.extend({\n +\t\t\t\ttype: type,\n +\t\t\t\torigType: tns[1],\n +\t\t\t\tdata: data,\n +\t\t\t\thandler: handler,\n +\t\t\t\tguid: handler.guid,\n +\t\t\t\tselector: selector,\n +\t\t\t\tquick: selector && quickParse( selector ),\n +\t\t\t\tnamespace: namespaces.join(".")\n +\t\t\t}, handleObjIn );\n +\n +\t\t\t// Init the event handler queue if we\'re the first\n +\t\t\thandlers = events[ type ];\n +\t\t\tif ( !handlers ) {\n +\t\t\t\thandlers = events[ type ] = [];\n +\t\t\t\thandlers.delegateCount = 0;\n +\n +\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n +\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n +\t\t\t\t\t// Bind the global event handler to the element\n +\t\t\t\t\tif ( elem.addEventListener ) {\n +\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n +\n +\t\t\t\t\t} else if ( elem.attachEvent ) {\n +\t\t\t\t\t\telem.attachEvent( "on" + type, eventHandle );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( special.add ) {\n +\t\t\t\tspecial.add.call( elem, handleObj );\n +\n +\t\t\t\tif ( !handleObj.handler.guid ) {\n +\t\t\t\t\thandleObj.handler.guid = handler.guid;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Add to the element\'s handler list, delegates in front\n +\t\t\tif ( selector ) {\n +\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n +\t\t\t} else {\n +\t\t\t\thandlers.push( handleObj );\n +\t\t\t}\n +\n +\t\t\t// Keep track of which events have ever been used, for event optimization\n +\t\t\tjQuery.event.global[ type ] = true;\n +\t\t}\n +\n +\t\t// Nullify elem to prevent memory leaks in IE\n +\t\telem = null;\n +\t},\n +\n +\tglobal: {},\n +\n +\t// Detach an event or set of events from an element\n +\tremove: function( elem, types, handler, selector, mappedTypes ) {\n +\n +\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n +\t\t\tt, tns, type, origType, namespaces, origCount,\n +\t\t\tj, events, special, handle, eventType, handleObj;\n +\n +\t\tif ( !elemData || !(events = elemData.events) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Once for each type.namespace in types; type may be omitted\n +\t\ttypes = jQuery.trim( hoverHack( types || "" ) ).split(" ");\n +\t\tfor ( t = 0; t < types.length; t++ ) {\n +\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = origType = tns[1];\n +\t\t\tnamespaces = tns[2];\n +\n +\t\t\t// Unbind all events (on this namespace, if provided) for the element\n +\t\t\tif ( !type ) {\n +\t\t\t\tfor ( type in events ) {\n +\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n +\t\t\t\t}\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n +\t\t\teventType = events[ type ] || [];\n +\t\t\torigCount = eventType.length;\n +\t\t\tnamespaces = namespaces ? new RegExp("(^|\\\\.)" + namespaces.split(".").sort().join("\\\\.(?:.*\\\\.)?") + "(\\\\.|$)") : null;\n +\n +\t\t\t// Remove matching events\n +\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n +\t\t\t\thandleObj = eventType[ j ];\n +\n +\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n +\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n +\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n +\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {\n +\t\t\t\t\teventType.splice( j--, 1 );\n +\n +\t\t\t\t\tif ( handleObj.selector ) {\n +\t\t\t\t\t\teventType.delegateCount--;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( special.remove ) {\n +\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n +\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n +\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n +\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n +\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n +\t\t\t\t}\n +\n +\t\t\t\tdelete events[ type ];\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Remove the expando if it\'s no longer used\n +\t\tif ( jQuery.isEmptyObject( events ) ) {\n +\t\t\thandle = elemData.handle;\n +\t\t\tif ( handle ) {\n +\t\t\t\thandle.elem = null;\n +\t\t\t}\n +\n +\t\t\t// removeData also checks for emptiness and clears the expando if empty\n +\t\t\t// so use it instead of delete\n +\t\t\tjQuery.removeData( elem, [ "events", "handle" ], true );\n +\t\t}\n +\t},\n +\n +\t// Events that are safe to short-circuit if no handlers are attached.\n +\t// Native DOM events should not be added, they may have inline handlers.\n +\tcustomEvent: {\n +\t\t"getData": true,\n +\t\t"setData": true,\n +\t\t"changeData": true\n +\t},\n +\n +\ttrigger: function( event, data, elem, onlyHandlers ) {\n +\t\t// Don\'t do events on text and comment nodes\n +\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Event object or event type\n +\t\tvar type = event.type || event,\n +\t\t\tnamespaces = [],\n +\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n +\n +\t\t// focus/blur morphs to focusin/out; ensure we\'re not firing them right now\n +\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( type.indexOf( "!" ) >= 0 ) {\n +\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n +\t\t\ttype = type.slice(0, -1);\n +\t\t\texclusive = true;\n +\t\t}\n +\n +\t\tif ( type.indexOf( "." ) >= 0 ) {\n +\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n +\t\t\tnamespaces = type.split(".");\n +\t\t\ttype = namespaces.shift();\n +\t\t\tnamespaces.sort();\n +\t\t}\n +\n +\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n +\t\t\t// No jQuery handlers for this event type, and it can\'t have inline handlers\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an Event, Object, or just an event type string\n +\t\tevent = typeof event === "object" ?\n +\t\t\t// jQuery.Event object\n +\t\t\tevent[ jQuery.expando ] ? event :\n +\t\t\t// Object literal\n +\t\t\tnew jQuery.Event( type, event ) :\n +\t\t\t// Just the event type (string)\n +\t\t\tnew jQuery.Event( type );\n +\n +\t\tevent.type = type;\n +\t\tevent.isTrigger = true;\n +\t\tevent.exclusive = exclusive;\n +\t\tevent.namespace = namespaces.join( "." );\n +\t\tevent.namespace_re = event.namespace? new RegExp("(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.)?") + "(\\\\.|$)") : null;\n +\t\tontype = type.indexOf( ":" ) < 0 ? "on" + type : "";\n +\n +\t\t// Handle a global trigger\n +\t\tif ( !elem ) {\n +\n +\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n +\t\t\tcache = jQuery.cache;\n +\t\t\tfor ( i in cache ) {\n +\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n +\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Clean up the event in case it is being reused\n +\t\tevent.result = undefined;\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = elem;\n +\t\t}\n +\n +\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n +\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n +\t\tdata.unshift( event );\n +\n +\t\t// Allow special events to draw outside the lines\n +\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n +\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n +\t\teventPath = [[ elem, special.bindType || type ]];\n +\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\tbubbleType = special.delegateType || type;\n +\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n +\t\t\told = null;\n +\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n +\t\t\t\teventPath.push([ cur, bubbleType ]);\n +\t\t\t\told = cur;\n +\t\t\t}\n +\n +\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n +\t\t\tif ( old && old === elem.ownerDocument ) {\n +\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Fire handlers on the event path\n +\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n +\n +\t\t\tcur = eventPath[i][0];\n +\t\t\tevent.type = eventPath[i][1];\n +\n +\t\t\thandle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );\n +\t\t\tif ( handle ) {\n +\t\t\t\thandle.apply( cur, data );\n +\t\t\t}\n +\t\t\t// Note that this is a bare JS function and not a jQuery handler\n +\t\t\thandle = ontype && cur[ ontype ];\n +\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t}\n +\t\tevent.type = type;\n +\n +\t\t// If nobody prevented the default action, do it now\n +\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n +\n +\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n +\t\t\t\t!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {\n +\n +\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n +\t\t\t\t// Can\'t use an .isFunction() check here because IE6/7 fails that test.\n +\t\t\t\t// Don\'t do default actions on window, that\'s where global variables be (#6170)\n +\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n +\t\t\t\tif ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\t\t\t// Don\'t re-trigger an onFOO event when we call its FOO() method\n +\t\t\t\t\told = elem[ ontype ];\n +\n +\t\t\t\t\tif ( old ) {\n +\t\t\t\t\t\telem[ ontype ] = null;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n +\t\t\t\t\tjQuery.event.triggered = type;\n +\t\t\t\t\telem[ type ]();\n +\t\t\t\t\tjQuery.event.triggered = undefined;\n +\n +\t\t\t\t\tif ( old ) {\n +\t\t\t\t\t\telem[ ontype ] = old;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\tdispatch: function( event ) {\n +\n +\t\t// Make a writable jQuery.Event from the native event object\n +\t\tevent = jQuery.event.fix( event || window.event );\n +\n +\t\tvar handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),\n +\t\t\tdelegateCount = handlers.delegateCount,\n +\t\t\targs = [].slice.call( arguments, 0 ),\n +\t\t\trun_all = !event.exclusive && !event.namespace,\n +\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n +\t\t\thandlerQueue = [],\n +\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n +\n +\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n +\t\targs[0] = event;\n +\t\tevent.delegateTarget = this;\n +\n +\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n +\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine handlers that should run if there are delegated events\n +\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n +\t\tif ( delegateCount && !(event.button && event.type === "click") ) {\n +\n +\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n +\t\t\tjqcur = jQuery(this);\n +\t\t\tjqcur.context = this.ownerDocument || this;\n +\n +\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n +\n +\t\t\t\t// Don\'t process events on disabled elements (#6911, #8165)\n +\t\t\t\tif ( cur.disabled !== true ) {\n +\t\t\t\t\tselMatch = {};\n +\t\t\t\t\tmatches = [];\n +\t\t\t\t\tjqcur[0] = cur;\n +\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n +\t\t\t\t\t\thandleObj = handlers[ i ];\n +\t\t\t\t\t\tsel = handleObj.selector;\n +\n +\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n +\t\t\t\t\t\t\tselMatch[ sel ] = (\n +\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n +\t\t\t\t\t\t\t);\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n +\t\t\t\t\t\t\tmatches.push( handleObj );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( matches.length ) {\n +\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Add the remaining (directly-bound) handlers\n +\t\tif ( handlers.length > delegateCount ) {\n +\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n +\t\t}\n +\n +\t\t// Run delegates first; they may want to stop propagation beneath us\n +\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n +\t\t\tmatched = handlerQueue[ i ];\n +\t\t\tevent.currentTarget = matched.elem;\n +\n +\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n +\t\t\t\thandleObj = matched.matches[ j ];\n +\n +\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n +\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n +\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n +\n +\t\t\t\t\tevent.data = handleObj.data;\n +\t\t\t\t\tevent.handleObj = handleObj;\n +\n +\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n +\t\t\t\t\t\t\t.apply( matched.elem, args );\n +\n +\t\t\t\t\tif ( ret !== undefined ) {\n +\t\t\t\t\t\tevent.result = ret;\n +\t\t\t\t\t\tif ( ret === false ) {\n +\t\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t\t\tevent.stopPropagation();\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Call the postDispatch hook for the mapped type\n +\t\tif ( special.postDispatch ) {\n +\t\t\tspecial.postDispatch.call( this, event );\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\t// Includes some event props shared by KeyEvent and MouseEvent\n +\t// *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n +\tprops: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),\n +\n +\tfixHooks: {},\n +\n +\tkeyHooks: {\n +\t\tprops: "char charCode key keyCode".split(" "),\n +\t\tfilter: function( event, original ) {\n +\n +\t\t\t// Add which for key events\n +\t\t\tif ( event.which == null ) {\n +\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tmouseHooks: {\n +\t\tprops: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),\n +\t\tfilter: function( event, original ) {\n +\t\t\tvar eventDoc, doc, body,\n +\t\t\t\tbutton = original.button,\n +\t\t\t\tfromElement = original.fromElement;\n +\n +\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n +\t\t\tif ( event.pageX == null && original.clientX != null ) {\n +\t\t\t\teventDoc = event.target.ownerDocument || document;\n +\t\t\t\tdoc = eventDoc.documentElement;\n +\t\t\t\tbody = eventDoc.body;\n +\n +\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n +\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n +\t\t\t}\n +\n +\t\t\t// Add relatedTarget, if necessary\n +\t\t\tif ( !event.relatedTarget && fromElement ) {\n +\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n +\t\t\t}\n +\n +\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n +\t\t\t// Note: button is not normalized, so don\'t use it\n +\t\t\tif ( !event.which && button !== undefined ) {\n +\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tfix: function( event ) {\n +\t\tif ( event[ jQuery.expando ] ) {\n +\t\t\treturn event;\n +\t\t}\n +\n +\t\t// Create a writable copy of the event object and normalize some properties\n +\t\tvar i, prop,\n +\t\t\toriginalEvent = event,\n +\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n +\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n +\n +\t\tevent = jQuery.Event( originalEvent );\n +\n +\t\tfor ( i = copy.length; i; ) {\n +\t\t\tprop = copy[ --i ];\n +\t\t\tevent[ prop ] = originalEvent[ prop ];\n +\t\t}\n +\n +\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = originalEvent.srcElement || document;\n +\t\t}\n +\n +\t\t// Target should not be a text node (#504, Safari)\n +\t\tif ( event.target.nodeType === 3 ) {\n +\t\t\tevent.target = event.target.parentNode;\n +\t\t}\n +\n +\t\t// For mouse/key events; add metaKey if it\'s not there (#3368, IE6/7/8)\n +\t\tif ( event.metaKey === undefined ) {\n +\t\t\tevent.metaKey = event.ctrlKey;\n +\t\t}\n +\n +\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n +\t},\n +\n +\tspecial: {\n +\t\tready: {\n +\t\t\t// Make sure the ready event is setup\n +\t\t\tsetup: jQuery.bindReady\n +\t\t},\n +\n +\t\tload: {\n +\t\t\t// Prevent triggered image.load events from bubbling to window.load\n +\t\t\tnoBubble: true\n +\t\t},\n +\n +\t\tfocus: {\n +\t\t\tdelegateType: "focusin"\n +\t\t},\n +\t\tblur: {\n +\t\t\tdelegateType: "focusout"\n +\t\t},\n +\n +\t\tbeforeunload: {\n +\t\t\tsetup: function( data, namespaces, eventHandle ) {\n +\t\t\t\t// We only want to do this special case on windows\n +\t\t\t\tif ( jQuery.isWindow( this ) ) {\n +\t\t\t\t\tthis.onbeforeunload = eventHandle;\n +\t\t\t\t}\n +\t\t\t},\n +\n +\t\t\tteardown: function( namespaces, eventHandle ) {\n +\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n +\t\t\t\t\tthis.onbeforeunload = null;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tsimulate: function( type, elem, event, bubble ) {\n +\t\t// Piggyback on a donor event to simulate a different one.\n +\t\t// Fake originalEvent to avoid donor\'s stopPropagation, but if the\n +\t\t// simulated event prevents default then we do the same on the donor.\n +\t\tvar e = jQuery.extend(\n +\t\t\tnew jQuery.Event(),\n +\t\t\tevent,\n +\t\t\t{ type: type,\n +\t\t\t\tisSimulated: true,\n +\t\t\t\toriginalEvent: {}\n +\t\t\t}\n +\t\t);\n +\t\tif ( bubble ) {\n +\t\t\tjQuery.event.trigger( e, null, elem );\n +\t\t} else {\n +\t\t\tjQuery.event.dispatch.call( elem, e );\n +\t\t}\n +\t\tif ( e.isDefaultPrevented() ) {\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t}\n +};\n +\n +// Some plugins are using, but it\'s undocumented/deprecated and will be removed.\n +// The 1.7 special event interface should provide all the hooks needed now.\n +jQuery.event.handle = jQuery.event.dispatch;\n +\n +jQuery.removeEvent = document.removeEventListener ?\n +\tfunction( elem, type, handle ) {\n +\t\tif ( elem.removeEventListener ) {\n +\t\t\telem.removeEventListener( type, handle, false );\n +\t\t}\n +\t} :\n +\tfunction( elem, type, handle ) {\n +\t\tif ( elem.detachEvent ) {\n +\t\t\telem.detachEvent( "on" + type, handle );\n +\t\t}\n +\t};\n +\n +jQuery.Event = function( src, props ) {\n +\t// Allow instantiation without the \'new\' keyword\n +\tif ( !(this instanceof jQuery.Event) ) {\n +\t\treturn new jQuery.Event( src, props );\n +\t}\n +\n +\t// Event object\n +\tif ( src && src.type ) {\n +\t\tthis.originalEvent = src;\n +\t\tthis.type = src.type;\n +\n +\t\t// Events bubbling up the document may have been marked as prevented\n +\t\t// by a handler lower down the tree; reflect the correct value.\n +\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n +\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n +\n +\t// Event type\n +\t} else {\n +\t\tthis.type = src;\n +\t}\n +\n +\t// Put explicitly provided properties onto the event object\n +\tif ( props ) {\n +\t\tjQuery.extend( this, props );\n +\t}\n +\n +\t// Create a timestamp if incoming event doesn\'t have one\n +\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n +\n +\t// Mark it as fixed\n +\tthis[ jQuery.expando ] = true;\n +};\n +\n +function returnFalse() {\n +\treturn false;\n +}\n +function returnTrue() {\n +\treturn true;\n +}\n +\n +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n +jQuery.Event.prototype = {\n +\tpreventDefault: function() {\n +\t\tthis.isDefaultPrevented = returnTrue;\n +\n +\t\tvar e = this.originalEvent;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// if preventDefault exists run it on the original event\n +\t\tif ( e.preventDefault ) {\n +\t\t\te.preventDefault();\n +\n +\t\t// otherwise set the returnValue property of the original event to false (IE)\n +\t\t} else {\n +\t\t\te.returnValue = false;\n +\t\t}\n +\t},\n +\tstopPropagation: function() {\n +\t\tthis.isPropagationStopped = returnTrue;\n +\n +\t\tvar e = this.originalEvent;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\t\t// if stopPropagation exists run it on the original event\n +\t\tif ( e.stopPropagation ) {\n +\t\t\te.stopPropagation();\n +\t\t}\n +\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n +\t\te.cancelBubble = true;\n +\t},\n +\tstopImmediatePropagation: function() {\n +\t\tthis.isImmediatePropagationStopped = returnTrue;\n +\t\tthis.stopPropagation();\n +\t},\n +\tisDefaultPrevented: returnFalse,\n +\tisPropagationStopped: returnFalse,\n +\tisImmediatePropagationStopped: returnFalse\n +};\n +\n +// Create mouseenter/leave events using mouseover/out and event-time checks\n +jQuery.each({\n +\tmouseenter: "mouseover",\n +\tmouseleave: "mouseout"\n +}, function( orig, fix ) {\n +\tjQuery.event.special[ orig ] = {\n +\t\tdelegateType: fix,\n +\t\tbindType: fix,\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar target = this,\n +\t\t\t\trelated = event.relatedTarget,\n +\t\t\t\thandleObj = event.handleObj,\n +\t\t\t\tselector = handleObj.selector,\n +\t\t\t\tret;\n +\n +\t\t\t// For mousenter/leave call the handler if related is outside the target.\n +\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n +\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n +\t\t\t\tevent.type = handleObj.origType;\n +\t\t\t\tret = handleObj.handler.apply( this, arguments );\n +\t\t\t\tevent.type = fix;\n +\t\t\t}\n +\t\t\treturn ret;\n +\t\t}\n +\t};\n +});\n +\n +// IE submit delegation\n +if ( !jQuery.support.submitBubbles ) {\n +\n +\tjQuery.event.special.submit = {\n +\t\tsetup: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n +\t\t\tjQuery.event.add( this, "click._submit keypress._submit", function( e ) {\n +\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n +\t\t\t\tvar elem = e.target,\n +\t\t\t\t\tform = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;\n +\t\t\t\tif ( form && !form._submit_attached ) {\n +\t\t\t\t\tjQuery.event.add( form, "submit._submit", function( event ) {\n +\t\t\t\t\t\tevent._submit_bubble = true;\n +\t\t\t\t\t});\n +\t\t\t\t\tform._submit_attached = true;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t// return undefined since we don\'t need an event listener\n +\t\t},\n +\t\t\n +\t\tpostDispatch: function( event ) {\n +\t\t\t// If form was submitted by the user, bubble the event up the tree\n +\t\t\tif ( event._submit_bubble ) {\n +\t\t\t\tdelete event._submit_bubble;\n +\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n +\t\t\t\t\tjQuery.event.simulate( "submit", this.parentNode, event, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n +\t\t\tjQuery.event.remove( this, "._submit" );\n +\t\t}\n +\t};\n +}\n +\n +// IE change delegation and checkbox/radio fix\n +if ( !jQuery.support.changeBubbles ) {\n +\n +\tjQuery.event.special.change = {\n +\n +\t\tsetup: function() {\n +\n +\t\t\tif ( rformElems.test( this.nodeName ) ) {\n +\t\t\t\t// IE doesn\'t fire change on a check/radio until blur; trigger it on click\n +\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n +\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n +\t\t\t\tif ( this.type === "checkbox" || this.type === "radio" ) {\n +\t\t\t\t\tjQuery.event.add( this, "propertychange._change", function( event ) {\n +\t\t\t\t\t\tif ( event.originalEvent.propertyName === "checked" ) {\n +\t\t\t\t\t\t\tthis._just_changed = true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery.event.add( this, "click._change", function( event ) {\n +\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n +\t\t\t\t\t\t\tthis._just_changed = false;\n +\t\t\t\t\t\t\tjQuery.event.simulate( "change", this, event, true );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n +\t\t\tjQuery.event.add( this, "beforeactivate._change", function( e ) {\n +\t\t\t\tvar elem = e.target;\n +\n +\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n +\t\t\t\t\tjQuery.event.add( elem, "change._change", function( event ) {\n +\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n +\t\t\t\t\t\t\tjQuery.event.simulate( "change", this.parentNode, event, true );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\telem._change_attached = true;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t},\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar elem = event.target;\n +\n +\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n +\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {\n +\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\tjQuery.event.remove( this, "._change" );\n +\n +\t\t\treturn rformElems.test( this.nodeName );\n +\t\t}\n +\t};\n +}\n +\n +// Create "bubbling" focus and blur events\n +if ( !jQuery.support.focusinBubbles ) {\n +\tjQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {\n +\n +\t\t// Attach a single capturing handler while someone wants focusin/focusout\n +\t\tvar attaches = 0,\n +\t\t\thandler = function( event ) {\n +\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n +\t\t\t};\n +\n +\t\tjQuery.event.special[ fix ] = {\n +\t\t\tsetup: function() {\n +\t\t\t\tif ( attaches++ === 0 ) {\n +\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tteardown: function() {\n +\t\t\t\tif ( --attaches === 0 ) {\n +\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +\n +jQuery.fn.extend({\n +\n +\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n +\t\tvar origFn, type;\n +\n +\t\t// Types can be a map of types/handlers\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-Object, selector, data )\n +\t\t\tif ( typeof selector !== "string" ) { // && selector != null\n +\t\t\t\t// ( types-Object, data )\n +\t\t\t\tdata = data || selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t\tfor ( type in types ) {\n +\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( data == null && fn == null ) {\n +\t\t\t// ( types, fn )\n +\t\t\tfn = selector;\n +\t\t\tdata = selector = undefined;\n +\t\t} else if ( fn == null ) {\n +\t\t\tif ( typeof selector === "string" ) {\n +\t\t\t\t// ( types, selector, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = undefined;\n +\t\t\t} else {\n +\t\t\t\t// ( types, data, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t} else if ( !fn ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( one === 1 ) {\n +\t\t\torigFn = fn;\n +\t\t\tfn = function( event ) {\n +\t\t\t\t// Can use an empty set, since event contains the info\n +\t\t\t\tjQuery().off( event );\n +\t\t\t\treturn origFn.apply( this, arguments );\n +\t\t\t};\n +\t\t\t// Use same guid so caller can remove using origFn\n +\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n +\t\t}\n +\t\treturn this.each( function() {\n +\t\t\tjQuery.event.add( this, types, fn, data, selector );\n +\t\t});\n +\t},\n +\tone: function( types, selector, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn, 1 );\n +\t},\n +\toff: function( types, selector, fn ) {\n +\t\tif ( types && types.preventDefault && types.handleObj ) {\n +\t\t\t// ( event ) dispatched jQuery.Event\n +\t\t\tvar handleObj = types.handleObj;\n +\t\t\tjQuery( types.delegateTarget ).off(\n +\t\t\t\thandleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,\n +\t\t\t\thandleObj.selector,\n +\t\t\t\thandleObj.handler\n +\t\t\t);\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-object [, selector] )\n +\t\t\tfor ( var type in types ) {\n +\t\t\t\tthis.off( type, selector, types[ type ] );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( selector === false || typeof selector === "function" ) {\n +\t\t\t// ( types [, fn] )\n +\t\t\tfn = selector;\n +\t\t\tselector = undefined;\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t}\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.remove( this, types, fn, selector );\n +\t\t});\n +\t},\n +\n +\tbind: function( types, data, fn ) {\n +\t\treturn this.on( types, null, data, fn );\n +\t},\n +\tunbind: function( types, fn ) {\n +\t\treturn this.off( types, null, fn );\n +\t},\n +\n +\tlive: function( types, data, fn ) {\n +\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n +\t\treturn this;\n +\t},\n +\tdie: function( types, fn ) {\n +\t\tjQuery( this.context ).off( types, this.selector || "**", fn );\n +\t\treturn this;\n +\t},\n +\n +\tdelegate: function( selector, types, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn );\n +\t},\n +\tundelegate: function( selector, types, fn ) {\n +\t\t// ( namespace ) or ( selector, types [, fn] )\n +\t\treturn arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );\n +\t},\n +\n +\ttrigger: function( type, data ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.trigger( type, data, this );\n +\t\t});\n +\t},\n +\ttriggerHandler: function( type, data ) {\n +\t\tif ( this[0] ) {\n +\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n +\t\t}\n +\t},\n +\n +\ttoggle: function( fn ) {\n +\t\t// Save reference to arguments for access in closure\n +\t\tvar args = arguments,\n +\t\t\tguid = fn.guid || jQuery.guid++,\n +\t\t\ti = 0,\n +\t\t\ttoggler = function( event ) {\n +\t\t\t\t// Figure out which function to execute\n +\t\t\t\tvar lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;\n +\t\t\t\tjQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );\n +\n +\t\t\t\t// Make sure that clicks stop\n +\t\t\t\tevent.preventDefault();\n +\n +\t\t\t\t// and execute the function\n +\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n +\t\t\t};\n +\n +\t\t// link all the functions, so any of them can unbind this click handler\n +\t\ttoggler.guid = guid;\n +\t\twhile ( i < args.length ) {\n +\t\t\targs[ i++ ].guid = guid;\n +\t\t}\n +\n +\t\treturn this.click( toggler );\n +\t},\n +\n +\thover: function( fnOver, fnOut ) {\n +\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n +\t}\n +});\n +\n +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +\n +\t"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +\n +\t"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {\n +\n +\t// Handle event binding\n +\tjQuery.fn[ name ] = function( data, fn ) {\n +\t\tif ( fn == null ) {\n +\t\t\tfn = data;\n +\t\t\tdata = null;\n +\t\t}\n +\n +\t\treturn arguments.length > 0 ?\n +\t\t\tthis.on( name, null, data, fn ) :\n +\t\t\tthis.trigger( name );\n +\t};\n +\n +\tif ( jQuery.attrFn ) {\n +\t\tjQuery.attrFn[ name ] = true;\n +\t}\n +\n +\tif ( rkeyEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n +\t}\n +\n +\tif ( rmouseEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n +\t}\n +});\n +\n +\n +\n +/*!\n + * Sizzle CSS Selector Engine\n + * Copyright 2011, The Dojo Foundation\n + * Released under the MIT, BSD, and GPL Licenses.\n + * More information: http://sizzlejs.com/\n + */\n +(function(){\n +\n +var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n +\texpando = "sizcache" + (Math.random() + \'\').replace(\'.\', \'\'),\n +\tdone = 0,\n +\ttoString = Object.prototype.toString,\n +\thasDuplicate = false,\n +\tbaseHasDuplicate = true,\n +\trBackslash = /\\\\/g,\n +\trReturn = /\\r\\n/g,\n +\trNonWord = /\\W/;\n +\n +// Here we check if the JavaScript engine is using some sort of\n +// optimization where it does not always call our comparision\n +// function. If that is the case, discard the hasDuplicate value.\n +// Thus far that includes Google Chrome.\n +[0, 0].sort(function() {\n +\tbaseHasDuplicate = false;\n +\treturn 0;\n +});\n +\n +var Sizzle = function( selector, context, results, seed ) {\n +\tresults = results || [];\n +\tcontext = context || document;\n +\n +\tvar origContext = context;\n +\n +\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n +\t\treturn [];\n +\t}\n +\n +\tif ( !selector || typeof selector !== "string" ) {\n +\t\treturn results;\n +\t}\n +\n +\tvar m, set, checkSet, extra, ret, cur, pop, i,\n +\t\tprune = true,\n +\t\tcontextXML = Sizzle.isXML( context ),\n +\t\tparts = [],\n +\t\tsoFar = selector;\n +\n +\t// Reset the position of the chunker regexp (start from head)\n +\tdo {\n +\t\tchunker.exec( "" );\n +\t\tm = chunker.exec( soFar );\n +\n +\t\tif ( m ) {\n +\t\t\tsoFar = m[3];\n +\n +\t\t\tparts.push( m[1] );\n +\n +\t\t\tif ( m[2] ) {\n +\t\t\t\textra = m[3];\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\t} while ( m );\n +\n +\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n +\n +\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n +\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n +\n +\t\t} else {\n +\t\t\tset = Expr.relative[ parts[0] ] ?\n +\t\t\t\t[ context ] :\n +\t\t\t\tSizzle( parts.shift(), context );\n +\n +\t\t\twhile ( parts.length ) {\n +\t\t\t\tselector = parts.shift();\n +\n +\t\t\t\tif ( Expr.relative[ selector ] ) {\n +\t\t\t\t\tselector += parts.shift();\n +\t\t\t\t}\n +\n +\t\t\t\tset = posProcess( selector, set, seed );\n +\t\t\t}\n +\t\t}\n +\n +\t} else {\n +\t\t// Take a shortcut and set the context if the root selector is an ID\n +\t\t// (but not if it\'ll be faster if the inner selector is an ID)\n +\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n +\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n +\n +\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n +\t\t\tcontext = ret.expr ?\n +\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n +\t\t\t\tret.set[0];\n +\t\t}\n +\n +\t\tif ( context ) {\n +\t\t\tret = seed ?\n +\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n +\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );\n +\n +\t\t\tset = ret.expr ?\n +\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n +\t\t\t\tret.set;\n +\n +\t\t\tif ( parts.length > 0 ) {\n +\t\t\t\tcheckSet = makeArray( set );\n +\n +\t\t\t} else {\n +\t\t\t\tprune = false;\n +\t\t\t}\n +\n +\t\t\twhile ( parts.length ) {\n +\t\t\t\tcur = parts.pop();\n +\t\t\t\tpop = cur;\n +\n +\t\t\t\tif ( !Expr.relative[ cur ] ) {\n +\t\t\t\t\tcur = "";\n +\t\t\t\t} else {\n +\t\t\t\t\tpop = parts.pop();\n +\t\t\t\t}\n +\n +\t\t\t\tif ( pop == null ) {\n +\t\t\t\t\tpop = context;\n +\t\t\t\t}\n +\n +\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tcheckSet = parts = [];\n +\t\t}\n +\t}\n +\n +\tif ( !checkSet ) {\n +\t\tcheckSet = set;\n +\t}\n +\n +\tif ( !checkSet ) {\n +\t\tSizzle.error( cur || selector );\n +\t}\n +\n +\tif ( toString.call(checkSet) === "[object Array]" ) {\n +\t\tif ( !prune ) {\n +\t\t\tresults.push.apply( results, checkSet );\n +\n +\t\t} else if ( context && context.nodeType === 1 ) {\n +\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n +\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n +\t\t\t\t\tresults.push( set[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n +\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n +\t\t\t\t\tresults.push( set[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t} else {\n +\t\tmakeArray( checkSet, results );\n +\t}\n +\n +\tif ( extra ) {\n +\t\tSizzle( extra, origContext, results, seed );\n +\t\tSizzle.uniqueSort( results );\n +\t}\n +\n +\treturn results;\n +};\n +\n +Sizzle.uniqueSort = function( results ) {\n +\tif ( sortOrder ) {\n +\t\thasDuplicate = baseHasDuplicate;\n +\t\tresults.sort( sortOrder );\n +\n +\t\tif ( hasDuplicate ) {\n +\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n +\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n +\t\t\t\t\tresults.splice( i--, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn results;\n +};\n +\n +Sizzle.matches = function( expr, set ) {\n +\treturn Sizzle( expr, null, null, set );\n +};\n +\n +Sizzle.matchesSelector = function( node, expr ) {\n +\treturn Sizzle( expr, null, null, [node] ).length > 0;\n +};\n +\n +Sizzle.find = function( expr, context, isXML ) {\n +\tvar set, i, len, match, type, left;\n +\n +\tif ( !expr ) {\n +\t\treturn [];\n +\t}\n +\n +\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n +\t\ttype = Expr.order[i];\n +\n +\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n +\t\t\tleft = match[1];\n +\t\t\tmatch.splice( 1, 1 );\n +\n +\t\t\tif ( left.substr( left.length - 1 ) !== "\\\\" ) {\n +\t\t\t\tmatch[1] = (match[1] || "").replace( rBackslash, "" );\n +\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n +\n +\t\t\t\tif ( set != null ) {\n +\t\t\t\t\texpr = expr.replace( Expr.match[ type ], "" );\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\tif ( !set ) {\n +\t\tset = typeof context.getElementsByTagName !== "undefined" ?\n +\t\t\tcontext.getElementsByTagName( "*" ) :\n +\t\t\t[];\n +\t}\n +\n +\treturn { set: set, expr: expr };\n +};\n +\n +Sizzle.filter = function( expr, set, inplace, not ) {\n +\tvar match, anyFound,\n +\t\ttype, found, item, filter, left,\n +\t\ti, pass,\n +\t\told = expr,\n +\t\tresult = [],\n +\t\tcurLoop = set,\n +\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n +\n +\twhile ( expr && set.length ) {\n +\t\tfor ( type in Expr.filter ) {\n +\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n +\t\t\t\tfilter = Expr.filter[ type ];\n +\t\t\t\tleft = match[1];\n +\n +\t\t\t\tanyFound = false;\n +\n +\t\t\t\tmatch.splice(1,1);\n +\n +\t\t\t\tif ( left.substr( left.length - 1 ) === "\\\\" ) {\n +\t\t\t\t\tcontinue;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( curLoop === result ) {\n +\t\t\t\t\tresult = [];\n +\t\t\t\t}\n +\n +\t\t\t\tif ( Expr.preFilter[ type ] ) {\n +\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n +\n +\t\t\t\t\tif ( !match ) {\n +\t\t\t\t\t\tanyFound = found = true;\n +\n +\t\t\t\t\t} else if ( match === true ) {\n +\t\t\t\t\t\tcontinue;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( match ) {\n +\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n +\t\t\t\t\t\tif ( item ) {\n +\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n +\t\t\t\t\t\t\tpass = not ^ found;\n +\n +\t\t\t\t\t\t\tif ( inplace && found != null ) {\n +\t\t\t\t\t\t\t\tif ( pass ) {\n +\t\t\t\t\t\t\t\t\tanyFound = true;\n +\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t} else if ( pass ) {\n +\t\t\t\t\t\t\t\tresult.push( item );\n +\t\t\t\t\t\t\t\tanyFound = true;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( found !== undefined ) {\n +\t\t\t\t\tif ( !inplace ) {\n +\t\t\t\t\t\tcurLoop = result;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\texpr = expr.replace( Expr.match[ type ], "" );\n +\n +\t\t\t\t\tif ( !anyFound ) {\n +\t\t\t\t\t\treturn [];\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Improper expression\n +\t\tif ( expr === old ) {\n +\t\t\tif ( anyFound == null ) {\n +\t\t\t\tSizzle.error( expr );\n +\n +\t\t\t} else {\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\n +\t\told = expr;\n +\t}\n +\n +\treturn curLoop;\n +};\n +\n +Sizzle.error = function( msg ) {\n +\tthrow new Error( "Syntax error, unrecognized expression: " + msg );\n +};\n +\n +/**\n + * Utility function for retreiving the text value of an array of DOM nodes\n + * @param {Array|Element} elem\n + */\n +var getText = Sizzle.getText = function( elem ) {\n + var i, node,\n +\t\tnodeType = elem.nodeType,\n +\t\tret = "";\n +\n +\tif ( nodeType ) {\n +\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n +\t\t\t// Use textContent || innerText for elements\n +\t\t\tif ( typeof elem.textContent === \'string\' ) {\n +\t\t\t\treturn elem.textContent;\n +\t\t\t} else if ( typeof elem.innerText === \'string\' ) {\n +\t\t\t\t// Replace IE\'s carriage returns\n +\t\t\t\treturn elem.innerText.replace( rReturn, \'\' );\n +\t\t\t} else {\n +\t\t\t\t// Traverse it\'s children\n +\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n +\t\t\t\t\tret += getText( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n +\t\t\treturn elem.nodeValue;\n +\t\t}\n +\t} else {\n +\n +\t\t// If no nodeType, this is expected to be an array\n +\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n +\t\t\t// Do not traverse comment nodes\n +\t\t\tif ( node.nodeType !== 8 ) {\n +\t\t\t\tret += getText( node );\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn ret;\n +};\n +\n +var Expr = Sizzle.selectors = {\n +\torder: [ "ID", "NAME", "TAG" ],\n +\n +\tmatch: {\n +\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n +\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n +\t\tNAME: /\\[name=[\'"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)[\'"]*\\]/,\n +\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:([\'"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n +\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n +\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n +\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n +\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n +\t},\n +\n +\tleftMatch: {},\n +\n +\tattrMap: {\n +\t\t"class": "className",\n +\t\t"for": "htmlFor"\n +\t},\n +\n +\tattrHandle: {\n +\t\thref: function( elem ) {\n +\t\t\treturn elem.getAttribute( "href" );\n +\t\t},\n +\t\ttype: function( elem ) {\n +\t\t\treturn elem.getAttribute( "type" );\n +\t\t}\n +\t},\n +\n +\trelative: {\n +\t\t"+": function(checkSet, part){\n +\t\t\tvar isPartStr = typeof part === "string",\n +\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n +\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n +\n +\t\t\tif ( isTag ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\t\t\t}\n +\n +\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n +\t\t\t\tif ( (elem = checkSet[i]) ) {\n +\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n +\n +\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n +\t\t\t\t\t\telem || false :\n +\t\t\t\t\t\telem === part;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( isPartStrNotTag ) {\n +\t\t\t\tSizzle.filter( part, checkSet, true );\n +\t\t\t}\n +\t\t},\n +\n +\t\t">": function( checkSet, part ) {\n +\t\t\tvar elem,\n +\t\t\t\tisPartStr = typeof part === "string",\n +\t\t\t\ti = 0,\n +\t\t\t\tl = checkSet.length;\n +\n +\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\n +\t\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\t\telem = checkSet[i];\n +\n +\t\t\t\t\tif ( elem ) {\n +\t\t\t\t\t\tvar parent = elem.parentNode;\n +\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\t\telem = checkSet[i];\n +\n +\t\t\t\t\tif ( elem ) {\n +\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n +\t\t\t\t\t\t\telem.parentNode :\n +\t\t\t\t\t\t\telem.parentNode === part;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( isPartStr ) {\n +\t\t\t\t\tSizzle.filter( part, checkSet, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\t"": function(checkSet, part, isXML){\n +\t\t\tvar nodeCheck,\n +\t\t\t\tdoneName = done++,\n +\t\t\t\tcheckFn = dirCheck;\n +\n +\t\t\tif ( typeof part === "string" && !rNonWord.test( part ) ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\t\t\t\tnodeCheck = part;\n +\t\t\t\tcheckFn = dirNodeCheck;\n +\t\t\t}\n +\n +\t\t\tcheckFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );\n +\t\t},\n +\n +\t\t"~": function( checkSet, part, isXML ) {\n +\t\t\tvar nodeCheck,\n +\t\t\t\tdoneName = done++,\n +\t\t\t\tcheckFn = dirCheck;\n +\n +\t\t\tif ( typeof part === "string" && !rNonWord.test( part ) ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\t\t\t\tnodeCheck = part;\n +\t\t\t\tcheckFn = dirNodeCheck;\n +\t\t\t}\n +\n +\t\t\tcheckFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );\n +\t\t}\n +\t},\n +\n +\tfind: {\n +\t\tID: function( match, context, isXML ) {\n +\t\t\tif ( typeof context.getElementById !== "undefined" && !isXML ) {\n +\t\t\t\tvar m = context.getElementById(match[1]);\n +\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\treturn m && m.parentNode ? [m] : [];\n +\t\t\t}\n +\t\t},\n +\n +\t\tNAME: function( match, context ) {\n +\t\t\tif ( typeof context.getElementsByName !== "undefined" ) {\n +\t\t\t\tvar ret = [],\n +\t\t\t\t\tresults = context.getElementsByName( match[1] );\n +\n +\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n +\t\t\t\t\tif ( results[i].getAttribute("name") === match[1] ) {\n +\t\t\t\t\t\tret.push( results[i] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn ret.length === 0 ? null : ret;\n +\t\t\t}\n +\t\t},\n +\n +\t\tTAG: function( match, context ) {\n +\t\t\tif ( typeof context.getElementsByTagName !== "undefined" ) {\n +\t\t\t\treturn context.getElementsByTagName( match[1] );\n +\t\t\t}\n +\t\t}\n +\t},\n +\tpreFilter: {\n +\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n +\t\t\tmatch = " " + match[1].replace( rBackslash, "" ) + " ";\n +\n +\t\t\tif ( isXML ) {\n +\t\t\t\treturn match;\n +\t\t\t}\n +\n +\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n +\t\t\t\tif ( elem ) {\n +\t\t\t\t\tif ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\\t\\n\\r]/g, " ").indexOf(match) >= 0) ) {\n +\t\t\t\t\t\tif ( !inplace ) {\n +\t\t\t\t\t\t\tresult.push( elem );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} else if ( inplace ) {\n +\t\t\t\t\t\tcurLoop[i] = false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn false;\n +\t\t},\n +\n +\t\tID: function( match ) {\n +\t\t\treturn match[1].replace( rBackslash, "" );\n +\t\t},\n +\n +\t\tTAG: function( match, curLoop ) {\n +\t\t\treturn match[1].replace( rBackslash, "" ).toLowerCase();\n +\t\t},\n +\n +\t\tCHILD: function( match ) {\n +\t\t\tif ( match[1] === "nth" ) {\n +\t\t\t\tif ( !match[2] ) {\n +\t\t\t\t\tSizzle.error( match[0] );\n +\t\t\t\t}\n +\n +\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, \'\');\n +\n +\t\t\t\t// parse equations like \'even\', \'odd\', \'5\', \'2n\', \'3n+2\', \'4n-1\', \'-n+6\'\n +\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n +\t\t\t\t\tmatch[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||\n +\t\t\t\t\t!/\\D/.test( match[2] ) && "0n+" + match[2] || match[2]);\n +\n +\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n +\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n +\t\t\t\tmatch[3] = test[3] - 0;\n +\t\t\t}\n +\t\t\t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +else if ( match[2] ) {\n +\t\t\t\tSizzle.error( match[0] );\n +\t\t\t}\n +\n +\t\t\t// TODO: Move to normal caching system\n +\t\t\tmatch[0] = done++;\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n +\t\t\tvar name = match[1] = match[1].replace( rBackslash, "" );\n +\n +\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n +\t\t\t\tmatch[1] = Expr.attrMap[name];\n +\t\t\t}\n +\n +\t\t\t// Handle if an un-quoted value was used\n +\t\t\tmatch[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );\n +\n +\t\t\tif ( match[2] === "~=" ) {\n +\t\t\t\tmatch[4] = " " + match[4] + " ";\n +\t\t\t}\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n +\t\t\tif ( match[1] === "not" ) {\n +\t\t\t\t// If we\'re dealing with a complex expression, or a simple one\n +\t\t\t\tif ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\\w/.test(match[3]) ) {\n +\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n +\n +\t\t\t\t\tif ( !inplace ) {\n +\t\t\t\t\t\tresult.push.apply( result, ret );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\n +\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n +\t\t\t\treturn true;\n +\t\t\t}\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\tPOS: function( match ) {\n +\t\t\tmatch.unshift( true );\n +\n +\t\t\treturn match;\n +\t\t}\n +\t},\n +\n +\tfilters: {\n +\t\tenabled: function( elem ) {\n +\t\t\treturn elem.disabled === false && elem.type !== "hidden";\n +\t\t},\n +\n +\t\tdisabled: function( elem ) {\n +\t\t\treturn elem.disabled === true;\n +\t\t},\n +\n +\t\tchecked: function( elem ) {\n +\t\t\treturn elem.checked === true;\n +\t\t},\n +\n +\t\tselected: function( elem ) {\n +\t\t\t// Accessing this property makes selected-by-default\n +\t\t\t// options in Safari work properly\n +\t\t\tif ( elem.parentNode ) {\n +\t\t\t\telem.parentNode.selectedIndex;\n +\t\t\t}\n +\n +\t\t\treturn elem.selected === true;\n +\t\t},\n +\n +\t\tparent: function( elem ) {\n +\t\t\treturn !!elem.firstChild;\n +\t\t},\n +\n +\t\tempty: function( elem ) {\n +\t\t\treturn !elem.firstChild;\n +\t\t},\n +\n +\t\thas: function( elem, i, match ) {\n +\t\t\treturn !!Sizzle( match[3], elem ).length;\n +\t\t},\n +\n +\t\theader: function( elem ) {\n +\t\t\treturn (/h\\d/i).test( elem.nodeName );\n +\t\t},\n +\n +\t\ttext: function( elem ) {\n +\t\t\tvar attr = elem.getAttribute( "type" ), type = elem.type;\n +\t\t\t// IE6 and 7 will map elem.type to \'text\' for new HTML5 types (search, etc)\n +\t\t\t// use getAttribute instead to test this case\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );\n +\t\t},\n +\n +\t\tradio: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;\n +\t\t},\n +\n +\t\tcheckbox: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;\n +\t\t},\n +\n +\t\tfile: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "file" === elem.type;\n +\t\t},\n +\n +\t\tpassword: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "password" === elem.type;\n +\t\t},\n +\n +\t\tsubmit: function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn (name === "input" || name === "button") && "submit" === elem.type;\n +\t\t},\n +\n +\t\timage: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "image" === elem.type;\n +\t\t},\n +\n +\t\treset: function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn (name === "input" || name === "button") && "reset" === elem.type;\n +\t\t},\n +\n +\t\tbutton: function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn name === "input" && "button" === elem.type || name === "button";\n +\t\t},\n +\n +\t\tinput: function( elem ) {\n +\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n +\t\t},\n +\n +\t\tfocus: function( elem ) {\n +\t\t\treturn elem === elem.ownerDocument.activeElement;\n +\t\t}\n +\t},\n +\tsetFilters: {\n +\t\tfirst: function( elem, i ) {\n +\t\t\treturn i === 0;\n +\t\t},\n +\n +\t\tlast: function( elem, i, match, array ) {\n +\t\t\treturn i === array.length - 1;\n +\t\t},\n +\n +\t\teven: function( elem, i ) {\n +\t\t\treturn i % 2 === 0;\n +\t\t},\n +\n +\t\todd: function( elem, i ) {\n +\t\t\treturn i % 2 === 1;\n +\t\t},\n +\n +\t\tlt: function( elem, i, match ) {\n +\t\t\treturn i < match[3] - 0;\n +\t\t},\n +\n +\t\tgt: function( elem, i, match ) {\n +\t\t\treturn i > match[3] - 0;\n +\t\t},\n +\n +\t\tnth: function( elem, i, match ) {\n +\t\t\treturn match[3] - 0 === i;\n +\t\t},\n +\n +\t\teq: function( elem, i, match ) {\n +\t\t\treturn match[3] - 0 === i;\n +\t\t}\n +\t},\n +\tfilter: {\n +\t\tPSEUDO: function( elem, match, i, array ) {\n +\t\t\tvar name = match[1],\n +\t\t\t\tfilter = Expr.filters[ name ];\n +\n +\t\t\tif ( filter ) {\n +\t\t\t\treturn filter( elem, i, match, array );\n +\n +\t\t\t} else if ( name === "contains" ) {\n +\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;\n +\n +\t\t\t} else if ( name === "not" ) {\n +\t\t\t\tvar not = match[3];\n +\n +\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n +\t\t\t\t\tif ( not[j] === elem ) {\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn true;\n +\n +\t\t\t} else {\n +\t\t\t\tSizzle.error( name );\n +\t\t\t}\n +\t\t},\n +\n +\t\tCHILD: function( elem, match ) {\n +\t\t\tvar first, last,\n +\t\t\t\tdoneName, parent, cache,\n +\t\t\t\tcount, diff,\n +\t\t\t\ttype = match[1],\n +\t\t\t\tnode = elem;\n +\n +\t\t\tswitch ( type ) {\n +\t\t\t\tcase "only":\n +\t\t\t\tcase "first":\n +\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n +\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n +\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( type === "first" ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tnode = elem;\n +\n +\t\t\t\t\t/* falls through */\n +\t\t\t\tcase "last":\n +\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n +\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n +\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn true;\n +\n +\t\t\t\tcase "nth":\n +\t\t\t\t\tfirst = match[2];\n +\t\t\t\t\tlast = match[3];\n +\n +\t\t\t\t\tif ( first === 1 && last === 0 ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tdoneName = match[0];\n +\t\t\t\t\tparent = elem.parentNode;\n +\n +\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n +\t\t\t\t\t\tcount = 0;\n +\n +\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n +\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n +\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\tparent[ expando ] = doneName;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tdiff = elem.nodeIndex - last;\n +\n +\t\t\t\t\tif ( first === 0 ) {\n +\t\t\t\t\t\treturn diff === 0;\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n +\t\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tID: function( elem, match ) {\n +\t\t\treturn elem.nodeType === 1 && elem.getAttribute("id") === match;\n +\t\t},\n +\n +\t\tTAG: function( elem, match ) {\n +\t\t\treturn (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n +\t\t},\n +\n +\t\tCLASS: function( elem, match ) {\n +\t\t\treturn (" " + (elem.className || elem.getAttribute("class")) + " ")\n +\t\t\t\t.indexOf( match ) > -1;\n +\t\t},\n +\n +\t\tATTR: function( elem, match ) {\n +\t\t\tvar name = match[1],\n +\t\t\t\tresult = Sizzle.attr ?\n +\t\t\t\t\tSizzle.attr( elem, name ) :\n +\t\t\t\t\tExpr.attrHandle[ name ] ?\n +\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n +\t\t\t\t\telem[ name ] != null ?\n +\t\t\t\t\t\telem[ name ] :\n +\t\t\t\t\t\telem.getAttribute( name ),\n +\t\t\t\tvalue = result + "",\n +\t\t\t\ttype = match[2],\n +\t\t\t\tcheck = match[4];\n +\n +\t\t\treturn result == null ?\n +\t\t\t\ttype === "!=" :\n +\t\t\t\t!type && Sizzle.attr ?\n +\t\t\t\tresult != null :\n +\t\t\t\ttype === "=" ?\n +\t\t\t\tvalue === check :\n +\t\t\t\ttype === "*=" ?\n +\t\t\t\tvalue.indexOf(check) >= 0 :\n +\t\t\t\ttype === "~=" ?\n +\t\t\t\t(" " + value + " ").indexOf(check) >= 0 :\n +\t\t\t\t!check ?\n +\t\t\t\tvalue && result !== false :\n +\t\t\t\ttype === "!=" ?\n +\t\t\t\tvalue !== check :\n +\t\t\t\ttype === "^=" ?\n +\t\t\t\tvalue.indexOf(check) === 0 :\n +\t\t\t\ttype === "$=" ?\n +\t\t\t\tvalue.substr(value.length - check.length) === check :\n +\t\t\t\ttype === "|=" ?\n +\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + "-" :\n +\t\t\t\tfalse;\n +\t\t},\n +\n +\t\tPOS: function( elem, match, i, array ) {\n +\t\t\tvar name = match[2],\n +\t\t\t\tfilter = Expr.setFilters[ name ];\n +\n +\t\t\tif ( filter ) {\n +\t\t\t\treturn filter( elem, i, match, array );\n +\t\t\t}\n +\t\t}\n +\t}\n +};\n +\n +var origPOS = Expr.match.POS,\n +\tfescape = function(all, num){\n +\t\treturn "\\\\" + (num - 0 + 1);\n +\t};\n +\n +for ( var type in Expr.match ) {\n +\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n +\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n +}\n +// Expose origPOS\n +// "global" as in regardless of relation to brackets/parens\n +Expr.match.globalPOS = origPOS;\n +\n +var makeArray = function( array, results ) {\n +\tarray = Array.prototype.slice.call( array, 0 );\n +\n +\tif ( results ) {\n +\t\tresults.push.apply( results, array );\n +\t\treturn results;\n +\t}\n +\n +\treturn array;\n +};\n +\n +// Perform a simple check to determine if the browser is capable of\n +// converting a NodeList to an array using builtin methods.\n +// Also verifies that the returned array holds DOM nodes\n +// (which is not the case in the Blackberry browser)\n +try {\n +\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n +\n +// Provide a fallback method if it does not work\n +} catch( e ) {\n +\tmakeArray = function( array, results ) {\n +\t\tvar i = 0,\n +\t\t\tret = results || [];\n +\n +\t\tif ( toString.call(array) === "[object Array]" ) {\n +\t\t\tArray.prototype.push.apply( ret, array );\n +\n +\t\t} else {\n +\t\t\tif ( typeof array.length === "number" ) {\n +\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n +\t\t\t\t\tret.push( array[i] );\n +\t\t\t\t}\n +\n +\t\t\t} else {\n +\t\t\t\tfor ( ; array[i]; i++ ) {\n +\t\t\t\t\tret.push( array[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t};\n +}\n +\n +var sortOrder, siblingCheck;\n +\n +if ( document.documentElement.compareDocumentPosition ) {\n +\tsortOrder = function( a, b ) {\n +\t\tif ( a === b ) {\n +\t\t\thasDuplicate = true;\n +\t\t\treturn 0;\n +\t\t}\n +\n +\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n +\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n +\t\t}\n +\n +\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n +\t};\n +\n +} else {\n +\tsortOrder = function( a, b ) {\n +\t\t// The nodes are identical, we can exit early\n +\t\tif ( a === b ) {\n +\t\t\thasDuplicate = true;\n +\t\t\treturn 0;\n +\n +\t\t// Fallback to using sourceIndex (in IE) if it\'s available on both nodes\n +\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n +\t\t\treturn a.sourceIndex - b.sourceIndex;\n +\t\t}\n +\n +\t\tvar al, bl,\n +\t\t\tap = [],\n +\t\t\tbp = [],\n +\t\t\taup = a.parentNode,\n +\t\t\tbup = b.parentNode,\n +\t\t\tcur = aup;\n +\n +\t\t// If the nodes are siblings (or identical) we can do a quick check\n +\t\tif ( aup === bup ) {\n +\t\t\treturn siblingCheck( a, b );\n +\n +\t\t// If no parents were found then the nodes are disconnected\n +\t\t} else if ( !aup ) {\n +\t\t\treturn -1;\n +\n +\t\t} else if ( !bup ) {\n +\t\t\treturn 1;\n +\t\t}\n +\n +\t\t// Otherwise they\'re somewhere else in the tree so we need\n +\t\t// to build up a full list of the parentNodes for comparison\n +\t\twhile ( cur ) {\n +\t\t\tap.unshift( cur );\n +\t\t\tcur = cur.parentNode;\n +\t\t}\n +\n +\t\tcur = bup;\n +\n +\t\twhile ( cur ) {\n +\t\t\tbp.unshift( cur );\n +\t\t\tcur = cur.parentNode;\n +\t\t}\n +\n +\t\tal = ap.length;\n +\t\tbl = bp.length;\n +\n +\t\t// Start walking down the tree looking for a discrepancy\n +\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n +\t\t\tif ( ap[i] !== bp[i] ) {\n +\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// We ended someplace up the tree so do a sibling check\n +\t\treturn i === al ?\n +\t\t\tsiblingCheck( a, bp[i], -1 ) :\n +\t\t\tsiblingCheck( ap[i], b, 1 );\n +\t};\n +\n +\tsiblingCheck = function( a, b, ret ) {\n +\t\tif ( a === b ) {\n +\t\t\treturn ret;\n +\t\t}\n +\n +\t\tvar cur = a.nextSibling;\n +\n +\t\twhile ( cur ) {\n +\t\t\tif ( cur === b ) {\n +\t\t\t\treturn -1;\n +\t\t\t}\n +\n +\t\t\tcur = cur.nextSibling;\n +\t\t}\n +\n +\t\treturn 1;\n +\t};\n +}\n +\n +// Check to see if the browser returns elements by name when\n +// querying by getElementById (and provide a workaround)\n +(function(){\n +\t// We\'re going to inject a fake input element with a specified name\n +\tvar form = document.createElement("div"),\n +\t\tid = "script" + (new Date()).getTime(),\n +\t\troot = document.documentElement;\n +\n +\tform.innerHTML = "<a name=\'" + id + "\'/>";\n +\n +\t// Inject it into the root element, check its status, and remove it quickly\n +\troot.insertBefore( form, root.firstChild );\n +\n +\t// The workaround has to do additional checks after a getElementById\n +\t// Which slows things down for other browsers (hence the branching)\n +\tif ( document.getElementById( id ) ) {\n +\t\tExpr.find.ID = function( match, context, isXML ) {\n +\t\t\tif ( typeof context.getElementById !== "undefined" && !isXML ) {\n +\t\t\t\tvar m = context.getElementById(match[1]);\n +\n +\t\t\t\treturn m ?\n +\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?\n +\t\t\t\t\t\t[m] :\n +\t\t\t\t\t\tundefined :\n +\t\t\t\t\t[];\n +\t\t\t}\n +\t\t};\n +\n +\t\tExpr.filter.ID = function( elem, match ) {\n +\t\t\tvar node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");\n +\n +\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n +\t\t};\n +\t}\n +\n +\troot.removeChild( form );\n +\n +\t// release memory in IE\n +\troot = form = null;\n +})();\n +\n +(function(){\n +\t// Check to see if the browser returns only elements\n +\t// when doing getElementsByTagName("*")\n +\n +\t// Create a fake element\n +\tvar div = document.createElement("div");\n +\tdiv.appendChild( document.createComment("") );\n +\n +\t// Make sure no comments are found\n +\tif ( div.getElementsByTagName("*").length > 0 ) {\n +\t\tExpr.find.TAG = function( match, context ) {\n +\t\t\tvar results = context.getElementsByTagName( match[1] );\n +\n +\t\t\t// Filter out possible comments\n +\t\t\tif ( match[1] === "*" ) {\n +\t\t\t\tvar tmp = [];\n +\n +\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n +\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n +\t\t\t\t\t\ttmp.push( results[i] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tresults = tmp;\n +\t\t\t}\n +\n +\t\t\treturn results;\n +\t\t};\n +\t}\n +\n +\t// Check to see if an attribute returns normalized href attributes\n +\tdiv.innerHTML = "<a href=\'#\'></a>";\n +\n +\tif ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&\n +\t\t\tdiv.firstChild.getAttribute("href") !== "#" ) {\n +\n +\t\tExpr.attrHandle.href = function( elem ) {\n +\t\t\treturn elem.getAttribute( "href", 2 );\n +\t\t};\n +\t}\n +\n +\t// release memory in IE\n +\tdiv = null;\n +})();\n +\n +if ( document.querySelectorAll ) {\n +\t(function(){\n +\t\tvar oldSizzle = Sizzle,\n +\t\t\tdiv = document.createElement("div"),\n +\t\t\tid = "__sizzle__";\n +\n +\t\tdiv.innerHTML = "<p class=\'TEST\'></p>";\n +\n +\t\t// Safari can\'t handle uppercase or unicode characters when\n +\t\t// in quirks mode.\n +\t\tif ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tSizzle = function( query, context, extra, seed ) {\n +\t\t\tcontext = context || document;\n +\n +\t\t\t// Only use querySelectorAll on non-XML documents\n +\t\t\t// (ID selectors don\'t work in non-HTML documents)\n +\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n +\t\t\t\t// See if we find a selector to speed up\n +\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n +\n +\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n +\t\t\t\t\t// Speed-up: Sizzle("TAG")\n +\t\t\t\t\tif ( match[1] ) {\n +\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n +\n +\t\t\t\t\t// Speed-up: Sizzle(".CLASS")\n +\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n +\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( context.nodeType === 9 ) {\n +\t\t\t\t\t// Speed-up: Sizzle("body")\n +\t\t\t\t\t// The body element only exists once, optimize finding it\n +\t\t\t\t\tif ( query === "body" && context.body ) {\n +\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n +\n +\t\t\t\t\t// Speed-up: Sizzle("#ID")\n +\t\t\t\t\t} else if ( match && match[3] ) {\n +\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n +\n +\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n +\t\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n +\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n +\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\treturn makeArray( [], extra );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n +\t\t\t\t\t} catch(qsaError) {}\n +\n +\t\t\t\t// qSA works strangely on Element-rooted queries\n +\t\t\t\t// We can work around this by specifying an extra ID on the root\n +\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n +\t\t\t\t// IE 8 doesn\'t work on object elements\n +\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {\n +\t\t\t\t\tvar oldContext = context,\n +\t\t\t\t\t\told = context.getAttribute( "id" ),\n +\t\t\t\t\t\tnid = old || id,\n +\t\t\t\t\t\thasParent = context.parentNode,\n +\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n +\n +\t\t\t\t\tif ( !old ) {\n +\t\t\t\t\t\tcontext.setAttribute( "id", nid );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tnid = nid.replace( /\'/g, "\\\\$&" );\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n +\t\t\t\t\t\tcontext = context.parentNode;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n +\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( "[id=\'" + nid + "\'] " + query ), extra );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} catch(pseudoError) {\n +\t\t\t\t\t} finally {\n +\t\t\t\t\t\tif ( !old ) {\n +\t\t\t\t\t\t\toldContext.removeAttribute( "id" );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn oldSizzle(query, context, extra, seed);\n +\t\t};\n +\n +\t\tfor ( var prop in oldSizzle ) {\n +\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n +\t\t}\n +\n +\t\t// release memory in IE\n +\t\tdiv = null;\n +\t})();\n +}\n +\n +(function(){\n +\tvar html = document.documentElement,\n +\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n +\n +\tif ( matches ) {\n +\t\t// Check to see if it\'s possible to do matchesSelector\n +\t\t// on a disconnected node (IE 9 fails this)\n +\t\tvar disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),\n +\t\t\tpseudoWorks = false;\n +\n +\t\ttry {\n +\t\t\t// This should fail with an exception\n +\t\t\t// Gecko does not error, returns false instead\n +\t\t\tmatches.call( document.documentElement, "[test!=\'\']:sizzle" );\n +\n +\t\t} catch( pseudoError ) {\n +\t\t\tpseudoWorks = true;\n +\t\t}\n +\n +\t\tSizzle.matchesSelector = function( node, expr ) {\n +\t\t\t// Make sure that attribute selectors are quoted\n +\t\t\texpr = expr.replace(/\\=\\s*([^\'"\\]]*)\\s*\\]/g, "=\'$1\']");\n +\n +\t\t\tif ( !Sizzle.isXML( node ) ) {\n +\t\t\t\ttry {\n +\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n +\t\t\t\t\t\tvar ret = matches.call( node, expr );\n +\n +\t\t\t\t\t\t// IE 9\'s matchesSelector returns false on disconnected nodes\n +\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n +\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n +\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n +\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n +\t\t\t\t\t\t\treturn ret;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n +\t\t};\n +\t}\n +})();\n +\n +(function(){\n +\tvar div = document.createElement("div");\n +\n +\tdiv.innerHTML = "<div class=\'test e\'></div><div class=\'test\'></div>";\n +\n +\t// Opera can\'t find a second classname (in 9.6)\n +\t// Also, make sure that getElementsByClassName actually exists\n +\tif ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {\n +\t\treturn;\n +\t}\n +\n +\t// Safari caches class attributes, doesn\'t catch changes (in 3.2)\n +\tdiv.lastChild.className = "e";\n +\n +\tif ( div.getElementsByClassName("e").length === 1 ) {\n +\t\treturn;\n +\t}\n +\n +\tExpr.order.splice(1, 0, "CLASS");\n +\tExpr.find.CLASS = function( match, context, isXML ) {\n +\t\tif ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {\n +\t\t\treturn context.getElementsByClassName(match[1]);\n +\t\t}\n +\t};\n +\n +\t// release memory in IE\n +\tdiv = null;\n +})();\n +\n +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n +\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n +\t\tvar elem = checkSet[i];\n +\n +\t\tif ( elem ) {\n +\t\t\tvar match = false;\n +\n +\t\t\telem = elem[dir];\n +\n +\t\t\twhile ( elem ) {\n +\t\t\t\tif ( elem[ expando ] === doneName ) {\n +\t\t\t\t\tmatch = checkSet[elem.sizset];\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n +\t\t\t\t\telem[ expando ] = doneName;\n +\t\t\t\t\telem.sizset = i;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n +\t\t\t\t\tmatch = elem;\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\telem = elem[dir];\n +\t\t\t}\n +\n +\t\t\tcheckSet[i] = match;\n +\t\t}\n +\t}\n +}\n +\n +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n +\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n +\t\tvar elem = checkSet[i];\n +\n +\t\tif ( elem ) {\n +\t\t\tvar match = false;\n +\n +\t\t\telem = elem[dir];\n +\n +\t\t\twhile ( elem ) {\n +\t\t\t\tif ( elem[ expando ] === doneName ) {\n +\t\t\t\t\tmatch = checkSet[elem.sizset];\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\tif ( !isXML ) {\n +\t\t\t\t\t\telem[ expando ] = doneName;\n +\t\t\t\t\t\telem.sizset = i;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( typeof cur !== "string" ) {\n +\t\t\t\t\t\tif ( elem === cur ) {\n +\t\t\t\t\t\t\tmatch = true;\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n +\t\t\t\t\t\tmatch = elem;\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\telem = elem[dir];\n +\t\t\t}\n +\n +\t\t\tcheckSet[i] = match;\n +\t\t}\n +\t}\n +}\n +\n +if ( document.documentElement.contains ) {\n +\tSizzle.contains = function( a, b ) {\n +\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n +\t};\n +\n +} else if ( document.documentElement.compareDocumentPosition ) {\n +\tSizzle.contains = function( a, b ) {\n +\t\treturn !!(a.compareDocumentPosition(b) & 16);\n +\t};\n +\n +} else {\n +\tSizzle.contains = function() {\n +\t\treturn false;\n +\t};\n +}\n +\n +Sizzle.isXML = function( elem ) {\n +\t// documentElement is verified for cases where it doesn\'t yet exist\n +\t// (such as loading iframes in IE - #4833)\n +\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n +\n +\treturn documentElement ? documentElement.nodeName !== "HTML" : false;\n +};\n +\n +var posProcess = function( selector, context, seed ) {\n +\tvar match,\n +\t\ttmpSet = [],\n +\t\tlater = "",\n +\t\troot = context.nodeType ? [context] : context;\n +\n +\t// Position selectors must be done after the filter\n +\t// And so must :not(positional) so we move all PSEUDOs to the end\n +\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n +\t\tlater += match[0];\n +\t\tselector = selector.replace( Expr.match.PSEUDO, "" );\n +\t}\n +\n +\tselector = Expr.relative[selector] ? selector + "*" : selector;\n +\n +\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n +\t\tSizzle( selector, root[i], tmpSet, seed );\n +\t}\n +\n +\treturn Sizzle.filter( later, tmpSet );\n +};\n +\n +// EXPOSE\n +// Override sizzle attribute retrieval\n +Sizzle.attr = jQuery.attr;\n +Sizzle.selectors.attrMap = {};\n +jQuery.find = Sizzle;\n +jQuery.expr = Sizzle.selectors;\n +jQuery.expr[":"] = jQuery.expr.filters;\n +jQuery.unique = Sizzle.uniqueSort;\n +jQuery.text = Sizzle.getText;\n +jQuery.isXMLDoc = Sizzle.isXML;\n +jQuery.contains = Sizzle.contains;\n +\n +\n +})();\n +\n +\n +var runtil = /Until$/,\n +\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n +\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n +\trmultiselector = /,/,\n +\tisSimple = /^.[^:#\\[\\.,]*$/,\n +\tslice = Array.prototype.slice,\n +\tPOS = jQuery.expr.match.globalPOS,\n +\t// methods guaranteed to produce a unique set when starting from a unique set\n +\tguaranteedUnique = {\n +\t\tchildren: true,\n +\t\tcontents: true,\n +\t\tnext: true,\n +\t\tprev: true\n +\t};\n +\n +jQuery.fn.extend({\n +\tfind: function( selector ) {\n +\t\tvar self = this,\n +\t\t\ti, l;\n +\n +\t\tif ( typeof selector !== "string" ) {\n +\t\t\treturn jQuery( selector ).filter(function() {\n +\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n +\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\tvar ret = this.pushStack( "", "find", selector ),\n +\t\t\tlength, n, r;\n +\n +\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\tlength = ret.length;\n +\t\t\tjQuery.find( selector, this[i], ret );\n +\n +\t\t\tif ( i > 0 ) {\n +\t\t\t\t// Make sure that the results are unique\n +\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n +\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n +\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n +\t\t\t\t\t\t\tret.splice(n--, 1);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\thas: function( target ) {\n +\t\tvar targets = jQuery( target );\n +\t\treturn this.filter(function() {\n +\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n +\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n +\t\t\t\t\treturn true;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tnot: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, false), "not", selector);\n +\t},\n +\n +\tfilter: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, true), "filter", selector );\n +\t},\n +\n +\tis: function( selector ) {\n +\t\treturn !!selector && (\n +\t\t\ttypeof selector === "string" ?\n +\t\t\t\t// If this is a positional selector, check membership in the returned set\n +\t\t\t\t// so $("p:first").is("p:last") won\'t return true for a doc with two "p".\n +\t\t\t\tPOS.test( selector ) ?\n +\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n +\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n +\t\t\t\tthis.filter( selector ).length > 0 );\n +\t},\n +\n +\tclosest: function( selectors, context ) {\n +\t\tvar ret = [], i, l, cur = this[0];\n +\n +\t\t// Array (deprecated as of jQuery 1.7)\n +\t\tif ( jQuery.isArray( selectors ) ) {\n +\t\t\tvar level = 1;\n +\n +\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n +\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n +\n +\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n +\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tcur = cur.parentNode;\n +\t\t\t\tlevel++;\n +\t\t\t}\n +\n +\t\t\treturn ret;\n +\t\t}\n +\n +\t\t// String\n +\t\tvar pos = POS.test( selectors ) || typeof selectors !== "string" ?\n +\t\t\t\tjQuery( selectors, context || this.context ) :\n +\t\t\t\t0;\n +\n +\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\tcur = this[i];\n +\n +\t\t\twhile ( cur ) {\n +\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n +\t\t\t\t\tret.push( cur );\n +\t\t\t\t\tbreak;\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tcur = cur.parentNode;\n +\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n +\n +\t\treturn this.pushStack( ret, "closest", selectors );\n +\t},\n +\n +\t// Determine the position of an element within\n +\t// the matched set of elements\n +\tindex: function( elem ) {\n +\n +\t\t// No argument, return index in parent\n +\t\tif ( !elem ) {\n +\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n +\t\t}\n +\n +\t\t// index in selector\n +\t\tif ( typeof elem === "string" ) {\n +\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n +\t\t}\n +\n +\t\t// Locate the position of the desired element\n +\t\treturn jQuery.inArray(\n +\t\t\t// If it receives a jQuery object, the first element is used\n +\t\t\telem.jquery ? elem[0] : elem, this );\n +\t},\n +\n +\tadd: function( selector, context ) {\n +\t\tvar set = typeof selector === "string" ?\n +\t\t\t\tjQuery( selector, context ) :\n +\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n +\t\t\tall = jQuery.merge( this.get(), set );\n +\n +\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n +\t\t\tall :\n +\t\t\tjQuery.unique( all ) );\n +\t},\n +\n +\tandSelf: function() {\n +\t\treturn this.add( this.prevObject );\n +\t}\n +});\n +\n +// A painfully simple check to see if an element is disconnected\n +// from a document (should be improved, where feasible).\n +function isDisconnected( node ) {\n +\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n +}\n +\n +jQuery.each({\n +\tparent: function( elem ) {\n +\t\tvar parent = elem.parentNode;\n +\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n +\t},\n +\tparents: function( elem ) {\n +\t\treturn jQuery.dir( elem, "parentNode" );\n +\t},\n +\tparentsUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "parentNode", until );\n +\t},\n +\tnext: function( elem ) {\n +\t\treturn jQuery.nth( elem, 2, "nextSibling" );\n +\t},\n +\tprev: function( elem ) {\n +\t\treturn jQuery.nth( elem, 2, "previousSibling" );\n +\t},\n +\tnextAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "nextSibling" );\n +\t},\n +\tprevAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "previousSibling" );\n +\t},\n +\tnextUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "nextSibling", until );\n +\t},\n +\tprevUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "previousSibling", until );\n +\t},\n +\tsiblings: function( elem ) {\n +\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n +\t},\n +\tchildren: function( elem ) {\n +\t\treturn jQuery.sibling( elem.firstChild );\n +\t},\n +\tcontents: function( elem ) {\n +\t\treturn jQuery.nodeName( elem, "iframe" ) ?\n +\t\t\telem.contentDocument || elem.contentWindow.document :\n +\t\t\tjQuery.makeArray( elem.childNodes );\n +\t}\n +}, function( name, fn ) {\n +\tjQuery.fn[ name ] = function( until, selector ) {\n +\t\tvar ret = jQuery.map( this, fn, until );\n +\n +\t\tif ( !runtil.test( name ) ) {\n +\t\t\tselector = until;\n +\t\t}\n +\n +\t\tif ( selector && typeof selector === "string" ) {\n +\t\t\tret = jQuery.filter( selector, ret );\n +\t\t}\n +\n +\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n +\n +\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n +\t\t\tret = ret.reverse();\n +\t\t}\n +\n +\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(",") );\n +\t};\n +});\n +\n +jQuery.extend({\n +\tfilter: function( expr, elems, not ) {\n +\t\tif ( not ) {\n +\t\t\texpr = ":not(" + expr + ")";\n +\t\t}\n +\n +\t\treturn elems.length === 1 ?\n +\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n +\t\t\tjQuery.find.matches(expr, elems);\n +\t},\n +\n +\tdir: function( elem, dir, until ) {\n +\t\tvar matched = [],\n +\t\t\tcur = elem[ dir ];\n +\n +\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n +\t\t\tif ( cur.nodeType === 1 ) {\n +\t\t\t\tmatched.push( cur );\n +\t\t\t}\n +\t\t\tcur = cur[dir];\n +\t\t}\n +\t\treturn matched;\n +\t},\n +\n +\tnth: function( cur, result, dir, elem ) {\n +\t\tresult = result || 1;\n +\t\tvar num = 0;\n +\n +\t\tfor ( ; cur; cur = cur[dir] ) {\n +\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn cur;\n +\t},\n +\n +\tsibling: function( n, elem ) {\n +\t\tvar r = [];\n +\n +\t\tfor ( ; n; n = n.nextSibling ) {\n +\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n +\t\t\t\tr.push( n );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn r;\n +\t}\n +});\n +\n +// Implement the identical functionality for filter and not\n +function winnow( elements, qualifier, keep ) {\n +\n +\t// Can\'t pass null or undefined to indexOf in Firefox 4\n +\t// Set to 0 to skip string check\n +\tqualifier = qualifier || 0;\n +\n +\tif ( jQuery.isFunction( qualifier ) ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n +\t\t\treturn retVal === keep;\n +\t\t});\n +\n +\t} else if ( qualifier.nodeType ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\treturn ( elem === qualifier ) === keep;\n +\t\t});\n +\n +\t} else if ( typeof qualifier === "string" ) {\n +\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n +\t\t\treturn elem.nodeType === 1;\n +\t\t});\n +\n +\t\tif ( isSimple.test( qualifier ) ) {\n +\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n +\t\t} else {\n +\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n +\t\t}\n +\t}\n +\n +\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n +\t});\n +}\n +\n +\n +\n +\n +function createSafeFragment( document ) {\n +\tvar list = nodeNames.split( "|" ),\n +\tsafeFrag = document.createDocumentFragment();\n +\n +\tif ( safeFrag.createElement ) {\n +\t\twhile ( list.length ) {\n +\t\t\tsafeFrag.createElement(\n +\t\t\t\tlist.pop()\n +\t\t\t);\n +\t\t}\n +\t}\n +\treturn safeFrag;\n +}\n +\n +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +\n +\t\t"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",\n +\trinlinejQuery = / jQuery\\d+="(?:\\d+|null)"/g,\n +\trleadingWhitespace = /^\\s+/,\n +\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n +\trtagName = /<([\\w:]+)/,\n +\trtbody = /<tbody/i,\n +\trhtml = /<|&#?\\w+;/,\n +\trnoInnerhtml = /<(?:script|style)/i,\n +\trnocache = /<(?:script|object|embed|option|style)/i,\n +\trnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\\\s/>]", "i"),\n +\t// checked="checked" or checked\n +\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n +\trscriptType = /\\/(java|ecma)script/i,\n +\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n +\twrapMap = {\n +\t\toption: [ 1, "<select multiple=\'multiple\'>", "</select>" ],\n +\t\tlegend: [ 1, "<fieldset>", "</fieldset>" ],\n +\t\tthead: [ 1, "<table>", "</table>" ],\n +\t\ttr: [ 2, "<table><tbody>", "</tbody></table>" ],\n +\t\ttd: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],\n +\t\tcol: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],\n +\t\tarea: [ 1, "<map>", "</map>" ],\n +\t\t_default: [ 0, "", "" ]\n +\t},\n +\tsafeFragment = createSafeFragment( document );\n +\n +wrapMap.optgroup = wrapMap.option;\n +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n +wrapMap.th = wrapMap.td;\n +\n +// IE can\'t serialize <link> and <script> tags normally\n +if ( !jQuery.support.htmlSerialize ) {\n +\twrapMap._default = [ 1, "div<div>", "</div>" ];\n +}\n +\n +jQuery.fn.extend({\n +\ttext: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\treturn value === undefined ?\n +\t\t\t\tjQuery.text( this ) :\n +\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\twrapAll: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\t// The elements to wrap the target around\n +\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n +\n +\t\t\tif ( this[0].parentNode ) {\n +\t\t\t\twrap.insertBefore( this[0] );\n +\t\t\t}\n +\n +\t\t\twrap.map(function() {\n +\t\t\t\tvar elem = this;\n +\n +\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n +\t\t\t\t\telem = elem.firstChild;\n +\t\t\t\t}\n +\n +\t\t\t\treturn elem;\n +\t\t\t}).append( this );\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\twrapInner: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar self = jQuery( this ),\n +\t\t\t\tcontents = self.contents();\n +\n +\t\t\tif ( contents.length ) {\n +\t\t\t\tcontents.wrapAll( html );\n +\n +\t\t\t} else {\n +\t\t\t\tself.append( html );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\twrap: function( html ) {\n +\t\tvar isFunction = jQuery.isFunction( html );\n +\n +\t\treturn this.each(function(i) {\n +\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n +\t\t});\n +\t},\n +\n +\tunwrap: function() {\n +\t\treturn this.parent().each(function() {\n +\t\t\tif ( !jQuery.nodeName( this, "body" ) ) {\n +\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n +\t\t\t}\n +\t\t}).end();\n +\t},\n +\n +\tappend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 ) {\n +\t\t\t\tthis.appendChild( elem );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tprepend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 ) {\n +\t\t\t\tthis.insertBefore( elem, this.firstChild );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tbefore: function() {\n +\t\tif ( this[0] && this[0].parentNode ) {\n +\t\t\treturn this.domManip(arguments, false, function( elem ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this );\n +\t\t\t});\n +\t\t} else if ( arguments.length ) {\n +\t\t\tvar set = jQuery.clean( arguments );\n +\t\t\tset.push.apply( set, this.toArray() );\n +\t\t\treturn this.pushStack( set, "before", arguments );\n +\t\t}\n +\t},\n +\n +\tafter: function() {\n +\t\tif ( this[0] && this[0].parentNode ) {\n +\t\t\treturn this.domManip(arguments, false, function( elem ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n +\t\t\t});\n +\t\t} else if ( arguments.length ) {\n +\t\t\tvar set = this.pushStack( this, "after", arguments );\n +\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n +\t\t\treturn set;\n +\t\t}\n +\t},\n +\n +\t// keepData is for internal use only--do not document\n +\tremove: function( selector, keepData ) {\n +\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n +\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n +\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n +\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName("*") );\n +\t\t\t\t\tjQuery.cleanData( [ elem ] );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tempty: function() {\n +\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n +\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\tjQuery.cleanData( elem.getElementsByTagName("*") );\n +\t\t\t}\n +\n +\t\t\t// Remove any remaining nodes\n +\t\t\twhile ( elem.firstChild ) {\n +\t\t\t\telem.removeChild( elem.firstChild );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tclone: function( dataAndEvents, deepDataAndEvents ) {\n +\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n +\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n +\n +\t\treturn this.map( function () {\n +\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n +\t\t});\n +\t},\n +\n +\thtml: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\tvar elem = this[0] || {},\n +\t\t\t\ti = 0,\n +\t\t\t\tl = this.length;\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\treturn elem.nodeType === 1 ?\n +\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, "" ) :\n +\t\t\t\t\tnull;\n +\t\t\t}\n +\n +\n +\t\t\tif ( typeof value === "string" && !rnoInnerhtml.test( value ) &&\n +\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n +\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {\n +\n +\t\t\t\tvalue = value.replace( rxhtmlTag, "<$1></$2>" );\n +\n +\t\t\t\ttry {\n +\t\t\t\t\tfor (; i < l; i++ ) {\n +\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\t\t\t\telem = this[i] || {};\n +\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( "*" ) );\n +\t\t\t\t\t\t\telem.innerHTML = value;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = 0;\n +\n +\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t\tif ( elem ) {\n +\t\t\t\tthis.empty().append( value );\n +\t\t\t}\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\treplaceWith: function( value ) {\n +\t\tif ( this[0] && this[0].parentNode ) {\n +\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n +\t\t\t// this can help fix replacing a parent with child elements\n +\t\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\t\treturn this.each(function(i) {\n +\t\t\t\t\tvar self = jQuery(this), old = self.html();\n +\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\tif ( typeof value !== "string" ) {\n +\t\t\t\tvalue = jQuery( value ).detach();\n +\t\t\t}\n +\n +\t\t\treturn this.each(function() {\n +\t\t\t\tvar next = this.nextSibling,\n +\t\t\t\t\tparent = this.parentNode;\n +\n +\t\t\t\tjQuery( this ).remove();\n +\n +\t\t\t\tif ( next ) {\n +\t\t\t\t\tjQuery(next).before( value );\n +\t\t\t\t} else {\n +\t\t\t\t\tjQuery(parent).append( value );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t} else {\n +\t\t\treturn this.length ?\n +\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :\n +\t\t\t\tthis;\n +\t\t}\n +\t},\n +\n +\tdetach: function( selector ) {\n +\t\treturn this.remove( selector, true );\n +\t},\n +\n +\tdomManip: function( args, table, callback ) {\n +\t\tvar results, first, fragment, parent,\n +\t\t\tvalue = args[0],\n +\t\t\tscripts = [];\n +\n +\t\t// We can\'t cloneNode fragments that contain checked, in WebKit\n +\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction(value) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tvar self = jQuery(this);\n +\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n +\t\t\t\tself.domManip( args, table, callback );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\tparent = value && value.parentNode;\n +\n +\t\t\t// If we\'re in a fragment, just use that instead of building a new one\n +\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n +\t\t\t\tresults = { fragment: parent };\n +\n +\t\t\t} else {\n +\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n +\t\t\t}\n +\n +\t\t\tfragment = results.fragment;\n +\n +\t\t\tif ( fragment.childNodes.length === 1 ) {\n +\t\t\t\tfirst = fragment = fragment.firstChild;\n +\t\t\t} else {\n +\t\t\t\tfirst = fragment.firstChild;\n +\t\t\t}\n +\n +\t\t\tif ( first ) {\n +\t\t\t\ttable = table && jQuery.nodeName( first, "tr" );\n +\n +\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n +\t\t\t\t\tcallback.call(\n +\t\t\t\t\t\ttable ?\n +\t\t\t\t\t\t\troot(this[i], first) :\n +\t\t\t\t\t\t\tthis[i],\n +\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n +\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n +\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n +\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n +\t\t\t\t\t\t// in certain situations (Bug #8070).\n +\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n +\t\t\t\t\t\t// in place.\n +\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n +\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n +\t\t\t\t\t\t\tfragment\n +\t\t\t\t\t);\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( scripts.length ) {\n +\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n +\t\t\t\t\tif ( elem.src ) {\n +\t\t\t\t\t\tjQuery.ajax({\n +\t\t\t\t\t\t\ttype: "GET",\n +\t\t\t\t\t\t\tglobal: false,\n +\t\t\t\t\t\t\turl: elem.src,\n +\t\t\t\t\t\t\tasync: false,\n +\t\t\t\t\t\t\tdataType: "script"\n +\t\t\t\t\t\t});\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t}\n +});\n +\n +function root( elem, cur ) {\n +\treturn jQuery.nodeName(elem, "table") ?\n +\t\t(elem.getElementsByTagName("tbody")[0] ||\n +\t\telem.appendChild(elem.ownerDocument.createElement("tbody"))) :\n +\t\telem;\n +}\n +\n +function cloneCopyEvent( src, dest ) {\n +\n +\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n +\t\treturn;\n +\t}\n +\n +\tvar type, i, l,\n +\t\toldData = jQuery._data( src ),\n +\t\tcurData = jQuery._data( dest, oldData ),\n +\t\tevents = oldData.events;\n +\n +\tif ( events ) {\n +\t\tdelete curData.handle;\n +\t\tcurData.events = {};\n +\n +\t\tfor ( type in events ) {\n +\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n +\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// make the cloned public data object a copy from the original\n +\tif ( curData.data ) {\n +\t\tcurData.data = jQuery.extend( {}, curData.data );\n +\t}\n +}\n +\n +function cloneFixAttributes( src, dest ) {\n +\tvar nodeName;\n +\n +\t// We do not need to do anything for non-Elements\n +\tif ( dest.nodeType !== 1 ) {\n +\t\treturn;\n +\t}\n +\n +\t// clearAttributes removes the attributes, which we don\'t want,\n +\t// but also removes the attachEvent events, which we *do* want\n +\tif ( dest.clearAttributes ) {\n +\t\tdest.clearAttributes();\n +\t}\n +\n +\t// mergeAttributes, in contrast, only merges back on the\n +\t// original attributes, not the events\n +\tif ( dest.mergeAttributes ) {\n +\t\tdest.mergeAttributes( src );\n +\t}\n +\n +\tnodeName = dest.nodeName.toLowerCase();\n +\n +\t// IE6-8 fail to clone children inside object elements that use\n +\t// the proprietary classid attribute value (rather than the type\n +\t// attribute) to identify the type of content to display\n +\tif ( nodeName === "object" ) {\n +\t\tdest.outerHTML = src.outerHTML;\n +\n +\t} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {\n +\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n +\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n +\t\t// a checked appearance if the defaultChecked value isn\'t also set\n +\t\tif ( src.checked ) {\n +\t\t\tdest.defaultChecked = dest.checked = src.checked;\n +\t\t}\n +\n +\t\t// IE6-7 get confused and end up setting the value of a cloned\n +\t\t// checkbox/radio button to an empty string instead of "on"\n +\t\tif ( dest.value !== src.value ) {\n +\t\t\tdest.value = src.value;\n +\t\t}\n +\n +\t// IE6-8 fails to return the selected option to the default selected\n +\t// state when cloning options\n +\t} else if ( nodeName === "option" ) {\n +\t\tdest.selected = src.defaultSelected;\n +\n +\t// IE6-8 fails to set the defaultValue to the correct value when\n +\t// cloning other types of input fields\n +\t} else if ( nodeName === "input" || nodeName === "textarea" ) {\n +\t\tdest.defaultValue = src.defaultValue;\n +\n +\t// IE blanks contents when cloning scripts\n +\t} else if ( nodeName === "script" && dest.text !== src.text ) {\n +\t\tdest.text = src.text;\n +\t}\n +\n +\t// Event data gets referenced instead of copied if the expando\n +\t// gets copied too\n +\tdest.removeAttribute( jQuery.expando );\n +\n +\t// Clear flags for bubbling special change/submit events, they must\n +\t// be reattached when the newly cloned events are first activated\n +\tdest.removeAttribute( "_submit_attached" );\n +\tdest.removeAttribute( "_change_attached" );\n +}\n +\n +jQuery.buildFragment = function( args, nodes, scripts ) {\n +\tvar fragment, cacheable, cacheresults, doc,\n +\tfirst = args[ 0 ];\n +\n +\t// nodes may contain either an explicit document object,\n +\t// a jQuery collection or context object.\n +\t// If nodes[0] contains a valid object to assign to doc\n +\tif ( nodes && nodes[0] ) {\n +\t\tdoc = nodes[0].ownerDocument || nodes[0];\n +\t}\n +\n +\t// Ensure that an attr object doesn\'t incorrectly stand in as a document object\n +\t// Chrome and Firefox seem to allow this to occur and will throw exception\n +\t// Fixes #8950\n +\tif ( !doc.createDocumentFragment ) {\n +\t\tdoc = document;\n +\t}\n +\n +\t// Only cache "small" (1/2 KB) HTML strings that are associated with the main document\n +\t// Cloning options loses the selected state, so don\'t cache them\n +\t// IE 6 doesn\'t like it when you put <object> or <embed> elements in a fragment\n +\t// Also, WebKit does not clone \'checked\' attributes on cloneNode, so don\'t cache\n +\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n +\tif ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&\n +\t\tfirst.charAt(0) === "<" && !rnocache.test( first ) &&\n +\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n +\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n +\n +\t\tcacheable = true;\n +\n +\t\tcacheresults = jQuery.fragments[ first ];\n +\t\tif ( cacheresults && cacheresults !== 1 ) {\n +\t\t\tfragment = cacheresults;\n +\t\t}\n +\t}\n +\n +\tif ( !fragment ) {\n +\t\tfragment = doc.createDocumentFragment();\n +\t\tjQuery.clean( args, doc, fragment, scripts );\n +\t}\n +\n +\tif ( cacheable ) {\n +\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n +\t}\n +\n +\treturn { fragment: fragment, cacheable: cacheable };\n +};\n +\n +jQuery.fragments = {};\n +\n +jQuery.each({\n +\tappendTo: "append",\n +\tprependTo: "prepend",\n +\tinsertBefore: "before",\n +\tinsertAfter: "after",\n +\treplaceAll: "replaceWith"\n +}, function( name, original ) {\n +\tjQuery.fn[ name ] = function( selector ) {\n +\t\tvar ret = [],\n +\t\t\tinsert = jQuery( selector ),\n +\t\t\tparent = this.length === 1 && this[0].parentNode;\n +\n +\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n +\t\t\tinsert[ original ]( this[0] );\n +\t\t\treturn this;\n +\n +\t\t} else {\n +\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n +\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n +\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n +\t\t\t\tret = ret.concat( elems );\n +\t\t\t}\n +\n +\t\t\treturn this.pushStack( ret, name, insert.selector );\n +\t\t}\n +\t};\n +});\n +\n +function getAll( elem ) {\n +\tif ( typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\treturn elem.getElementsByTagName( "*" );\n +\n +\t} else if ( typeof elem.querySelectorAll !== "undefined" ) {\n +\t\treturn elem.querySelectorAll( "*" );\n +\n +\t} else {\n +\t\treturn [];\n +\t}\n +}\n +\n +// Used in clean, fixes the defaultChecked property\n +function fixDefaultChecked( elem ) {\n +\tif ( elem.type === "checkbox" || elem.type === "radio" ) {\n +\t\telem.defaultChecked = elem.checked;\n +\t}\n +}\n +// Finds all inputs and passes them to fixDefaultChecked\n +function findInputs( elem ) {\n +\tvar nodeName = ( elem.nodeName || "" ).toLowerCase();\n +\tif ( nodeName === "input" ) {\n +\t\tfixDefaultChecked( elem );\n +\t// Skip scripts, get other children\n +\t} else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\tjQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );\n +\t}\n +}\n +\n +// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\n +function shimCloneNode( elem ) {\n +\tvar div = document.createElement( "div" );\n +\tsafeFragment.appendChild( div );\n +\n +\tdiv.innerHTML = elem.outerHTML;\n +\treturn div.firstChild;\n +}\n +\n +jQuery.extend({\n +\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n +\t\tvar srcElements,\n +\t\t\tdestElements,\n +\t\t\ti,\n +\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n +\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ?\n +\t\t\t\telem.cloneNode( true ) :\n +\t\t\t\tshimCloneNode( elem );\n +\n +\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n +\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n +\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n +\t\t\t// Calling detachEvent on the clone will also remove the events\n +\t\t\t// from the original. In order to get around this, we use some\n +\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n +\t\t\t// guys for this hotness.\n +\n +\t\t\tcloneFixAttributes( elem, clone );\n +\n +\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n +\t\t\tsrcElements = getAll( elem );\n +\t\t\tdestElements = getAll( clone );\n +\n +\t\t\t// Weird iteration because IE will replace the length property\n +\t\t\t// with an element if you are cloning the body and one of the\n +\t\t\t// elements on the page has a name or id of "length"\n +\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n +\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n +\t\t\t\tif ( destElements[i] ) {\n +\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Copy the events from the original to the clone\n +\t\tif ( dataAndEvents ) {\n +\t\t\tcloneCopyEvent( elem, clone );\n +\n +\t\t\tif ( deepDataAndEvents ) {\n +\t\t\t\tsrcElements = getAll( elem );\n +\t\t\t\tdestElements = getAll( clone );\n +\n +\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n +\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tsrcElements = destElements = null;\n +\n +\t\t// Return the cloned set\n +\t\treturn clone;\n +\t},\n +\n +\tclean: function( elems, context, fragment, scripts ) {\n +\t\tvar checkScriptType, script, j,\n +\t\t\t\tret = [];\n +\n +\t\tcontext = context || document;\n +\n +\t\t// !context.createElement fails in IE with an error but returns typeof \'object\'\n +\t\tif ( typeof context.createElement === "undefined" ) {\n +\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n +\t\t}\n +\n +\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n +\t\t\tif ( typeof elem === "number" ) {\n +\t\t\t\telem += "";\n +\t\t\t}\n +\n +\t\t\tif ( !elem ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\t// Convert html string into DOM nodes\n +\t\t\tif ( typeof elem === "string" ) {\n +\t\t\t\tif ( !rhtml.test( elem ) ) {\n +\t\t\t\t\telem = context.createTextNode( elem );\n +\t\t\t\t} else {\n +\t\t\t\t\t// Fix "XHTML"-style tags in all browsers\n +\t\t\t\t\telem = elem.replace(rxhtmlTag, "<$1></$2>");\n +\n +\t\t\t\t\t// Trim whitespace, otherwise indexOf won\'t work as expected\n +\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),\n +\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n +\t\t\t\t\t\tdepth = wrap[0],\n +\t\t\t\t\t\tdiv = context.createElement("div"),\n +\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n +\t\t\t\t\t\tremove;\n +\n +\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n +\t\t\t\t\tif ( context === document ) {\n +\t\t\t\t\t\t// Use the fragment we\'ve already created for this document\n +\t\t\t\t\t\tsafeFragment.appendChild( div );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\t// Use a fragment created with the owner document\n +\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n +\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n +\n +\t\t\t\t\t// Move to the right depth\n +\t\t\t\t\twhile ( depth-- ) {\n +\t\t\t\t\t\tdiv = div.lastChild;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remove IE\'s autoinserted <tbody> from table fragments\n +\t\t\t\t\tif ( !jQuery.support.tbody ) {\n +\n +\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n +\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n +\t\t\t\t\t\t\ttbody = tag === "table" && !hasBody ?\n +\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n +\n +\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n +\t\t\t\t\t\t\t\twrap[1] === "<table>" && !hasBody ?\n +\t\t\t\t\t\t\t\t\tdiv.childNodes :\n +\t\t\t\t\t\t\t\t\t[];\n +\n +\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n +\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {\n +\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n +\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n +\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = div.childNodes;\n +\n +\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n +\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n +\t\t\t\t\tif ( div ) {\n +\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n +\n +\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n +\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n +\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n +\n +\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n +\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Resets defaultChecked for any radios and checkboxes\n +\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n +\t\t\tvar len;\n +\t\t\tif ( !jQuery.support.appendChecked ) {\n +\t\t\t\tif ( elem[0] && typeof (len = elem.length) === "number" ) {\n +\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n +\t\t\t\t\t\tfindInputs( elem[j] );\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\tfindInputs( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( elem.nodeType ) {\n +\t\t\t\tret.push( elem );\n +\t\t\t} else {\n +\t\t\t\tret = jQuery.merge( ret, elem );\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( fragment ) {\n +\t\t\tcheckScriptType = function( elem ) {\n +\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n +\t\t\t};\n +\t\t\tfor ( i = 0; ret[i]; i++ ) {\n +\t\t\t\tscript = ret[i];\n +\t\t\t\tif ( scripts && jQuery.nodeName( script, "script" ) && (!script.type || rscriptType.test( script.type )) ) {\n +\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tif ( script.nodeType === 1 ) {\n +\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( "script" ), checkScriptType );\n +\n +\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n +\t\t\t\t\t}\n +\t\t\t\t\tfragment.appendChild( script );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tcleanData: function( elems ) {\n +\t\tvar data, id,\n +\t\t\tcache = jQuery.cache,\n +\t\t\tspecial = jQuery.event.special,\n +\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n +\n +\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n +\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tid = elem[ jQuery.expando ];\n +\n +\t\t\tif ( id ) {\n +\t\t\t\tdata = cache[ id ];\n +\n +\t\t\t\tif ( data && data.events ) {\n +\t\t\t\t\tfor ( var type in data.events ) {\n +\t\t\t\t\t\tif ( special[ type ] ) {\n +\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n +\n +\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove\'s overhead\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n +\t\t\t\t\tif ( data.handle ) {\n +\t\t\t\t\t\tdata.handle.elem = null;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( deleteExpando ) {\n +\t\t\t\t\tdelete elem[ jQuery.expando ];\n +\n +\t\t\t\t} else if ( elem.removeAttribute ) {\n +\t\t\t\t\telem.removeAttribute( jQuery.expando );\n +\t\t\t\t}\n +\n +\t\t\t\tdelete cache[ id ];\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +\n +\n +\n +var ralpha = /alpha\\([^)]*\\)/i,\n +\tropacity = /opacity=([^)]*)/,\n +\t// fixed for IE9, see #8346\n +\trupper = /([A-Z]|^ms)/g,\n +\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n +\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n +\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n +\trmargin = /^margin/,\n +\n +\tcssShow = { position: "absolute", visibility: "hidden", display: "block" },\n +\n +\t// order is important!\n +\tcssExpand = [ "Top", "Right", "Bottom", "Left" ],\n +\n +\tcurCSS,\n +\n +\tgetComputedStyle,\n +\tcurrentStyle;\n +\n +jQuery.fn.css = function( name, value ) {\n +\treturn jQuery.access( this, function( elem, name, value ) {\n +\t\treturn value !== undefined ?\n +\t\t\tjQuery.style( elem, name, value ) :\n +\t\t\tjQuery.css( elem, name );\n +\t}, name, value, arguments.length > 1 );\n +};\n +\n +jQuery.extend({\n +\t// Add in style property hooks for overriding the default\n +\t// behavior of getting and setting a style property\n +\tcssHooks: {\n +\t\topacity: {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\tif ( computed ) {\n +\t\t\t\t\t// We should always get a number back from opacity\n +\t\t\t\t\tvar ret = curCSS( elem, "opacity" );\n +\t\t\t\t\treturn ret === "" ? "1" : ret;\n +\n +\t\t\t\t} else {\n +\t\t\t\t\treturn elem.style.opacity;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// Exclude the following css properties to add px\n +\tcssNumber: {\n +\t\t"fillOpacity": true,\n +\t\t"fontWeight": true,\n +\t\t"lineHeight": true,\n +\t\t"opacity": true,\n +\t\t"orphans": true,\n +\t\t"widows": true,\n +\t\t"zIndex": true,\n +\t\t"zoom": true\n +\t},\n +\n +\t// Add in properties whose names you wish to fix before\n +\t// setting or getting the value\n +\tcssProps: {\n +\t\t// normalize float css property\n +\t\t"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"\n +\t},\n +\n +\t// Get and set the style property on a DOM Node\n +\tstyle: function( elem, name, value, extra ) {\n +\t\t// Don\'t set styles on text and comment nodes\n +\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tvar ret, type, origName = jQuery.camelCase( name ),\n +\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n +\n +\t\tname = jQuery.cssProps[ origName ] || origName;\n +\n +\t\t// Check if we\'re setting a value\n +\t\tif ( value !== undefined ) {\n +\t\t\ttype = typeof value;\n +\n +\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n +\t\t\tif ( type === "string" && (ret = rrelNum.exec( value )) ) {\n +\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n +\t\t\t\t// Fixes bug #9237\n +\t\t\t\ttype = "number";\n +\t\t\t}\n +\n +\t\t\t// Make sure that NaN and null values aren\'t set. See: #7116\n +\t\t\tif ( value == null || type === "number" && isNaN( value ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// If a number was passed in, add \'px\' to the (except for certain CSS properties)\n +\t\t\tif ( type === "number" && !jQuery.cssNumber[ origName ] ) {\n +\t\t\t\tvalue += "px";\n +\t\t\t}\n +\n +\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n +\t\t\tif ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n +\t\t\t\t// Wrapped to prevent IE from throwing errors when \'invalid\' values are provided\n +\t\t\t\t// Fixes bug #5509\n +\t\t\t\ttry {\n +\t\t\t\t\tstyle[ name ] = value;\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\t// If a hook was provided get the non-computed value from there\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\t\t\t}\n +\n +\t\t\t// Otherwise just get the value from the style object\n +\t\t\treturn style[ name ];\n +\t\t}\n +\t},\n +\n +\tcss: function( elem, name, extra ) {\n +\t\tvar ret, hooks;\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tname = jQuery.camelCase( name );\n +\t\thooks = jQuery.cssHooks[ name ];\n +\t\tname = jQuery.cssProps[ name ] || name;\n +\n +\t\t// cssFloat needs a special treatment\n +\t\tif ( name === "cssFloat" ) {\n +\t\t\tname = "float";\n +\t\t}\n +\n +\t\t// If a hook was provided get the computed value from there\n +\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n +\t\t\treturn ret;\n +\n +\t\t// Otherwise, if a way to get the computed value exists, use that\n +\t\t} else if ( curCSS ) {\n +\t\t\treturn curCSS( elem, name );\n +\t\t}\n +\t},\n +\n +\t// A method for quickly swapping in/out CSS properties to get correct calculations\n +\tswap: function( elem, options, callback ) {\n +\t\tvar old = {},\n +\t\t\tret, name;\n +\n +\t\t// Remember the old values, and insert the new ones\n +\t\tfor ( name in options ) {\n +\t\t\told[ name ] = elem.style[ name ];\n +\t\t\telem.style[ name ] = options[ name ];\n +\t\t}\n +\n +\t\tret = callback.call( elem );\n +\n +\t\t// Revert the old values\n +\t\tfor ( name in options ) {\n +\t\t\telem.style[ name ] = old[ name ];\n +\t\t}\n +\n +\t\treturn ret;\n +\t}\n +});\n +\n +// DEPRECATED in 1.3, Use jQuery.css() instead\n +jQuery.curCSS = jQuery.css;\n +\n +if ( document.defaultView && document.defaultView.getComputedStyle ) {\n +\tgetComputedStyle = function( elem, name ) {\n +\t\tvar ret, defaultView, computedStyle, width,\n +\t\t\tstyle = elem.style;\n +\n +\t\tname = name.replace( rupper, "-$1" ).toLowerCase();\n +\n +\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n +\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n +\n +\t\t\tret = computedStyle.getPropertyValue( name );\n +\t\t\tif ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n +\t\t\t\tret = jQuery.style( elem, name );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// A tribute to the "awesome hack by Dean Edwards"\n +\t\t// WebKit uses "computed value (percentage if specified)" instead of "used value" for margins\n +\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n +\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n +\t\t\twidth = style.width;\n +\t\t\tstyle.width = ret;\n +\t\t\tret = computedStyle.width;\n +\t\t\tstyle.width = width;\n +\t\t}\n +\n +\t\treturn ret;\n +\t};\n +}\n +\n +if ( document.documentElement.currentStyle ) {\n +\tcurrentStyle = function( elem, name ) {\n +\t\tvar left, rsLeft, uncomputed,\n +\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n +\t\t\tstyle = elem.style;\n +\n +\t\t// Avoid setting ret to empty string here\n +\t\t// so we don\'t default to auto\n +\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n +\t\t\tret = uncomputed;\n +\t\t}\n +\n +\t\t// From the awesome hack by Dean Edwards\n +\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n +\n +\t\t// If we\'re not dealing with a regular pixel number\n +\t\t// but a number that has a weird ending, we need to convert it to pixels\n +\t\tif ( rnumnonpx.test( ret ) ) {\n +\n +\t\t\t// Remember the original values\n +\t\t\tleft = style.left;\n +\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n +\n +\t\t\t// Put in the new values to get a computed value out\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n +\t\t\t}\n +\t\t\tstyle.left = name === "fontSize" ? "1em" : ret;\n +\t\t\tret = style.pixelLeft + "px";\n +\n +\t\t\t// Revert the changed values\n +\t\t\tstyle.left = left;\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\telem.runtimeStyle.left = rsLeft;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret === "" ? "auto" : ret;\n +\t};\n +}\n +\n +curCSS = getComputedStyle || currentStyle;\n +\n +function getWidthOrHeight( elem, name, extra ) {\n +\n +\t// Start with offset property\n +\tvar val = name === "width" ? elem.offsetWidth : elem.offsetHeight,\n +\t\ti = name === "width" ? 1 : 0,\n +\t\tlen = 4;\n +\n +\tif ( val > 0 ) {\n +\t\tif ( extra !== "border" ) {\n +\t\t\tfor ( ; i < len; i += 2 ) {\n +\t\t\t\tif ( !extra ) {\n +\t\t\t\t\tval -= parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;\n +\t\t\t\t}\n +\t\t\t\tif ( extra === "margin" ) {\n +\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n +\t\t\t\t} else {\n +\t\t\t\t\tval -= parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn val + "px";\n +\t}\n +\n +\t// Fall back to computed then uncomputed css if necessary\n +\tval = curCSS( elem, name );\n +\tif ( val < 0 || val == null ) {\n +\t\tval = elem.style[ name ];\n +\t}\n +\n +\t// Computed unit is not pixels. Stop here and return.\n +\tif ( rnumnonpx.test(val) ) {\n +\t\treturn val;\n +\t}\n +\n +\t// Normalize "", auto, and prepare for extra\n +\tval = parseFloat( val ) || 0;\n +\n +\t// Add padding, border, margin\n +\tif ( extra ) {\n +\t\tfor ( ; i < len; i += 2 ) {\n +\t\t\tval += parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;\n +\t\t\tif ( extra !== "padding" ) {\n +\t\t\t\tval += parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;\n +\t\t\t}\n +\t\t\tif ( extra === "margin" ) {\n +\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn val + "px";\n +}\n +\n +jQuery.each([ "height", "width" ], function( i, name ) {\n +\tjQuery.cssHooks[ name ] = {\n +\t\tget: function( elem, computed, extra ) {\n +\t\t\tif ( computed ) {\n +\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n +\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t} else {\n +\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n +\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tset: function( elem, value ) {\n +\t\t\treturn rnum.test( value ) ?\n +\t\t\t\tvalue + "px" :\n +\t\t\t\tvalue;\n +\t\t}\n +\t};\n +});\n +\n +if ( !jQuery.support.opacity ) {\n +\tjQuery.cssHooks.opacity = {\n +\t\tget: function( elem, computed ) {\n +\t\t\t// IE uses filters for opacity\n +\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?\n +\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + "" :\n +\t\t\t\tcomputed ? "1" : "";\n +\t\t},\n +\n +\t\tset: function( elem, value ) {\n +\t\t\tvar style = elem.style,\n +\t\t\t\tcurrentStyle = elem.currentStyle,\n +\t\t\t\topacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",\n +\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || "";\n +\n +\t\t\t// IE has trouble with opacity if it does not have layout\n +\t\t\t// Force it by setting the zoom level\n +\t\t\tstyle.zoom = 1;\n +\n +\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n +\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {\n +\n +\t\t\t\t// Setting style.filter to null, "" & " " still leave "filter:" in the cssText\n +\t\t\t\t// if "filter:" is present at all, clearType is disabled, we want to avoid this\n +\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n +\t\t\t\tstyle.removeAttribute( "filter" );\n +\n +\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n +\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// otherwise, set new filter values\n +\t\t\tstyle.filter = ralpha.test( filter ) ?\n +\t\t\t\tfilter.replace( ralpha, opacity ) :\n +\t\t\t\tfilter + " " + opacity;\n +\t\t}\n +\t};\n +}\n +\n +jQuery(function() {\n +\t// This hook cannot be added until DOM ready because the support test\n +\t// for it is not run until after DOM ready\n +\tif ( !jQuery.support.reliableMarginRight ) {\n +\t\tjQuery.cssHooks.marginRight = {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\t\t\t// Work around by temporarily setting element display to inline-block\n +\t\t\t\treturn jQuery.swap( elem, { "display": "inline-block" }, function() {\n +\t\t\t\t\tif ( computed ) {\n +\t\t\t\t\t\treturn curCSS( elem, "margin-right" );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\treturn elem.style.marginRight;\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t};\n +\t}\n +});\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.hidden = function( elem ) {\n +\t\tvar width = elem.offsetWidth,\n +\t\t\theight = elem.offsetHeight;\n +\n +\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");\n +\t};\n +\n +\tjQuery.expr.filters.visible = function( elem ) {\n +\t\treturn !jQuery.expr.filters.hidden( elem );\n +\t};\n +}\n +\n +// These hooks are used by animate to expand properties\n +jQuery.each({\n +\tmargin: "",\n +\tpadding: "",\n +\tborder: "Width"\n +}, function( prefix, suffix ) {\n +\n +\tjQuery.cssHooks[ prefix + suffix ] = {\n +\t\texpand: function( value ) {\n +\t\t\tvar i,\n +\n +\t\t\t\t// assumes a single number if not a string\n +\t\t\t\tparts = typeof value === "string" ? value.split(" ") : [ value ],\n +\t\t\t\texpanded = {};\n +\n +\t\t\tfor ( i = 0; i < 4; i++ ) {\n +\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n +\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n +\t\t\t}\n +\n +\t\t\treturn expanded;\n +\t\t}\n +\t};\n +});\n +\n +\n +\n +\n +var r20 = /%20/g,\n +\trbracket = /\\[\\]$/,\n +\trCRLF = /\\r?\\n/g,\n +\trhash = /#.*$/,\n +\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n +\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n +\t// #7653, #8125, #8152: local protocol detection\n +\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n +\trnoContent = /^(?:GET|HEAD)$/,\n +\trprotocol = /^\\/\\//,\n +\trquery = /\\?/,\n +\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n +\trselectTextarea = /^(?:select|textarea)/i,\n +\trspacesAjax = /\\s+/,\n +\trts = /([?&])_=[^&]*/,\n +\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(? + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +::(\\d+))?)?/,\n +\n +\t// Keep a copy of the old load method\n +\t_load = jQuery.fn.load,\n +\n +\t/* Prefilters\n +\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n +\t * 2) These are called:\n +\t * - BEFORE asking for a transport\n +\t * - AFTER param serialization (s.data is a string if s.processData is true)\n +\t * 3) key is the dataType\n +\t * 4) the catchall symbol "*" can be used\n +\t * 5) execution will start with transport dataType and THEN continue down to "*" if needed\n +\t */\n +\tprefilters = {},\n +\n +\t/* Transports bindings\n +\t * 1) key is the dataType\n +\t * 2) the catchall symbol "*" can be used\n +\t * 3) selection will start with transport dataType and THEN go to "*" if needed\n +\t */\n +\ttransports = {},\n +\n +\t// Document location\n +\tajaxLocation,\n +\n +\t// Document location segments\n +\tajaxLocParts,\n +\n +\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n +\tallTypes = ["*/"] + ["*"];\n +\n +// #8138, IE may throw an exception when accessing\n +// a field from window.location if document.domain has been set\n +try {\n +\tajaxLocation = location.href;\n +} catch( e ) {\n +\t// Use the href attribute of an A element\n +\t// since IE will modify it given document.location\n +\tajaxLocation = document.createElement( "a" );\n +\tajaxLocation.href = "";\n +\tajaxLocation = ajaxLocation.href;\n +}\n +\n +// Segment location into parts\n +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n +\n +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n +function addToPrefiltersOrTransports( structure ) {\n +\n +\t// dataTypeExpression is optional and defaults to "*"\n +\treturn function( dataTypeExpression, func ) {\n +\n +\t\tif ( typeof dataTypeExpression !== "string" ) {\n +\t\t\tfunc = dataTypeExpression;\n +\t\t\tdataTypeExpression = "*";\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction( func ) ) {\n +\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n +\t\t\t\ti = 0,\n +\t\t\t\tlength = dataTypes.length,\n +\t\t\t\tdataType,\n +\t\t\t\tlist,\n +\t\t\t\tplaceBefore;\n +\n +\t\t\t// For each dataType in the dataTypeExpression\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tdataType = dataTypes[ i ];\n +\t\t\t\t// We control if we\'re asked to add before\n +\t\t\t\t// any existing element\n +\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n +\t\t\t\tif ( placeBefore ) {\n +\t\t\t\t\tdataType = dataType.substr( 1 ) || "*";\n +\t\t\t\t}\n +\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n +\t\t\t\t// then we add to the structure accordingly\n +\t\t\t\tlist[ placeBefore ? "unshift" : "push" ]( func );\n +\t\t\t}\n +\t\t}\n +\t};\n +}\n +\n +// Base inspection function for prefilters and transports\n +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n +\t\tdataType /* internal */, inspected /* internal */ ) {\n +\n +\tdataType = dataType || options.dataTypes[ 0 ];\n +\tinspected = inspected || {};\n +\n +\tinspected[ dataType ] = true;\n +\n +\tvar list = structure[ dataType ],\n +\t\ti = 0,\n +\t\tlength = list ? list.length : 0,\n +\t\texecuteOnly = ( structure === prefilters ),\n +\t\tselection;\n +\n +\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n +\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n +\t\t// If we got redirected to another dataType\n +\t\t// we try there if executing only and not done already\n +\t\tif ( typeof selection === "string" ) {\n +\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n +\t\t\t\tselection = undefined;\n +\t\t\t} else {\n +\t\t\t\toptions.dataTypes.unshift( selection );\n +\t\t\t\tselection = inspectPrefiltersOrTransports(\n +\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n +\t\t\t}\n +\t\t}\n +\t}\n +\t// If we\'re only executing or nothing was selected\n +\t// we try the catchall dataType if not done already\n +\tif ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {\n +\t\tselection = inspectPrefiltersOrTransports(\n +\t\t\t\tstructure, options, originalOptions, jqXHR, "*", inspected );\n +\t}\n +\t// unnecessary when only executing (prefilters)\n +\t// but it\'ll be ignored by the caller in that case\n +\treturn selection;\n +}\n +\n +// A special extend for ajax options\n +// that takes "flat" options (not to be deep extended)\n +// Fixes #9887\n +function ajaxExtend( target, src ) {\n +\tvar key, deep,\n +\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n +\tfor ( key in src ) {\n +\t\tif ( src[ key ] !== undefined ) {\n +\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n +\t\t}\n +\t}\n +\tif ( deep ) {\n +\t\tjQuery.extend( true, target, deep );\n +\t}\n +}\n +\n +jQuery.fn.extend({\n +\tload: function( url, params, callback ) {\n +\t\tif ( typeof url !== "string" && _load ) {\n +\t\t\treturn _load.apply( this, arguments );\n +\n +\t\t// Don\'t do a request if no elements are being requested\n +\t\t} else if ( !this.length ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tvar off = url.indexOf( " " );\n +\t\tif ( off >= 0 ) {\n +\t\t\tvar selector = url.slice( off, url.length );\n +\t\t\turl = url.slice( 0, off );\n +\t\t}\n +\n +\t\t// Default to a GET request\n +\t\tvar type = "GET";\n +\n +\t\t// If the second parameter was provided\n +\t\tif ( params ) {\n +\t\t\t// If it\'s a function\n +\t\t\tif ( jQuery.isFunction( params ) ) {\n +\t\t\t\t// We assume that it\'s the callback\n +\t\t\t\tcallback = params;\n +\t\t\t\tparams = undefined;\n +\n +\t\t\t// Otherwise, build a param string\n +\t\t\t} else if ( typeof params === "object" ) {\n +\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n +\t\t\t\ttype = "POST";\n +\t\t\t}\n +\t\t}\n +\n +\t\tvar self = this;\n +\n +\t\t// Request the remote document\n +\t\tjQuery.ajax({\n +\t\t\turl: url,\n +\t\t\ttype: type,\n +\t\t\tdataType: "html",\n +\t\t\tdata: params,\n +\t\t\t// Complete callback (responseText is used internally)\n +\t\t\tcomplete: function( jqXHR, status, responseText ) {\n +\t\t\t\t// Store the response as specified by the jqXHR object\n +\t\t\t\tresponseText = jqXHR.responseText;\n +\t\t\t\t// If successful, inject the HTML into all the matched elements\n +\t\t\t\tif ( jqXHR.isResolved() ) {\n +\t\t\t\t\t// #4825: Get the actual response in case\n +\t\t\t\t\t// a dataFilter is present in ajaxSettings\n +\t\t\t\t\tjqXHR.done(function( r ) {\n +\t\t\t\t\t\tresponseText = r;\n +\t\t\t\t\t});\n +\t\t\t\t\t// See if a selector was specified\n +\t\t\t\t\tself.html( selector ?\n +\t\t\t\t\t\t// Create a dummy div to hold the results\n +\t\t\t\t\t\tjQuery("<div>")\n +\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n +\t\t\t\t\t\t\t// to avoid any \'Permission Denied\' errors in IE\n +\t\t\t\t\t\t\t.append(responseText.replace(rscript, ""))\n +\n +\t\t\t\t\t\t\t// Locate the specified elements\n +\t\t\t\t\t\t\t.find(selector) :\n +\n +\t\t\t\t\t\t// If not, just inject the full result\n +\t\t\t\t\t\tresponseText );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( callback ) {\n +\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\n +\t\treturn this;\n +\t},\n +\n +\tserialize: function() {\n +\t\treturn jQuery.param( this.serializeArray() );\n +\t},\n +\n +\tserializeArray: function() {\n +\t\treturn this.map(function(){\n +\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n +\t\t})\n +\t\t.filter(function(){\n +\t\t\treturn this.name && !this.disabled &&\n +\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n +\t\t\t\t\trinput.test( this.type ) );\n +\t\t})\n +\t\t.map(function( i, elem ){\n +\t\t\tvar val = jQuery( this ).val();\n +\n +\t\t\treturn val == null ?\n +\t\t\t\tnull :\n +\t\t\t\tjQuery.isArray( val ) ?\n +\t\t\t\t\tjQuery.map( val, function( val, i ){\n +\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t\t\t\t}) :\n +\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t}).get();\n +\t}\n +});\n +\n +// Attach a bunch of functions for handling common AJAX events\n +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){\n +\tjQuery.fn[ o ] = function( f ){\n +\t\treturn this.on( o, f );\n +\t};\n +});\n +\n +jQuery.each( [ "get", "post" ], function( i, method ) {\n +\tjQuery[ method ] = function( url, data, callback, type ) {\n +\t\t// shift arguments if data argument was omitted\n +\t\tif ( jQuery.isFunction( data ) ) {\n +\t\t\ttype = type || callback;\n +\t\t\tcallback = data;\n +\t\t\tdata = undefined;\n +\t\t}\n +\n +\t\treturn jQuery.ajax({\n +\t\t\ttype: method,\n +\t\t\turl: url,\n +\t\t\tdata: data,\n +\t\t\tsuccess: callback,\n +\t\t\tdataType: type\n +\t\t});\n +\t};\n +});\n +\n +jQuery.extend({\n +\n +\tgetScript: function( url, callback ) {\n +\t\treturn jQuery.get( url, undefined, callback, "script" );\n +\t},\n +\n +\tgetJSON: function( url, data, callback ) {\n +\t\treturn jQuery.get( url, data, callback, "json" );\n +\t},\n +\n +\t// Creates a full fledged settings object into target\n +\t// with both ajaxSettings and settings fields.\n +\t// If target is omitted, writes into ajaxSettings.\n +\tajaxSetup: function( target, settings ) {\n +\t\tif ( settings ) {\n +\t\t\t// Building a settings object\n +\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n +\t\t} else {\n +\t\t\t// Extending ajaxSettings\n +\t\t\tsettings = target;\n +\t\t\ttarget = jQuery.ajaxSettings;\n +\t\t}\n +\t\tajaxExtend( target, settings );\n +\t\treturn target;\n +\t},\n +\n +\tajaxSettings: {\n +\t\turl: ajaxLocation,\n +\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n +\t\tglobal: true,\n +\t\ttype: "GET",\n +\t\tcontentType: "application/x-www-form-urlencoded; charset=UTF-8",\n +\t\tprocessData: true,\n +\t\tasync: true,\n +\t\t/*\n +\t\ttimeout: 0,\n +\t\tdata: null,\n +\t\tdataType: null,\n +\t\tusername: null,\n +\t\tpassword: null,\n +\t\tcache: null,\n +\t\ttraditional: false,\n +\t\theaders: {},\n +\t\t*/\n +\n +\t\taccepts: {\n +\t\t\txml: "application/xml, text/xml",\n +\t\t\thtml: "text/html",\n +\t\t\ttext: "text/plain",\n +\t\t\tjson: "application/json, text/javascript",\n +\t\t\t"*": allTypes\n +\t\t},\n +\n +\t\tcontents: {\n +\t\t\txml: /xml/,\n +\t\t\thtml: /html/,\n +\t\t\tjson: /json/\n +\t\t},\n +\n +\t\tresponseFields: {\n +\t\t\txml: "responseXML",\n +\t\t\ttext: "responseText"\n +\t\t},\n +\n +\t\t// List of data converters\n +\t\t// 1) key format is "source_type destination_type" (a single space in-between)\n +\t\t// 2) the catchall symbol "*" can be used for source_type\n +\t\tconverters: {\n +\n +\t\t\t// Convert anything to text\n +\t\t\t"* text": window.String,\n +\n +\t\t\t// Text to html (true = no transformation)\n +\t\t\t"text html": true,\n +\n +\t\t\t// Evaluate text as a json expression\n +\t\t\t"text json": jQuery.parseJSON,\n +\n +\t\t\t// Parse text as xml\n +\t\t\t"text xml": jQuery.parseXML\n +\t\t},\n +\n +\t\t// For options that shouldn\'t be deep extended:\n +\t\t// you can add your own custom options here if\n +\t\t// and when you create one that shouldn\'t be\n +\t\t// deep extended (see ajaxExtend)\n +\t\tflatOptions: {\n +\t\t\tcontext: true,\n +\t\t\turl: true\n +\t\t}\n +\t},\n +\n +\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n +\tajaxTransport: addToPrefiltersOrTransports( transports ),\n +\n +\t// Main method\n +\tajax: function( url, options ) {\n +\n +\t\t// If url is an object, simulate pre-1.5 signature\n +\t\tif ( typeof url === "object" ) {\n +\t\t\toptions = url;\n +\t\t\turl = undefined;\n +\t\t}\n +\n +\t\t// Force options to be an object\n +\t\toptions = options || {};\n +\n +\t\tvar // Create the final options object\n +\t\t\ts = jQuery.ajaxSetup( {}, options ),\n +\t\t\t// Callbacks context\n +\t\t\tcallbackContext = s.context || s,\n +\t\t\t// Context for global events\n +\t\t\t// It\'s the callbackContext if one was provided in the options\n +\t\t\t// and if it\'s a DOM node or a jQuery collection\n +\t\t\tglobalEventContext = callbackContext !== s &&\n +\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n +\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n +\t\t\t// Deferreds\n +\t\t\tdeferred = jQuery.Deferred(),\n +\t\t\tcompleteDeferred = jQuery.Callbacks( "once memory" ),\n +\t\t\t// Status-dependent callbacks\n +\t\t\tstatusCode = s.statusCode || {},\n +\t\t\t// ifModified key\n +\t\t\tifModifiedKey,\n +\t\t\t// Headers (they are sent all at once)\n +\t\t\trequestHeaders = {},\n +\t\t\trequestHeadersNames = {},\n +\t\t\t// Response headers\n +\t\t\tresponseHeadersString,\n +\t\t\tresponseHeaders,\n +\t\t\t// transport\n +\t\t\ttransport,\n +\t\t\t// timeout handle\n +\t\t\ttimeoutTimer,\n +\t\t\t// Cross-domain detection vars\n +\t\t\tparts,\n +\t\t\t// The jqXHR state\n +\t\t\tstate = 0,\n +\t\t\t// To know if global events are to be dispatched\n +\t\t\tfireGlobals,\n +\t\t\t// Loop variable\n +\t\t\ti,\n +\t\t\t// Fake xhr\n +\t\t\tjqXHR = {\n +\n +\t\t\t\treadyState: 0,\n +\n +\t\t\t\t// Caches the header\n +\t\t\t\tsetRequestHeader: function( name, value ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\tvar lname = name.toLowerCase();\n +\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n +\t\t\t\t\t\trequestHeaders[ name ] = value;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Raw string\n +\t\t\t\tgetAllResponseHeaders: function() {\n +\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n +\t\t\t\t},\n +\n +\t\t\t\t// Builds headers hashtable if needed\n +\t\t\t\tgetResponseHeader: function( key ) {\n +\t\t\t\t\tvar match;\n +\t\t\t\t\tif ( state === 2 ) {\n +\t\t\t\t\t\tif ( !responseHeaders ) {\n +\t\t\t\t\t\t\tresponseHeaders = {};\n +\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n +\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n +\t\t\t\t\t}\n +\t\t\t\t\treturn match === undefined ? null : match;\n +\t\t\t\t},\n +\n +\t\t\t\t// Overrides response content-type header\n +\t\t\t\toverrideMimeType: function( type ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\ts.mimeType = type;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Cancel the request\n +\t\t\t\tabort: function( statusText ) {\n +\t\t\t\t\tstatusText = statusText || "abort";\n +\t\t\t\t\tif ( transport ) {\n +\t\t\t\t\t\ttransport.abort( statusText );\n +\t\t\t\t\t}\n +\t\t\t\t\tdone( 0, statusText );\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\t// Callback for when everything is done\n +\t\t// It is defined here because jslint complains if it is declared\n +\t\t// at the end of the function (which would be more logical and readable)\n +\t\tfunction done( status, nativeStatusText, responses, headers ) {\n +\n +\t\t\t// Called once\n +\t\t\tif ( state === 2 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// State is "done" now\n +\t\t\tstate = 2;\n +\n +\t\t\t// Clear timeout if it exists\n +\t\t\tif ( timeoutTimer ) {\n +\t\t\t\tclearTimeout( timeoutTimer );\n +\t\t\t}\n +\n +\t\t\t// Dereference transport for early garbage collection\n +\t\t\t// (no matter how long the jqXHR object will be used)\n +\t\t\ttransport = undefined;\n +\n +\t\t\t// Cache response headers\n +\t\t\tresponseHeadersString = headers || "";\n +\n +\t\t\t// Set readyState\n +\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n +\n +\t\t\tvar isSuccess,\n +\t\t\t\tsuccess,\n +\t\t\t\terror,\n +\t\t\t\tstatusText = nativeStatusText,\n +\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n +\t\t\t\tlastModified,\n +\t\t\t\tetag;\n +\n +\t\t\t// If successful, handle type chaining\n +\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n +\n +\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\t\t\tif ( s.ifModified ) {\n +\n +\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {\n +\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {\n +\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// If not modified\n +\t\t\t\tif ( status === 304 ) {\n +\n +\t\t\t\t\tstatusText = "notmodified";\n +\t\t\t\t\tisSuccess = true;\n +\n +\t\t\t\t// If we have data\n +\t\t\t\t} else {\n +\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n +\t\t\t\t\t\tstatusText = "success";\n +\t\t\t\t\t\tisSuccess = true;\n +\t\t\t\t\t} catch(e) {\n +\t\t\t\t\t\t// We have a parsererror\n +\t\t\t\t\t\tstatusText = "parsererror";\n +\t\t\t\t\t\terror = e;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\t// We extract error from statusText\n +\t\t\t\t// then normalize statusText and status for non-aborts\n +\t\t\t\terror = statusText;\n +\t\t\t\tif ( !statusText || status ) {\n +\t\t\t\t\tstatusText = "error";\n +\t\t\t\t\tif ( status < 0 ) {\n +\t\t\t\t\t\tstatus = 0;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set data for the fake xhr object\n +\t\t\tjqXHR.status = status;\n +\t\t\tjqXHR.statusText = "" + ( nativeStatusText || statusText );\n +\n +\t\t\t// Success/Error\n +\t\t\tif ( isSuccess ) {\n +\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n +\t\t\t} else {\n +\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n +\t\t\t}\n +\n +\t\t\t// Status-dependent callbacks\n +\t\t\tjqXHR.statusCode( statusCode );\n +\t\t\tstatusCode = undefined;\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),\n +\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n +\t\t\t}\n +\n +\t\t\t// Complete\n +\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );\n +\t\t\t\t// Handle the global AJAX counter\n +\t\t\t\tif ( !( --jQuery.active ) ) {\n +\t\t\t\t\tjQuery.event.trigger( "ajaxStop" );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Attach deferreds\n +\t\tdeferred.promise( jqXHR );\n +\t\tjqXHR.success = jqXHR.done;\n +\t\tjqXHR.error = jqXHR.fail;\n +\t\tjqXHR.complete = completeDeferred.add;\n +\n +\t\t// Status-dependent callbacks\n +\t\tjqXHR.statusCode = function( map ) {\n +\t\t\tif ( map ) {\n +\t\t\t\tvar tmp;\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tfor ( tmp in map ) {\n +\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\ttmp = map[ jqXHR.status ];\n +\t\t\t\t\tjqXHR.then( tmp, tmp );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t};\n +\n +\t\t// Remove hash character (#7531: and string promotion)\n +\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n +\t\t// We also use the url parameter if available\n +\t\ts.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );\n +\n +\t\t// Extract dataTypes list\n +\t\ts.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );\n +\n +\t\t// Determine if a cross-domain request is in order\n +\t\tif ( s.crossDomain == null ) {\n +\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n +\t\t\ts.crossDomain = !!( parts &&\n +\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n +\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=\n +\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )\n +\t\t\t);\n +\t\t}\n +\n +\t\t// Convert data if not already a string\n +\t\tif ( s.data && s.processData && typeof s.data !== "string" ) {\n +\t\t\ts.data = jQuery.param( s.data, s.traditional );\n +\t\t}\n +\n +\t\t// Apply prefilters\n +\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n +\n +\t\t// If request was aborted inside a prefilter, stop there\n +\t\tif ( state === 2 ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// We can fire global events as of now if asked to\n +\t\tfireGlobals = s.global;\n +\n +\t\t// Uppercase the type\n +\t\ts.type = s.type.toUpperCase();\n +\n +\t\t// Determine if request has content\n +\t\ts.hasContent = !rnoContent.test( s.type );\n +\n +\t\t// Watch for a new set of requests\n +\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n +\t\t\tjQuery.event.trigger( "ajaxStart" );\n +\t\t}\n +\n +\t\t// More options handling for requests with no content\n +\t\tif ( !s.hasContent ) {\n +\n +\t\t\t// If data is available, append data to url\n +\t\t\tif ( s.data ) {\n +\t\t\t\ts.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;\n +\t\t\t\t// #9682: remove data so that it\'s not used in an eventual retry\n +\t\t\t\tdelete s.data;\n +\t\t\t}\n +\n +\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n +\t\t\tifModifiedKey = s.url;\n +\n +\t\t\t// Add anti-cache in url if needed\n +\t\t\tif ( s.cache === false ) {\n +\n +\t\t\t\tvar ts = jQuery.now(),\n +\t\t\t\t\t// try replacing _= if it is there\n +\t\t\t\t\tret = s.url.replace( rts, "$1_=" + ts );\n +\n +\t\t\t\t// if nothing was replaced, add timestamp to the end\n +\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the correct header, if data is being sent\n +\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n +\t\t\tjqXHR.setRequestHeader( "Content-Type", s.contentType );\n +\t\t}\n +\n +\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\tif ( s.ifModified ) {\n +\t\t\tifModifiedKey = ifModifiedKey || s.url;\n +\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );\n +\t\t\t}\n +\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the Accepts header for the server, depending on the dataType\n +\t\tjqXHR.setRequestHeader(\n +\t\t\t"Accept",\n +\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n +\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :\n +\t\t\t\ts.accepts[ "*" ]\n +\t\t);\n +\n +\t\t// Check for headers option\n +\t\tfor ( i in s.headers ) {\n +\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n +\t\t}\n +\n +\t\t// Allow custom headers/mimetypes and early abort\n +\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n +\t\t\t\t// Abort if not done already\n +\t\t\t\tjqXHR.abort();\n +\t\t\t\treturn false;\n +\n +\t\t}\n +\n +\t\t// Install callbacks on deferreds\n +\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n +\t\t\tjqXHR[ i ]( s[ i ] );\n +\t\t}\n +\n +\t\t// Get transport\n +\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n +\n +\t\t// If no transport, we auto-abort\n +\t\tif ( !transport ) {\n +\t\t\tdone( -1, "No Transport" );\n +\t\t} else {\n +\t\t\tjqXHR.readyState = 1;\n +\t\t\t// Send global event\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );\n +\t\t\t}\n +\t\t\t// Timeout\n +\t\t\tif ( s.async && s.timeout > 0 ) {\n +\t\t\t\ttimeoutTimer = setTimeout( function(){\n +\t\t\t\t\tjqXHR.abort( "timeout" );\n +\t\t\t\t}, s.timeout );\n +\t\t\t}\n +\n +\t\t\ttry {\n +\t\t\t\tstate = 1;\n +\t\t\t\ttransport.send( requestHeaders, done );\n +\t\t\t} catch (e) {\n +\t\t\t\t// Propagate exception as error if not done\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tdone( -1, e );\n +\t\t\t\t// Simply rethrow otherwise\n +\t\t\t\t} else {\n +\t\t\t\t\tthrow e;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn jqXHR;\n +\t},\n +\n +\t// Serialize an array of form elements or a set of\n +\t// key/values into a query string\n +\tparam: function( a, traditional ) {\n +\t\tvar s = [],\n +\t\t\tadd = function( key, value ) {\n +\t\t\t\t// If value is a function, invoke it and return its value\n +\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n +\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );\n +\t\t\t};\n +\n +\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n +\t\tif ( traditional === undefined ) {\n +\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n +\t\t}\n +\n +\t\t// If an array was passed in, assume that it is an array of form elements.\n +\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n +\t\t\t// Serialize the form elements\n +\t\t\tjQuery.each( a, function() {\n +\t\t\t\tadd( this.name, this.value );\n +\t\t\t});\n +\n +\t\t} else {\n +\t\t\t// If traditional, encode the "old" way (the way 1.3.2 or older\n +\t\t\t// did it), otherwise encode params recursively.\n +\t\t\tfor ( var prefix in a ) {\n +\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Return the resulting serialization\n +\t\treturn s.join( "&" ).replace( r20, "+" );\n +\t}\n +});\n +\n +function buildParams( prefix, obj, traditional, add ) {\n +\tif ( jQuery.isArray( obj ) ) {\n +\t\t// Serialize array item.\n +\t\tjQuery.each( obj, function( i, v ) {\n +\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n +\t\t\t\t// Treat each array item as a scalar.\n +\t\t\t\tadd( prefix, v );\n +\n +\t\t\t} else {\n +\t\t\t\t// If array item is non-scalar (array or object), encode its\n +\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n +\t\t\t\t// Note that rack (as of 1.0.0) can\'t currently deserialize\n +\t\t\t\t// nested arrays properly, and attempting to do so may cause\n +\t\t\t\t// a server error. Possible fixes are to modify rack\'s\n +\t\t\t\t// deserialization algorithm or to provide an option or flag\n +\t\t\t\t// to force array serialization to be shallow.\n +\t\t\t\tbuildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );\n +\t\t\t}\n +\t\t});\n +\n +\t} else if ( !traditional && jQuery.type( obj ) === "object" ) {\n +\t\t// Serialize object item.\n +\t\tfor ( var name in obj ) {\n +\t\t\tbuildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );\n +\t\t}\n +\n +\t} else {\n +\t\t// Serialize scalar item.\n +\t\tadd( prefix, obj );\n +\t}\n +}\n +\n +// This is still on the jQuery object... for now\n +// Want to move this to jQuery.ajax some day\n +jQuery.extend({\n +\n +\t// Counter for holding the number of active queries\n +\tactive: 0,\n +\n +\t// Last-Modified header cache for next request\n +\tlastModified: {},\n +\tetag: {}\n +\n +});\n +\n +/* Handles responses to an ajax request:\n + * - sets all responseXXX fields accordingly\n + * - finds the right dataType (mediates between content-type and expected dataType)\n + * - returns the corresponding response\n + */\n +function ajaxHandleResponses( s, jqXHR, responses ) {\n +\n +\tvar contents = s.contents,\n +\t\tdataTypes = s.dataTypes,\n +\t\tresponseFields = s.responseFields,\n +\t\tct,\n +\t\ttype,\n +\t\tfinalDataType,\n +\t\tfirstDataType;\n +\n +\t// Fill responseXXX fields\n +\tfor ( type in responseFields ) {\n +\t\tif ( type in responses ) {\n +\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n +\t\t}\n +\t}\n +\n +\t// Remove auto dataType and get content-type in the process\n +\twhile( dataTypes[ 0 ] === "*" ) {\n +\t\tdataTypes.shift();\n +\t\tif ( ct === undefined ) {\n +\t\t\tct = s.mimeType || jqXHR.getResponseHeader( "content-type" );\n +\t\t}\n +\t}\n +\n +\t// Check if we\'re dealing with a known content-type\n +\tif ( ct ) {\n +\t\tfor ( type in contents ) {\n +\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n +\t\t\t\tdataTypes.unshift( type );\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Check to see if we have a response for the expected dataType\n +\tif ( dataTypes[ 0 ] in responses ) {\n +\t\tfinalDataType = dataTypes[ 0 ];\n +\t} else {\n +\t\t// Try convertible dataTypes\n +\t\tfor ( type in responses ) {\n +\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {\n +\t\t\t\tfinalDataType = type;\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t\tif ( !firstDataType ) {\n +\t\t\t\tfirstDataType = type;\n +\t\t\t}\n +\t\t}\n +\t\t// Or just use first one\n +\t\tfinalDataType = finalDataType || firstDataType;\n +\t}\n +\n +\t// If we found a dataType\n +\t// We add the dataType to the list if needed\n +\t// and return the corresponding response\n +\tif ( finalDataType ) {\n +\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n +\t\t\tdataTypes.unshift( finalDataType );\n +\t\t}\n +\t\treturn responses[ finalDataType ];\n +\t}\n +}\n +\n +// Chain conversions given the request and the original response\n +function ajaxConvert( s, response ) {\n +\n +\t// Apply the dataFilter if provided\n +\tif ( s.dataFilter ) {\n +\t\tresponse = s.dataFilter( response, s.dataType );\n +\t}\n +\n +\tvar dataTypes = s.dataTypes,\n +\t\tconverters = {},\n +\t\ti,\n +\t\tkey,\n +\t\tlength = dataTypes.length,\n +\t\ttmp,\n +\t\t// Current and previous dataTypes\n +\t\tcurrent = dataTypes[ 0 ],\n +\t\tprev,\n +\t\t// Conversion expression\n +\t\tconversion,\n +\t\t// Conversion function\n +\t\tconv,\n +\t\t// Conversion functions (transitive conversion)\n +\t\tconv1,\n +\t\tconv2;\n +\n +\t// For each dataType in the chain\n +\tfor ( i = 1; i < length; i++ ) {\n +\n +\t\t// Create converters map\n +\t\t// with lowercased keys\n +\t\tif ( i === 1 ) {\n +\t\t\tfor ( key in s.converters ) {\n +\t\t\t\tif ( typeof key === "string" ) {\n +\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Get the dataTypes\n +\t\tprev = current;\n +\t\tcurrent = dataTypes[ i ];\n +\n +\t\t// If current is auto dataType, update it to prev\n +\t\tif ( current === "*" ) {\n +\t\t\tcurrent = prev;\n +\t\t// If no auto and dataTypes are actually different\n +\t\t} else if ( prev !== "*" && prev !== current ) {\n +\n +\t\t\t// Get the converter\n +\t\t\tconversion = prev + " " + current;\n +\t\t\tconv = converters[ conversion ] || converters[ "* " + current ];\n +\n +\t\t\t// If there is no direct converter, search transitively\n +\t\t\tif ( !conv ) {\n +\t\t\t\tconv2 = undefined;\n +\t\t\t\tfor ( conv1 in converters ) {\n +\t\t\t\t\ttmp = conv1.split( " " );\n +\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {\n +\t\t\t\t\t\tconv2 = converters[ tmp[1] + " " + current ];\n +\t\t\t\t\t\tif ( conv2 ) {\n +\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n +\t\t\t\t\t\t\tif ( conv1 === true ) {\n +\t\t\t\t\t\t\t\tconv = conv2;\n +\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n +\t\t\t\t\t\t\t\tconv = conv1;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\t// If we found no converter, dispatch an error\n +\t\t\tif ( !( conv || conv2 ) ) {\n +\t\t\t\tjQuery.error( "No conversion from " + conversion.replace(" "," to ") );\n +\t\t\t}\n +\t\t\t// If found converter is not an equivalence\n +\t\t\tif ( conv !== true ) {\n +\t\t\t\t// Convert with 1 or 2 converters accordingly\n +\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn response;\n +}\n +\n +\n +\n +\n +var jsc = jQuery.now(),\n +\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n +\n +// Default jsonp settings\n +jQuery.ajaxSetup({\n +\tjsonp: "callback",\n +\tjsonpCallback: function() {\n +\t\treturn jQuery.expando + "_" + ( jsc++ );\n +\t}\n +});\n +\n +// Detect, normalize options and install callbacks for jsonp requests\n +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {\n +\n +\tvar inspectData = ( typeof s.data === "string" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n +\n +\tif ( s.dataTypes[ 0 ] === "jsonp" ||\n +\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n +\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n +\n +\t\tvar responseContainer,\n +\t\t\tjsonpCallback = s.jsonpCallback =\n +\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n +\t\t\tprevious = window[ jsonpCallback ],\n +\t\t\turl = s.url,\n +\t\t\tdata = s.data,\n +\t\t\treplace = "$1" + jsonpCallback + "$2";\n +\n +\t\tif ( s.jsonp !== false ) {\n +\t\t\turl = url.replace( jsre, replace );\n +\t\t\tif ( s.url === url ) {\n +\t\t\t\tif ( inspectData ) {\n +\t\t\t\t\tdata = data.replace( jsre, replace );\n +\t\t\t\t}\n +\t\t\t\tif ( s.data === data ) {\n +\t\t\t\t\t// Add callback manually\n +\t\t\t\t\turl += (/\\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\ts.url = url;\n +\t\ts.data = data;\n +\n +\t\t// Install callback\n +\t\twindow[ jsonpCallback ] = function( response ) {\n +\t\t\tresponseContainer = [ response ];\n +\t\t};\n +\n +\t\t// Clean-up function\n +\t\tjqXHR.always(function() {\n +\t\t\t// Set callback back to previous value\n +\t\t\twindow[ jsonpCallback ] = previous;\n +\t\t\t// Call if it was a function and we have a response\n +\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n +\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n +\t\t\t}\n +\t\t});\n +\n +\t\t// Use data converter to retrieve json after script execution\n +\t\ts.converters["script json"] = function() {\n +\t\t\tif ( !responseContainer ) {\n +\t\t\t\tjQuery.error( jsonpCallback + " was not called" );\n +\t\t\t}\n +\t\t\treturn responseContainer[ 0 ];\n +\t\t};\n +\n +\t\t// force json dataType\n +\t\ts.dataTypes[ 0 ] = "json";\n +\n +\t\t// Delegate to script\n +\t\treturn "script";\n +\t}\n +});\n +\n +\n +\n +\n +// Install script dataType\n +jQuery.ajaxSetup({\n +\taccepts: {\n +\t\tscript: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"\n +\t},\n +\tcontents: {\n +\t\tscript: /javascript|ecmascript/\n +\t},\n +\tconverters: {\n +\t\t"text script": function( text ) {\n +\t\t\tjQuery.globalEval( text );\n +\t\t\treturn text;\n +\t\t}\n +\t}\n +});\n +\n +// Handle cache\'s special case and global\n +jQuery.ajaxPrefilter( "script", function( s ) {\n +\tif ( s.cache === undefined ) {\n +\t\ts.cache = false;\n +\t}\n +\tif ( s.crossDomain ) {\n +\t\ts.type = "GET";\n +\t\ts.global = false;\n +\t}\n +});\n +\n +// Bind script tag hack transport\n +jQuery.ajaxTransport( "script", function(s) {\n +\n +\t// This transport only deals with cross domain requests\n +\tif ( s.crossDomain ) {\n +\n +\t\tvar script,\n +\t\t\thead = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;\n +\n +\t\treturn {\n +\n +\t\t\tsend: function( _, callback ) {\n +\n +\t\t\t\tscript = document.createElement( "script" );\n +\n +\t\t\t\tscript.async = "async";\n +\n +\t\t\t\tif ( s.scriptCharset ) {\n +\t\t\t\t\tscript.charset = s.scriptCharset;\n +\t\t\t\t}\n +\n +\t\t\t\tscript.src = s.url;\n +\n +\t\t\t\t// Attach handlers for all browsers\n +\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n +\n +\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n +\n +\t\t\t\t\t\t// Handle memory leak in IE\n +\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n +\n +\t\t\t\t\t\t// Remove the script\n +\t\t\t\t\t\tif ( head && script.parentNode ) {\n +\t\t\t\t\t\t\thead.removeChild( script );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Dereference the script\n +\t\t\t\t\t\tscript = undefined;\n +\n +\t\t\t\t\t\t// Callback if not abort\n +\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\tcallback( 200, "success" );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n +\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n +\t\t\t\thead.insertBefore( script, head.firstChild );\n +\t\t\t},\n +\n +\t\t\tabort: function() {\n +\t\t\t\tif ( script ) {\n +\t\t\t\t\tscript.onload( 0, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t}\n +});\n +\n +\n +\n +\n +var // #5280: Internet Explorer will keep connections alive if we don\'t abort on unload\n +\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n +\t\t// Abort all pending requests\n +\t\tfor ( var key in xhrCallbacks ) {\n +\t\t\txhrCallbacks[ key ]( 0, 1 );\n +\t\t}\n +\t} : false,\n +\txhrId = 0,\n +\txhrCallbacks;\n +\n +// Functions to create xhrs\n +function createStandardXHR() {\n +\ttry {\n +\t\treturn new window.XMLHttpRequest();\n +\t} catch( e ) {}\n +}\n +\n +function createActiveXHR() {\n +\ttry {\n +\t\treturn new window.ActiveXObject( "Microsoft.XMLHTTP" );\n +\t} catch( e ) {}\n +}\n +\n +// Create the request object\n +// (This is still attached to ajaxSettings for backward compatibility)\n +jQuery.ajaxSettings.xhr = window.ActiveXObject ?\n +\t/* Microsoft failed to properly\n +\t * implement the XMLHttpRequest in IE7 (can\'t request local files),\n +\t * so we use the ActiveXObject when it is available\n +\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n +\t * we need a fallback.\n +\t */\n +\tfunction() {\n +\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n +\t} :\n +\t// For all other browsers, use the standard XMLHttpRequest object\n +\tcreateStandardXHR;\n +\n +// Determine support properties\n +(function( xhr ) {\n +\tjQuery.extend( jQuery.support, {\n +\t\tajax: !!xhr,\n +\t\tcors: !!xhr && ( "withCredentials" in xhr )\n +\t});\n +})( jQuery.ajaxSettings.xhr() );\n +\n +// Create transport if the browser can provide an xhr\n +if ( jQuery.support.ajax ) {\n +\n +\tjQuery.ajaxTransport(function( s ) {\n +\t\t// Cross domain only allowed if supported through XMLHttpRequest\n +\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n +\n +\t\t\tvar callback;\n +\n +\t\t\treturn {\n +\t\t\t\tsend: function( headers, complete ) {\n +\n +\t\t\t\t\t// Get a new xhr\n +\t\t\t\t\tvar xhr = s.xhr(),\n +\t\t\t\t\t\thandle,\n +\t\t\t\t\t\ti;\n +\n +\t\t\t\t\t// Open the socket\n +\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n +\t\t\t\t\tif ( s.username ) {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Apply custom fields if provided\n +\t\t\t\t\tif ( s.xhrFields ) {\n +\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n +\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Override mime type if needed\n +\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n +\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// X-Requested-With header\n +\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n +\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n +\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n +\t\t\t\t\t// For same-domain requests, won\'t change header if already provided.\n +\t\t\t\t\tif ( !s.crossDomain && !headers["X-Requested-With"] ) {\n +\t\t\t\t\t\theaders[ "X-Requested-With" ] = "XMLHttpRequest";\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tfor ( i in headers ) {\n +\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} catch( _ ) {}\n +\n +\t\t\t\t\t// Do send the request\n +\t\t\t\t\t// This may raise an exception which is actually\n +\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n +\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n +\n +\t\t\t\t\t// Listener\n +\t\t\t\t\tcallback = function( _, isAbort ) {\n +\n +\t\t\t\t\t\tvar status,\n +\t\t\t\t\t\t\tstatusText,\n +\t\t\t\t\t\t\tresponseHeaders,\n +\t\t\t\t\t\t\tresponses,\n +\t\t\t\t\t\t\txml;\n +\n +\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n +\t\t\t\t\t\t// of an xhr when a network error occured\n +\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n +\t\t\t\t\t\ttry {\n +\n +\t\t\t\t\t\t\t// Was never called and is aborted or complete\n +\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n +\n +\t\t\t\t\t\t\t\t// Only called once\n +\t\t\t\t\t\t\t\tcallback = undefined;\n +\n +\t\t\t\t\t\t\t\t// Do not keep as active anymore\n +\t\t\t\t\t\t\t\tif ( handle ) {\n +\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n +\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t// If it\'s an abort\n +\t\t\t\t\t\t\t\tif ( isAbort ) {\n +\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n +\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n +\t\t\t\t\t\t\t\t\t\txhr.abort();\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n +\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n +\t\t\t\t\t\t\t\t\tresponses = {};\n +\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n +\n +\t\t\t\t\t\t\t\t\t// Construct response list\n +\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n +\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n +\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n +\t\t\t\t\t\t\t\t\t} catch( _ ) {\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n +\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n +\t\t\t\t\t\t\t\t\t} catch( e ) {\n +\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n +\t\t\t\t\t\t\t\t\t\tstatusText = "";\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n +\n +\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n +\t\t\t\t\t\t\t\t\t// (success with no data won\'t get notified, that\'s the best we\n +\t\t\t\t\t\t\t\t\t// can do given current implementations)\n +\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n +\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n +\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = 204;\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t} catch( firefoxAccessException ) {\n +\t\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Call complete if needed\n +\t\t\t\t\t\tif ( responses ) {\n +\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t};\n +\n +\t\t\t\t\t// if we\'re in sync mode or it\'s in cache\n +\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n +\t\t\t\t\t// we need to manually fire the callback\n +\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n +\t\t\t\t\t\tcallback();\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\thandle = ++xhrId;\n +\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n +\t\t\t\t\t\t\t// and attach the unload handler\n +\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n +\t\t\t\t\t\t\t\txhrCallbacks = {};\n +\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n +\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\txhr.onreadystatechange = callback;\n +\t\t\t\t\t}\n +\t\t\t\t},\n +\n +\t\t\t\tabort: function() {\n +\t\t\t\t\tif ( callback ) {\n +\t\t\t\t\t\tcallback(0,1);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t});\n +}\n +\n +\n +\n +\n +var elemdisplay = {},\n +\tiframe, iframeDoc,\n +\trfxtypes = /^(?:toggle|show|hide)$/,\n +\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n +\ttimerId,\n +\tfxAttrs = [\n +\t\t// height animations\n +\t\t[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],\n +\t\t// width animations\n +\t\t[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],\n +\t\t// opacity animations\n +\t\t[ "opacity" ]\n +\t],\n +\tfxNow;\n +\n +jQuery.fn.extend({\n +\tshow: function( speed, easing, callback ) {\n +\t\tvar elem, display;\n +\n +\t\tif ( speed || speed === 0 ) {\n +\t\t\treturn this.animate( genFx("show", 3), speed, easing, callback );\n +\n +\t\t} else {\n +\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.style ) {\n +\t\t\t\t\tdisplay = elem.style.display;\n +\n +\t\t\t\t\t// Reset the inline display of this element to learn if it is\n +\t\t\t\t\t// being hidden by cascaded rules or not\n +\t\t\t\t\tif ( !jQuery._data(elem, "olddisplay") && display === "none" ) {\n +\t\t\t\t\t\tdisplay = elem.style.display = "";\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Set elements which have been overridden with display: none\n +\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n +\t\t\t\t\t// for such an element\n +\t\t\t\t\tif ( (display === "" && jQuery.css(elem, "display") === "none") ||\n +\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n +\t\t\t\t\t\tjQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set the display of most of the elements in a second loop\n +\t\t\t// to avoid the constant reflow\n +\t\t\tfor ( i = 0; i < j; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.style ) {\n +\t\t\t\t\tdisplay = elem.style.display;\n +\n +\t\t\t\t\tif ( display === "" || display === "none" ) {\n +\t\t\t\t\t\telem.style.display = jQuery._data( elem, "olddisplay" ) || "";\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn this;\n +\t\t}\n +\t},\n +\n +\thide: function( speed, easing, callback ) {\n +\t\tif ( speed || speed === 0 ) {\n +\t\t\treturn this.animate( genFx("hide", 3), speed, easing, callback);\n +\n +\t\t} else {\n +\t\t\tvar elem, display,\n +\t\t\t\ti = 0,\n +\t\t\t\tj = this.length;\n +\n +\t\t\tfor ( ; i < j; i++ ) {\n +\t\t\t\telem = this[i];\n +\t\t\t\tif ( elem.style ) {\n +\t\t\t\t\tdisplay = jQuery.css( elem, "display" );\n +\n +\t\t\t\t\tif ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {\n +\t\t\t\t\t\tjQuery._data( elem, "olddisplay", display );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set the display of the elements in a second loop\n +\t\t\t// to avoid the constant reflow\n +\t\t\tfor ( i = 0; i < j; i++ ) {\n +\t\t\t\tif ( this[i].style ) {\n +\t\t\t\t\tthis[i].style.display = "none";\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn this;\n +\t\t}\n +\t},\n +\n +\t// Save the old toggle function\n +\t_toggle: jQuery.fn.toggle,\n +\n +\ttoggle: function( fn, fn2, callback ) {\n +\t\tvar bool = typeof fn === "boolean";\n +\n +\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n +\t\t\tthis._toggle.apply( this, arguments );\n +\n +\t\t} else if ( fn == null || bool ) {\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar state = bool ? fn : jQuery(this).is(":hidden");\n +\t\t\t\tjQuery(this)[ state ? "show" : "hide" ]();\n +\t\t\t});\n +\n +\t\t} else {\n +\t\t\tthis.animate(genFx("toggle", 3), fn, fn2, callback);\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tfadeTo: function( speed, to, easing, callback ) {\n +\t\treturn this.filter(":hidden").css("opacity", 0).show().end()\n +\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n +\t},\n +\n +\tanimate: function( prop, speed, easing, callback ) {\n +\t\tvar optall = jQuery.speed( speed, easing, callback );\n +\n +\t\tif ( jQuery.isEmptyObject( prop ) ) {\n +\t\t\treturn this.each( optall.complete, [ false ] );\n +\t\t}\n +\n +\t\t// Do not change referenced properties as per-property easing will be lost\n +\t\tprop = jQuery.extend( {}, prop );\n +\n +\t\tfunction doAnimation() {\n +\t\t\t// XXX \'this\' does not always have a nodeName when running the\n +\t\t\t// test suite\n +\n +\t\t\tif ( optall.queue === false ) {\n +\t\t\t\tjQuery._mark( this );\n +\t\t\t}\n +\n +\t\t\tvar opt = jQuery.extend( {}, optall ),\n +\t\t\t\tisElement = this.nodeType === 1,\n +\t\t\t\thidden = isElement && jQuery(this).is(":hidden"),\n +\t\t\t\tname, val, p, e, hooks, replace,\n +\t\t\t\tparts, start, end, unit,\n +\t\t\t\tmethod;\n +\n +\t\t\t// will store per property easing and be used to determine when an animation is complete\n +\t\t\topt.animatedProperties = {};\n +\n +\t\t\t// first pass over propertys to expand / normalize\n +\t\t\tfor ( p in prop ) {\n +\t\t\t\tname = jQuery.camelCase( p );\n +\t\t\t\tif ( p !== name ) {\n +\t\t\t\t\tprop[ name ] = prop[ p ];\n +\t\t\t\t\tdelete prop[ p ];\n +\t\t\t\t}\n +\n +\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && "expand" in hooks ) {\n +\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n +\t\t\t\t\tdelete prop[ name ];\n +\n +\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n +\t\t\t\t\t// also - reusing \'p\' from above because we have the correct "name"\n +\t\t\t\t\tfor ( p in replace ) {\n +\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n +\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tfor ( name in prop ) {\n +\t\t\t\tval = prop[ name ];\n +\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > \'swing\' (default)\n +\t\t\t\tif ( jQuery.isArray( val ) ) {\n +\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n +\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n +\t\t\t\t} else {\n +\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || \'swing\';\n +\t\t\t\t}\n +\n +\t\t\t\tif ( val === "hide" && hidden || val === "show" && !hidden ) {\n +\t\t\t\t\treturn opt.complete.call( this );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( isElement && ( name === "height" || name === "width" ) ) {\n +\t\t\t\t\t// Make sure that nothing sneaks out\n +\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n +\t\t\t\t\t// change the overflow attribute when overflowX and\n +\t\t\t\t\t// overflowY are set to the same value\n +\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n +\n +\t\t\t\t\t// Set display property to inline-block for height/width\n +\t\t\t\t\t// animations on inline elements that are having width/height animated\n +\t\t\t\t\tif ( jQuery.css( this, "display" ) === "inline" &&\n +\t\t\t\t\t\t\tjQuery.css( this, "float" ) === "none" ) {\n +\n +\t\t\t\t\t\t// inline-level elements accept inline-block;\n +\t\t\t\t\t\t// block-level elements need to be inline with layout\n +\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {\n +\t\t\t\t\t\t\tthis.style.display = "inline-block";\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tthis.style.zoom = 1;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( opt.overflow != null ) {\n +\t\t\t\tthis.style.overflow = "hidden";\n +\t\t\t}\n +\n +\t\t\tfor ( p in prop ) {\n +\t\t\t\te = new jQuery.fx( this, opt, p );\n +\t\t\t\tval = prop[ p ];\n +\n +\t\t\t\tif ( rfxtypes.test( val ) ) {\n +\n +\t\t\t\t\t// Tracks whether to show or hide based on private\n +\t\t\t\t\t// data attached to the element\n +\t\t\t\t\tmethod = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );\n +\t\t\t\t\tif ( method ) {\n +\t\t\t\t\t\tjQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );\n +\t\t\t\t\t\te[ method ]();\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\te[ val ]();\n +\t\t\t\t\t}\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tparts = rfxnum.exec( val );\n +\t\t\t\t\tstart = e.cur();\n +\n +\t\t\t\t\tif ( parts ) {\n +\t\t\t\t\t\tend = parseFloat( parts[2] );\n +\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );\n +\n +\t\t\t\t\t\t// We need to compute starting value\n +\t\t\t\t\t\tif ( unit !== "px" ) {\n +\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n +\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n +\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// If a +=/-= token was provided, we\'re doing a relative animation\n +\t\t\t\t\t\tif ( parts[1] ) {\n +\t\t\t\t\t\t\tend = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\te.custom( start, end, unit );\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\te.custom( start, val, "" );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// For JS strict compliance\n +\t\t\treturn true;\n +\t\t}\n +\n +\t\treturn optall.queue === false ?\n +\t\t\tthis.each( doAnimation ) :\n +\t\t\tthis.queue( optall.queue, doAnimation );\n +\t},\n +\n +\tstop: function( type, clearQueue, gotoEnd ) {\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tgotoEnd = clearQueue;\n +\t\t\tclearQueue = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\tif ( clearQueue && type !== false ) {\n +\t\t\tthis.queue( type || "fx", [] );\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar index,\n +\t\t\t\thadTimers = false,\n +\t\t\t\ttimers = jQuery.timers,\n +\t\t\t\tdata = jQuery._data( this );\n +\n +\t\t\t// clear marker counters if we know they won\'t be\n +\t\t\tif ( !gotoEnd ) {\n +\t\t\t\tjQuery._unmark( true, this );\n +\t\t\t}\n +\n +\t\t\tfunction stopQueue( elem, data, index ) {\n +\t\t\t\tvar hooks = data[ index ];\n +\t\t\t\tjQuery.removeData( elem, index, true );\n +\t\t\t\thooks.stop( gotoEnd );\n +\t\t\t}\n +\n +\t\t\tif ( type == null ) {\n +\t\t\t\tfor ( index in data ) {\n +\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {\n +\t\t\t\t\t\tstopQueue( this, data, index );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else if ( data[ index = type + ".run" ] && data[ index ].stop ){\n +\t\t\t\tstopQueue( this, data, index );\n +\t\t\t}\n +\n +\t\t\tfor ( index = timers.length; index--; ) {\n +\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n +\t\t\t\t\tif ( gotoEnd ) {\n +\n +\t\t\t\t\t\t// force the next step to be the last\n +\t\t\t\t\t\ttimers[ index ]( true );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\ttimers[ index ].saveState();\n +\t\t\t\t\t}\n +\t\t\t\t\thadTimers = true;\n +\t\t\t\t\ttimers.splice( index, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// start the next in the queue if the last step wasn\'t forced\n +\t\t\t// timers currently will call their complete callbacks, which will dequeue\n +\t\t\t// but only if they were gotoEnd\n +\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n +\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t}\n +\t\t});\n +\t}\n +\n +});\n +\n +// Animations created synchronously will run synchronously\n +function createFxNow() {\n +\tsetTimeout( clearFxNow, 0 );\n +\treturn ( fxNow = jQuery.now() );\n +}\n +\n +function clearFxNow() {\n +\tfxNow = undefined;\n +}\n +\n +// Generate parameters to create a standard animation\n +function genFx( type, num ) {\n +\tvar obj = {};\n +\n +\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n +\t\tobj[ this ] = type;\n +\t});\n +\n +\treturn obj;\n +}\n +\n +// Generate shortcuts for custom animations\n +jQuery.each({\n +\tslideDown: genFx( "show", 1 ),\n +\tslideUp: genFx( "hide", 1 ),\n +\tslideToggle: genFx( "toggle", 1 ),\n +\tfadeIn: { opacity: "show" },\n +\tfadeOut: { opacity: "hide" },\n +\tfadeToggle: { opacity: "toggle" }\n +}, function( name, props ) {\n +\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n +\t\treturn this.animate( props, speed, easing, callback );\n +\t};\n +});\n +\n +jQuery.extend({\n +\tspeed: function( speed, easing, fn ) {\n +\t\tvar opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {\n +\t\t\tcomplete: fn || !fn && easing ||\n +\t\t\t\tjQuery.isFunction( speed ) && speed,\n +\t\t\tduration: speed,\n +\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n +\t\t};\n +\n +\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :\n +\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n +\n +\t\t// normalize opt.queue - true/undefined/null -> "fx"\n +\t\tif ( opt.queue == null || opt.queue === true ) {\n +\t\t\topt.queue = "fx";\n +\t\t}\n +\n +\t\t// Queueing\n +\t\topt.old = opt.complete;\n +\n +\t\topt.complete = function( noUnmark ) {\n +\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n +\t\t\t\topt.old.call( this );\n +\t\t\t}\n +\n +\t\t\tif ( opt.queue ) {\n +\t\t\t\tjQuery.dequeue( this, opt.queue );\n +\t\t\t} else if ( noUnmark !== false ) {\n +\t\t\t\tjQuery._unmark( this );\n +\t\t\t}\n +\t\t};\n +\n +\t\treturn opt;\n +\t},\n +\n +\teasing: {\n +\t\tlinear: function( p ) {\n +\t\t\treturn p;\n +\t\t},\n +\t\tswing: function( p ) {\n +\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n +\t\t}\n +\t},\n +\n +\ttimers: [],\n +\n +\tfx: function( elem, options, prop ) {\n +\t\tthis.options = options;\n +\t\tthis.elem = elem;\n +\t\tthis.prop = prop;\n +\n +\t\toptions.orig = options.orig || {};\n +\t}\n +\n +});\n +\n +jQuery.fx.prototype = {\n +\t// Simple function for setting a style value\n +\tupdate: function() {\n +\t\tif ( this.options.step ) {\n +\t\t\tthis.options.step.call( this.elem, this.now, this );\n +\t\t}\n +\n +\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n +\t},\n +\n +\t// Get the current size\n +\tcur: function() {\n +\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n +\t\t\treturn this.elem[ this.prop ];\n +\t\t}\n +\n +\t\tvar parsed,\n +\t\t\tr = jQuery.css( this.elem, this.prop );\n +\t\t// Empty strings, null, undefined and "auto" are converted to 0,\n +\t\t// complex values such as "rotate(1rad)" are returned as is,\n +\t\t// simple values such as "10px" are parsed to Float.\n +\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;\n +\t},\n +\n +\t// Start an animation from one number to another\n +\tcustom: function( from, to, unit ) {\n +\t\tvar self = this,\n +\t\t\tfx = jQuery.fx;\n +\n +\t\tthis.startTime = fxNow || createFxNow();\n +\t\tthis.end = to;\n +\t\tthis.now = this.start = from;\n +\t\tthis.pos = this.state = 0;\n +\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );\n +\n +\t\tfunction t( gotoEnd ) {\n +\t\t\treturn self.step( gotoEnd );\n +\t\t}\n +\n +\t\tt.queue = this.options.queue;\n +\t\tt.elem = this.elem;\n +\t\tt.saveState = function() {\n +\t\t\tif ( jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {\n +\t\t\t\tif ( self.options.hide ) {\n +\t\t\t\t\tjQuery._data( self.elem, "fxshow" + self.prop, self.start );\n +\t\t\t\t} else if ( self.options.show ) {\n +\t\t\t\t\tjQuery._data( self.elem, "fxshow" + self.prop, self.end );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\n +\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n +\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n +\t\t}\n +\t},\n +\n +\t// Simple \'show\' function\n +\tshow: function() {\n +\t\tvar dataShow = jQuery._data( this.elem, "fxshow" + this.prop );\n +\n +\t\t// Remember where we started, so that we can go back to it later\n +\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n +\t\tthis.options.show = true;\n +\n +\t\t// Begin the animation\n +\t\t// Make sure that we start at a small width/height to avoid any flash of content\n +\t\tif ( dataShow !== undefined ) {\n +\t\t\t// This show is picking up where a previous hide or show left off\n +\t\t\tthis.custom( this.cur(), dataShow );\n +\t\t} else {\n +\t\t\tthis.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );\n +\t\t}\n +\n +\t\t// Start by showing the element\n +\t\tjQuery( this.elem ).show();\n +\t},\n +\n +\t// Simple \'hide\' function\n +\thide: function() {\n +\t\t// Remember where we started, so that we can go back to it later\n +\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );\n +\t\tthis.options.hide = true;\n +\n +\t\t// Begin the animation\n +\t\tthis.custom( this.cur(), 0 );\n +\t},\n +\n +\t// Each step of an animation\n +\tstep: function( gotoEnd ) {\n +\t\tvar p, n, complete,\n +\t\t\tt = fxNow || createFxNow(),\n +\t\t\tdone = true,\n +\t\t\telem = this.elem,\n +\t\t\toptions = this.options;\n +\n +\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n +\t\t\tthis.now = this.end;\n +\t\t\tthis.pos = this.state = 1;\n +\t\t\tthis.update();\n +\n +\t\t\toptions.animatedProperties[ this.prop ] = true;\n +\n +\t\t\tfor ( p in options.animatedProperties ) {\n +\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n +\t\t\t\t\tdone = false;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( done ) {\n +\t\t\t\t// Reset the overflow\n +\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n +\n +\t\t\t\t\tjQuery.each( [ "", "X", "Y" ], function( index, value ) {\n +\t\t\t\t\t\telem.style[ "overflow" + value ] = options.overflow[ index ];\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\n +\t\t\t\t// Hide the element if the "hide" operation was done\n +\t\t\t\tif ( options.hide ) {\n +\t\t\t\t\tjQuery( elem ).hide();\n +\t\t\t\t}\n +\n +\t\t\t\t// Reset the properties, if the item has been hidden or shown\n +\t\t\t\tif ( options.hide || options.show ) {\n +\t\t\t\t\tfor ( p in options.animatedProperties ) {\n +\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n +\t\t\t\t\t\tjQuery.removeData( elem, "fxshow" + p, true );\n +\t\t\t\t\t\t// Toggle data is no longer needed\n +\t\t\t\t\t\tjQuery.removeData( elem, "toggle" + p, true );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Execute the complete function\n +\t\t\t\t// in the event that the complete function throws an exception\n +\t\t\t\t// we must ensure it won\'t be called twice. #5684\n +\n +\t\t\t\tcomplete = options.complete;\n +\t\t\t\tif ( complete ) {\n +\n +\t\t\t\t\toptions.complete = false;\n +\t\t\t\t\tcomplete.call( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn false;\n +\n +\t\t} else {\n +\t\t\t// classical easing cannot be used with an Infinity duration\n +\t\t\tif ( options.duration == Infinity ) {\n +\t\t\t\tthis.now = t;\n +\t\t\t} else {\n +\t\t\t\tn = t - this.startTime;\n +\t\t\t\tthis.state = n / options.duration;\n +\n +\t\t\t\t// Perform the easing function, defaults to swing\n +\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n +\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n +\t\t\t}\n +\t\t\t// Perform the next step of the animation\n +\t\t\tthis.update();\n +\t\t}\n +\n +\t\treturn true;\n +\t}\n +};\n +\n +jQuery.extend( jQuery.fx, {\n +\ttick: function() {\n +\t\tvar timer,\n +\t\t\ttimers = jQuery.timers,\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; i < timers.length; i++ ) {\n +\t\t\ttimer = timers[ i ];\n +\t\t\t// Checks the timer has not already been removed\n +\t\t\tif ( !timer() && timers[ i ] === timer ) {\n +\t\t\t\ttimers.splice( i--, 1 );\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( !timers.length ) {\n +\t\t\tjQuery.fx.stop();\n +\t\t}\n +\t},\n +\n +\tinterval: 13,\n +\n +\tstop: function() {\n +\t\tclearInterval( timerId );\n +\t\ttimerId = null;\n +\t},\n +\n +\tspeeds: {\n +\t\tslow: 600,\n +\t\tfast: 200,\n +\t\t// Default speed\n +\t\t_default: 400\n +\t},\n +\n +\tstep: {\n +\t\topacity: function( fx ) {\n +\t\t\tjQuery.style( fx.elem, "opacity", fx.now );\n +\t\t},\n +\n +\t\t_default: function( fx ) {\n +\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n +\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n +\t\t\t} else {\n +\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +// Ensure props that can\'t be negative don\'t go there on undershoot easing\n +jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n +\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n +\tif ( prop.indexOf( "margin" ) ) {\n +\t\tjQuery.fx.step[ prop ] = function( fx ) {\n +\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n +\t\t};\n +\t}\n +});\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.animated = function( elem ) {\n +\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n +\t\t\treturn elem === fn.elem;\n +\t\t}).length;\n +\t};\n +}\n +\n +// Try to restore the default display value of an element\n +function defaultDisplay( nodeName ) {\n +\n +\tif ( !elemdisplay[ nodeName ] ) {\n +\n +\t\tvar body = document.body,\n +\t\t\telem = jQuery( "<" + nodeName + ">" ).appendTo( body ),\n +\t\t\tdisplay = elem.css( "display" );\n +\t\telem.remove();\n +\n +\t\t// If the simple way fails,\n +\t\t// get element\'s real default display by attaching it to a temp iframe\n +\t\tif ( display === "none" || display === "" ) {\n +\t\t\t// No iframe to use yet, so create it\n +\t\t\tif ( !iframe ) {\n +\t\t\t\tiframe = document.createElement( "iframe" );\n +\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n +\t\t\t}\n +\n +\t\t\tbody.appendChild( iframe );\n +\n +\t\t\t// Create a cacheable copy of the iframe document on first call.\n +\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n +\t\t\t// document to it; WebKit & Firefox won\'t allow reusing the iframe document.\n +\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n +\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n +\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? "<!doctype html>" : "" ) + "<html><body>" );\n +\t\t\t\tiframeDoc.close();\n +\t\t\t}\n +\n +\t\t\telem = iframeDoc.createElement( nodeName );\n +\n +\t\t\tiframeDoc.body.appendChild( elem );\n +\n +\t\t\tdisplay = jQuery.css( elem, "display" );\n +\t\t\tbody.removeChild( iframe );\n +\t\t}\n +\n +\t\t// Store the correct default display\n +\t\telemdisplay[ nodeName ] = display;\n +\t}\n +\n +\treturn elemdisplay[ nodeName ];\n +}\n +\n +\n +\n +\n +var getOffset,\n +\trtable = /^t(?:able|d|h)$/i,\n +\trroot = /^(?:body|html)$/i;\n +\n +if ( "getBoundingClientRect" in document.documentElement ) {\n +\tgetOffset = function( elem, doc, docElem, box ) {\n +\t\ttry {\n +\t\t\tbox = elem.getBoundingClientRect();\n +\t\t} catch(e) {}\n +\n +\t\t// Make sure we\'re not dealing with a disconnected DOM node\n +\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n +\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n +\t\t}\n +\n +\t\tvar body = doc.body,\n +\t\t\twin = getWindow( doc ),\n +\t\t\tclientTop = docElem.clientTop || body.clientTop || 0,\n +\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n +\t\t\tscrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,\n +\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n +\t\t\ttop = box.top + scrollTop - clientTop,\n +\t\t\tleft = box.left + scrollLeft - clientLeft;\n +\n +\t\treturn { top: top, left: left };\n +\t};\n +\n +} else {\n +\tgetOffset = function( elem, doc, docElem ) {\n +\t\tvar computedStyle,\n +\t\t\toffsetParent = elem.offsetParent,\n +\t\t\tprevOffsetParent = elem,\n +\t\t\tbody = doc.body,\n +\t\t\tdefaultView = doc.defaultView,\n +\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n +\t\t\ttop = elem.offsetTop,\n +\t\t\tleft = elem.offsetLeft;\n +\n +\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n +\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {\n +\t\t\t\tbreak;\n +\t\t\t}\n +\n +\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n +\t\t\ttop -= elem.scrollTop;\n +\t\t\tleft -= elem.scrollLeft;\n +\n +\t\t\tif ( elem === offsetParent ) {\n +\t\t\t\ttop += elem.offsetTop;\n +\t\t\t\tleft += elem.offsetLeft;\n +\n +\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n +\t\t\t\t\ttop += parseFloat( computedStyle.borderTopWidth ) || 0;\n +\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n +\t\t\t\t}\n +\n +\t\t\t\tprevOffsetParent = offsetParent;\n +\t\t\t\toffsetParent = elem.offsetParent;\n +\t\t\t}\n +\n +\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {\n +\t\t\t\ttop += parseFloat( computedStyle.borderTopWidth ) || 0;\n +\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n +\t\t\t}\n +\n +\t\t\tprevComputedStyle = computedStyle;\n +\t\t}\n +\n +\t\tif ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {\n +\t\t\ttop += body.offsetTop;\n +\t\t\tleft += body.offsetLeft;\n +\t\t}\n +\n +\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {\n +\t\t\ttop += Math.max( docElem.scrollTop, body.scrollTop );\n +\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n +\t\t}\n +\n +\t\treturn { top: top, left: left };\n +\t};\n +}\n +\n +jQuery.fn.offset = function( options ) {\n +\tif ( arguments.length ) {\n +\t\treturn options === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function( i ) {\n +\t\t\t\tjQuery.offset.setOffset( this, options, i );\n +\t\t\t});\n +\t}\n +\n +\tvar elem = this[0],\n +\t\tdoc = elem && elem.ownerDocument;\n +\n +\tif ( !doc ) {\n +\t\treturn null;\n +\t}\n +\n +\tif ( elem === doc.body ) {\n +\t\treturn jQuery.offset.bodyOffset( elem );\n +\t}\n +\n +\treturn getOffset( elem, doc, doc.documentElement );\n +};\n +\n +jQuery.offset = {\n +\n +\tbodyOffset: function( body ) {\n +\t\tvar top = body.offsetTop,\n +\t\t\tleft = body.offsetLeft;\n +\n +\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n +\t\t\ttop += parseFloat( jQuery.css(body, "marginTop") ) || 0;\n +\t\t\tleft += parseFloat( jQuery.css(body, "marginLeft") ) || 0;\n +\t\t}\n +\n +\t\treturn { top: top, left: left };\n +\t},\n +\n +\tsetOffset: function( elem, options, i ) {\n +\t\tvar position = jQuery.css( elem, "position" );\n +\n +\t\t// set position first, in-case top/left are set even on static elem\n +\t\tif ( position === "static" ) {\n +\t\t\telem.style.position = "relative";\n +\t\t}\n +\n +\t\tvar curElem = jQuery( elem ),\n +\t\t\tcurOffset = curElem.offset(),\n +\t\t\tcurCSSTop = jQuery.css( elem, "top" ),\n +\t\t\tcurCSSLeft = jQuery.css( elem, "left" ),\n +\t\t\tcalculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,\n +\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n +\n +\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n +\t\tif ( calculatePosition ) {\n +\t\t\tcurPosition = curElem.position();\n +\t\t\tcurTop = curPosition.top;\n +\t\t\tcurLeft = curPosition.left;\n +\t\t} else {\n +\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n +\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction( options ) ) {\n +\t\t\toptions = options.call( elem, i, curOffset );\n +\t\t}\n +\n +\t\tif ( options.top != null ) {\n +\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n +\t\t}\n +\t\tif ( options.left != null ) {\n +\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n +\t\t}\n +\n +\t\tif ( "using" in options ) {\n +\t\t\toptions.using.call( elem, props );\n +\t\t} else {\n +\t\t\tcurElem.css( props );\n +\t\t}\n +\t}\n +};\n +\n +\n +jQuery.fn.extend({\n +\n +\tposition: function() {\n +\t\tif ( !this[0] ) {\n +\t\t\treturn null;\n +\t\t}\n +\n +\t\tvar elem = this[0],\n +\n +\t\t// Get *real* offsetParent\n +\t\toffsetParent = this.offsetParent(),\n +\n +\t\t// Get correct offsets\n +\t\toffset = this.offset(),\n +\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n +\n +\t\t// Subtract element margins\n +\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n +\t\t// are the same in Safari causing offset.left to incorrectly be 0\n +\t\toffset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;\n +\t\toffset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;\n +\n +\t\t// Add offsetParent borders\n +\t\tparentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;\n +\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;\n +\n +\t\t// Subtract the two offsets\n +\t\treturn {\n +\t\t\ttop: offset.top - parentOffset.top,\n +\t\t\tleft: offset.left - parentOffset.left\n +\t\t};\n +\t},\n +\n +\toffsetParent: function() {\n +\t\treturn this.map(function() {\n +\t\t\tvar offsetParent = this.offsetParent || document.body;\n +\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {\n +\t\t\t\toffsetParent = offsetParent.offsetParent;\n +\t\t\t}\n +\t\t\treturn offsetParent;\n +\t\t});\n +\t}\n +});\n +\n +\n +// Create scrollLeft and scrollTop methods\n +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {\n +\tvar top = /Y/.test( prop );\n +\n +\tjQuery.fn[ method ] = function( val ) {\n +\t\treturn jQuery.access( this, function( elem, method, val ) {\n +\t\t\tvar win = getWindow( elem );\n +\n +\t\t\tif ( val === undefined ) {\n +\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n +\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n +\t\t\t\t\t\twin.document.body[ method ] :\n +\t\t\t\t\telem[ method ];\n +\t\t\t}\n +\n +\t\t\tif ( win ) {\n +\t\t\t\twin.scrollTo(\n +\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n +\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n +\t\t\t\t);\n +\n +\t\t\t} else {\n +\t\t\t\telem[ method ] = val;\n +\t\t\t}\n +\t\t}, method, val, arguments.length, null );\n +\t};\n +});\n +\n +function getWindow( elem ) {\n +\treturn jQuery.isWindow( elem ) ?\n +\t\telem :\n +\t\telem.nodeType === 9 ?\n +\t\t\telem.defaultView || elem.parentWindow :\n +\t\t\tfalse;\n +}\n +\n +\n +\n +\n +// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\n +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {\n +\tvar clientProp = "client" + name,\n +\t\tscrollProp = "scroll" + name,\n +\t\toffsetProp = "offset" + name;\n +\n +\t// innerHeight and innerWidth\n +\tjQuery.fn[ "inner" + name ] = function() {\n +\t\tvar elem = this[0];\n +\t\treturn elem ?\n +\t\t\telem.style ?\n +\t\t\tparseFloat( jQuery.css( elem, type, "padding" ) ) :\n +\t\t\tthis[ type ]() :\n +\t\t\tnull;\n +\t};\n +\n +\t// outerHeight and outerWidth\n +\tjQuery.fn[ "outer" + name ] = function( margin ) {\n +\t\tvar elem = this[0];\n +\t\treturn elem ?\n +\t\t\telem.style ?\n +\t\t\tparseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :\n +\t\t\tthis[ type ]() :\n +\t\t\tnull;\n +\t};\n +\n +\tjQuery.fn[ type ] = function( value ) {\n +\t\treturn jQuery.access( this, function( elem, type, value ) {\n +\t\t\tvar doc, docElemProp, orig, ret;\n +\n +\t\t\tif ( jQuery.isWindow( elem ) ) {\n +\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n +\t\t\t\tdoc = elem.document;\n +\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n +\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n +\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n +\t\t\t}\n +\n +\t\t\t// Get document width or height\n +\t\t\tif ( elem.nodeType === 9 ) {\n +\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n +\t\t\t\tdoc = elem.documentElement;\n +\n +\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n +\t\t\t\t// so we can\'t use max, as it\'ll choose the incorrect offset[Width/Height]\n +\t\t\t\t// instead we use the correct client[Width/Height]\n +\t\t\t\t// support:IE6\n +\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n +\t\t\t\t\treturn doc[ clientProp ];\n +\t\t\t\t}\n +\n +\t\t\t\treturn Math.max(\n +\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n +\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n +\t\t\t\t);\n +\t\t\t}\n +\n +\t\t\t// Get width or height on the element\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\torig = jQuery.css( elem, type );\n +\t\t\t\tret = parseFloat( orig );\n +\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n +\t\t\t}\n +\n +\t\t\t// Set the width or height on the element\n +\t\t\tjQuery( elem ).css( type, value );\n +\t\t}, type, value, arguments.length, null );\n +\t};\n +});\n +\n +\n +\n +\n +// Expose jQuery to the global object\n +window.jQuery = window.$ = jQuery;\n +\n +// Expose jQuery as an AMD module, but only for AMD loaders that\n +// understand the issues with loading multiple versions of jQuery\n +// in a page that all might call define(). The loader will indicate\n +// they have special allowances for multiple jQuery versions by\n +// specifying define.amd.jQuery = true. Register as a named module,\n +// since jQuery can be concatenated with other files that may use define,\n +// but not use a proper concatenation script that understands anonymous\n +// AMD modules. A named AMD is safest and most robust way to register.\n +// Lowercase jquery is used because AMD module names are derived from\n +// file names, and jQuery is normally delivered in a lowercase file name.\n +// Do this after creating the global so that if an AMD module wants to call\n +// noConflict to hide this version of jQuery, it will work.\n +if ( typeof define === "function" && define.amd && define.amd.jQuery ) {\n +\tdefine( "jquery", [], function () { return jQuery; } );\n +}\n +\n +\n +\n +})( window );\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.7.min.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.7.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e2df5d4093881c98d08c1cb475892ae97eda7b5 --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.7.min.js.xml @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58329308.83</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-1.7.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>94840</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.7.2.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery v1.7.2 jquery.com | jquery.org/license */\n +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:["\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test("Â ")&&(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href=\'/a\' style=\'top:1px;float:left;opacity:.55;\'>a</a><input type=\'checkbox\'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style=\'"+r+t+"5px solid #000;",q="<div "+n+"display:block;\'><div style=\'"+t+"0;display:block;overflow:hidden;\'></div></div>"+"<table "+n+"\' cellpadding=\'0\' cellspacing=\'0\'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style=\'"+t+"0;display:none\'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style=\'width:5px;\'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can\'t be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(\n +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\\\s)"+b[3]+"(?:\\\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\\\.)"+l.split(".").sort().join("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\\\.)"+i.join("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement 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){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.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){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.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|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\\t\\n\\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,"");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name=\'"+d+"\'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href=\'#\'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class=\'TEST\'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/\'/g,"\\\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id=\'"+n+"\'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!=\'\']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class=\'test e\'></div><div class=\'test\'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\\d+="(?:\\d+|null)"/g,X=/^\\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,Z=/<([\\w:]+)/,$=/<tbody/i,_=/<|&#?\\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\\\s/>]","i"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,"<select multiple=\'multiple\'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f\n +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\\([^)]*\\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\\-+]?(?:\\d*\\.)?\\d+$/i,bt=/^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,bu=/^([\\-+])=([\\-+.\\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\\?/,bM=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\\r\\n")}}):{name:b.name,value:c.replace(bE,"\\r\\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(&|$)|\\?\\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); + +]]></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.8.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.8.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..6fdf20aeb77cb0d99c16774cade180259d51433f --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.8.js.xml @@ -0,0 +1,9610 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts57909616.64</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-1.8.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>267739</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.8.3.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*!\n + * jQuery JavaScript Library v1.8.3\n + * http://jquery.com/\n + *\n + * Includes Sizzle.js\n + * http://sizzlejs.com/\n + *\n + * Copyright 2012 jQuery Foundation and other contributors\n + * Released under the MIT license\n + * http://jquery.org/license\n + *\n + * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n + */\n +(function( window, undefined ) {\n +var\n +\t// A central reference to the root jQuery(document)\n +\trootjQuery,\n +\n +\t// The deferred used on DOM ready\n +\treadyList,\n +\n +\t// Use the correct document accordingly with window argument (sandbox)\n +\tdocument = window.document,\n +\tlocation = window.location,\n +\tnavigator = window.navigator,\n +\n +\t// Map over jQuery in case of overwrite\n +\t_jQuery = window.jQuery,\n +\n +\t// Map over the $ in case of overwrite\n +\t_$ = window.$,\n +\n +\t// Save a reference to some core methods\n +\tcore_push = Array.prototype.push,\n +\tcore_slice = Array.prototype.slice,\n +\tcore_indexOf = Array.prototype.indexOf,\n +\tcore_toString = Object.prototype.toString,\n +\tcore_hasOwn = Object.prototype.hasOwnProperty,\n +\tcore_trim = String.prototype.trim,\n +\n +\t// Define a local copy of jQuery\n +\tjQuery = function( selector, context ) {\n +\t\t// The jQuery object is actually just the init constructor \'enhanced\'\n +\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n +\t},\n +\n +\t// Used for matching numbers\n +\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n +\n +\t// Used for detecting and trimming whitespace\n +\tcore_rnotwhite = /\\S/,\n +\tcore_rspace = /\\s+/,\n +\n +\t// Make sure we trim BOM and NBSP (here\'s looking at you, Safari 5.0 and IE)\n +\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n +\n +\t// A simple way to check for HTML strings\n +\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n +\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n +\n +\t// Match a standalone tag\n +\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n +\n +\t// JSON RegExp\n +\trvalidchars = /^[\\],:{}\\s]*$/,\n +\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n +\trvalidescape = /\\\\(?:["\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n +\trvalidtokens = /"[^"\\\\\\r\\n]*"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n +\n +\t// Matches dashed string for camelizing\n +\trmsPrefix = /^-ms-/,\n +\trdashAlpha = /-([\\da-z])/gi,\n +\n +\t// Used by jQuery.camelCase as callback to replace()\n +\tfcamelCase = function( all, letter ) {\n +\t\treturn ( letter + "" ).toUpperCase();\n +\t},\n +\n +\t// The ready event handler and self cleanup method\n +\tDOMContentLoaded = function() {\n +\t\tif ( document.addEventListener ) {\n +\t\t\tdocument.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\t\t\tjQuery.ready();\n +\t\t} else if ( document.readyState === "complete" ) {\n +\t\t\t// we\'re here because readyState === "complete" in oldIE\n +\t\t\t// which is good enough for us to call the dom ready!\n +\t\t\tdocument.detachEvent( "onreadystatechange", DOMContentLoaded );\n +\t\t\tjQuery.ready();\n +\t\t}\n +\t},\n +\n +\t// [[Class]] -> type pairs\n +\tclass2type = {};\n +\n +jQuery.fn = jQuery.prototype = {\n +\tconstructor: jQuery,\n +\tinit: function( selector, context, rootjQuery ) {\n +\t\tvar match, elem, ret, doc;\n +\n +\t\t// Handle $(""), $(null), $(undefined), $(false)\n +\t\tif ( !selector ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle $(DOMElement)\n +\t\tif ( selector.nodeType ) {\n +\t\t\tthis.context = this[0] = selector;\n +\t\t\tthis.length = 1;\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle HTML strings\n +\t\tif ( typeof selector === "string" ) {\n +\t\t\tif ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {\n +\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n +\t\t\t\tmatch = [ null, selector, null ];\n +\n +\t\t\t} else {\n +\t\t\t\tmatch = rquickExpr.exec( selector );\n +\t\t\t}\n +\n +\t\t\t// Match html or make sure no context is specified for #id\n +\t\t\tif ( match && (match[1] || !context) ) {\n +\n +\t\t\t\t// HANDLE: $(html) -> $(array)\n +\t\t\t\tif ( match[1] ) {\n +\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n +\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n +\n +\t\t\t\t\t// scripts is true for back-compat\n +\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n +\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n +\t\t\t\t\t\tthis.attr.call( selector, context, true );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn jQuery.merge( this, selector );\n +\n +\t\t\t\t// HANDLE: $(#id)\n +\t\t\t\t} else {\n +\t\t\t\t\telem = document.getElementById( match[2] );\n +\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t// Handle the case where IE and Opera return items\n +\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n +\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n +\t\t\t\t\t\tthis.length = 1;\n +\t\t\t\t\t\tthis[0] = elem;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tthis.context = document;\n +\t\t\t\t\tthis.selector = selector;\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\n +\t\t\t// HANDLE: $(expr, $(...))\n +\t\t\t} else if ( !context || context.jquery ) {\n +\t\t\t\treturn ( context || rootjQuery ).find( selector );\n +\n +\t\t\t// HANDLE: $(expr, context)\n +\t\t\t// (which is just equivalent to: $(context).find(expr)\n +\t\t\t} else {\n +\t\t\t\treturn this.constructor( context ).find( selector );\n +\t\t\t}\n +\n +\t\t// HANDLE: $(function)\n +\t\t// Shortcut for document ready\n +\t\t} else if ( jQuery.isFunction( selector ) ) {\n +\t\t\treturn rootjQuery.ready( selector );\n +\t\t}\n +\n +\t\tif ( selector.selector !== undefined ) {\n +\t\t\tthis.selector = selector.selector;\n +\t\t\tthis.context = selector.context;\n +\t\t}\n +\n +\t\treturn jQuery.makeArray( selector, this );\n +\t},\n +\n +\t// Start with an empty selector\n +\tselector: "",\n +\n +\t// The current version of jQuery being used\n +\tjquery: "1.8.3",\n +\n +\t// The default length of a jQuery object is 0\n +\tlength: 0,\n +\n +\t// The number of elements contained in the matched element set\n +\tsize: function() {\n +\t\treturn this.length;\n +\t},\n +\n +\ttoArray: function() {\n +\t\treturn core_slice.call( this );\n +\t},\n +\n +\t// Get the Nth element in the matched element set OR\n +\t// Get the whole matched element set as a clean array\n +\tget: function( num ) {\n +\t\treturn num == null ?\n +\n +\t\t\t// Return a \'clean\' array\n +\t\t\tthis.toArray() :\n +\n +\t\t\t// Return just the object\n +\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n +\t},\n +\n +\t// Take an array of elements and push it onto the stack\n +\t// (returning the new matched element set)\n +\tpushStack: function( elems, name, selector ) {\n +\n +\t\t// Build a new jQuery matched element set\n +\t\tvar ret = jQuery.merge( this.constructor(), elems );\n +\n +\t\t// Add the old object onto the stack (as a reference)\n +\t\tret.prevObject = this;\n +\n +\t\tret.context = this.context;\n +\n +\t\tif ( name === "find" ) {\n +\t\t\tret.selector = this.selector + ( this.selector ? " " : "" ) + selector;\n +\t\t} else if ( name ) {\n +\t\t\tret.selector = this.selector + "." + name + "(" + selector + ")";\n +\t\t}\n +\n +\t\t// Return the newly-formed element set\n +\t\treturn ret;\n +\t},\n +\n +\t// Execute a callback for every element in the matched set.\n +\t// (You can seed the arguments with an array of args, but this is\n +\t// only used internally.)\n +\teach: function( callback, args ) {\n +\t\treturn jQuery.each( this, callback, args );\n +\t},\n +\n +\tready: function( fn ) {\n +\t\t// Add the callback\n +\t\tjQuery.ready.promise().done( fn );\n +\n +\t\treturn this;\n +\t},\n +\n +\teq: function( i ) {\n +\t\ti = +i;\n +\t\treturn i === -1 ?\n +\t\t\tthis.slice( i ) :\n +\t\t\tthis.slice( i, i + 1 );\n +\t},\n +\n +\tfirst: function() {\n +\t\treturn this.eq( 0 );\n +\t},\n +\n +\tlast: function() {\n +\t\treturn this.eq( -1 );\n +\t},\n +\n +\tslice: function() {\n +\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n +\t\t\t"slice", core_slice.call(arguments).join(",") );\n +\t},\n +\n +\tmap: function( callback ) {\n +\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n +\t\t\treturn callback.call( elem, i, elem );\n +\t\t}));\n +\t},\n +\n +\tend: function() {\n +\t\treturn this.prevObject || this.constructor(null);\n +\t},\n +\n +\t// For internal use only.\n +\t// Behaves like an Array\'s method, not like a jQuery method.\n +\tpush: core_push,\n +\tsort: [].sort,\n +\tsplice: [].splice\n +};\n +\n +// Give the init function the jQuery prototype for later instantiation\n +jQuery.fn.init.prototype = jQuery.fn;\n +\n +jQuery.extend = jQuery.fn.extend = function() {\n +\tvar options, name, src, copy, copyIsArray, clone,\n +\t\ttarget = arguments[0] || {},\n +\t\ti = 1,\n +\t\tlength = arguments.length,\n +\t\tdeep = false;\n +\n +\t// Handle a deep copy situation\n +\tif ( typeof target === "boolean" ) {\n +\t\tdeep = target;\n +\t\ttarget = arguments[1] || {};\n +\t\t// skip the boolean and the target\n +\t\ti = 2;\n +\t}\n +\n +\t// Handle case when target is a string or something (possible in deep copy)\n +\tif ( typeof target !== "object" && !jQuery.isFunction(target) ) {\n +\t\ttarget = {};\n +\t}\n +\n +\t// extend jQuery itself if only one argument is passed\n +\tif ( length === i ) {\n +\t\ttarget = this;\n +\t\t--i;\n +\t}\n +\n +\tfor ( ; i < length; i++ ) {\n +\t\t// Only deal with non-null/undefined values\n +\t\tif ( (options = arguments[ i ]) != null ) {\n +\t\t\t// Extend the base object\n +\t\t\tfor ( name in options ) {\n +\t\t\t\tsrc = target[ name ];\n +\t\t\t\tcopy = options[ name ];\n +\n +\t\t\t\t// Prevent never-ending loop\n +\t\t\t\tif ( target === copy ) {\n +\t\t\t\t\tcontinue;\n +\t\t\t\t}\n +\n +\t\t\t\t// Recurse if we\'re merging plain objects or arrays\n +\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n +\t\t\t\t\tif ( copyIsArray ) {\n +\t\t\t\t\t\tcopyIsArray = false;\n +\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Never move original objects, clone them\n +\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n +\n +\t\t\t\t// Don\'t bring in undefined values\n +\t\t\t\t} else if ( copy !== undefined ) {\n +\t\t\t\t\ttarget[ name ] = copy;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Return the modified object\n +\treturn target;\n +};\n +\n +jQuery.extend({\n +\tnoConflict: function( deep ) {\n +\t\tif ( window.$ === jQuery ) {\n +\t\t\twindow.$ = _$;\n +\t\t}\n +\n +\t\tif ( deep && window.jQuery === jQuery ) {\n +\t\t\twindow.jQuery = _jQuery;\n +\t\t}\n +\n +\t\treturn jQuery;\n +\t},\n +\n +\t// Is the DOM ready to be used? Set to true once it occurs.\n +\tisReady: false,\n +\n +\t// A counter to track how many items to wait for before\n +\t// the ready event fires. See #6781\n +\treadyWait: 1,\n +\n +\t// Hold (or release) the ready event\n +\tholdReady: function( hold ) {\n +\t\tif ( hold ) {\n +\t\t\tjQuery.readyWait++;\n +\t\t} else {\n +\t\t\tjQuery.ready( true );\n +\t\t}\n +\t},\n +\n +\t// Handle when the DOM is ready\n +\tready: function( wait ) {\n +\n +\t\t// Abort if there are pending holds or we\'re already ready\n +\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n +\t\tif ( !document.body ) {\n +\t\t\treturn setTimeout( jQuery.ready, 1 );\n +\t\t}\n +\n +\t\t// Remember that the DOM is ready\n +\t\tjQuery.isReady = true;\n +\n +\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n +\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// If there are functions bound, to execute\n +\t\treadyList.resolveWith( document, [ jQuery ] );\n +\n +\t\t// Trigger any bound ready events\n +\t\tif ( jQuery.fn.trigger ) {\n +\t\t\tjQuery( document ).trigger("ready").off("ready");\n +\t\t}\n +\t},\n +\n +\t// See test/unit/core.js for details concerning isFunction.\n +\t// Since version 1.3, DOM methods and functions like alert\n +\t// aren\'t supported. They return false on IE (#2968).\n +\tisFunction: function( obj ) {\n +\t\treturn jQuery.type(obj) === "function";\n +\t},\n +\n +\tisArray: Array.isArray || function( obj ) {\n +\t\treturn jQuery.type(obj) === "array";\n +\t},\n +\n +\tisWindow: function( obj ) {\n +\t\treturn obj != null && obj == obj.window;\n +\t},\n +\n +\tisNumeric: function( obj ) {\n +\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n +\t},\n +\n +\ttype: function( obj ) {\n +\t\treturn obj == null ?\n +\t\t\tString( obj ) :\n +\t\t\tclass2type[ core_toString.call(obj) ] || "object";\n +\t},\n +\n +\tisPlainObject: function( obj ) {\n +\t\t// Must be an Object.\n +\t\t// Because of IE, we also have to check the presence of the constructor property.\n +\t\t// Make sure that DOM nodes and window objects don\'t pass through, as well\n +\t\tif ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\ttry {\n +\t\t\t// Not own constructor property must be Object\n +\t\t\tif ( obj.constructor &&\n +\t\t\t\t!core_hasOwn.call(obj, "constructor") &&\n +\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t} catch ( e ) {\n +\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// Own properties are enumerated firstly, so to speed up,\n +\t\t// if last one is own, then all properties are own.\n +\n +\t\tvar key;\n +\t\tfor ( key in obj ) {}\n +\n +\t\treturn key === undefined || core_hasOwn.call( obj, key );\n +\t},\n +\n +\tisEmptyObject: function( obj ) {\n +\t\tvar name;\n +\t\tfor ( name in obj ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\treturn true;\n +\t},\n +\n +\terror: function( msg ) {\n +\t\tthrow new Error( msg );\n +\t},\n +\n +\t// data: string of html\n +\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n +\t// scripts (optional): If true, will include scripts passed in the html string\n +\tparseHTML: function( data, context, scripts ) {\n +\t\tvar parsed;\n +\t\tif ( !data || typeof data !== "string" ) {\n +\t\t\treturn null;\n +\t\t}\n +\t\tif ( typeof context === "boolean" ) {\n +\t\t\tscripts = context;\n +\t\t\tcontext = 0;\n +\t\t}\n +\t\tcontext = context || document;\n +\n +\t\t// Single tag\n +\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n +\t\t\treturn [ context.createElement( parsed[1] ) ];\n +\t\t}\n +\n +\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n +\t\treturn jQuery.merge( [],\n +\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n +\t},\n +\n +\tparseJSON: function( data ) {\n +\t\tif ( !data || typeof data !== "string") {\n +\t\t\treturn null;\n +\t\t}\n +\n +\t\t// Make sure leading/trailing whitespace is removed (IE can\'t handle it)\n +\t\tdata = jQuery.trim( data );\n +\n +\t\t// Attempt to parse using the native JSON parser first\n +\t\tif ( window.JSON && window.JSON.parse ) {\n +\t\t\treturn window.JSON.parse( data );\n +\t\t}\n +\n +\t\t// Make sure the incoming data is actual JSON\n +\t\t// Logic borrowed from http://json.org/json2.js\n +\t\tif ( rvalidchars.test( data.replace( rvalidescape, "@" )\n +\t\t\t.replace( rvalidtokens, "]" )\n +\t\t\t.replace( rvalidbraces, "")) ) {\n +\n +\t\t\treturn ( new Function( "return " + data ) )();\n +\n +\t\t}\n +\t\tjQuery.error( "Invalid JSON: " + data );\n +\t},\n +\n +\t// Cross-browser xml parsing\n +\tparseXML: function( data ) {\n +\t\tvar xml, tmp;\n +\t\tif ( !data || typeof data !== "string" ) {\n +\t\t\treturn null;\n +\t\t}\n +\t\ttry {\n +\t\t\tif ( window.DOMParser ) { // Standard\n +\t\t\t\ttmp = new DOMParser();\n +\t\t\t\txml = tmp.parseFromString( data , "text/xml" );\n +\t\t\t} else { // IE\n +\t\t\t\txml = new ActiveXObject( "Microsoft.XMLDOM" );\n +\t\t\t\txml.async = "false";\n +\t\t\t\txml.loadXML( data );\n +\t\t\t}\n +\t\t} catch( e ) {\n +\t\t\txml = undefined;\n +\t\t}\n +\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {\n +\t\t\tjQuery.error( "Invalid XML: " + data );\n +\t\t}\n +\t\treturn xml;\n +\t},\n +\n +\tnoop: function() {},\n +\n +\t// Evaluates a script in a global context\n +\t// Workarounds based on findings by Jim Driscoll\n +\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n +\tglobalEval: function( data ) {\n +\t\tif ( data && core_rnotwhite.test( data ) ) {\n +\t\t\t// We use execScript on Internet Explorer\n +\t\t\t// We use an anonymous function so that context is window\n +\t\t\t// rather than jQuery in Firefox\n +\t\t\t( window.execScript || function( data ) {\n +\t\t\t\twindow[ "eval" ].call( window, data );\n +\t\t\t} )( data );\n +\t\t}\n +\t},\n +\n +\t// Convert dashed to camelCase; used by the css and data modules\n +\t// Microsoft forgot to hump their vendor prefix (#9572)\n +\tcamelCase: function( string ) {\n +\t\treturn string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );\n +\t},\n +\n +\tnodeName: function( elem, name ) {\n +\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n +\t},\n +\n +\t// args is for internal usage only\n +\teach: function( obj, callback, args ) {\n +\t\tvar name,\n +\t\t\ti = 0,\n +\t\t\tlength = obj.length,\n +\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n +\n +\t\tif ( args ) {\n +\t\t\tif ( isObj ) {\n +\t\t\t\tfor ( name in obj ) {\n +\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < length; ) {\n +\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// A special, fast, case for the most common use of each\n +\t\t} else {\n +\t\t\tif ( isObj ) {\n +\t\t\t\tfor ( name in obj ) {\n +\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < length; ) {\n +\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn obj;\n +\t},\n +\n +\t// Use native String.trim function wherever possible\n +\ttrim: core_trim && !core_trim.call("\\uFEFF\\xA0") ?\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\tcore_trim.call( text );\n +\t\t} :\n +\n +\t\t// Otherwise use our own trimming functionality\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\t( text + "" ).replace( rtrim, "" );\n +\t\t},\n +\n +\t// results is for internal usage only\n +\tmakeArray: function( arr, results ) {\n +\t\tvar type,\n +\t\t\tret = results || [];\n +\n +\t\tif ( arr != null ) {\n +\t\t\t// The window, strings (and functions) also have \'length\'\n +\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n +\t\t\ttype = jQuery.type( arr );\n +\n +\t\t\tif ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) {\n +\t\t\t\tcore_push.call( ret, arr );\n +\t\t\t} else {\n +\t\t\t\tjQuery.merge( ret, arr );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tinArray: function( elem, arr, i ) {\n +\t\tvar len;\n +\n +\t\tif ( arr ) {\n +\t\t\tif ( core_indexOf ) {\n +\t\t\t\treturn core_indexOf.call( arr, elem, i );\n +\t\t\t}\n +\n +\t\t\tlen = arr.length;\n +\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n +\n +\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\t// Skip accessing in sparse arrays\n +\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n +\t\t\t\t\treturn i;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn -1;\n +\t},\n +\n +\tmerge: function( first, second ) {\n +\t\tvar l = second.length,\n +\t\t\ti = first.length,\n +\t\t\tj = 0;\n +\n +\t\tif ( typeof l === "number" ) {\n +\t\t\tfor ( ; j < l; j++ ) {\n +\t\t\t\tfirst[ i++ ] = second[ j ];\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\twhile ( second[j] !== undefined ) {\n +\t\t\t\tfirst[ i++ ] = second[ j++ ];\n +\t\t\t}\n +\t\t}\n +\n +\t\tfirst.length = i;\n +\n +\t\treturn first;\n +\t},\n +\n +\tgrep: function( elems, callback, inv ) {\n +\t\tvar retVal,\n +\t\t\tret = [],\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length;\n +\t\tinv = !!inv;\n +\n +\t\t// Go through the array, only saving the items\n +\t\t// that pass the validator function\n +\t\tfor ( ; i < length; i++ ) {\n +\t\t\tretVal = !!callback( elems[ i ], i );\n +\t\t\tif ( inv !== retVal ) {\n +\t\t\t\tret.push( elems[ i ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\t// arg is for internal usage only\n +\tmap: function( elems, callback, arg ) {\n +\t\tvar value, key,\n +\t\t\tret = [],\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length,\n +\t\t\t// jquery objects are treated as arrays\n +\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n +\n +\t\t// Go through the array, translating each of the items to their\n +\t\tif ( isArray ) {\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tvalue = callback( elems[ i ], i, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// Go through every key on the object,\n +\t\t} else {\n +\t\t\tfor ( key in elems ) {\n +\t\t\t\tvalue = callback( elems[ key ], key, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Flatten any nested arrays\n +\t\treturn ret.concat.apply( [], ret );\n +\t},\n +\n +\t// A global GUID counter for objects\n +\tguid: 1,\n +\n +\t// Bind a function to a context, optionally partially applying any\n +\t// arguments.\n +\tproxy: function( fn, context ) {\n +\t\tvar tmp, args, proxy;\n +\n +\t\tif ( typeof context === "string" ) {\n +\t\t\ttmp = fn[ context ];\n +\t\t\tcontext = fn;\n +\t\t\tfn = tmp;\n +\t\t}\n +\n +\t\t// Quick check to determine if target is callable, in the spec\n +\t\t// this throws a TypeError, but we will just return undefined.\n +\t\tif ( !jQuery.isFunction( fn ) ) {\n +\t\t\treturn undefined;\n +\t\t}\n +\n +\t\t// Simulated bind\n +\t\targs = core_slice.call( arguments, 2 );\n +\t\tproxy = function() {\n +\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n +\t\t};\n +\n +\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n +\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n +\n +\t\treturn proxy;\n +\t},\n +\n +\t// Multifunctional method to get and set values of a collection\n +\t// The value/s can optionally be executed if it\'s a function\n +\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n +\t\tvar exec,\n +\t\t\tbulk = key == null,\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length;\n +\n +\t\t// Sets many values\n +\t\tif ( key && typeof key === "object" ) {\n +\t\t\tfor ( i in key ) {\n +\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n +\t\t\t}\n +\t\t\tchainable = 1;\n +\n +\t\t// Sets one value\n +\t\t} else if ( value !== undefined ) {\n +\t\t\t// Optionally, function values get executed if exec is true\n +\t\t\texec = pass === undefined && jQuery.isFunction( value );\n +\n +\t\t\tif ( bulk ) {\n +\t\t\t\t// Bulk operations only iterate when executing function values\n +\t\t\t\tif ( exec ) {\n +\t\t\t\t\texec = fn;\n +\t\t\t\t\tfn = function( elem, key, value ) {\n +\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n +\t\t\t\t\t};\n +\n +\t\t\t\t// Otherwise they run against the entire set\n +\t\t\t\t} else {\n +\t\t\t\t\tfn.call( elems, value );\n +\t\t\t\t\tfn = null;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( fn ) {\n +\t\t\t\tfor (; i < length; i++ ) {\n +\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tchainable = 1;\n +\t\t}\n +\n +\t\treturn chainable ?\n +\t\t\telems :\n +\n +\t\t\t// Gets\n +\t\t\tbulk ?\n +\t\t\t\tfn.call( elems ) :\n +\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n +\t},\n +\n +\tnow: function() {\n +\t\treturn ( new Date() ).getTime();\n +\t}\n +});\n +\n +jQuery.ready.promise = function( obj ) {\n +\tif ( !readyList ) {\n +\n +\t\treadyList = jQuery.Deferred();\n +\n +\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n +\t\t// we once tried to use readyState "interactive" here, but it caused issues like the one\n +\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n +\t\tif ( document.readyState === "complete" ) {\n +\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n +\t\t\tsetTimeout( jQuery.ready, 1 );\n +\n +\t\t// Standards-based browsers support DOMContentLoaded\n +\t\t} else if ( document.addEventListener ) {\n +\t\t\t// Use the handy event callback\n +\t\t\tdocument.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.addEventListener( "load", jQuery.ready, false );\n +\n +\t\t// If IE event model is used\n +\t\t} else {\n +\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n +\t\t\tdocument.attachEvent( "onreadystatechange", DOMContentLoaded );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.attachEvent( "onload", jQuery.ready );\n +\n +\t\t\t// If IE and not a frame\n +\t\t\t// continually check to see if the document is ready\n +\t\t\tvar top = false;\n +\n +\t\t\ttry {\n +\t\t\t\ttop = window.frameElement == null && document.documentElement;\n +\t\t\t} catch(e) {}\n +\n +\t\t\tif ( top && top.doScroll ) {\n +\t\t\t\t(function doScrollCheck() {\n +\t\t\t\t\tif ( !jQuery.isReady ) {\n +\n +\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t// Use the trick by Diego Perini\n +\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n +\t\t\t\t\t\t\ttop.doScroll("left");\n +\t\t\t\t\t\t} catch(e) {\n +\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// and execute any waiting functions\n +\t\t\t\t\t\tjQuery.ready();\n +\t\t\t\t\t}\n +\t\t\t\t})();\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn readyList.promise( obj );\n +};\n +\n +// Populate the class2type map\n +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {\n +\tclass2type[ "[object " + name + "]" ] = name.toLowerCase();\n +});\n +\n +// All jQuery objects should point back to these\n +rootjQuery = jQuery(document);\n +// String to Object options format cache\n +var optionsCache = {};\n +\n +// Convert String-formatted options into Object-formatted ones and store in cache\n +function createOptions( options ) {\n +\tvar object = optionsCache[ options ] = {};\n +\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n +\t\tobject[ flag ] = true;\n +\t});\n +\treturn object;\n +}\n +\n +/*\n + * Create a callback list using the following parameters:\n + *\n + *\toptions: an optional list of space-separated options that will change how\n + *\t\t\tthe callback list behaves or a more traditional option object\n + *\n + * By default a callback list will act like an event callback list and can be\n + * "fired" multiple times.\n + *\n + * Possible options:\n + *\n + *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n + *\n + *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n + *\t\t\t\t\tafter the list has been fired right away with the latest "memorized"\n + *\t\t\t\t\tvalues (like a Deferred)\n + *\n + *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n + *\n + *\tstopOnFalse:\tinterrupt callings when a callback returns false\n + *\n + */\n +jQuery.Callbacks = function( options ) {\n +\n +\t// Convert options from String-formatted to Object-formatted if needed\n +\t// (we check in cache first)\n +\toptions = typeof options === "string" ?\n +\t\t( optionsCache[ options ] || createOptions( options ) ) :\n +\t\tjQuery.extend( {}, options );\n +\n +\tvar // Last fire value (for non-forgettable lists)\n +\t\tmemory,\n +\t\t// Flag to know if list was already fired\n +\t\tfired,\n +\t\t// Flag to know if list is currently firing\n +\t\tfiring,\n +\t\t// First callback to fire (used internally by add and fireWith)\n +\t\tfiringStart,\n +\t\t// End of the loop when firing\n +\t\tfiringLength,\n +\t\t// Index of currently firing callback (modified by remove if needed)\n +\t\tfiringIndex,\n +\t\t// Actual callback list\n +\t\tlist = [],\n +\t\t// Stack of fire calls for repeatable lists\n +\t\tstack = !options.once && [],\n +\t\t// Fire callbacks\n +\t\tfire = function( data ) {\n +\t\t\tmemory = options.memory && data;\n +\t\t\tfired = true;\n +\t\t\tfiringIndex = firingStart || 0;\n +\t\t\tfiringStart = 0;\n +\t\t\tfiringLength = list.length;\n +\t\t\tfiring = true;\n +\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n +\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n +\t\t\t\t\tmemory = false; // To prevent further calls using add\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tfiring = false;\n +\t\t\tif ( list ) {\n +\t\t\t\tif ( stack ) {\n +\t\t\t\t\tif ( stack.length ) {\n +\t\t\t\t\t\tfire( stack.shift() );\n +\t\t\t\t\t}\n +\t\t\t\t} else if ( memory ) {\n +\t\t\t\t\tlist = [];\n +\t\t\t\t} else {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Actual Callbacks object\n +\t\tself = {\n +\t\t\t// Add a callback or a collection of callbacks to the list\n +\t\t\tadd: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\t// First, we save the current length\n +\t\t\t\t\tvar start = list.length;\n +\t\t\t\t\t(function add( args ) {\n +\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n +\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n +\t\t\t\t\t\t\tif ( type === "function" ) {\n +\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n +\t\t\t\t\t\t\t\t\tlist.push( arg );\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== "string" ) {\n +\t\t\t\t\t\t\t\t// Inspect recursively\n +\t\t\t\t\t\t\t\tadd( arg );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t});\n +\t\t\t\t\t})( arguments );\n +\t\t\t\t\t// Do we need to add the callbacks to the\n +\t\t\t\t\t// current firing batch?\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tfiringLength = list.length;\n +\t\t\t\t\t// With memory, if we\'re not firing then\n +\t\t\t\t\t// we should call right away\n +\t\t\t\t\t} else if ( memory ) {\n +\t\t\t\t\t\tfiringStart = start;\n +\t\t\t\t\t\tfire( memory );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Remove a callback from the list\n +\t\t\tremove: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n +\t\t\t\t\t\tvar index;\n +\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n +\t\t\t\t\t\t\tlist.splice( index, 1 );\n +\t\t\t\t\t\t\t// Handle firing indexes\n +\t\t\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n +\t\t\t\t\t\t\t\t\tfiringLength--;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n +\t\t\t\t\t\t\t\t\tfiringIndex--;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Control if a given callback is in the list\n +\t\t\thas: function( fn ) {\n +\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n +\t\t\t},\n +\t\t\t// Remove all callbacks from the list\n +\t\t\tempty: function() {\n +\t\t\t\tlist = [];\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Have the list do nothing anymore\n +\t\t\tdisable: function() {\n +\t\t\t\tlist = stack = memory = undefined;\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it disabled?\n +\t\t\tdisabled: function() {\n +\t\t\t\treturn !list;\n +\t\t\t},\n +\t\t\t// Lock the list in its current state\n +\t\t\tlock: function() {\n +\t\t\t\tstack = undefined;\n +\t\t\t\tif ( !memory ) {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it locked?\n +\t\t\tlocked: function() {\n +\t\t\t\treturn !stack;\n +\t\t\t},\n +\t\t\t// Call all callbacks with the given context and arguments\n +\t\t\tfireWith: function( context, args ) {\n +\t\t\t\targs = args || [];\n +\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n +\t\t\t\tif ( list && ( !fired || stack ) ) {\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tstack.push( args );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tfire( args );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Call all the callbacks with the given arguments\n +\t\t\tfire: function() {\n +\t\t\t\tself.fireWith( this, arguments );\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// To know if the callbacks have already been called at least once\n +\t\t\tfired: function() {\n +\t\t\t\treturn !!fired;\n +\t\t\t}\n +\t\t};\n +\n +\treturn self;\n +};\n +jQuery.extend({\n +\n +\tDeferred: function( func ) {\n +\t\tvar tuples = [\n +\t\t\t\t// action, add listener, listener list, final state\n +\t\t\t\t[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],\n +\t\t\t\t[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],\n +\t\t\t\t[ "notify", "progress", jQuery.Callbacks("memory") ]\n +\t\t\t],\n +\t\t\tstate = "pending",\n +\t\t\tpromise = {\n +\t\t\t\tstate: function() {\n +\t\t\t\t\treturn state;\n +\t\t\t\t},\n +\t\t\t\talways: function() {\n +\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n +\t\t\t\t\tvar fns = arguments;\n +\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n +\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n +\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n +\t\t\t\t\t\t\t\tfn = fns[ i ];\n +\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n +\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n +\t\t\t\t\t\t\t\tfunction() {\n +\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n +\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n +\t\t\t\t\t\t\t\t\t\treturned.promise()\n +\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n +\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n +\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n +\t\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\t\tnewDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t} :\n +\t\t\t\t\t\t\t\tnewDefer[ action ]\n +\t\t\t\t\t\t\t);\n +\t\t\t\t\t\t});\n +\t\t\t\t\t\tfns = null;\n +\t\t\t\t\t}).promise();\n +\t\t\t\t},\n +\t\t\t\t// Get a promise for this deferred\n +\t\t\t\t// If obj is provided, the promise aspect is added to the object\n +\t\t\t\tpromise: function( obj ) {\n +\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tdeferred = {};\n +\n +\t\t// Keep pipe for back-compat\n +\t\tpromise.pipe = promise.then;\n +\n +\t\t// Add list-specific methods\n +\t\tjQuery.each( tuples, function( i, tuple ) {\n +\t\t\tvar list = tuple[ 2 ],\n +\t\t\t\tstateString = tuple[ 3 ];\n +\n +\t\t\t// promise[ done | fail | progress ] = list.add\n +\t\t\tpromise[ tuple[1] ] = list.add;\n +\n +\t\t\t// Handle state\n +\t\t\tif ( stateString ) {\n +\t\t\t\tlist.add(function() {\n +\t\t\t\t\t// state = [ resolved | rejected ]\n +\t\t\t\t\tstate = stateString;\n +\n +\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n +\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n +\t\t\t}\n +\n +\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n +\t\t\tdeferred[ tuple[0] ] = list.fire;\n +\t\t\tdeferred[ tuple[0] + "With" ] = list.fireWith;\n +\t\t});\n +\n +\t\t// Make the deferred a promise\n +\t\tpromise.promise( deferred );\n +\n +\t\t// Call given func if any\n +\t\tif ( func ) {\n +\t\t\tfunc.call( deferred, deferred );\n +\t\t}\n +\n +\t\t// All done!\n +\t\treturn deferred;\n +\t},\n +\n +\t// Deferred helper\n +\twhen: function( subordinate /* , ..., subordinateN */ ) {\n +\t\tvar i = 0,\n +\t\t\tresolveValues = core_slice.call( arguments ),\n +\t\t\tlength = resolveValues.length,\n +\n +\t\t\t// the count of uncompleted subordinates\n +\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n +\n +\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n +\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n +\n +\t\t\t// Update function for both resolve and progress values\n +\t\t\tupdateFunc = function( i, contexts, values ) {\n +\t\t\t\treturn function( value ) {\n +\t\t\t\t\tcontexts[ i ] = this;\n +\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n +\t\t\t\t\tif( values === progressValues ) {\n +\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n +\t\t\t\t\t} else if ( !( --remaining ) ) {\n +\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t},\n +\n +\t\t\tprogressValues, progressContexts, resolveContexts;\n +\n +\t\t// add listeners to Deferred subordinates; treat others as resolved\n +\t\tif ( length > 1 ) {\n +\t\t\tprogressValues = new Array( length );\n +\t\t\tprogressContexts = new Array( length );\n +\t\t\tresolveContexts = new Array( length );\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n +\t\t\t\t\tresolveValues[ i ].promise()\n +\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n +\t\t\t\t\t\t.fail( deferred.reject )\n +\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n +\t\t\t\t} else {\n +\t\t\t\t\t--remaining;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// if we\'re not waiting on anything, resolve the master\n +\t\tif ( !remaining ) {\n +\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n +\t\t}\n +\n +\t\treturn deferred.promise();\n +\t}\n +});\n +jQuery.support = (function() {\n +\n +\tvar support,\n +\t\tall,\n +\t\ta,\n +\t\tselect,\n +\t\topt,\n +\t\tinput,\n +\t\tfragment,\n +\t\teventName,\n +\t\ti,\n +\t\tisSupported,\n +\t\tclickFn,\n +\t\tdiv = document.createElement("div");\n +\n +\t// Setup\n +\tdiv.setAttribute( "className", "t" );\n +\tdiv.innerHTML = " <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>";\n +\n +\t// Support tests won\'t run in some limited or non-browser environments\n +\tall = div.getElementsByTagName("*");\n +\ta = div.getElementsByTagName("a")[ 0 ];\n +\tif ( !all || !a || !all.length ) {\n +\t\treturn {};\n +\t}\n +\n +\t// First batch of tests\n +\tselect = document.createElement("select");\n +\topt = select.appendChild( document.createElement("option") );\n +\tinput = div.getElementsByTagName("input")[ 0 ];\n +\n +\ta.style.cssText = "top:1px;float:left;opacity:.5";\n +\tsupport = {\n +\t\t// IE strips leading whitespace when .innerHTML is used\n +\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n +\n +\t\t// Make sure that tbody elements aren\'t automatically inserted\n +\t\t// IE will insert them into empty tables\n +\t\ttbody: !div.getElementsByTagName("tbody").length,\n +\n +\t\t// Make sure that link elements get serialized correctly by innerHTML\n +\t\t// This requires a wrapper element in IE\n +\t\thtmlSerialize: !!div.getElementsByTagName("link").length,\n +\n +\t\t// Get the style information from getAttribute\n +\t\t// (IE uses .cssText instead)\n +\t\tstyle: /top/.test( a.getAttribute("style") ),\n +\n +\t\t// Make sure that URLs aren\'t manipulated\n +\t\t// (IE normalizes it by default)\n +\t\threfNormalized: ( a.getAttribute("href") === "/a" ),\n +\n +\t\t// Make sure that element opacity exists\n +\t\t// (IE uses filter instead)\n +\t\t// Use a regex to work around a WebKit issue. See #5145\n +\t\topacity: /^0.5/.test( a.style.opacity ),\n +\n +\t\t// Verify style float existence\n +\t\t// (IE uses styleFloat instead of cssFloat)\n +\t\tcssFloat: !!a.style.cssFloat,\n +\n +\t\t// Make sure that if no value is specified for a checkbox\n +\t\t// that it defaults to "on".\n +\t\t// (WebKit defaults to "" instead)\n +\t\tcheckOn: ( input.value === "on" ),\n +\n +\t\t// Make sure that a selected-by-default option has a working selected property.\n +\t\t// (WebKit defaults to false instead of true, IE too, if it\'s in an optgroup)\n +\t\toptSelected: opt.selected,\n +\n +\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n +\t\tgetSetAttribute: div.className !== "t",\n +\n +\t\t// Tests for enctype support on a form (#6743)\n +\t\tenctype: !!document.createElement("form").enctype,\n +\n +\t\t// Makes sure cloning an html5 element does not cause problems\n +\t\t// Where outerHTML is undefined, this still works\n +\t\thtml5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",\n +\n +\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don\'t support Quirks Mode\n +\t\tboxModel: ( document.compatMode === "CSS1Compat" ),\n +\n +\t\t// Will be defined later\n +\t\tsubmitBubbles: true,\n +\t\tchangeBubbles: true,\n +\t\tfocusinBubbles: false,\n +\t\tdeleteExpando: true,\n +\t\tnoCloneEvent: true,\n +\t\tinlineBlockNeedsLayout: false,\n +\t\tshrinkWrapBlocks: false,\n +\t\treliableMarginRight: true,\n +\t\tboxSizingReliable: true,\n +\t\tpixelPosition: false\n +\t};\n +\n +\t// Make sure checked status is properly cloned\n +\tinput.checked = true;\n +\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n +\n +\t// Make sure that the options inside disabled selects aren\'t marked as disabled\n +\t// (WebKit marks them as disabled)\n +\tselect.disabled = true;\n +\tsupport.optDisabled = !opt.disabled;\n +\n +\t// Test to see if it\'s possible to delete an expando from an element\n +\t// Fails in Internet Explorer\n +\ttry {\n +\t\tdelete div.test;\n +\t} catch( e ) {\n +\t\tsupport.deleteExpando = false;\n +\t}\n +\n +\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n +\t\tdiv.attachEvent( "onclick", clickFn = function() {\n +\t\t\t// Cloning a node shouldn\'t copy over any\n +\t\t\t// bound event handlers (IE does this)\n +\t\t\tsupport.noCloneEvent = false;\n +\t\t});\n +\t\tdiv.cloneNode( true ).fireEvent("onclick");\n +\t\tdiv.detachEvent( "onclick", clickFn );\n +\t}\n +\n +\t// Check if a radio maintains its value\n +\t// after being appended to the DOM\n +\tinput = document.createElement("input");\n +\tinput.value = "t";\n +\tinput.setAttribute( "type", "radio" );\n +\tsupport.radioValue = input.value === "t";\n +\n +\tinput.setAttribute( "checked", "checked" );\n +\n +\t// #11217 - WebKit loses check when the name is after the checked attribute\n +\tinput.setAttribute( "name", "t" );\n +\n +\tdiv.appendChild( input );\n +\tfragment = document.createDocumentFragment();\n +\tfragment.appendChild( div.lastChild );\n +\n +\t// WebKit doesn\'t clone checked state correctly in fragments\n +\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n +\n +\t// Check if a disconnected checkbox will retain its checked\n +\t// value of true after appended to the DOM (IE6/7)\n +\tsupport.appendChecked = input.checked;\n +\n +\tfragment.removeChild( input );\n +\tfragment.appendChild( div );\n +\n +\t// Technique from Juriy Zaytsev\n +\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n +\t// We only care about the case where non-standard event systems\n +\t// are used, namely in IE. Short-circuiting here helps us to\n +\t// avoid an eval call (in setAttribute) which can cause CSP\n +\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n +\tif ( div.attachEvent ) {\n +\t\tfor ( i in {\n +\t\t\tsubmit: true,\n +\t\t\tchange: true,\n +\t\t\tfocusin: true\n +\t\t}) {\n +\t\t\teventName = "on" + i;\n +\t\t\tisSupported = ( eventName in div );\n +\t\t\tif ( !isSupported ) {\n +\t\t\t\tdiv.setAttribute( eventName, "return;" );\n +\t\t\t\tisSupported = ( typeof div[ eventName ] === "function" );\n +\t\t\t}\n +\t\t\tsupport[ i + "Bubbles" ] = isSupported;\n +\t\t}\n +\t}\n +\n +\t// Run tests that need a body at doc ready\n +\tjQuery(function() {\n +\t\tvar container, div, tds, marginDiv,\n +\t\t\tdivReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;",\n +\t\t\tbody = document.getElementsByTagName("body")[0];\n +\n +\t\tif ( !body ) {\n +\t\t\t// Return for frameset docs that don\'t have a body\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tcontainer = document.createElement("div");\n +\t\tcontainer.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";\n +\t\tbody.insertBefore( container, body.firstChild );\n +\n +\t\t// Construct the test element\n +\t\tdiv = document.createElement("div");\n +\t\tcontainer.appendChild( div );\n +\n +\t\t// Check if table cells still have offsetWidth/Height when they are set\n +\t\t// to display:none and there are still other visible table cells in a\n +\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n +\t\t// determining if an element has been hidden directly using\n +\t\t// display:none (it is still safe to use offsets if a parent element is\n +\t\t// hidden; don safety goggles and see bug #4512 for more information).\n +\t\t// (only IE 8 fails this test)\n +\t\tdiv.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";\n +\t\ttds = div.getElementsByTagName("td");\n +\t\ttds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";\n +\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\ttds[ 0 ].style.display = "";\n +\t\ttds[ 1 ].style.display = "none";\n +\n +\t\t// Check if empty table cells still have offsetWidth/Height\n +\t\t// (IE <= 8 fail this test)\n +\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\t// Check box-sizing and margin behavior\n +\t\tdiv.innerHTML = "";\n +\t\tdiv.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";\n +\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n +\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n +\n +\t\t// NOTE: To any future maintainer, we\'ve window.getComputedStyle\n +\t\t// because jsdom on node.js will break without it.\n +\t\tif ( window.getComputedStyle ) {\n +\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";\n +\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";\n +\n +\t\t\t// Check if div with explicit width and no margin-right incorrectly\n +\t\t\t// gets computed margin-right based on width of container. For more\n +\t\t\t// info see bug #3333\n +\t\t\t// Fails in WebKit before Feb 2011 nightlies\n +\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\t\tmarginDiv = document.createElement("div");\n +\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n +\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = "0";\n +\t\t\tdiv.style.width = "1px";\n +\t\t\tdiv.appendChild( marginDiv );\n +\t\t\tsupport.reliableMarginRight =\n +\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n +\t\t}\n +\n +\t\tif ( typeof div.style.zoom !== "undefined" ) {\n +\t\t\t// Check if natively block-level elements act like inline-block\n +\t\t\t// elements when setting their display to \'inline\' and giving\n +\t\t\t// them layout\n +\t\t\t// (IE < 8 does this)\n +\t\t\tdiv.innerHTML = "";\n +\t\t\tdiv.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";\n +\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n +\n +\t\t\t// Check if elements with layout shrink-wrap their children\n +\t\t\t// (IE 6 does this)\n +\t\t\tdiv.style.display = "block";\n +\t\t\tdiv.style.overflow = "visible";\n +\t\t\tdiv.innerHTML = "<div></div>";\n +\t\t\tdiv.firstChild.style.width = "5px";\n +\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n +\n +\t\t\tcontainer.style.zoom = 1;\n +\t\t}\n +\n +\t\t// Null elements to avoid leaks in IE\n +\t\tbody.removeChild( container );\n +\t\tcontainer = div = tds = marginDiv = null;\n +\t});\n +\n +\t// Null elements to avoid leaks in IE\n +\tfragment.removeChild( div );\n +\tall = a = select = opt = input = fragment = div = null;\n +\n +\treturn support;\n +})();\n +var rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n +\trmultiDash = /([A-Z])/g;\n +\n +jQuery.extend({\n +\tcache: {},\n +\n +\tdeletedIds: [],\n +\n +\t// Remove at next major release (1.9/2.0)\n +\tuuid: 0,\n +\n +\t// Unique for each copy of jQuery on the page\n +\t// Non-digits removed to match rinlinejQuery\n +\texpando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, "" ),\n +\n +\t// The following elements throw uncatchable exceptions if you\n +\t// attempt to add expando properties to them.\n +\tnoData: {\n +\t\t"embed": true,\n +\t\t// Ban all objects except for Flash (which handle expandos)\n +\t\t"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",\n +\t\t"applet": true\n +\t},\n +\n +\thasData: function( elem ) {\n +\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n +\t\treturn !!elem && !isEmptyDataObject( elem );\n +\t},\n +\n +\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n +\t\tif ( !jQuery.acceptData( elem ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar thisCache, ret,\n +\t\t\tinternalKey = jQuery.expando,\n +\t\t\tgetByName = typeof name === "string",\n +\n +\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n +\t\t\t// can\'t GC object references properly across the DOM-JS boundary\n +\t\t\tisNode = elem.nodeType,\n +\n +\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n +\t\t\t// attached directly to the object so GC can occur automatically\n +\t\t\tcache = isNode ? jQuery.cache : elem,\n +\n +\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n +\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n +\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n +\n +\t\t// Avoid doing any more work than we need to when trying to get data on an\n +\t\t// object that has no data at all\n +\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( !id ) {\n +\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n +\t\t\t// ends up in the global cache\n +\t\t\tif ( isNode ) {\n +\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n +\t\t\t} else {\n +\t\t\t\tid = internalKey;\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( !cache[ id ] ) {\n +\t\t\tcache[ id ] = {};\n +\n +\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n +\t\t\t// is serialized using JSON.stringify\n +\t\t\tif ( !isNode ) {\n +\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n +\t\t// shallow copied over onto the existing cache\n +\t\tif ( typeof name === "object" || typeof name === "function" ) {\n +\t\t\tif ( pvt ) {\n +\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n +\t\t\t} else {\n +\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n +\t\t\t}\n +\t\t}\n +\n +\t\tthisCache = cache[ id ];\n +\n +\t\t// jQuery data() is stored in a separate object inside the object\'s internal data\n +\t\t// cache in order to avoid key collisions between internal data and user-defined\n +\t\t// data.\n +\t\tif ( !pvt ) {\n +\t\t\tif ( !thisCache.data ) {\n +\t\t\t\tthisCache.data = {};\n +\t\t\t}\n +\n +\t\t\tthisCache = thisCache.data;\n +\t\t}\n +\n +\t\tif ( data !== undefined ) {\n +\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n +\t\t}\n +\n +\t\t// Check for both converted-to-camel and non-converted data property names\n +\t\t// If a data property was specified\n +\t\tif ( getByName ) {\n +\n +\t\t\t// First Try to find as-is property data\n +\t\t\tret = thisCache[ name ];\n +\n +\t\t\t// Test for null|undefined property data\n +\t\t\tif ( ret == null ) {\n +\n +\t\t\t\t// Try to find the camelCased property\n +\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n +\t\t\t}\n +\t\t} else {\n +\t\t\tret = thisCache;\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n +\t\tif ( !jQuery.acceptData( elem ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar thisCache, i, l,\n +\n +\t\t\tisNode = elem.nodeType,\n +\n +\t\t\t// See jQuery.data for more information\n +\t\t\tcache = isNode ? jQuery.cache : elem,\n +\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n +\n +\t\t// If there is already no cache entry for this object, there is no\n +\t\t// purpose in continuing\n +\t\tif ( !cache[ id ] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( name ) {\n +\n +\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n +\n +\t\t\tif ( thisCache ) {\n +\n +\t\t\t\t// Support array or space separated string names for data keys\n +\t\t\t\tif ( !jQuery.isArray( name ) ) {\n +\n +\t\t\t\t\t// try the string as a key before any manipulation\n +\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t} else {\n +\n +\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n +\t\t\t\t\t\tname = jQuery.camelCase( name );\n +\t\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tname = name.split(" ");\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n +\t\t\t\t\tdelete thisCache[ name[i] ];\n +\t\t\t\t}\n +\n +\t\t\t\t// If there is no data left in the cache, we want to continue\n +\t\t\t\t// and let the cache object itself get destroyed\n +\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// See jQuery.data for more information\n +\t\tif ( !pvt ) {\n +\t\t\tdelete cache[ id ].data;\n +\n +\t\t\t// Don\'t destroy the parent cache unless the internal data object\n +\t\t\t// had been the only thing left in it\n +\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Destroy the cache\n +\t\tif ( isNode ) {\n +\t\t\tjQuery.cleanData( [ elem ], true );\n +\n +\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n +\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n +\t\t\tdelete cache[ id ];\n +\n +\t\t// When all else fails, null\n +\t\t} else {\n +\t\t\tcache[ id ] = null;\n +\t\t}\n +\t},\n +\n +\t// For internal use only.\n +\t_data: function( elem, name, data ) {\n +\t\treturn jQuery.data( elem, name, data, true );\n +\t},\n +\n +\t// A method for determining if a DOM node can handle the data expando\n +\tacceptData: function( elem ) {\n +\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n +\n +\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n +\t\treturn !noData || noData !== true && elem.getAttribute("classid") === noData;\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tdata: function( key, value ) {\n +\t\tvar parts, part, attr, name, l,\n +\t\t\telem = this[0],\n +\t\t\ti = 0,\n +\t\t\tdata = null;\n +\n +\t\t// Gets all values\n +\t\tif ( key === undefined ) {\n +\t\t\tif ( this.length ) {\n +\t\t\t\tdata = jQuery.data( elem );\n +\n +\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {\n +\t\t\t\t\tattr = elem.attributes;\n +\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n +\t\t\t\t\t\tname = attr[i].name;\n +\n +\t\t\t\t\t\tif ( !name.indexOf( "data-" ) ) {\n +\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n +\n +\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tjQuery._data( elem, "parsedAttrs", true );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn data;\n +\t\t}\n +\n +\t\t// Sets multiple values\n +\t\tif ( typeof key === "object" ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery.data( this, key );\n +\t\t\t});\n +\t\t}\n +\n +\t\tparts = key.split( ".", 2 );\n +\t\tparts[1] = parts[1] ? "." + parts[1] : "";\n +\t\tpart = parts[1] + "!";\n +\n +\t\treturn jQuery.access( this, function( value ) {\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\tdata = this.triggerHandler( "getData" + part, [ parts[0] ] );\n +\n +\t\t\t\t// Try to fetch any internally stored data first\n +\t\t\t\tif ( data === undefined && elem ) {\n +\t\t\t\t\tdata = jQuery.data( elem, key );\n +\t\t\t\t\tdata = dataAttr( elem, key, data );\n +\t\t\t\t}\n +\n +\t\t\t\treturn data === undefined && parts[1] ?\n +\t\t\t\t\tthis.data( parts[0] ) :\n +\t\t\t\t\tdata;\n +\t\t\t}\n +\n +\t\t\tparts[1] = value;\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar self = jQuery( this );\n +\n +\t\t\t\tself.triggerHandler( "setData" + part, parts );\n +\t\t\t\tjQuery.data( this, key, value );\n +\t\t\t\tself.triggerHandler( "changeData" + part, parts );\n +\t\t\t});\n +\t\t}, null, value, arguments.length > 1, null, false );\n +\t},\n +\n +\tremoveData: function( key ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeData( this, key );\n +\t\t});\n +\t}\n +});\n +\n +function dataAttr( elem, key, data ) {\n +\t// If nothing was found internally, try to fetch any\n +\t// data from the HTML5 data-* attribute\n +\tif ( data === undefined && elem.nodeType === 1 ) {\n +\n +\t\tvar name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();\n +\n +\t\tdata = elem.getAttribute( name );\n +\n +\t\tif ( typeof data === "string" ) {\n +\t\t\ttry {\n +\t\t\t\tdata = data === "true" ? true :\n +\t\t\t\tdata === "false" ? false :\n +\t\t\t\tdata === "null" ? null :\n +\t\t\t\t// Only convert to a number if it doesn\'t change the string\n +\t\t\t\t+data + "" === data ? +data :\n +\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n +\t\t\t\t\tdata;\n +\t\t\t} catch( e ) {}\n +\n +\t\t\t// Make sure we set the data so it isn\'t changed later\n +\t\t\tjQuery.data( elem, key, data );\n +\n +\t\t} else {\n +\t\t\tdata = undefined;\n +\t\t}\n +\t}\n +\n +\treturn data;\n +}\n +\n +// checks a cache object for emptiness\n +function isEmptyDataObject( obj ) {\n +\tvar name;\n +\tfor ( name in obj ) {\n +\n +\t\t// if the public data object is empty, the private is still empty\n +\t\tif ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tif ( name !== "toJSON" ) {\n +\t\t\treturn false;\n +\t\t}\n +\t}\n +\n +\treturn true;\n +}\n +jQuery.extend({\n +\tqueue: function( elem, type, data ) {\n +\t\tvar queue;\n +\n +\t\tif ( elem ) {\n +\t\t\ttype = ( type || "fx" ) + "queue";\n +\t\t\tqueue = jQuery._data( elem, type );\n +\n +\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n +\t\t\tif ( data ) {\n +\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n +\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n +\t\t\t\t} else {\n +\t\t\t\t\tqueue.push( data );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn queue || [];\n +\t\t}\n +\t},\n +\n +\tdequeue: function( elem, type ) {\n +\t\ttype = type || "fx";\n +\n +\t\tvar queue = jQuery.queue( elem, type ),\n +\t\t\tstartLength = queue.length,\n +\t\t\tfn = queue.shift(),\n +\t\t\thooks = jQuery._queueHooks( elem, type ),\n +\t\t\tnext = function() {\n +\t\t\t\tjQuery.dequeue( elem, type );\n +\t\t\t};\n +\n +\t\t// If the fx queue is dequeued, always remove the progress sentinel\n +\t\tif ( fn === "inprogress" ) {\n +\t\t\tfn = queue.shift();\n +\t\t\tstartLength--;\n +\t\t}\n +\n +\t\tif ( fn ) {\n +\n +\t\t\t// Add a progress sentinel to prevent the fx queue from being\n +\t\t\t// automatically dequeued\n +\t\t\tif ( type === "fx" ) {\n +\t\t\t\tqueue.unshift( "inprogress" );\n +\t\t\t}\n +\n +\t\t\t// clear up the last queue stop function\n +\t\t\tdelete hooks.stop;\n +\t\t\tfn.call( elem, next, hooks );\n +\t\t}\n +\n +\t\tif ( !startLength && hooks ) {\n +\t\t\thooks.empty.fire();\n +\t\t}\n +\t},\n +\n +\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n +\t_queueHooks: function( elem, type ) {\n +\t\tvar key = type + "queueHooks";\n +\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n +\t\t\tempty: jQuery.Callbacks("once memory").add(function() {\n +\t\t\t\tjQuery.removeData( elem, type + "queue", true );\n +\t\t\t\tjQuery.removeData( elem, key, true );\n +\t\t\t})\n +\t\t});\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tqueue: function( type, data ) {\n +\t\tvar setter = 2;\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tdata = type;\n +\t\t\ttype = "fx";\n +\t\t\tsetter--;\n +\t\t}\n +\n +\t\tif ( arguments.length < setter ) {\n +\t\t\treturn jQuery.queue( this[0], type );\n +\t\t}\n +\n +\t\treturn data === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar queue = jQuery.queue( this, type, data );\n +\n +\t\t\t\t// ensure a hooks for this queue\n +\t\t\t\tjQuery._queueHooks( this, type );\n +\n +\t\t\t\tif ( type === "fx" && queue[0] !== "inprogress" ) {\n +\t\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t\t}\n +\t\t\t});\n +\t},\n +\tdequeue: function( type ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.dequeue( this, type );\n +\t\t});\n +\t},\n +\t// Based off of the plugin by Clint Helfers, with permission.\n +\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n +\tdelay: function( time, type ) {\n +\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n +\t\ttype = type || "fx";\n +\n +\t\treturn this.queue( type, function( next, hooks ) {\n +\t\t\tvar timeout = setTimeout( next, time );\n +\t\t\thooks.stop = function() {\n +\t\t\t\tclearTimeout( timeout );\n +\t\t\t};\n +\t\t});\n +\t},\n +\tclearQueue: function( type ) {\n +\t\treturn this.queue( type || "fx", [] );\n +\t},\n +\t// Get a promise resolved when queues of a certain type\n +\t// are emptied (fx is the type by default)\n +\tpromise: function( type, obj ) {\n +\t\tvar tmp,\n +\t\t\tcount = 1,\n +\t\t\tdefer = jQuery.Deferred(),\n +\t\t\telements = this,\n +\t\t\ti = this.length,\n +\t\t\tresolve = function() {\n +\t\t\t\tif ( !( --count ) ) {\n +\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tobj = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\ttype = type || "fx";\n +\n +\t\twhile( i-- ) {\n +\t\t\ttmp = jQuery._data( elements[ i ], type + "queueHooks" );\n +\t\t\tif ( tmp && tmp.empty ) {\n +\t\t\t\tcount++;\n +\t\t\t\ttmp.empty.add( resolve );\n +\t\t\t}\n +\t\t}\n +\t\tresolve();\n +\t\treturn defer.promise( obj );\n +\t}\n +});\n +var nodeHook, boolHook, fixSpecified,\n +\trclass = /[\\t\\r\\n]/g,\n +\trreturn = /\\r/g,\n +\trtype = /^(?:button|input)$/i,\n +\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n +\trclickable = /^a(?:rea|)$/i,\n +\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n +\tgetSetAttribute = jQuery.support.getSetAttribute;\n +\n +jQuery.fn.extend({\n +\tattr: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveAttr: function( name ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeAttr( this, name );\n +\t\t});\n +\t},\n +\n +\tprop: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveProp: function( name ) {\n +\t\tname = jQuery.propFix[ name ] || name;\n +\t\treturn this.each(function() {\n +\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n +\t\t\ttry {\n +\t\t\t\tthis[ name ] = undefined;\n +\t\t\t\tdelete this[ name ];\n +\t\t\t} catch( e ) {}\n +\t\t});\n +\t},\n +\n +\taddClass: function( value ) {\n +\t\tvar classNames, i, l, elem,\n +\t\t\tsetClass, c, cl;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( value && typeof value === "string" ) {\n +\t\t\tclassNames = value.split( core_rspace );\n +\n +\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n +\t\t\t\t\t\telem.className = value;\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tsetClass = " " + elem.className + " ";\n +\n +\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n +\t\t\t\t\t\t\tif ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) {\n +\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + " ";\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tremoveClass: function( value ) {\n +\t\tvar removes, className, elem, c, cl, i, l;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n +\t\t\t});\n +\t\t}\n +\t\tif ( (value && typeof value === "string") || value === undefined ) {\n +\t\t\tremoves = ( value || "" ).split( core_rspace );\n +\n +\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n +\n +\t\t\t\t\tclassName = (" " + elem.className + " ").replace( rclass, " " );\n +\n +\t\t\t\t\t// loop over each item in the removal list\n +\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n +\t\t\t\t\t\t// Remove until there is nothing to remove,\n +\t\t\t\t\t\twhile ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) {\n +\t\t\t\t\t\t\tclassName = className.replace( " " + removes[ c ] + " " , " " );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\telem.className = value ? jQuery.trim( className ) : "";\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\ttoggleClass: function( value, stateVal ) {\n +\t\tvar type = typeof value,\n +\t\t\tisBool = typeof stateVal === "boolean";\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( i ) {\n +\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tif ( type === "string" ) {\n +\t\t\t\t// toggle individual class names\n +\t\t\t\tvar className,\n +\t\t\t\t\ti = 0,\n +\t\t\t\t\tself = jQuery( this ),\n +\t\t\t\t\tstate = stateVal,\n +\t\t\t\t\tclassNames = value.split( core_rspace );\n +\n +\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n +\t\t\t\t\t// check each className given, space separated list\n +\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n +\t\t\t\t\tself[ state ? "addClass" : "removeClass" ]( className );\n +\t\t\t\t}\n +\n +\t\t\t} else if ( type === "undefined" || type === "boolean" ) {\n +\t\t\t\tif ( this.className ) {\n +\t\t\t\t\t// store className if set\n +\t\t\t\t\tjQuery._data( this, "__className__", this.className );\n +\t\t\t\t}\n +\n +\t\t\t\t// toggle whole className\n +\t\t\t\tthis.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\thasClass: function( selector ) {\n +\t\tvar className = " " + selector + " ",\n +\t\t\ti = 0,\n +\t\t\tl = this.length;\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\tif ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {\n +\t\t\t\treturn true;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\tval: function( value ) {\n +\t\tvar hooks, ret, isFunction,\n +\t\t\telem = this[0];\n +\n +\t\tif ( !arguments.length ) {\n +\t\t\tif ( elem ) {\n +\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n +\n +\t\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {\n +\t\t\t\t\treturn ret;\n +\t\t\t\t}\n +\n +\t\t\t\tret = elem.value;\n +\n +\t\t\t\treturn typeof ret === "string" ?\n +\t\t\t\t\t// handle most common string cases\n +\t\t\t\t\tret.replace(rreturn, "") :\n +\t\t\t\t\t// handle cases where value is null/undef or number\n +\t\t\t\t\tret == null ? "" : ret;\n +\t\t\t}\n +\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tisFunction = jQuery.isFunction( value );\n +\n +\t\treturn this.each(function( i ) {\n +\t\t\tvar val,\n +\t\t\t\tself = jQuery(this);\n +\n +\t\t\tif ( this.nodeType !== 1 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tif ( isFunction ) {\n +\t\t\t\tval = value.call( this, i, self.val() );\n +\t\t\t} else {\n +\t\t\t\tval = value;\n +\t\t\t}\n +\n +\t\t\t// Treat null/undefined as ""; convert numbers to string\n +\t\t\tif ( val == null ) {\n +\t\t\t\tval = "";\n +\t\t\t} else if ( typeof val === "number" ) {\n +\t\t\t\tval += "";\n +\t\t\t} else if ( jQuery.isArray( val ) ) {\n +\t\t\t\tval = jQuery.map(val, function ( value ) {\n +\t\t\t\t\treturn value == null ? "" : value + "";\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n +\n +\t\t\t// If set returns undefined, fall back to normal setting\n +\t\t\tif ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {\n +\t\t\t\tthis.value = val;\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +jQuery.extend({\n +\tvalHooks: {\n +\t\toption: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n +\t\t\t\t// uses .value. See #6932\n +\t\t\t\tvar val = elem.attributes.value;\n +\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n +\t\t\t}\n +\t\t},\n +\t\tselect: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar value, option,\n +\t\t\t\t\toptions = elem.options,\n +\t\t\t\t\tindex = elem.selectedIndex,\n +\t\t\t\t\tone = elem.type === "select-one" || index < 0,\n +\t\t\t\t\tvalues = one ? null : [],\n +\t\t\t\t\tmax = one ? index + 1 : options.length,\n +\t\t\t\t\ti = index < 0 ?\n +\t\t\t\t\t\tmax :\n +\t\t\t\t\t\tone ? index : 0;\n +\n +\t\t\t\t// Loop through all the selected options\n +\t\t\t\tfor ( ; i < max; i++ ) {\n +\t\t\t\t\toption = options[ i ];\n +\n +\t\t\t\t\t// oldIE doesn\'t update selected after form reset (#2551)\n +\t\t\t\t\tif ( ( option.selected || i === index ) &&\n +\t\t\t\t\t\t\t// Don\'t return options that are disabled or in a disabled optgroup\n +\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&\n +\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {\n +\n +\t\t\t\t\t\t// Get the specific value for the option\n +\t\t\t\t\t\tvalue = jQuery( option ).val();\n +\n +\t\t\t\t\t\t// We don\'t need an array for one selects\n +\t\t\t\t\t\tif ( one ) {\n +\t\t\t\t\t\t\treturn value;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Multi-Selects return an array\n +\t\t\t\t\t\tvalues.push( value );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn values;\n +\t\t\t},\n +\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tvar values = jQuery.makeArray( value );\n +\n +\t\t\t\tjQuery(elem).find("option").each(function() {\n +\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n +\t\t\t\t});\n +\n +\t\t\t\tif ( !values.length ) {\n +\t\t\t\t\telem.selectedIndex = -1;\n +\t\t\t\t}\n +\t\t\t\treturn values;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// Unused in 1.8, left in so attrFn-stabbers won\'t die; remove in 1.9\n +\tattrFn: {},\n +\n +\tattr: function( elem, name, value, pass ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set attributes on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n +\t\t\treturn jQuery( elem )[ name ]( value );\n +\t\t}\n +\n +\t\t// Fallback to prop when attributes are not supported\n +\t\tif ( typeof elem.getAttribute === "undefined" ) {\n +\t\t\treturn jQuery.prop( elem, name, value );\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\t// All attributes are lowercase\n +\t\t// Grab necessary hook if one is defined\n +\t\tif ( notxml ) {\n +\t\t\tname = name.toLowerCase();\n +\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\n +\t\t\tif ( value === null ) {\n +\t\t\t\tjQuery.removeAttr( elem, name );\n +\t\t\t\treturn;\n +\n +\t\t\t} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\telem.setAttribute( name, value + "" );\n +\t\t\t\treturn value;\n +\t\t\t}\n +\n +\t\t} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\treturn ret;\n +\n +\t\t} else {\n +\n +\t\t\tret = elem.getAttribute( name );\n +\n +\t\t\t// Non-existent attributes return null, we normalize to undefined\n +\t\t\treturn ret === null ?\n +\t\t\t\tundefined :\n +\t\t\t\tret;\n +\t\t}\n +\t},\n +\n +\tremoveAttr: function( elem, value ) {\n +\t\tvar propName, attrNames, name, isBool,\n +\t\t\ti = 0;\n +\n +\t\tif ( value && elem.nodeType === 1 ) {\n +\n +\t\t\tattrNames = value.split( core_rspace );\n +\n +\t\t\tfor ( ; i < attrNames.length; i++ ) {\n +\t\t\t\tname = attrNames[ i ];\n +\n +\t\t\t\tif ( name ) {\n +\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\t\t\t\t\tisBool = rboolean.test( name );\n +\n +\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n +\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n +\t\t\t\t\tif ( !isBool ) {\n +\t\t\t\t\t\tjQuery.attr( elem, name, "" );\n +\t\t\t\t\t}\n +\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n +\n +\t\t\t\t\t// Set corresponding property to false for boolean attributes\n +\t\t\t\t\tif ( isBool && propName in elem ) {\n +\t\t\t\t\t\telem[ propName ] = false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattrHooks: {\n +\t\ttype: {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\t// We can\'t allow the type property to be changed (since it causes problems in IE)\n +\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n +\t\t\t\t\tjQuery.error( "type property can\'t be changed" );\n +\t\t\t\t} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {\n +\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n +\t\t\t\t\t// Reset value to it\'s default in case type is set after value\n +\t\t\t\t\t// This is for element creation\n +\t\t\t\t\tvar val = elem.value;\n +\t\t\t\t\telem.setAttribute( "type", value );\n +\t\t\t\t\tif ( val ) {\n +\t\t\t\t\t\telem.value = val;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Use the value property for back compat\n +\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n +\t\tvalue: {\n +\t\t\tget: function( elem, name ) {\n +\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, "button" ) ) {\n +\t\t\t\t\treturn nodeHook.get( elem, name );\n +\t\t\t\t}\n +\t\t\t\treturn name in elem ?\n +\t\t\t\t\telem.value :\n +\t\t\t\t\tnull;\n +\t\t\t},\n +\t\t\tset: function( elem, value, name ) {\n +\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, "button" ) ) {\n +\t\t\t\t\treturn nodeHook.set( elem, value, name );\n +\t\t\t\t}\n +\t\t\t\t// Does not return so that setAttribute is also used\n +\t\t\t\telem.value = value;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropFix: {\n +\t\ttabindex: "tabIndex",\n +\t\treadonly: "readOnly",\n +\t\t"for": "htmlFor",\n +\t\t"class": "className",\n +\t\tmaxlength: "maxLength",\n +\t\tcellspacing: "cellSpacing",\n +\t\tcellpadding: "cellPadding",\n +\t\trowspan: "rowSpan",\n +\t\tcolspan: "colSpan",\n +\t\tusemap: "useMap",\n +\t\tframeborder: "frameBorder",\n +\t\tcontenteditable: "contentEditable"\n +\t},\n +\n +\tprop: function( elem, name, value ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set properties on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\tif ( notxml ) {\n +\t\t\t// Fix name and attach hooks\n +\t\t\tname = jQuery.propFix[ name ] || name;\n +\t\t\thooks = jQuery.propHooks[ name ];\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\t\t\tif ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn ( elem[ name ] = value );\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn elem[ name ];\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropHooks: {\n +\t\ttabIndex: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// elem.tabIndex doesn\'t always return the correct value when it hasn\'t been explicitly set\n +\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n +\t\t\t\tvar attributeNode = elem.getAttributeNode("tabindex");\n +\n +\t\t\t\treturn attributeNode && attributeNode.specified ?\n +\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n +\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n +\t\t\t\t\t\t0 :\n +\t\t\t\t\t\tundefined;\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +// Hook for boolean attributes\n +boolHook = {\n +\tget: function( elem, name ) {\n +\t\t// Align boolean attributes with corresponding properties\n +\t\t// Fall back to attribute presence where some booleans are not supported\n +\t\tvar attrNode,\n +\t\t\tproperty = jQuery.prop( elem, name );\n +\t\treturn property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n +\t\t\tname.toLowerCase() :\n +\t\t\tundefined;\n +\t},\n +\tset: function( elem, value, name ) {\n +\t\tvar propName;\n +\t\tif ( value === false ) {\n +\t\t\t// Remove boolean attributes when set to false\n +\t\t\tjQuery.removeAttr( elem, name );\n +\t\t} else {\n +\t\t\t// value is true since we know at this point it\'s type boolean and not false\n +\t\t\t// Set boolean attributes to the same name and set the DOM property\n +\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\t\t\tif ( propName in elem ) {\n +\t\t\t\t// Only set the IDL specifically if it already exists on the element\n +\t\t\t\telem[ propName ] = true;\n +\t\t\t}\n +\n +\t\t\telem.setAttribute( name, name.toLowerCase() );\n +\t\t}\n +\t\treturn name;\n +\t}\n +};\n +\n +// IE6/7 do not support getting/setting some attributes with get/setAttribute\n +if ( !getSetAttribute ) {\n +\n +\tfixSpecified = {\n +\t\tname: true,\n +\t\tid: true,\n +\t\tcoords: true\n +\t};\n +\n +\t// Use this for any attribute in IE6/7\n +\t// This fixes almost every IE6/7 issue\n +\tnodeHook = jQuery.valHooks.button = {\n +\t\tget: function( elem, name ) {\n +\t\t\tvar ret;\n +\t\t\tret = elem.getAttributeNode( name );\n +\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ?\n +\t\t\t\tret.value :\n +\t\t\t\tundefined;\n +\t\t},\n +\t\tset: function( elem, value, name ) {\n +\t\t\t// Set the existing or create a new attribute node\n +\t\t\tvar ret = elem.getAttributeNode( name );\n +\t\t\tif ( !ret ) {\n +\t\t\t\tret = document.createAttribute( name );\n +\t\t\t\telem.setAttributeNode( ret );\n +\t\t\t}\n +\t\t\treturn ( ret.value = value + "" );\n +\t\t}\n +\t};\n +\n +\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n +\t// This is for removals\n +\tjQuery.each([ "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tif ( value === "" ) {\n +\t\t\t\t\telem.setAttribute( name, "auto" );\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t});\n +\n +\t// Set contenteditable to false on removals(#10429)\n +\t// Setting to empty string throws an error as an invalid value\n +\tjQuery.attrHooks.contenteditable = {\n +\t\tget: nodeHook.get,\n +\t\tset: function( elem, value, name ) {\n +\t\t\tif ( value === "" ) {\n +\t\t\t\tvalue = "false";\n +\t\t\t}\n +\t\t\tnodeHook.set( elem, value, name );\n +\t\t}\n +\t};\n +}\n +\n +\n +// Some attributes require a special call on IE\n +if ( !jQuery.support.hrefNormalized ) {\n +\tjQuery.each([ "href", "src", "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n +\t\t\t\treturn ret === null ? undefined : ret;\n +\t\t\t}\n +\t\t});\n +\t});\n +}\n +\n +if ( !jQuery.support.style ) {\n +\tjQuery.attrHooks.style = {\n +\t\tget: function( elem ) {\n +\t\t\t// Return undefined in the case of empty string\n +\t\t\t// Normalize to lowercase since IE uppercases css property names\n +\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n +\t\t},\n +\t\tset: function( elem, value ) {\n +\t\t\treturn ( elem.style.cssText = value + "" );\n +\t\t}\n +\t};\n +}\n +\n +// Safari mis-reports the default selected property of an option\n +// Accessing the parent\'s selectedIndex property fixes it\n +if ( !jQuery.support.optSelected ) {\n +\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n +\t\tget: function( elem ) {\n +\t\t\tvar parent = elem.parentNode;\n +\n +\t\t\tif ( parent ) {\n +\t\t\t\tparent.selectedIndex;\n +\n +\t\t\t\t// Make sure that it also works with optgroups, see #5701\n +\t\t\t\tif ( parent.parentNode ) {\n +\t\t\t\t\tparent.parentNode.selectedIndex;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn null;\n +\t\t}\n +\t});\n +}\n +\n +// IE6/7 call enctype encoding\n +if ( !jQuery.support.enctype ) {\n +\tjQuery.propFix.enctype = "encoding";\n +}\n +\n +// Radios and checkboxes getter/setter\n +if ( !jQuery.support.checkOn ) {\n +\tjQuery.each([ "radio", "checkbox" ], function() {\n +\t\tjQuery.valHooks[ this ] = {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// Handle the case where in Webkit "" is returned instead of "on" if a value isn\'t specified\n +\t\t\t\treturn elem.getAttribute("value") === null ? "on" : elem.value;\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +jQuery.each([ "radio", "checkbox" ], function() {\n +\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n +\t\tset: function( elem, value ) {\n +\t\t\tif ( jQuery.isArray( value ) ) {\n +\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ) + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +;\n +\t\t\t}\n +\t\t}\n +\t});\n +});\n +var rformElems = /^(?:textarea|input|select)$/i,\n +\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n +\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n +\trkeyEvent = /^key/,\n +\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n +\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n +\thoverHack = function( events ) {\n +\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );\n +\t};\n +\n +/*\n + * Helper functions for managing events -- not part of the public interface.\n + * Props to Dean Edwards\' addEvent library for many of the ideas.\n + */\n +jQuery.event = {\n +\n +\tadd: function( elem, types, handler, data, selector ) {\n +\n +\t\tvar elemData, eventHandle, events,\n +\t\t\tt, tns, type, namespaces, handleObj,\n +\t\t\thandleObjIn, handlers, special;\n +\n +\t\t// Don\'t attach events to noData or text/comment nodes (allow plain objects tho)\n +\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an object of custom data in lieu of the handler\n +\t\tif ( handler.handler ) {\n +\t\t\thandleObjIn = handler;\n +\t\t\thandler = handleObjIn.handler;\n +\t\t\tselector = handleObjIn.selector;\n +\t\t}\n +\n +\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n +\t\tif ( !handler.guid ) {\n +\t\t\thandler.guid = jQuery.guid++;\n +\t\t}\n +\n +\t\t// Init the element\'s event structure and main handler, if this is the first\n +\t\tevents = elemData.events;\n +\t\tif ( !events ) {\n +\t\t\telemData.events = events = {};\n +\t\t}\n +\t\teventHandle = elemData.handle;\n +\t\tif ( !eventHandle ) {\n +\t\t\telemData.handle = eventHandle = function( e ) {\n +\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n +\t\t\t\t// when an event is called after a page has unloaded\n +\t\t\t\treturn typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?\n +\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n +\t\t\t\t\tundefined;\n +\t\t\t};\n +\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n +\t\t\teventHandle.elem = elem;\n +\t\t}\n +\n +\t\t// Handle multiple events separated by a space\n +\t\t// jQuery(...).bind("mouseover mouseout", fn);\n +\t\ttypes = jQuery.trim( hoverHack(types) ).split( " " );\n +\t\tfor ( t = 0; t < types.length; t++ ) {\n +\n +\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = tns[1];\n +\t\t\tnamespaces = ( tns[2] || "" ).split( "." ).sort();\n +\n +\t\t\t// If event changes its type, use the special event handlers for the changed type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// If selector defined, determine special event api type, otherwise given type\n +\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n +\n +\t\t\t// Update special based on newly reset type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// handleObj is passed to all event handlers\n +\t\t\thandleObj = jQuery.extend({\n +\t\t\t\ttype: type,\n +\t\t\t\torigType: tns[1],\n +\t\t\t\tdata: data,\n +\t\t\t\thandler: handler,\n +\t\t\t\tguid: handler.guid,\n +\t\t\t\tselector: selector,\n +\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n +\t\t\t\tnamespace: namespaces.join(".")\n +\t\t\t}, handleObjIn );\n +\n +\t\t\t// Init the event handler queue if we\'re the first\n +\t\t\thandlers = events[ type ];\n +\t\t\tif ( !handlers ) {\n +\t\t\t\thandlers = events[ type ] = [];\n +\t\t\t\thandlers.delegateCount = 0;\n +\n +\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n +\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n +\t\t\t\t\t// Bind the global event handler to the element\n +\t\t\t\t\tif ( elem.addEventListener ) {\n +\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n +\n +\t\t\t\t\t} else if ( elem.attachEvent ) {\n +\t\t\t\t\t\telem.attachEvent( "on" + type, eventHandle );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( special.add ) {\n +\t\t\t\tspecial.add.call( elem, handleObj );\n +\n +\t\t\t\tif ( !handleObj.handler.guid ) {\n +\t\t\t\t\thandleObj.handler.guid = handler.guid;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Add to the element\'s handler list, delegates in front\n +\t\t\tif ( selector ) {\n +\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n +\t\t\t} else {\n +\t\t\t\thandlers.push( handleObj );\n +\t\t\t}\n +\n +\t\t\t// Keep track of which events have ever been used, for event optimization\n +\t\t\tjQuery.event.global[ type ] = true;\n +\t\t}\n +\n +\t\t// Nullify elem to prevent memory leaks in IE\n +\t\telem = null;\n +\t},\n +\n +\tglobal: {},\n +\n +\t// Detach an event or set of events from an element\n +\tremove: function( elem, types, handler, selector, mappedTypes ) {\n +\n +\t\tvar t, tns, type, origType, namespaces, origCount,\n +\t\t\tj, events, special, eventType, handleObj,\n +\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n +\n +\t\tif ( !elemData || !(events = elemData.events) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Once for each type.namespace in types; type may be omitted\n +\t\ttypes = jQuery.trim( hoverHack( types || "" ) ).split(" ");\n +\t\tfor ( t = 0; t < types.length; t++ ) {\n +\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = origType = tns[1];\n +\t\t\tnamespaces = tns[2];\n +\n +\t\t\t// Unbind all events (on this namespace, if provided) for the element\n +\t\t\tif ( !type ) {\n +\t\t\t\tfor ( type in events ) {\n +\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n +\t\t\t\t}\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n +\t\t\teventType = events[ type ] || [];\n +\t\t\torigCount = eventType.length;\n +\t\t\tnamespaces = namespaces ? new RegExp("(^|\\\\.)" + namespaces.split(".").sort().join("\\\\.(?:.*\\\\.|)") + "(\\\\.|$)") : null;\n +\n +\t\t\t// Remove matching events\n +\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n +\t\t\t\thandleObj = eventType[ j ];\n +\n +\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n +\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n +\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n +\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {\n +\t\t\t\t\teventType.splice( j--, 1 );\n +\n +\t\t\t\t\tif ( handleObj.selector ) {\n +\t\t\t\t\t\teventType.delegateCount--;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( special.remove ) {\n +\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n +\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n +\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n +\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n +\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n +\t\t\t\t}\n +\n +\t\t\t\tdelete events[ type ];\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Remove the expando if it\'s no longer used\n +\t\tif ( jQuery.isEmptyObject( events ) ) {\n +\t\t\tdelete elemData.handle;\n +\n +\t\t\t// removeData also checks for emptiness and clears the expando if empty\n +\t\t\t// so use it instead of delete\n +\t\t\tjQuery.removeData( elem, "events", true );\n +\t\t}\n +\t},\n +\n +\t// Events that are safe to short-circuit if no handlers are attached.\n +\t// Native DOM events should not be added, they may have inline handlers.\n +\tcustomEvent: {\n +\t\t"getData": true,\n +\t\t"setData": true,\n +\t\t"changeData": true\n +\t},\n +\n +\ttrigger: function( event, data, elem, onlyHandlers ) {\n +\t\t// Don\'t do events on text and comment nodes\n +\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Event object or event type\n +\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n +\t\t\ttype = event.type || event,\n +\t\t\tnamespaces = [];\n +\n +\t\t// focus/blur morphs to focusin/out; ensure we\'re not firing them right now\n +\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( type.indexOf( "!" ) >= 0 ) {\n +\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n +\t\t\ttype = type.slice(0, -1);\n +\t\t\texclusive = true;\n +\t\t}\n +\n +\t\tif ( type.indexOf( "." ) >= 0 ) {\n +\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n +\t\t\tnamespaces = type.split(".");\n +\t\t\ttype = namespaces.shift();\n +\t\t\tnamespaces.sort();\n +\t\t}\n +\n +\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n +\t\t\t// No jQuery handlers for this event type, and it can\'t have inline handlers\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an Event, Object, or just an event type string\n +\t\tevent = typeof event === "object" ?\n +\t\t\t// jQuery.Event object\n +\t\t\tevent[ jQuery.expando ] ? event :\n +\t\t\t// Object literal\n +\t\t\tnew jQuery.Event( type, event ) :\n +\t\t\t// Just the event type (string)\n +\t\t\tnew jQuery.Event( type );\n +\n +\t\tevent.type = type;\n +\t\tevent.isTrigger = true;\n +\t\tevent.exclusive = exclusive;\n +\t\tevent.namespace = namespaces.join( "." );\n +\t\tevent.namespace_re = event.namespace? new RegExp("(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.|)") + "(\\\\.|$)") : null;\n +\t\tontype = type.indexOf( ":" ) < 0 ? "on" + type : "";\n +\n +\t\t// Handle a global trigger\n +\t\tif ( !elem ) {\n +\n +\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n +\t\t\tcache = jQuery.cache;\n +\t\t\tfor ( i in cache ) {\n +\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n +\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Clean up the event in case it is being reused\n +\t\tevent.result = undefined;\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = elem;\n +\t\t}\n +\n +\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n +\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n +\t\tdata.unshift( event );\n +\n +\t\t// Allow special events to draw outside the lines\n +\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n +\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n +\t\teventPath = [[ elem, special.bindType || type ]];\n +\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\tbubbleType = special.delegateType || type;\n +\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n +\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n +\t\t\t\teventPath.push([ cur, bubbleType ]);\n +\t\t\t\told = cur;\n +\t\t\t}\n +\n +\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n +\t\t\tif ( old === (elem.ownerDocument || document) ) {\n +\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Fire handlers on the event path\n +\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n +\n +\t\t\tcur = eventPath[i][0];\n +\t\t\tevent.type = eventPath[i][1];\n +\n +\t\t\thandle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );\n +\t\t\tif ( handle ) {\n +\t\t\t\thandle.apply( cur, data );\n +\t\t\t}\n +\t\t\t// Note that this is a bare JS function and not a jQuery handler\n +\t\t\thandle = ontype && cur[ ontype ];\n +\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t}\n +\t\tevent.type = type;\n +\n +\t\t// If nobody prevented the default action, do it now\n +\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n +\n +\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n +\t\t\t\t!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {\n +\n +\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n +\t\t\t\t// Can\'t use an .isFunction() check here because IE6/7 fails that test.\n +\t\t\t\t// Don\'t do default actions on window, that\'s where global variables be (#6170)\n +\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n +\t\t\t\tif ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\t\t\t// Don\'t re-trigger an onFOO event when we call its FOO() method\n +\t\t\t\t\told = elem[ ontype ];\n +\n +\t\t\t\t\tif ( old ) {\n +\t\t\t\t\t\telem[ ontype ] = null;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n +\t\t\t\t\tjQuery.event.triggered = type;\n +\t\t\t\t\telem[ type ]();\n +\t\t\t\t\tjQuery.event.triggered = undefined;\n +\n +\t\t\t\t\tif ( old ) {\n +\t\t\t\t\t\telem[ ontype ] = old;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\tdispatch: function( event ) {\n +\n +\t\t// Make a writable jQuery.Event from the native event object\n +\t\tevent = jQuery.event.fix( event || window.event );\n +\n +\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n +\t\t\thandlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),\n +\t\t\tdelegateCount = handlers.delegateCount,\n +\t\t\targs = core_slice.call( arguments ),\n +\t\t\trun_all = !event.exclusive && !event.namespace,\n +\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n +\t\t\thandlerQueue = [];\n +\n +\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n +\t\targs[0] = event;\n +\t\tevent.delegateTarget = this;\n +\n +\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n +\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine handlers that should run if there are delegated events\n +\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n +\t\tif ( delegateCount && !(event.button && event.type === "click") ) {\n +\n +\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n +\n +\t\t\t\t// Don\'t process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n +\t\t\t\tif ( cur.disabled !== true || event.type !== "click" ) {\n +\t\t\t\t\tselMatch = {};\n +\t\t\t\t\tmatches = [];\n +\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n +\t\t\t\t\t\thandleObj = handlers[ i ];\n +\t\t\t\t\t\tsel = handleObj.selector;\n +\n +\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n +\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n +\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n +\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n +\t\t\t\t\t\t\tmatches.push( handleObj );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( matches.length ) {\n +\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Add the remaining (directly-bound) handlers\n +\t\tif ( handlers.length > delegateCount ) {\n +\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n +\t\t}\n +\n +\t\t// Run delegates first; they may want to stop propagation beneath us\n +\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n +\t\t\tmatched = handlerQueue[ i ];\n +\t\t\tevent.currentTarget = matched.elem;\n +\n +\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n +\t\t\t\thandleObj = matched.matches[ j ];\n +\n +\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n +\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n +\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n +\n +\t\t\t\t\tevent.data = handleObj.data;\n +\t\t\t\t\tevent.handleObj = handleObj;\n +\n +\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n +\t\t\t\t\t\t\t.apply( matched.elem, args );\n +\n +\t\t\t\t\tif ( ret !== undefined ) {\n +\t\t\t\t\t\tevent.result = ret;\n +\t\t\t\t\t\tif ( ret === false ) {\n +\t\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t\t\tevent.stopPropagation();\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Call the postDispatch hook for the mapped type\n +\t\tif ( special.postDispatch ) {\n +\t\t\tspecial.postDispatch.call( this, event );\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\t// Includes some event props shared by KeyEvent and MouseEvent\n +\t// *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n +\tprops: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),\n +\n +\tfixHooks: {},\n +\n +\tkeyHooks: {\n +\t\tprops: "char charCode key keyCode".split(" "),\n +\t\tfilter: function( event, original ) {\n +\n +\t\t\t// Add which for key events\n +\t\t\tif ( event.which == null ) {\n +\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tmouseHooks: {\n +\t\tprops: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),\n +\t\tfilter: function( event, original ) {\n +\t\t\tvar eventDoc, doc, body,\n +\t\t\t\tbutton = original.button,\n +\t\t\t\tfromElement = original.fromElement;\n +\n +\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n +\t\t\tif ( event.pageX == null && original.clientX != null ) {\n +\t\t\t\teventDoc = event.target.ownerDocument || document;\n +\t\t\t\tdoc = eventDoc.documentElement;\n +\t\t\t\tbody = eventDoc.body;\n +\n +\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n +\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n +\t\t\t}\n +\n +\t\t\t// Add relatedTarget, if necessary\n +\t\t\tif ( !event.relatedTarget && fromElement ) {\n +\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n +\t\t\t}\n +\n +\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n +\t\t\t// Note: button is not normalized, so don\'t use it\n +\t\t\tif ( !event.which && button !== undefined ) {\n +\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tfix: function( event ) {\n +\t\tif ( event[ jQuery.expando ] ) {\n +\t\t\treturn event;\n +\t\t}\n +\n +\t\t// Create a writable copy of the event object and normalize some properties\n +\t\tvar i, prop,\n +\t\t\toriginalEvent = event,\n +\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n +\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n +\n +\t\tevent = jQuery.Event( originalEvent );\n +\n +\t\tfor ( i = copy.length; i; ) {\n +\t\t\tprop = copy[ --i ];\n +\t\t\tevent[ prop ] = originalEvent[ prop ];\n +\t\t}\n +\n +\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = originalEvent.srcElement || document;\n +\t\t}\n +\n +\t\t// Target should not be a text node (#504, Safari)\n +\t\tif ( event.target.nodeType === 3 ) {\n +\t\t\tevent.target = event.target.parentNode;\n +\t\t}\n +\n +\t\t// For mouse/key events, metaKey==false if it\'s undefined (#3368, #11328; IE6/7/8)\n +\t\tevent.metaKey = !!event.metaKey;\n +\n +\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n +\t},\n +\n +\tspecial: {\n +\t\tload: {\n +\t\t\t// Prevent triggered image.load events from bubbling to window.load\n +\t\t\tnoBubble: true\n +\t\t},\n +\n +\t\tfocus: {\n +\t\t\tdelegateType: "focusin"\n +\t\t},\n +\t\tblur: {\n +\t\t\tdelegateType: "focusout"\n +\t\t},\n +\n +\t\tbeforeunload: {\n +\t\t\tsetup: function( data, namespaces, eventHandle ) {\n +\t\t\t\t// We only want to do this special case on windows\n +\t\t\t\tif ( jQuery.isWindow( this ) ) {\n +\t\t\t\t\tthis.onbeforeunload = eventHandle;\n +\t\t\t\t}\n +\t\t\t},\n +\n +\t\t\tteardown: function( namespaces, eventHandle ) {\n +\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n +\t\t\t\t\tthis.onbeforeunload = null;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tsimulate: function( type, elem, event, bubble ) {\n +\t\t// Piggyback on a donor event to simulate a different one.\n +\t\t// Fake originalEvent to avoid donor\'s stopPropagation, but if the\n +\t\t// simulated event prevents default then we do the same on the donor.\n +\t\tvar e = jQuery.extend(\n +\t\t\tnew jQuery.Event(),\n +\t\t\tevent,\n +\t\t\t{ type: type,\n +\t\t\t\tisSimulated: true,\n +\t\t\t\toriginalEvent: {}\n +\t\t\t}\n +\t\t);\n +\t\tif ( bubble ) {\n +\t\t\tjQuery.event.trigger( e, null, elem );\n +\t\t} else {\n +\t\t\tjQuery.event.dispatch.call( elem, e );\n +\t\t}\n +\t\tif ( e.isDefaultPrevented() ) {\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t}\n +};\n +\n +// Some plugins are using, but it\'s undocumented/deprecated and will be removed.\n +// The 1.7 special event interface should provide all the hooks needed now.\n +jQuery.event.handle = jQuery.event.dispatch;\n +\n +jQuery.removeEvent = document.removeEventListener ?\n +\tfunction( elem, type, handle ) {\n +\t\tif ( elem.removeEventListener ) {\n +\t\t\telem.removeEventListener( type, handle, false );\n +\t\t}\n +\t} :\n +\tfunction( elem, type, handle ) {\n +\t\tvar name = "on" + type;\n +\n +\t\tif ( elem.detachEvent ) {\n +\n +\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n +\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n +\t\t\tif ( typeof elem[ name ] === "undefined" ) {\n +\t\t\t\telem[ name ] = null;\n +\t\t\t}\n +\n +\t\t\telem.detachEvent( name, handle );\n +\t\t}\n +\t};\n +\n +jQuery.Event = function( src, props ) {\n +\t// Allow instantiation without the \'new\' keyword\n +\tif ( !(this instanceof jQuery.Event) ) {\n +\t\treturn new jQuery.Event( src, props );\n +\t}\n +\n +\t// Event object\n +\tif ( src && src.type ) {\n +\t\tthis.originalEvent = src;\n +\t\tthis.type = src.type;\n +\n +\t\t// Events bubbling up the document may have been marked as prevented\n +\t\t// by a handler lower down the tree; reflect the correct value.\n +\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n +\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n +\n +\t// Event type\n +\t} else {\n +\t\tthis.type = src;\n +\t}\n +\n +\t// Put explicitly provided properties onto the event object\n +\tif ( props ) {\n +\t\tjQuery.extend( this, props );\n +\t}\n +\n +\t// Create a timestamp if incoming event doesn\'t have one\n +\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n +\n +\t// Mark it as fixed\n +\tthis[ jQuery.expando ] = true;\n +};\n +\n +function returnFalse() {\n +\treturn false;\n +}\n +function returnTrue() {\n +\treturn true;\n +}\n +\n +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n +jQuery.Event.prototype = {\n +\tpreventDefault: function() {\n +\t\tthis.isDefaultPrevented = returnTrue;\n +\n +\t\tvar e = this.originalEvent;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// if preventDefault exists run it on the original event\n +\t\tif ( e.preventDefault ) {\n +\t\t\te.preventDefault();\n +\n +\t\t// otherwise set the returnValue property of the original event to false (IE)\n +\t\t} else {\n +\t\t\te.returnValue = false;\n +\t\t}\n +\t},\n +\tstopPropagation: function() {\n +\t\tthis.isPropagationStopped = returnTrue;\n +\n +\t\tvar e = this.originalEvent;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\t\t// if stopPropagation exists run it on the original event\n +\t\tif ( e.stopPropagation ) {\n +\t\t\te.stopPropagation();\n +\t\t}\n +\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n +\t\te.cancelBubble = true;\n +\t},\n +\tstopImmediatePropagation: function() {\n +\t\tthis.isImmediatePropagationStopped = returnTrue;\n +\t\tthis.stopPropagation();\n +\t},\n +\tisDefaultPrevented: returnFalse,\n +\tisPropagationStopped: returnFalse,\n +\tisImmediatePropagationStopped: returnFalse\n +};\n +\n +// Create mouseenter/leave events using mouseover/out and event-time checks\n +jQuery.each({\n +\tmouseenter: "mouseover",\n +\tmouseleave: "mouseout"\n +}, function( orig, fix ) {\n +\tjQuery.event.special[ orig ] = {\n +\t\tdelegateType: fix,\n +\t\tbindType: fix,\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar ret,\n +\t\t\t\ttarget = this,\n +\t\t\t\trelated = event.relatedTarget,\n +\t\t\t\thandleObj = event.handleObj,\n +\t\t\t\tselector = handleObj.selector;\n +\n +\t\t\t// For mousenter/leave call the handler if related is outside the target.\n +\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n +\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n +\t\t\t\tevent.type = handleObj.origType;\n +\t\t\t\tret = handleObj.handler.apply( this, arguments );\n +\t\t\t\tevent.type = fix;\n +\t\t\t}\n +\t\t\treturn ret;\n +\t\t}\n +\t};\n +});\n +\n +// IE submit delegation\n +if ( !jQuery.support.submitBubbles ) {\n +\n +\tjQuery.event.special.submit = {\n +\t\tsetup: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n +\t\t\tjQuery.event.add( this, "click._submit keypress._submit", function( e ) {\n +\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n +\t\t\t\tvar elem = e.target,\n +\t\t\t\t\tform = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;\n +\t\t\t\tif ( form && !jQuery._data( form, "_submit_attached" ) ) {\n +\t\t\t\t\tjQuery.event.add( form, "submit._submit", function( event ) {\n +\t\t\t\t\t\tevent._submit_bubble = true;\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery._data( form, "_submit_attached", true );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t// return undefined since we don\'t need an event listener\n +\t\t},\n +\n +\t\tpostDispatch: function( event ) {\n +\t\t\t// If form was submitted by the user, bubble the event up the tree\n +\t\t\tif ( event._submit_bubble ) {\n +\t\t\t\tdelete event._submit_bubble;\n +\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n +\t\t\t\t\tjQuery.event.simulate( "submit", this.parentNode, event, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n +\t\t\tjQuery.event.remove( this, "._submit" );\n +\t\t}\n +\t};\n +}\n +\n +// IE change delegation and checkbox/radio fix\n +if ( !jQuery.support.changeBubbles ) {\n +\n +\tjQuery.event.special.change = {\n +\n +\t\tsetup: function() {\n +\n +\t\t\tif ( rformElems.test( this.nodeName ) ) {\n +\t\t\t\t// IE doesn\'t fire change on a check/radio until blur; trigger it on click\n +\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n +\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n +\t\t\t\tif ( this.type === "checkbox" || this.type === "radio" ) {\n +\t\t\t\t\tjQuery.event.add( this, "propertychange._change", function( event ) {\n +\t\t\t\t\t\tif ( event.originalEvent.propertyName === "checked" ) {\n +\t\t\t\t\t\t\tthis._just_changed = true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery.event.add( this, "click._change", function( event ) {\n +\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n +\t\t\t\t\t\t\tthis._just_changed = false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n +\t\t\t\t\t\tjQuery.event.simulate( "change", this, event, true );\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n +\t\t\tjQuery.event.add( this, "beforeactivate._change", function( e ) {\n +\t\t\t\tvar elem = e.target;\n +\n +\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) {\n +\t\t\t\t\tjQuery.event.add( elem, "change._change", function( event ) {\n +\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n +\t\t\t\t\t\t\tjQuery.event.simulate( "change", this.parentNode, event, true );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery._data( elem, "_change_attached", true );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t},\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar elem = event.target;\n +\n +\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n +\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {\n +\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\tjQuery.event.remove( this, "._change" );\n +\n +\t\t\treturn !rformElems.test( this.nodeName );\n +\t\t}\n +\t};\n +}\n +\n +// Create "bubbling" focus and blur events\n +if ( !jQuery.support.focusinBubbles ) {\n +\tjQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {\n +\n +\t\t// Attach a single capturing handler while someone wants focusin/focusout\n +\t\tvar attaches = 0,\n +\t\t\thandler = function( event ) {\n +\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n +\t\t\t};\n +\n +\t\tjQuery.event.special[ fix ] = {\n +\t\t\tsetup: function() {\n +\t\t\t\tif ( attaches++ === 0 ) {\n +\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tteardown: function() {\n +\t\t\t\tif ( --attaches === 0 ) {\n +\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +\n +jQuery.fn.extend({\n +\n +\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n +\t\tvar origFn, type;\n +\n +\t\t// Types can be a map of types/handlers\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-Object, selector, data )\n +\t\t\tif ( typeof selector !== "string" ) { // && selector != null\n +\t\t\t\t// ( types-Object, data )\n +\t\t\t\tdata = data || selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t\tfor ( type in types ) {\n +\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( data == null && fn == null ) {\n +\t\t\t// ( types, fn )\n +\t\t\tfn = selector;\n +\t\t\tdata = selector = undefined;\n +\t\t} else if ( fn == null ) {\n +\t\t\tif ( typeof selector === "string" ) {\n +\t\t\t\t// ( types, selector, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = undefined;\n +\t\t\t} else {\n +\t\t\t\t// ( types, data, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t} else if ( !fn ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( one === 1 ) {\n +\t\t\torigFn = fn;\n +\t\t\tfn = function( event ) {\n +\t\t\t\t// Can use an empty set, since event contains the info\n +\t\t\t\tjQuery().off( event );\n +\t\t\t\treturn origFn.apply( this, arguments );\n +\t\t\t};\n +\t\t\t// Use same guid so caller can remove using origFn\n +\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n +\t\t}\n +\t\treturn this.each( function() {\n +\t\t\tjQuery.event.add( this, types, fn, data, selector );\n +\t\t});\n +\t},\n +\tone: function( types, selector, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn, 1 );\n +\t},\n +\toff: function( types, selector, fn ) {\n +\t\tvar handleObj, type;\n +\t\tif ( types && types.preventDefault && types.handleObj ) {\n +\t\t\t// ( event ) dispatched jQuery.Event\n +\t\t\thandleObj = types.handleObj;\n +\t\t\tjQuery( types.delegateTarget ).off(\n +\t\t\t\thandleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,\n +\t\t\t\thandleObj.selector,\n +\t\t\t\thandleObj.handler\n +\t\t\t);\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-object [, selector] )\n +\t\t\tfor ( type in types ) {\n +\t\t\t\tthis.off( type, selector, types[ type ] );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( selector === false || typeof selector === "function" ) {\n +\t\t\t// ( types [, fn] )\n +\t\t\tfn = selector;\n +\t\t\tselector = undefined;\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t}\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.remove( this, types, fn, selector );\n +\t\t});\n +\t},\n +\n +\tbind: function( types, data, fn ) {\n +\t\treturn this.on( types, null, data, fn );\n +\t},\n +\tunbind: function( types, fn ) {\n +\t\treturn this.off( types, null, fn );\n +\t},\n +\n +\tlive: function( types, data, fn ) {\n +\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n +\t\treturn this;\n +\t},\n +\tdie: function( types, fn ) {\n +\t\tjQuery( this.context ).off( types, this.selector || "**", fn );\n +\t\treturn this;\n +\t},\n +\n +\tdelegate: function( selector, types, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn );\n +\t},\n +\tundelegate: function( selector, types, fn ) {\n +\t\t// ( namespace ) or ( selector, types [, fn] )\n +\t\treturn arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );\n +\t},\n +\n +\ttrigger: function( type, data ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.trigger( type, data, this );\n +\t\t});\n +\t},\n +\ttriggerHandler: function( type, data ) {\n +\t\tif ( this[0] ) {\n +\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n +\t\t}\n +\t},\n +\n +\ttoggle: function( fn ) {\n +\t\t// Save reference to arguments for access in closure\n +\t\tvar args = arguments,\n +\t\t\tguid = fn.guid || jQuery.guid++,\n +\t\t\ti = 0,\n +\t\t\ttoggler = function( event ) {\n +\t\t\t\t// Figure out which function to execute\n +\t\t\t\tvar lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;\n +\t\t\t\tjQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );\n +\n +\t\t\t\t// Make sure that clicks stop\n +\t\t\t\tevent.preventDefault();\n +\n +\t\t\t\t// and execute the function\n +\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n +\t\t\t};\n +\n +\t\t// link all the functions, so any of them can unbind this click handler\n +\t\ttoggler.guid = guid;\n +\t\twhile ( i < args.length ) {\n +\t\t\targs[ i++ ].guid = guid;\n +\t\t}\n +\n +\t\treturn this.click( toggler );\n +\t},\n +\n +\thover: function( fnOver, fnOut ) {\n +\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n +\t}\n +});\n +\n +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +\n +\t"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +\n +\t"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {\n +\n +\t// Handle event binding\n +\tjQuery.fn[ name ] = function( data, fn ) {\n +\t\tif ( fn == null ) {\n +\t\t\tfn = data;\n +\t\t\tdata = null;\n +\t\t}\n +\n +\t\treturn arguments.length > 0 ?\n +\t\t\tthis.on( name, null, data, fn ) :\n +\t\t\tthis.trigger( name );\n +\t};\n +\n +\tif ( rkeyEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n +\t}\n +\n +\tif ( rmouseEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n +\t}\n +});\n +/*!\r\n + * Sizzle CSS Selector Engine\r\n + * Copyright 2012 jQuery Foundation and other contributors\r\n + * Released under the MIT license\r\n + * http://sizzlejs.com/\r\n + */\r\n +(function( window, undefined ) {\r\n +\r\n +var cachedruns,\r\n +\tassertGetIdNotName,\r\n +\tExpr,\r\n +\tgetText,\r\n +\tisXML,\r\n +\tcontains,\r\n +\tcompile,\r\n +\tsortOrder,\r\n +\thasDuplicate,\r\n +\toutermostContext,\r\n +\r\n +\tbaseHasDuplicate = true,\r\n +\tstrundefined = "undefined",\r\n +\r\n +\texpando = ( "sizcache" + Math.random() ).replace( ".", "" ),\r\n +\r\n +\tToken = String,\r\n +\tdocument = window.document,\r\n +\tdocElem = document.documentElement,\r\n +\tdirruns = 0,\r\n +\tdone = 0,\r\n +\tpop = [].pop,\r\n +\tpush = [].push,\r\n +\tslice = [].slice,\r\n +\t// Use a stripped-down indexOf if a native one is unavailable\r\n +\tindexOf = [].indexOf || function( elem ) {\r\n +\t\tvar i = 0,\r\n +\t\t\tlen = this.length;\r\n +\t\tfor ( ; i < len; i++ ) {\r\n +\t\t\tif ( this[i] === elem ) {\r\n +\t\t\t\treturn i;\r\n +\t\t\t}\r\n +\t\t}\r\n +\t\treturn -1;\r\n +\t},\r\n +\r\n +\t// Augment a function for special use by Sizzle\r\n +\tmarkFunction = function( fn, value ) {\r\n +\t\tfn[ expando ] = value == null || value;\r\n +\t\treturn fn;\r\n +\t},\r\n +\r\n +\tcreateCache = function() {\r\n +\t\tvar cache = {},\r\n +\t\t\tkeys = [];\r\n +\r\n +\t\treturn markFunction(function( key, value ) {\r\n +\t\t\t// Only keep the most recent entries\r\n +\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\r\n +\t\t\t\tdelete cache[ keys.shift() ];\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157)\r\n +\t\t\treturn (cache[ key + " " ] = value);\r\n +\t\t}, cache );\r\n +\t},\r\n +\r\n +\tclassCache = createCache(),\r\n +\ttokenCache = createCache(),\r\n +\tcompilerCache = createCache(),\r\n +\r\n +\t// Regex\r\n +\r\n +\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\r\n +\twhitespace = "[\\\\x20\\\\t\\\\r\\\\n\\\\f]",\r\n +\t// http://www.w3.org/TR/css3-syntax/#characters\r\n +\tcharacterEncoding = "(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+",\r\n +\r\n +\t// Loosely modeled on CSS identifier characters\r\n +\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\r\n +\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n +\tidentifier = characterEncoding.replace( "w", "w#" ),\r\n +\r\n +\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\r\n +\toperators = "([*^$|!~]?=)",\r\n +\tattributes = "\\\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +\r\n +\t\t"*(?:" + operators + whitespace + "*(?:([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(" + identifier + ")|)|)" + whitespace + "*\\\\]",\r\n +\r\n +\t// Prefer arguments not in parens/brackets,\r\n +\t// then attribute selectors and non-pseudos (denoted by :),\r\n +\t// then anything else\r\n +\t// These preferences are here to reduce the number of selectors\r\n +\t// needing tokenize in the PSEUDO preFilter\r\n +\tpseudos = ":(" + characterEncoding + ")(?:\\\\((?:([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\\\\\.)*|.*))\\\\)|)",\r\n +\r\n +\t// For matchExpr.POS and matchExpr.needsContext\r\n +\tpos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(" + whitespace +\r\n +\t\t"*((?:-\\\\d)?\\\\d*)" + whitespace + "*\\\\)|)(?=[^-]|$)",\r\n +\r\n +\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n +\trtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)" + whitespace + "+$", "g" ),\r\n +\r\n +\trcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),\r\n +\trcombinators = new RegExp( "^" + whitespace + "*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])" + whitespace + "*" ),\r\n +\trpseudo = new RegExp( pseudos ),\r\n +\r\n +\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n +\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\r\n +\r\n +\trnot = /^:not/,\r\n +\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\r\n +\trendsWithNot = /:not\\($/,\r\n +\r\n +\trheader = /h\\d/i,\r\n +\trinputs = /input|select|textarea|button/i,\r\n +\r\n +\trbackslash = /\\\\(?!\\\\)/g,\r\n +\r\n +\tmatchExpr = {\r\n +\t\t"ID": new RegExp( "^#(" + characterEncoding + ")" ),\r\n +\t\t"CLASS": new RegExp( "^\\\\.(" + characterEncoding + ")" ),\r\n +\t\t"NAME": new RegExp( "^\\\\[name=[\'\\"]?(" + characterEncoding + ")[\'\\"]?\\\\]" ),\r\n +\t\t"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),\r\n +\t\t"ATTR": new RegExp( "^" + attributes ),\r\n +\t\t"PSEUDO": new RegExp( "^" + pseudos ),\r\n +\t\t"POS": new RegExp( pos, "i" ),\r\n +\t\t"CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\\\(" + whitespace +\r\n +\t\t\t"*(even|odd|(([+-]|)(\\\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +\r\n +\t\t\t"*(\\\\d+)|))" + whitespace + "*\\\\)|)", "i" ),\r\n +\t\t// For use in libraries implementing .is()\r\n +\t\t"needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )\r\n +\t},\r\n +\r\n +\t// Support\r\n +\r\n +\t// Used for testing something on an element\r\n +\tassert = function( fn ) {\r\n +\t\tvar div = document.createElement("div");\r\n +\r\n +\t\ttry {\r\n +\t\t\treturn fn( div );\r\n +\t\t} catch (e) {\r\n +\t\t\treturn false;\r\n +\t\t} finally {\r\n +\t\t\t// release memory in IE\r\n +\t\t\tdiv = null;\r\n +\t\t}\r\n +\t},\r\n +\r\n +\t// Check if getElementsByTagName("*") returns only elements\r\n +\tassertTagNameNoComments = assert(function( div ) {\r\n +\t\tdiv.appendChild( document.createComment("") );\r\n +\t\treturn !div.getElementsByTagName("*").length;\r\n +\t}),\r\n +\r\n +\t// Check if getAttribute returns normalized href attributes\r\n +\tassertHrefNotNormalized = assert(function( div ) {\r\n +\t\tdiv.innerHTML = "<a href=\'#\'></a>";\r\n +\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\r\n +\t\t\tdiv.firstChild.getAttribute("href") === "#";\r\n +\t}),\r\n +\r\n +\t// Check if attributes should be retrieved by attribute nodes\r\n +\tassertAttributes = assert(function( div ) {\r\n +\t\tdiv.innerHTML = "<select></select>";\r\n +\t\tvar type = typeof div.lastChild.getAttribute("multiple");\r\n +\t\t// IE8 returns a string for some attributes even when not present\r\n +\t\treturn type !== "boolean" && type !== "string";\r\n +\t}),\r\n +\r\n +\t// Check if getElementsByClassName can be trusted\r\n +\tassertUsableClassName = assert(function( div ) {\r\n +\t\t// Opera can\'t find a second classname (in 9.6)\r\n +\t\tdiv.innerHTML = "<div class=\'hidden e\'></div><div class=\'hidden\'></div>";\r\n +\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {\r\n +\t\t\treturn false;\r\n +\t\t}\r\n +\r\n +\t\t// Safari 3.2 caches class attributes and doesn\'t catch changes\r\n +\t\tdiv.lastChild.className = "e";\r\n +\t\treturn div.getElementsByClassName("e").length === 2;\r\n +\t}),\r\n +\r\n +\t// Check if getElementById returns elements by name\r\n +\t// Check if getElementsByName privileges form controls or returns elements by ID\r\n +\tassertUsableName = assert(function( div ) {\r\n +\t\t// Inject content\r\n +\t\tdiv.id = expando + 0;\r\n +\t\tdiv.innerHTML = "<a name=\'" + expando + "\'></a><div name=\'" + expando + "\'></div>";\r\n +\t\tdocElem.insertBefore( div, docElem.firstChild );\r\n +\r\n +\t\t// Test\r\n +\t\tvar pass = document.getElementsByName &&\r\n +\t\t\t// buggy browsers will return fewer than the correct 2\r\n +\t\t\tdocument.getElementsByName( expando ).length === 2 +\r\n +\t\t\t// buggy browsers will return more than the correct 0\r\n +\t\t\tdocument.getElementsByName( expando + 0 ).length;\r\n +\t\tassertGetIdNotName = !document.getElementById( expando );\r\n +\r\n +\t\t// Cleanup\r\n +\t\tdocElem.removeChild( div );\r\n +\r\n +\t\treturn pass;\r\n +\t});\r\n +\r\n +// If slice is not available, provide a backup\r\n +try {\r\n +\tslice.call( docElem.childNodes, 0 )[0].nodeType;\r\n +} catch ( e ) {\r\n +\tslice = function( i ) {\r\n +\t\tvar elem,\r\n +\t\t\tresults = [];\r\n +\t\tfor ( ; (elem = this[i]); i++ ) {\r\n +\t\t\tresults.push( elem );\r\n +\t\t}\r\n +\t\treturn results;\r\n +\t};\r\n +}\r\n +\r\n +function Sizzle( selector, context, results, seed ) {\r\n +\tresults = results || [];\r\n +\tcontext = context || document;\r\n +\tvar match, elem, xml, m,\r\n +\t\tnodeType = context.nodeType;\r\n +\r\n +\tif ( !selector || typeof selector !== "string" ) {\r\n +\t\treturn results;\r\n +\t}\r\n +\r\n +\tif ( nodeType !== 1 && nodeType !== 9 ) {\r\n +\t\treturn [];\r\n +\t}\r\n +\r\n +\txml = isXML( context );\r\n +\r\n +\tif ( !xml && !seed ) {\r\n +\t\tif ( (match = rquickExpr.exec( selector )) ) {\r\n +\t\t\t// Speed-up: Sizzle("#ID")\r\n +\t\t\tif ( (m = match[1]) ) {\r\n +\t\t\t\tif ( nodeType === 9 ) {\r\n +\t\t\t\t\telem = context.getElementById( m );\r\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\r\n +\t\t\t\t\t// nodes that are no longer in the document #6963\r\n +\t\t\t\t\tif ( elem && elem.parentNode ) {\r\n +\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\r\n +\t\t\t\t\t\t// by name instead of ID\r\n +\t\t\t\t\t\tif ( elem.id === m ) {\r\n +\t\t\t\t\t\t\tresults.push( elem );\r\n +\t\t\t\t\t\t\treturn results;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t} else {\r\n +\t\t\t\t\t\treturn results;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t} else {\r\n +\t\t\t\t\t// Context is not a document\r\n +\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\r\n +\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\r\n +\t\t\t\t\t\tresults.push( elem );\r\n +\t\t\t\t\t\treturn results;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t// Speed-up: Sizzle("TAG")\r\n +\t\t\t} else if ( match[2] ) {\r\n +\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\r\n +\t\t\t\treturn results;\r\n +\r\n +\t\t\t// Speed-up: Sizzle(".CLASS")\r\n +\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\r\n +\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\r\n +\t\t\t\treturn results;\r\n +\t\t\t}\r\n +\t\t}\r\n +\t}\r\n +\r\n +\t// All others\r\n +\treturn select( selector.replace( rtrim, "$1" ), context, results, seed, xml );\r\n +}\r\n +\r\n +Sizzle.matches = function( expr, elements ) {\r\n +\treturn Sizzle( expr, null, null, elements );\r\n +};\r\n +\r\n +Sizzle.matchesSelector = function( elem, expr ) {\r\n +\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\r\n +};\r\n +\r\n +// Returns a function to use in pseudos for input types\r\n +function createInputPseudo( type ) {\r\n +\treturn function( elem ) {\r\n +\t\tvar name = elem.nodeName.toLowerCase();\r\n +\t\treturn name === "input" && elem.type === type;\r\n +\t};\r\n +}\r\n +\r\n +// Returns a function to use in pseudos for buttons\r\n +function createButtonPseudo( type ) {\r\n +\treturn function( elem ) {\r\n +\t\tvar name = elem.nodeName.toLowerCase();\r\n +\t\treturn (name === "input" || name === "button") && elem.type === type;\r\n +\t};\r\n +}\r\n +\r\n +// Returns a function to use in pseudos for positionals\r\n +function createPositionalPseudo( fn ) {\r\n +\treturn markFunction(function( argument ) {\r\n +\t\targument = +argument;\r\n +\t\treturn markFunction(function( seed, matches ) {\r\n +\t\t\tvar j,\r\n +\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n +\t\t\t\ti = matchIndexes.length;\r\n +\r\n +\t\t\t// Match elements found at the specified indexes\r\n +\t\t\twhile ( i-- ) {\r\n +\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n +\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t});\r\n +\t});\r\n +}\r\n +\r\n +/**\r\n + * Utility function for retrieving the text value of an array of DOM nodes\r\n + * @param {Array|Element} elem\r\n + */\r\n +getText = Sizzle.getText = function( elem ) {\r\n +\tvar node,\r\n +\t\tret = "",\r\n +\t\ti = 0,\r\n +\t\tnodeType = elem.nodeType;\r\n +\r\n +\tif ( nodeType ) {\r\n +\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n +\t\t\t// Use textContent for elements\r\n +\t\t\t// innerText usage removed for consistency of new lines (see #11153)\r\n +\t\t\tif ( typeof elem.textContent === "string" ) {\r\n +\t\t\t\treturn elem.textContent;\r\n +\t\t\t} else {\r\n +\t\t\t\t// Traverse its children\r\n +\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n +\t\t\t\t\tret += getText( elem );\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n +\t\t\treturn elem.nodeValue;\r\n +\t\t}\r\n +\t\t// Do not include comment or processing instruction nodes\r\n +\t} else {\r\n +\r\n +\t\t// If no nodeType, this is expected to be an array\r\n +\t\tfor ( ; (node = elem[i]); i++ ) {\r\n +\t\t\t// Do not traverse comment nodes\r\n +\t\t\tret += getText( node );\r\n +\t\t}\r\n +\t}\r\n +\treturn ret;\r\n +};\r\n +\r\n +isXML = Sizzle.isXML = function( elem ) {\r\n +\t// documentElement is verified for cases where it doesn\'t yet exist\r\n +\t// (such as loading iframes in IE - #4833)\r\n +\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n +\treturn documentElement ? documentElement.nodeName !== "HTML" : false;\r\n +};\r\n +\r\n +// Element contains another\r\n +contains = Sizzle.contains = docElem.contains ?\r\n +\tfunction( a, b ) {\r\n +\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n +\t\t\tbup = b && b.parentNode;\r\n +\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\r\n +\t} :\r\n +\tdocElem.compareDocumentPosition ?\r\n +\tfunction( a, b ) {\r\n +\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\r\n +\t} :\r\n +\tfunction( a, b ) {\r\n +\t\twhile ( (b = b.parentNode) ) {\r\n +\t\t\tif ( b === a ) {\r\n +\t\t\t\treturn true;\r\n +\t\t\t}\r\n +\t\t}\r\n +\t\treturn false;\r\n +\t};\r\n +\r\n +Sizzle.attr = function( elem, name ) {\r\n +\tvar val,\r\n +\t\txml = isXML( elem );\r\n +\r\n +\tif ( !xml ) {\r\n +\t\tname = name.toLowerCase();\r\n +\t}\r\n +\tif ( (val = Expr.attrHandle[ name ]) ) {\r\n +\t\treturn val( elem );\r\n +\t}\r\n +\tif ( xml || assertAttributes ) {\r\n +\t\treturn elem.getAttribute( name );\r\n +\t}\r\n +\tval = elem.getAttributeNode( name );\r\n +\treturn val ?\r\n +\t\ttypeof elem[ name ] === "boolean" ?\r\n +\t\t\telem[ name ] ? name : null :\r\n +\t\t\tval.specified ? val.value : null :\r\n +\t\tnull;\r\n +};\r\n +\r\n +Expr = Sizzle.selectors = {\r\n +\r\n +\t// Can be adjusted by the user\r\n +\tcacheLength: 50,\r\n +\r\n +\tcreatePseudo: markFunction,\r\n +\r\n +\tmatch: matchExpr,\r\n +\r\n +\t// IE6/7 return a modified href\r\n +\tattrHandle: assertHrefNotNormalized ?\r\n +\t\t{} :\r\n +\t\t{\r\n +\t\t\t"href": function( elem ) {\r\n +\t\t\t\treturn elem.getAttribute( "href", 2 );\r\n +\t\t\t},\r\n +\t\t\t"type": function( elem ) {\r\n +\t\t\t\treturn elem.getAttribute("type");\r\n +\t\t\t}\r\n +\t\t},\r\n +\r\n +\tfind: {\r\n +\t\t"ID": assertGetIdNotName ?\r\n +\t\t\tfunction( id, context, xml ) {\r\n +\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\r\n +\t\t\t\t\tvar m = context.getElementById( id );\r\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\r\n +\t\t\t\t\t// nodes that are no longer in the document #6963\r\n +\t\t\t\t\treturn m && m.parentNode ? [m] : [];\r\n +\t\t\t\t}\r\n +\t\t\t} :\r\n +\t\t\tfunction( id, context, xml ) {\r\n +\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\r\n +\t\t\t\t\tvar m = context.getElementById( id );\r\n +\r\n +\t\t\t\t\treturn m ?\r\n +\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?\r\n +\t\t\t\t\t\t\t[m] :\r\n +\t\t\t\t\t\t\tundefined :\r\n +\t\t\t\t\t\t[];\r\n +\t\t\t\t}\r\n +\t\t\t},\r\n +\r\n +\t\t"TAG": assertTagNameNoComments ?\r\n +\t\t\tfunction( tag, context ) {\r\n +\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\r\n +\t\t\t\t\treturn context.getElementsByTagName( tag );\r\n +\t\t\t\t}\r\n +\t\t\t} :\r\n +\t\t\tfunction( tag, context ) {\r\n +\t\t\t\tvar results = context.getElementsByTagName( tag );\r\n +\r\n +\t\t\t\t// Filter out possible comments\r\n +\t\t\t\tif ( tag === "*" ) {\r\n +\t\t\t\t\tvar elem,\r\n +\t\t\t\t\t\ttmp = [],\r\n +\t\t\t\t\t\ti = 0;\r\n +\r\n +\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\r\n +\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n +\t\t\t\t\t\t\ttmp.push( elem );\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\treturn tmp;\r\n +\t\t\t\t}\r\n +\t\t\t\treturn results;\r\n +\t\t\t},\r\n +\r\n +\t\t"NAME": assertUsableName && function( tag, context ) {\r\n +\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\r\n +\t\t\t\treturn context.getElementsByName( name );\r\n +\t\t\t}\r\n +\t\t},\r\n +\r\n +\t\t"CLASS": assertUsableClassName && function( className, context, xml ) {\r\n +\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\r\n +\t\t\t\treturn context.getElementsByClassName( className );\r\n +\t\t\t}\r\n +\t\t}\r\n +\t},\r\n +\r\n +\trelative: {\r\n +\t\t">": { dir: "parentNode", first: true },\r\n +\t\t" ": { dir: "parentNode" },\r\n +\t\t"+": { dir: "previousSibling", first: true },\r\n +\t\t"~": { dir: "previousSibling" }\r\n +\t},\r\n +\r\n +\tpreFilter: {\r\n +\t\t"ATTR": function( match ) {\r\n +\t\t\tmatch[1] = match[1].replace( rbackslash, "" );\r\n +\r\n +\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n +\t\t\tmatch[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );\r\n +\r\n +\t\t\tif ( match[2] === "~=" ) {\r\n +\t\t\t\tmatch[3] = " " + match[3] + " ";\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn match.slice( 0, 4 );\r\n +\t\t},\r\n +\r\n +\t\t"CHILD": function( match ) {\r\n +\t\t\t/* matches from matchExpr["CHILD"]\r\n +\t\t\t\t1 type (only|nth|...)\r\n +\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n +\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\r\n +\t\t\t\t4 sign of xn-component\r\n +\t\t\t\t5 x of xn-component\r\n +\t\t\t\t6 sign of y-component\r\n +\t\t\t\t7 y of y-component\r\n +\t\t\t*/\r\n +\t\t\tmatch[1] = match[1].toLowerCase();\r\n +\r\n +\t\t\tif ( match[1] === "nth" ) {\r\n +\t\t\t\t// nth-child requires argument\r\n +\t\t\t\tif ( !match[2] ) {\r\n +\t\t\t\t\tSizzle.error( match[0] );\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n +\t\t\t\t// remember that false/true cast respectively to 0/1\r\n +\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );\r\n +\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );\r\n +\r\n +\t\t\t// other types prohibit arguments\r\n +\t\t\t} else if ( match[2] ) {\r\n +\t\t\t\tSizzle.error( match[0] );\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn match;\r\n +\t\t},\r\n +\r\n +\t\t"PSEUDO": function( match ) {\r\n +\t\t\tvar unquoted, excess;\r\n +\t\t\tif ( matchExpr["CHILD"].test( match[0] ) ) {\r\n +\t\t\t\treturn null;\r\n +\t\t\t}\r\n +\r\n +\t\t\tif ( match[3] ) {\r\n +\t\t\t\tmatch[2] = match[3];\r\n +\t\t\t} else if ( (unquoted = match[4]) ) {\r\n +\t\t\t\t// Only check arguments that contain a pseudo\r\n +\t\t\t\tif ( rpseudo.test(unquoted) &&\r\n +\t\t\t\t\t// Get excess from tokenize (recursively)\r\n +\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n +\t\t\t\t\t// advance to the next closing parenthesis\r\n +\t\t\t\t\t(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {\r\n +\r\n +\t\t\t\t\t// excess is a negative index\r\n +\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\r\n +\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n +\t\t\t\t}\r\n +\t\t\t\tmatch[2] = unquoted;\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n +\t\t\treturn match.slice( 0, 3 );\r\n +\t\t}\r\n +\t},\r\n +\r\n +\tfilter: {\r\n +\t\t"ID": assertGetIdNotName ?\r\n +\t\t\tfunction( id ) {\r\n +\t\t\t\tid = id.replace( rbackslash, "" );\r\n +\t\t\t\treturn function( elem ) {\r\n +\t\t\t\t\treturn elem.getAttribute("id") === id;\r\n +\t\t\t\t};\r\n +\t\t\t} :\r\n +\t\t\tfunction( id ) {\r\n +\t\t\t\tid = id.replace( rbackslash, "" );\r\n +\t\t\t\treturn function( elem ) {\r\n +\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");\r\n +\t\t\t\t\treturn node && node.value === id;\r\n +\t\t\t\t};\r\n +\t\t\t},\r\n +\r\n +\t\t"TAG": function( nodeName ) {\r\n +\t\t\tif ( nodeName === "*" ) {\r\n +\t\t\t\treturn function() { return true; };\r\n +\t\t\t}\r\n +\t\t\tnodeName = nodeName.replace( rbackslash, "" ).toLowerCase();\r\n +\r\n +\t\t\treturn function( elem ) {\r\n +\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n +\t\t\t};\r\n +\t\t},\r\n +\r\n +\t\t"CLASS": function( className ) {\r\n +\t\t\tvar pattern = classCache[ expando ][ className + " " ];\r\n +\r\n +\t\t\treturn pattern ||\r\n +\t\t\t\t(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&\r\n +\t\t\t\tclassCache( className, function( elem ) {\r\n +\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );\r\n +\t\t\t\t});\r\n +\t\t},\r\n +\r\n +\t\t"ATTR": function( name, operator, check ) {\r\n +\t\t\treturn function( elem, context ) {\r\n +\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n +\r\n +\t\t\t\tif ( result == null ) {\r\n +\t\t\t\t\treturn operator === "!=";\r\n +\t\t\t\t}\r\n +\t\t\t\tif ( !operator ) {\r\n +\t\t\t\t\treturn true;\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\tresult += "";\r\n +\r\n +\t\t\t\treturn operator === "=" ? result === check :\r\n +\t\t\t\t\toperator === "!=" ? result !== check :\r\n +\t\t\t\t\toperator === "^=" ? check && result.indexOf( check ) === 0 :\r\n +\t\t\t\t\toperator === "*=" ? check && result.indexOf( check ) > -1 :\r\n +\t\t\t\t\toperator === "$=" ? check && result.substr( result.length - check.length ) === check :\r\n +\t\t\t\t\toperator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :\r\n +\t\t\t\t\toperator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :\r\n +\t\t\t\t\tfalse;\r\n +\t\t\t};\r\n +\t\t},\r\n +\r\n +\t\t"CHILD": function( type, argument, first, last ) {\r\n +\r\n +\t\t\tif ( type === "nth" ) {\r\n +\t\t\t\treturn function( elem ) {\r\n +\t\t\t\t\tvar node, diff,\r\n +\t\t\t\t\t\tparent = elem.parentNode;\r\n +\r\n +\t\t\t\t\tif ( first === 1 && last === 0 ) {\r\n +\t\t\t\t\t\treturn true;\r\n +\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\tif ( parent ) {\r\n +\t\t\t\t\t\tdiff = 0;\r\n +\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\r\n +\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\r\n +\t\t\t\t\t\t\t\tdiff++;\r\n +\t\t\t\t\t\t\t\tif ( elem === node ) {\r\n +\t\t\t\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\r\n +\t\t\t\t\tdiff -= last;\r\n +\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n +\t\t\t\t};\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn function( elem ) {\r\n +\t\t\t\tvar node = elem;\r\n +\r\n +\t\t\t\tswitch ( type ) {\r\n +\t\t\t\t\tcase "only":\r\n +\t\t\t\t\tcase "first":\r\n +\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\r\n +\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\r\n +\t\t\t\t\t\t\t\treturn false;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t\tif ( type === "first" ) {\r\n +\t\t\t\t\t\t\treturn true;\r\n +\t\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t\tnode = elem;\r\n +\r\n +\t\t\t\t\t\t/* falls through */\r\n +\t\t\t\t\tcase "last":\r\n +\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\r\n +\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\r\n +\t\t\t\t\t\t\t\treturn false;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t\treturn true;\r\n +\t\t\t\t}\r\n +\t\t\t};\r\n +\t\t},\r\n +\r\n +\t\t"PSEUDO": function( pseudo, argument ) {\r\n +\t\t\t// pseudo-class names are case-insensitive\r\n +\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n +\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n +\t\t\t// Remember that setFilters inherits from pseudos\r\n +\t\t\tvar args,\r\n +\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n +\t\t\t\t\tSizzle.error( "unsupported pseudo: " + pseudo );\r\n +\r\n +\t\t\t// The user may use createPseudo to indicate that\r\n +\t\t\t// arguments are needed to create the filter function\r\n +\t\t\t// just as Sizzle does\r\n +\t\t\tif ( fn[ expando ] ) {\r\n +\t\t\t\treturn fn( argument );\r\n +\t\t\t}\r\n +\r\n +\t\t\t// But maintain support for old signatures\r\n +\t\t\tif ( fn.length > 1 ) {\r\n +\t\t\t\targs = [ pseudo, pseudo, "", argument ];\r\n +\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n +\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n +\t\t\t\t\t\tvar idx,\r\n +\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n +\t\t\t\t\t\t\ti = matched.length;\r\n +\t\t\t\t\t\twhile ( i-- ) {\r\n +\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\r\n +\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}) :\r\n +\t\t\t\t\tfunction( elem ) {\r\n +\t\t\t\t\t\treturn fn( elem, 0, args );\r\n +\t\t\t\t\t};\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn fn;\r\n +\t\t}\r\n +\t},\r\n +\r\n +\tpseudos: {\r\n +\t\t"not": markFunction(function( selector ) {\r\n +\t\t\t// Trim the selector passed to compile\r\n +\t\t\t// to avoid treating leading and trailing\r\n +\t\t\t// spaces as combinators\r\n +\t\t\tvar input = [],\r\n +\t\t\t\tresults = [],\r\n +\t\t\t\tmatcher = compile( selector.replace( rtrim, "$1" ) );\r\n +\r\n +\t\t\treturn matcher[ expando ] ?\r\n +\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n +\t\t\t\t\tvar elem,\r\n +\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n +\t\t\t\t\t\ti = seed.length;\r\n +\r\n +\t\t\t\t\t// Match elements unmatched by `matcher`\r\n +\t\t\t\t\twhile ( i-- ) {\r\n +\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n +\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}) :\r\n +\t\t\t\tfunction( elem, context, xml ) {\r\n +\t\t\t\t\tinput[0] = elem;\r\n +\t\t\t\t\tmatcher( input, null, xml, results );\r\n +\t\t\t\t\treturn !results.pop();\r\n +\t\t\t\t};\r\n +\t\t}),\r\n +\r\n +\t\t"has": markFunction(function( selector ) {\r\n +\t\t\treturn function( elem ) {\r\n +\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n +\t\t\t};\r\n +\t\t}),\r\n +\r\n +\t\t"contains": markFunction(function( text ) {\r\n +\t\t\treturn function( elem ) {\r\n +\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n +\t\t\t};\r\n +\t\t}),\r\n +\r\n +\t\t"enabled": function( elem ) {\r\n +\t\t\treturn elem.disabled === false;\r\n +\t\t},\r\n +\r\n +\t\t"disabled": function( elem ) {\r\n +\t\t\treturn elem.disabled === true;\r\n +\t\t},\r\n +\r\n +\t\t"checked": function( elem ) {\r\n +\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n +\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n +\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n +\t\t\treturn (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);\r\n +\t\t},\r\n +\r\n +\t\t"selected": function( elem ) {\r\n +\t\t\t// Accessing this property makes selected-by-default\r\n +\t\t\t// options in Safari work properly\r\n +\t\t\tif ( elem.parentNode ) {\r\n +\t\t\t\telem.parentNode.selectedIndex;\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn elem.selected === true;\r\n +\t\t},\r\n +\r\n +\t\t"parent": function( elem ) {\r\n +\t\t\treturn !Expr.pseudos["empty"]( elem );\r\n +\t\t},\r\n +\r\n +\t\t"empty": function( elem ) {\r\n +\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n +\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\r\n +\t\t\t// not comment, processing instructions, or others\r\n +\t\t\t// Thanks to Diego Perini for the nodeName shortcut\r\n +\t\t\t// Greater than "@" means alpha characters (specifically not starting with "#" or "?")\r\n +\t\t\tvar nodeType;\r\n +\t\t\telem = elem.firstChild;\r\n +\t\t\twhile ( elem ) {\r\n +\t\t\t\tif ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\r\n +\t\t\t\t\treturn false;\r\n +\t\t\t\t}\r\n +\t\t\t\telem = elem.nextSibling;\r\n +\t\t\t}\r\n +\t\t\treturn true;\r\n +\t\t},\r\n +\r\n +\t\t"header": function( elem ) {\r\n +\t\t\treturn rheader.test( elem.nodeName );\r\n +\t\t},\r\n +\r\n +\t\t"text": function( elem ) {\r\n +\t\t\tvar type, attr;\r\n +\t\t\t// IE6 and 7 will map elem.type to \'text\' for new HTML5 types (search, etc)\r\n +\t\t\t// use getAttribute instead to test this case\r\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" &&\r\n +\t\t\t\t(type = elem.type) === "text" &&\r\n +\t\t\t\t( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );\r\n +\t\t},\r\n +\r\n +\t\t// Input types\r\n +\t\t"radio": createInputPseudo("radio"),\r\n +\t\t"checkbox": createInputPseudo("checkbox"),\r\n +\t\t"file": createInputPseudo("file"),\r\n +\t\t"password": createInputPseudo("password"),\r\n +\t\t"image": createInputPseudo("image"),\r\n +\r\n +\t\t"submit": createButtonPseudo("submit"),\r\n +\t\t"reset": createButtonPseudo("reset"),\r\n +\r\n +\t\t"button": function( elem ) {\r\n +\t\t\tvar name = elem.nodeName.toLowerCase();\r\n +\t\t\treturn name === "input" && elem.type === "button" || name === "button";\r\n +\t\t},\r\n +\r\n +\t\t"input": function( elem ) {\r\n +\t\t\treturn rinputs.test( elem.nodeName );\r\n +\t\t},\r\n +\r\n +\t\t"focus": function( elem ) {\r\n +\t\t\tvar doc = elem.ownerDocument;\r\n +\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n +\t\t},\r\n +\r\n +\t\t"active": function( elem ) {\r\n +\t\t\treturn elem === elem.ownerDocument.activeElement;\r\n +\t\t},\r\n +\r\n +\t\t// Positional types\r\n +\t\t"first": createPositionalPseudo(function() {\r\n +\t\t\treturn [ 0 ];\r\n +\t\t}),\r\n +\r\n +\t\t"last": createPositionalPseudo(function( matchIndexes, length ) {\r\n +\t\t\treturn [ length - 1 ];\r\n +\t\t}),\r\n +\r\n +\t\t"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n +\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n +\t\t}),\r\n +\r\n +\t\t"even": createPositionalPseudo(function( matchIndexes, length ) {\r\n +\t\t\tfor ( var i = 0; i < length; i += 2 ) {\r\n +\t\t\t\tmatchIndexes.push( i );\r\n +\t\t\t}\r\n +\t\t\treturn matchIndexes;\r\n +\t\t}),\r\n +\r\n +\t\t"odd": createPositionalPseudo(function( matchIndexes, length ) {\r\n +\t\t\tfor ( var i = 1; i < length; i += 2 ) {\r\n +\t\t\t\tmatchIndexes.push( i );\r\n +\t\t\t}\r\n +\t\t\treturn matchIndexes;\r\n +\t\t}),\r\n +\r\n +\t\t"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n +\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\r\n +\t\t\t\tmatchIndexes.push( i );\r\n +\t\t\t}\r\n +\t\t\treturn matchIndexes;\r\n +\t\t}),\r\n +\r\n +\t\t"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n +\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\r\n +\t\t\t\tmatchIndexes.push( i );\r\n +\t\t\t}\r\n +\t\t\treturn matchIndexes;\r\n +\t\t})\r\n +\t}\r\n +};\r\n +\r\n +function siblingCheck( a, b, ret ) {\r\n +\tif ( a === b ) {\r\n +\t\treturn ret;\r\n +\t}\r\n +\r\n +\tvar cur = a.nextSibling;\r\n +\r\n +\twhile ( cur ) {\r\n +\t\tif ( cur === b ) {\r\n +\t\t\treturn -1;\r\n +\t\t}\r\n +\r\n +\t\tcur = cur.nextSibling;\r\n +\t}\r\n +\r\n +\treturn 1;\r\n +}\r\n +\r\n +sortOrder = docElem.compareDocumentPosition ?\r\n +\tfunction( a, b ) {\r\n +\t\tif ( a === b ) {\r\n +\t\t\thasDuplicate = true;\r\n +\t\t\treturn 0;\r\n +\t\t}\r\n +\r\n +\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\r\n +\t\t\ta.compareDocumentPosition :\r\n +\t\t\ta.compareDocumentPosition(b) & 4\r\n +\t\t) ? -1 : 1;\r\n +\t} :\r\n +\tfunction( a, b ) {\r\n +\t\t// The nodes are identical, we can exit early\r\n +\t\tif ( a === b ) {\r\n +\t\t\thasDuplicate = true;\r\n +\t\t\treturn 0;\r\n +\r\n +\t\t// Fallback to using sourceIndex (in IE) if it\'s available on both nodes\r\n +\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\r\n +\t\t\treturn a.sourceIndex - b.sourceIndex;\r\n +\t\t}\r\n +\r\n +\t\tvar al, bl,\r\n +\t\t\tap = [],\r\n +\t\t\tbp = [],\r\n +\t\t\taup = a.parentNode,\r\n +\t\t\tbup = b.parentNode,\r\n +\t\t\tcur = aup;\r\n +\r\n +\t\t// If the nodes are siblings (or identical) we can do a quick check\r\n +\t\tif ( aup === bup ) {\r\n +\t\t\treturn siblingCheck( a, b );\r\n +\r\n +\t\t// If no parents were found then the nodes are disconnected\r\n +\t\t} else if ( !aup ) {\r\n +\t\t\treturn -1;\r\n +\r\n +\t\t} else if ( !bup ) {\r\n +\t\t\treturn 1;\r\n +\t\t}\r\n +\r\n +\t\t// Otherwise they\'re somewhere else in the tree so we need\r\n +\t\t// to build up a full list of the parentNodes for comparison\r\n +\t\twhile ( cur ) {\r\n +\t\t\tap.unshift( cur );\r\n +\t\t\tcur = cur.parentNode;\r\n +\t\t}\r\n +\r\n +\t\tcur = bup;\r\n +\r\n +\t\twhile ( cur ) {\r\n +\t\t\tbp.unshift( cur );\r\n +\t\t\tcur = cur.parentNode;\r\n +\t\t}\r\n +\r\n +\t\tal = ap.length;\r\n +\t\tbl = bp.length;\r\n +\r\n +\t\t// Start walking down the tree looking for a discrepancy\r\n +\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\r\n +\t\t\tif ( ap[i] !== bp[i] ) {\r\n +\t\t\t\treturn siblingCheck( ap[i], bp[i] );\r\n +\t\t\t}\r\n +\t\t}\r\n +\r\n +\t\t// We ended someplace up the tree so do a sibling check\r\n +\t\treturn i === al ?\r\n +\t\t\tsiblingCheck( a, bp[i], -1 ) :\r\n +\t\t\tsiblingCheck( ap[i], b, 1 );\r\n +\t};\r\n +\r\n +// Always assume the presence of duplicates if sort doesn\'t\r\n +// pass them to our comparison function (as in Google Chrome).\r\n +[0, 0].sort( sortOrder );\r\n +baseHasDuplicate = !hasDuplicate;\r\n +\r\n +// Document sorting and removing duplicates\r\n +Sizzle.uniqueSort = function( results ) {\r\n +\tvar elem,\r\n +\t\tduplicates = [],\r\n +\t\ti = 1,\r\n +\t\tj = 0;\r\n +\r\n +\thasDuplicate = baseHasDuplicate;\r\n +\tresults.sort( sortOrder );\r\n +\r\n +\tif ( hasDuplicate ) {\r\n +\t\tfor ( ; (elem = results[i]); i++ ) {\r\n +\t\t\tif ( elem === results[ i - 1 ] ) {\r\n +\t\t\t\tj = duplicates.push( i );\r\n +\t\t\t}\r\n +\t\t}\r\n +\t\twhile ( j-- ) {\r\n +\t\t\tresults.splice( duplicates[ j ], 1 );\r\n +\t\t}\r\n +\t}\r\n +\r\n +\treturn results;\r\n +};\r\n +\r\n +Sizzle.error = function( msg ) {\r\n +\tthrow new Error( "Syntax error, unrecognized expression: " + msg );\r\n +};\r\n +\r\n +function tokenize( selector, parseOnly ) {\r\n +\tvar matched, match, tokens, type,\r\n +\t\tsoFar, groups, preFilters,\r\n +\t\tcached = tokenCache[ expando ][ selector + " " ];\r\n +\r\n +\tif ( cached ) {\r\n +\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n +\t}\r\n +\r\n +\tsoFar = selector;\r\n +\tgroups = [];\r\n +\tpreFilters = Expr.preFilter;\r\n +\r\n +\twhile ( soFar ) {\r\n +\r\n +\t\t// Comma and first run\r\n +\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n +\t\t\tif ( match ) {\r\n +\t\t\t\t// Don\'t consume trailing commas as valid\r\n +\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n +\t\t\t}\r\n +\t\t\tgroups.push( tokens = [] );\r\n +\t\t}\r\n +\r\n +\t\tmatched = false;\r\n +\r\n +\t\t// Combinators\r\n +\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n +\t\t\ttokens.push( matched = new Token( match.shift() ) );\r\n +\t\t\tsoFar = soFar.slice( matched.length );\r\n +\r\n +\t\t\t// Cast descendant combinators to space\r\n +\t\t\tmatched.type = match[0].replace( rtrim, " " );\r\n +\t\t}\r\n +\r\n +\t\t// Filters\r\n +\t\tfor ( type in Expr.filter ) {\r\n +\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n +\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n +\r\n +\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\r\n +\t\t\t\tsoFar = soFar.slice( matched.length );\r\n +\t\t\t\tmatched.type = type;\r\n +\t\t\t\tmatched.matches = match;\r\n +\t\t\t}\r\n +\t\t}\r\n +\r\n +\t\tif ( !matched ) {\r\n +\t\t\tbreak;\r\n +\t\t}\r\n +\t}\r\n +\r\n +\t// Return the length of the invalid excess\r\n +\t// if we\'re just parsing\r\n +\t// Otherwise, throw an error or return tokens\r\n +\treturn parseOnly ?\r\n +\t\tsoFar.length :\r\n +\t\tsoFar ?\r\n +\t\t\tSizzle.error( selector ) :\r\n +\t\t\t// Cache the tokens\r\n +\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n +}\r\n +\r\n +function addCombinator( matcher, combinator, base ) {\r\n +\tvar dir = combinator.dir,\r\n +\t\tcheckNonElements = base && combinator.dir === "parentNode",\r\n +\t\tdoneName = done++;\r\n +\r\n +\treturn combinator.first ?\r\n +\t\t// Check against closest ancestor/preceding element\r\n +\t\tfunction( elem, context, xml ) {\r\n +\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n +\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\r\n +\t\t\t\t\treturn matcher( elem, context, xml );\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t} :\r\n +\r\n +\t\t// Check against all ancestor/preceding elements\r\n +\t\tfunction( elem, context, xml ) {\r\n +\t\t\t// We can\'t set arbitrary data on XML nodes, so they don\'t benefit from dir caching\r\n +\t\t\tif ( !xml ) {\r\n +\t\t\t\tvar cache,\r\n +\t\t\t\t\tdirkey = dirruns + " " + doneName + " ",\r\n +\t\t\t\t\tcachedkey = dirkey + cachedruns;\r\n +\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n +\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\r\n +\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\r\n +\t\t\t\t\t\t\treturn elem.sizset;\r\n +\t\t\t\t\t\t} else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {\r\n +\t\t\t\t\t\t\tif ( elem.sizset ) {\r\n +\t\t\t\t\t\t\t\treturn elem;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\telem[ expando ] = cachedkey;\r\n +\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n +\t\t\t\t\t\t\t\telem.sizset = true;\r\n +\t\t\t\t\t\t\t\treturn elem;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\telem.sizset = false;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t} else {\r\n +\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n +\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\r\n +\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n +\t\t\t\t\t\t\treturn elem;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t};\r\n +}\r\n +\r\n +function elementMatcher( matchers ) {\r\n +\treturn matchers.length > 1 ?\r\n +\t\tfunction( elem, context, xml ) {\r\n +\t\t\tvar i = matchers.length;\r\n +\t\t\twhile ( i-- ) {\r\n +\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n +\t\t\t\t\treturn false;\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t\treturn true;\r\n +\t\t} :\r\n +\t\tmatchers[0];\r\n +}\r\n +\r\n +function condense( unmatched, map, filter, context, xml ) {\r\n +\tvar elem,\r\n +\t\tnewUnmatched = [],\r\n +\t\ti = 0,\r\n +\t\tlen = unmatched.length,\r\n +\t\tmapped = map != null;\r\n +\r\n +\tfor ( ; i < len; i++ ) {\r\n +\t\tif ( (elem = unmatched[i]) ) {\r\n +\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n +\t\t\t\tnewUnmatched.push( elem );\r\n +\t\t\t\tif ( mapped ) {\r\n +\t\t\t\t\tmap.push( i );\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t}\r\n +\t}\r\n +\r\n +\treturn newUnmatched;\r\n +}\r\n +\r\n +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n +\tif ( postFilter && !postFilter[ expando ] ) {\r\n +\t\tpostFilter = setMatcher( postFilter );\r\n +\t}\r\n +\tif ( postFinder && !postFinder[ expando ] ) {\r\n +\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n +\t}\r\n +\treturn markFunction(function( seed, results, context, xml ) {\r\n +\t\tvar temp, i, elem,\r\n +\t\t\tpreMap = [],\r\n +\t\t\tpostMap = [],\r\n +\t\t\tpreexisting = results.length,\r\n +\r\n +\t\t\t// Get initial elements from seed or context\r\n +\t\t\telems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),\r\n +\r\n +\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n +\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n +\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n +\t\t\t\telems,\r\n +\r\n +\t\t\tmatcherOut = matcher ?\r\n +\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n +\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n +\r\n +\t\t\t\t\t// ...intermediate processing is necessary\r\n +\t\t\t\t\t[] :\r\n +\r\n +\t\t\t\t\t// ...otherwise use results directly\r\n +\t\t\t\t\tresults :\r\n +\t\t\t\tmatcherIn;\r\n +\r\n +\t\t// Find primary matches\r\n +\t\t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +if ( matcher ) {\r\n +\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n +\t\t}\r\n +\r\n +\t\t// Apply postFilter\r\n +\t\tif ( postFilter ) {\r\n +\t\t\ttemp = condense( matcherOut, postMap );\r\n +\t\t\tpostFilter( temp, [], context, xml );\r\n +\r\n +\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n +\t\t\ti = temp.length;\r\n +\t\t\twhile ( i-- ) {\r\n +\t\t\t\tif ( (elem = temp[i]) ) {\r\n +\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t}\r\n +\r\n +\t\tif ( seed ) {\r\n +\t\t\tif ( postFinder || preFilter ) {\r\n +\t\t\t\tif ( postFinder ) {\r\n +\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n +\t\t\t\t\ttemp = [];\r\n +\t\t\t\t\ti = matcherOut.length;\r\n +\t\t\t\t\twhile ( i-- ) {\r\n +\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n +\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n +\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n +\t\t\t\ti = matcherOut.length;\r\n +\t\t\t\twhile ( i-- ) {\r\n +\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n +\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\r\n +\r\n +\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\r\n +\t\t// Add elements to results, through postFinder if defined\r\n +\t\t} else {\r\n +\t\t\tmatcherOut = condense(\r\n +\t\t\t\tmatcherOut === results ?\r\n +\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n +\t\t\t\t\tmatcherOut\r\n +\t\t\t);\r\n +\t\t\tif ( postFinder ) {\r\n +\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n +\t\t\t} else {\r\n +\t\t\t\tpush.apply( results, matcherOut );\r\n +\t\t\t}\r\n +\t\t}\r\n +\t});\r\n +}\r\n +\r\n +function matcherFromTokens( tokens ) {\r\n +\tvar checkContext, matcher, j,\r\n +\t\tlen = tokens.length,\r\n +\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n +\t\timplicitRelative = leadingRelative || Expr.relative[" "],\r\n +\t\ti = leadingRelative ? 1 : 0,\r\n +\r\n +\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n +\t\tmatchContext = addCombinator( function( elem ) {\r\n +\t\t\treturn elem === checkContext;\r\n +\t\t}, implicitRelative, true ),\r\n +\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n +\t\t\treturn indexOf.call( checkContext, elem ) > -1;\r\n +\t\t}, implicitRelative, true ),\r\n +\t\tmatchers = [ function( elem, context, xml ) {\r\n +\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n +\t\t\t\t(checkContext = context).nodeType ?\r\n +\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n +\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n +\t\t} ];\r\n +\r\n +\tfor ( ; i < len; i++ ) {\r\n +\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n +\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\r\n +\t\t} else {\r\n +\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n +\r\n +\t\t\t// Return special upon seeing a positional matcher\r\n +\t\t\tif ( matcher[ expando ] ) {\r\n +\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n +\t\t\t\tj = ++i;\r\n +\t\t\t\tfor ( ; j < len; j++ ) {\r\n +\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n +\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t\treturn setMatcher(\r\n +\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n +\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),\r\n +\t\t\t\t\tmatcher,\r\n +\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n +\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n +\t\t\t\t\tj < len && tokens.join("")\r\n +\t\t\t\t);\r\n +\t\t\t}\r\n +\t\t\tmatchers.push( matcher );\r\n +\t\t}\r\n +\t}\r\n +\r\n +\treturn elementMatcher( matchers );\r\n +}\r\n +\r\n +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n +\tvar bySet = setMatchers.length > 0,\r\n +\t\tbyElement = elementMatchers.length > 0,\r\n +\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\r\n +\t\t\tvar elem, j, matcher,\r\n +\t\t\t\tsetMatched = [],\r\n +\t\t\t\tmatchedCount = 0,\r\n +\t\t\t\ti = "0",\r\n +\t\t\t\tunmatched = seed && [],\r\n +\t\t\t\toutermost = expandContext != null,\r\n +\t\t\t\tcontextBackup = outermostContext,\r\n +\t\t\t\t// We must always have either seed elements or context\r\n +\t\t\t\telems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),\r\n +\t\t\t\t// Nested matchers should use non-integer dirruns\r\n +\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\r\n +\r\n +\t\t\tif ( outermost ) {\r\n +\t\t\t\toutermostContext = context !== document && context;\r\n +\t\t\t\tcachedruns = superMatcher.el;\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Add elements passing elementMatchers directly to results\r\n +\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\r\n +\t\t\t\tif ( byElement && elem ) {\r\n +\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\r\n +\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n +\t\t\t\t\t\t\tresults.push( elem );\r\n +\t\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tif ( outermost ) {\r\n +\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n +\t\t\t\t\t\tcachedruns = ++superMatcher.el;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\t// Track unmatched elements for set filters\r\n +\t\t\t\tif ( bySet ) {\r\n +\t\t\t\t\t// They will have gone through all possible matchers\r\n +\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n +\t\t\t\t\t\tmatchedCount--;\r\n +\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n +\t\t\t\t\tif ( seed ) {\r\n +\t\t\t\t\t\tunmatched.push( elem );\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Apply set filters to unmatched elements\r\n +\t\t\tmatchedCount += i;\r\n +\t\t\tif ( bySet && i !== matchedCount ) {\r\n +\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\r\n +\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\tif ( seed ) {\r\n +\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n +\t\t\t\t\tif ( matchedCount > 0 ) {\r\n +\t\t\t\t\t\twhile ( i-- ) {\r\n +\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n +\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n +\t\t\t\t\tsetMatched = condense( setMatched );\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\t// Add matches to results\r\n +\t\t\t\tpush.apply( results, setMatched );\r\n +\r\n +\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n +\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n +\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n +\r\n +\t\t\t\t\tSizzle.uniqueSort( results );\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Override manipulation of globals by nested matchers\r\n +\t\t\tif ( outermost ) {\r\n +\t\t\t\tdirruns = dirrunsUnique;\r\n +\t\t\t\toutermostContext = contextBackup;\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn unmatched;\r\n +\t\t};\r\n +\r\n +\tsuperMatcher.el = 0;\r\n +\treturn bySet ?\r\n +\t\tmarkFunction( superMatcher ) :\r\n +\t\tsuperMatcher;\r\n +}\r\n +\r\n +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\r\n +\tvar i,\r\n +\t\tsetMatchers = [],\r\n +\t\telementMatchers = [],\r\n +\t\tcached = compilerCache[ expando ][ selector + " " ];\r\n +\r\n +\tif ( !cached ) {\r\n +\t\t// Generate a function of recursive functions that can be used to check each element\r\n +\t\tif ( !group ) {\r\n +\t\t\tgroup = tokenize( selector );\r\n +\t\t}\r\n +\t\ti = group.length;\r\n +\t\twhile ( i-- ) {\r\n +\t\t\tcached = matcherFromTokens( group[i] );\r\n +\t\t\tif ( cached[ expando ] ) {\r\n +\t\t\t\tsetMatchers.push( cached );\r\n +\t\t\t} else {\r\n +\t\t\t\telementMatchers.push( cached );\r\n +\t\t\t}\r\n +\t\t}\r\n +\r\n +\t\t// Cache the compiled function\r\n +\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n +\t}\r\n +\treturn cached;\r\n +};\r\n +\r\n +function multipleContexts( selector, contexts, results ) {\r\n +\tvar i = 0,\r\n +\t\tlen = contexts.length;\r\n +\tfor ( ; i < len; i++ ) {\r\n +\t\tSizzle( selector, contexts[i], results );\r\n +\t}\r\n +\treturn results;\r\n +}\r\n +\r\n +function select( selector, context, results, seed, xml ) {\r\n +\tvar i, tokens, token, type, find,\r\n +\t\tmatch = tokenize( selector ),\r\n +\t\tj = match.length;\r\n +\r\n +\tif ( !seed ) {\r\n +\t\t// Try to minimize operations if there is only one group\r\n +\t\tif ( match.length === 1 ) {\r\n +\r\n +\t\t\t// Take a shortcut and set the context if the root selector is an ID\r\n +\t\t\ttokens = match[0] = match[0].slice( 0 );\r\n +\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&\r\n +\t\t\t\t\tcontext.nodeType === 9 && !xml &&\r\n +\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\r\n +\r\n +\t\t\t\tcontext = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];\r\n +\t\t\t\tif ( !context ) {\r\n +\t\t\t\t\treturn results;\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\tselector = selector.slice( tokens.shift().length );\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Fetch a seed set for right-to-left matching\r\n +\t\t\tfor ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\r\n +\t\t\t\ttoken = tokens[i];\r\n +\r\n +\t\t\t\t// Abort if we hit a combinator\r\n +\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n +\t\t\t\t\tbreak;\r\n +\t\t\t\t}\r\n +\t\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n +\t\t\t\t\t// Search, expanding context for leading sibling combinators\r\n +\t\t\t\t\tif ( (seed = find(\r\n +\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, "" ),\r\n +\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\r\n +\t\t\t\t\t\txml\r\n +\t\t\t\t\t)) ) {\r\n +\r\n +\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n +\t\t\t\t\t\ttokens.splice( i, 1 );\r\n +\t\t\t\t\t\tselector = seed.length && tokens.join("");\r\n +\t\t\t\t\t\tif ( !selector ) {\r\n +\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\r\n +\t\t\t\t\t\t\treturn results;\r\n +\t\t\t\t\t\t}\r\n +\r\n +\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t}\r\n +\t}\r\n +\r\n +\t// Compile and execute a filtering function\r\n +\t// Provide `match` to avoid retokenization if we modified the selector above\r\n +\tcompile( selector, match )(\r\n +\t\tseed,\r\n +\t\tcontext,\r\n +\t\txml,\r\n +\t\tresults,\r\n +\t\trsibling.test( selector )\r\n +\t);\r\n +\treturn results;\r\n +}\r\n +\r\n +if ( document.querySelectorAll ) {\r\n +\t(function() {\r\n +\t\tvar disconnectedMatch,\r\n +\t\t\toldSelect = select,\r\n +\t\t\trescape = /\'|\\\\/g,\r\n +\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^\'"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\r\n +\r\n +\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\r\n +\t\t\t// A support test would require too much code (would include document ready)\r\n +\t\t\trbuggyQSA = [ ":focus" ],\r\n +\r\n +\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n +\t\t\t// A support test would require too much code (would include document ready)\r\n +\t\t\t// just skip matchesSelector for :active\r\n +\t\t\trbuggyMatches = [ ":active" ],\r\n +\t\t\tmatches = docElem.matchesSelector ||\r\n +\t\t\t\tdocElem.mozMatchesSelector ||\r\n +\t\t\t\tdocElem.webkitMatchesSelector ||\r\n +\t\t\t\tdocElem.oMatchesSelector ||\r\n +\t\t\t\tdocElem.msMatchesSelector;\r\n +\r\n +\t\t// Build QSA regex\r\n +\t\t// Regex strategy adopted from Diego Perini\r\n +\t\tassert(function( div ) {\r\n +\t\t\t// Select is set to empty string on purpose\r\n +\t\t\t// This is to test IE\'s treatment of not explictly\r\n +\t\t\t// setting a boolean content attribute,\r\n +\t\t\t// since its presence should be enough\r\n +\t\t\t// http://bugs.jquery.com/ticket/12359\r\n +\t\t\tdiv.innerHTML = "<select><option selected=\'\'></option></select>";\r\n +\r\n +\t\t\t// IE8 - Some boolean attributes are not treated correctly\r\n +\t\t\tif ( !div.querySelectorAll("[selected]").length ) {\r\n +\t\t\t\trbuggyQSA.push( "\\\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );\r\n +\t\t\t}\r\n +\r\n +\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n +\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n +\t\t\t// IE8 throws error here (do not put tests after this one)\r\n +\t\t\tif ( !div.querySelectorAll(":checked").length ) {\r\n +\t\t\t\trbuggyQSA.push(":checked");\r\n +\t\t\t}\r\n +\t\t});\r\n +\r\n +\t\tassert(function( div ) {\r\n +\r\n +\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\r\n +\t\t\t// Should not select anything\r\n +\t\t\tdiv.innerHTML = "<p test=\'\'></p>";\r\n +\t\t\tif ( div.querySelectorAll("[test^=\'\']").length ) {\r\n +\t\t\t\trbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\\"\\"|\'\')" );\r\n +\t\t\t}\r\n +\r\n +\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n +\t\t\t// IE8 throws error here (do not put tests after this one)\r\n +\t\t\tdiv.innerHTML = "<input type=\'hidden\'/>";\r\n +\t\t\tif ( !div.querySelectorAll(":enabled").length ) {\r\n +\t\t\t\trbuggyQSA.push(":enabled", ":disabled");\r\n +\t\t\t}\r\n +\t\t});\r\n +\r\n +\t\t// rbuggyQSA always contains :focus, so no need for a length check\r\n +\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );\r\n +\r\n +\t\tselect = function( selector, context, results, seed, xml ) {\r\n +\t\t\t// Only use querySelectorAll when not filtering,\r\n +\t\t\t// when this is not xml,\r\n +\t\t\t// and when no QSA bugs apply\r\n +\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\r\n +\t\t\t\tvar groups, i,\r\n +\t\t\t\t\told = true,\r\n +\t\t\t\t\tnid = expando,\r\n +\t\t\t\t\tnewContext = context,\r\n +\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\r\n +\r\n +\t\t\t\t// qSA works strangely on Element-rooted queries\r\n +\t\t\t\t// We can work around this by specifying an extra ID on the root\r\n +\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\r\n +\t\t\t\t// IE 8 doesn\'t work on object elements\r\n +\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {\r\n +\t\t\t\t\tgroups = tokenize( selector );\r\n +\r\n +\t\t\t\t\tif ( (old = context.getAttribute("id")) ) {\r\n +\t\t\t\t\t\tnid = old.replace( rescape, "\\\\$&" );\r\n +\t\t\t\t\t} else {\r\n +\t\t\t\t\t\tcontext.setAttribute( "id", nid );\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tnid = "[id=\'" + nid + "\'] ";\r\n +\r\n +\t\t\t\t\ti = groups.length;\r\n +\t\t\t\t\twhile ( i-- ) {\r\n +\t\t\t\t\t\tgroups[i] = nid + groups[i].join("");\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\r\n +\t\t\t\t\tnewSelector = groups.join(",");\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\tif ( newSelector ) {\r\n +\t\t\t\t\ttry {\r\n +\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\r\n +\t\t\t\t\t\t\tnewSelector\r\n +\t\t\t\t\t\t), 0 ) );\r\n +\t\t\t\t\t\treturn results;\r\n +\t\t\t\t\t} catch(qsaError) {\r\n +\t\t\t\t\t} finally {\r\n +\t\t\t\t\t\tif ( !old ) {\r\n +\t\t\t\t\t\t\tcontext.removeAttribute("id");\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\r\n +\t\t\treturn oldSelect( selector, context, results, seed, xml );\r\n +\t\t};\r\n +\r\n +\t\tif ( matches ) {\r\n +\t\t\tassert(function( div ) {\r\n +\t\t\t\t// Check to see if it\'s possible to do matchesSelector\r\n +\t\t\t\t// on a disconnected node (IE 9)\r\n +\t\t\t\tdisconnectedMatch = matches.call( div, "div" );\r\n +\r\n +\t\t\t\t// This should fail with an exception\r\n +\t\t\t\t// Gecko does not error, returns false instead\r\n +\t\t\t\ttry {\r\n +\t\t\t\t\tmatches.call( div, "[test!=\'\']:sizzle" );\r\n +\t\t\t\t\trbuggyMatches.push( "!=", pseudos );\r\n +\t\t\t\t} catch ( e ) {}\r\n +\t\t\t});\r\n +\r\n +\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\r\n +\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );\r\n +\r\n +\t\t\tSizzle.matchesSelector = function( elem, expr ) {\r\n +\t\t\t\t// Make sure that attribute selectors are quoted\r\n +\t\t\t\texpr = expr.replace( rattributeQuotes, "=\'$1\']" );\r\n +\r\n +\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\r\n +\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\r\n +\t\t\t\t\ttry {\r\n +\t\t\t\t\t\tvar ret = matches.call( elem, expr );\r\n +\r\n +\t\t\t\t\t\t// IE 9\'s matchesSelector returns false on disconnected nodes\r\n +\t\t\t\t\t\tif ( ret || disconnectedMatch ||\r\n +\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n +\t\t\t\t\t\t\t\t// fragment in IE 9\r\n +\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n +\t\t\t\t\t\t\treturn ret;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t} catch(e) {}\r\n +\t\t\t\t}\r\n +\r\n +\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\r\n +\t\t\t};\r\n +\t\t}\r\n +\t})();\r\n +}\r\n +\r\n +// Deprecated\r\n +Expr.pseudos["nth"] = Expr.pseudos["eq"];\r\n +\r\n +// Back-compat\r\n +function setFilters() {}\r\n +Expr.filters = setFilters.prototype = Expr.pseudos;\r\n +Expr.setFilters = new setFilters();\r\n +\r\n +// Override sizzle attribute retrieval\n +Sizzle.attr = jQuery.attr;\n +jQuery.find = Sizzle;\n +jQuery.expr = Sizzle.selectors;\n +jQuery.expr[":"] = jQuery.expr.pseudos;\n +jQuery.unique = Sizzle.uniqueSort;\n +jQuery.text = Sizzle.getText;\n +jQuery.isXMLDoc = Sizzle.isXML;\n +jQuery.contains = Sizzle.contains;\n +\r\n +\r\n +})( window );\r\n +var runtil = /Until$/,\n +\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n +\tisSimple = /^.[^:#\\[\\.,]*$/,\n +\trneedsContext = jQuery.expr.match.needsContext,\n +\t// methods guaranteed to produce a unique set when starting from a unique set\n +\tguaranteedUnique = {\n +\t\tchildren: true,\n +\t\tcontents: true,\n +\t\tnext: true,\n +\t\tprev: true\n +\t};\n +\n +jQuery.fn.extend({\n +\tfind: function( selector ) {\n +\t\tvar i, l, length, n, r, ret,\n +\t\t\tself = this;\n +\n +\t\tif ( typeof selector !== "string" ) {\n +\t\t\treturn jQuery( selector ).filter(function() {\n +\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n +\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\tret = this.pushStack( "", "find", selector );\n +\n +\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\tlength = ret.length;\n +\t\t\tjQuery.find( selector, this[i], ret );\n +\n +\t\t\tif ( i > 0 ) {\n +\t\t\t\t// Make sure that the results are unique\n +\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n +\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n +\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n +\t\t\t\t\t\t\tret.splice(n--, 1);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\thas: function( target ) {\n +\t\tvar i,\n +\t\t\ttargets = jQuery( target, this ),\n +\t\t\tlen = targets.length;\n +\n +\t\treturn this.filter(function() {\n +\t\t\tfor ( i = 0; i < len; i++ ) {\n +\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n +\t\t\t\t\treturn true;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tnot: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, false), "not", selector);\n +\t},\n +\n +\tfilter: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, true), "filter", selector );\n +\t},\n +\n +\tis: function( selector ) {\n +\t\treturn !!selector && (\n +\t\t\ttypeof selector === "string" ?\n +\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n +\t\t\t\t// so $("p:first").is("p:last") won\'t return true for a doc with two "p".\n +\t\t\t\trneedsContext.test( selector ) ?\n +\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n +\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n +\t\t\t\tthis.filter( selector ).length > 0 );\n +\t},\n +\n +\tclosest: function( selectors, context ) {\n +\t\tvar cur,\n +\t\t\ti = 0,\n +\t\t\tl = this.length,\n +\t\t\tret = [],\n +\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?\n +\t\t\t\tjQuery( selectors, context || this.context ) :\n +\t\t\t\t0;\n +\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\tcur = this[i];\n +\n +\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n +\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n +\t\t\t\t\tret.push( cur );\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t\tcur = cur.parentNode;\n +\t\t\t}\n +\t\t}\n +\n +\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n +\n +\t\treturn this.pushStack( ret, "closest", selectors );\n +\t},\n +\n +\t// Determine the position of an element within\n +\t// the matched set of elements\n +\tindex: function( elem ) {\n +\n +\t\t// No argument, return index in parent\n +\t\tif ( !elem ) {\n +\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n +\t\t}\n +\n +\t\t// index in selector\n +\t\tif ( typeof elem === "string" ) {\n +\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n +\t\t}\n +\n +\t\t// Locate the position of the desired element\n +\t\treturn jQuery.inArray(\n +\t\t\t// If it receives a jQuery object, the first element is used\n +\t\t\telem.jquery ? elem[0] : elem, this );\n +\t},\n +\n +\tadd: function( selector, context ) {\n +\t\tvar set = typeof selector === "string" ?\n +\t\t\t\tjQuery( selector, context ) :\n +\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n +\t\t\tall = jQuery.merge( this.get(), set );\n +\n +\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n +\t\t\tall :\n +\t\t\tjQuery.unique( all ) );\n +\t},\n +\n +\taddBack: function( selector ) {\n +\t\treturn this.add( selector == null ?\n +\t\t\tthis.prevObject : this.prevObject.filter(selector)\n +\t\t);\n +\t}\n +});\n +\n +jQuery.fn.andSelf = jQuery.fn.addBack;\n +\n +// A painfully simple check to see if an element is disconnected\n +// from a document (should be improved, where feasible).\n +function isDisconnected( node ) {\n +\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n +}\n +\n +function sibling( cur, dir ) {\n +\tdo {\n +\t\tcur = cur[ dir ];\n +\t} while ( cur && cur.nodeType !== 1 );\n +\n +\treturn cur;\n +}\n +\n +jQuery.each({\n +\tparent: function( elem ) {\n +\t\tvar parent = elem.parentNode;\n +\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n +\t},\n +\tparents: function( elem ) {\n +\t\treturn jQuery.dir( elem, "parentNode" );\n +\t},\n +\tparentsUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "parentNode", until );\n +\t},\n +\tnext: function( elem ) {\n +\t\treturn sibling( elem, "nextSibling" );\n +\t},\n +\tprev: function( elem ) {\n +\t\treturn sibling( elem, "previousSibling" );\n +\t},\n +\tnextAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "nextSibling" );\n +\t},\n +\tprevAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "previousSibling" );\n +\t},\n +\tnextUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "nextSibling", until );\n +\t},\n +\tprevUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "previousSibling", until );\n +\t},\n +\tsiblings: function( elem ) {\n +\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n +\t},\n +\tchildren: function( elem ) {\n +\t\treturn jQuery.sibling( elem.firstChild );\n +\t},\n +\tcontents: function( elem ) {\n +\t\treturn jQuery.nodeName( elem, "iframe" ) ?\n +\t\t\telem.contentDocument || elem.contentWindow.document :\n +\t\t\tjQuery.merge( [], elem.childNodes );\n +\t}\n +}, function( name, fn ) {\n +\tjQuery.fn[ name ] = function( until, selector ) {\n +\t\tvar ret = jQuery.map( this, fn, until );\n +\n +\t\tif ( !runtil.test( name ) ) {\n +\t\t\tselector = until;\n +\t\t}\n +\n +\t\tif ( selector && typeof selector === "string" ) {\n +\t\t\tret = jQuery.filter( selector, ret );\n +\t\t}\n +\n +\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n +\n +\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n +\t\t\tret = ret.reverse();\n +\t\t}\n +\n +\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(",") );\n +\t};\n +});\n +\n +jQuery.extend({\n +\tfilter: function( expr, elems, not ) {\n +\t\tif ( not ) {\n +\t\t\texpr = ":not(" + expr + ")";\n +\t\t}\n +\n +\t\treturn elems.length === 1 ?\n +\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n +\t\t\tjQuery.find.matches(expr, elems);\n +\t},\n +\n +\tdir: function( elem, dir, until ) {\n +\t\tvar matched = [],\n +\t\t\tcur = elem[ dir ];\n +\n +\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n +\t\t\tif ( cur.nodeType === 1 ) {\n +\t\t\t\tmatched.push( cur );\n +\t\t\t}\n +\t\t\tcur = cur[dir];\n +\t\t}\n +\t\treturn matched;\n +\t},\n +\n +\tsibling: function( n, elem ) {\n +\t\tvar r = [];\n +\n +\t\tfor ( ; n; n = n.nextSibling ) {\n +\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n +\t\t\t\tr.push( n );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn r;\n +\t}\n +});\n +\n +// Implement the identical functionality for filter and not\n +function winnow( elements, qualifier, keep ) {\n +\n +\t// Can\'t pass null or undefined to indexOf in Firefox 4\n +\t// Set to 0 to skip string check\n +\tqualifier = qualifier || 0;\n +\n +\tif ( jQuery.isFunction( qualifier ) ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n +\t\t\treturn retVal === keep;\n +\t\t});\n +\n +\t} else if ( qualifier.nodeType ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\treturn ( elem === qualifier ) === keep;\n +\t\t});\n +\n +\t} else if ( typeof qualifier === "string" ) {\n +\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n +\t\t\treturn elem.nodeType === 1;\n +\t\t});\n +\n +\t\tif ( isSimple.test( qualifier ) ) {\n +\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n +\t\t} else {\n +\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n +\t\t}\n +\t}\n +\n +\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n +\t});\n +}\n +function createSafeFragment( document ) {\n +\tvar list = nodeNames.split( "|" ),\n +\tsafeFrag = document.createDocumentFragment();\n +\n +\tif ( safeFrag.createElement ) {\n +\t\twhile ( list.length ) {\n +\t\t\tsafeFrag.createElement(\n +\t\t\t\tlist.pop()\n +\t\t\t);\n +\t\t}\n +\t}\n +\treturn safeFrag;\n +}\n +\n +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +\n +\t\t"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",\n +\trinlinejQuery = / jQuery\\d+="(?:null|\\d+)"/g,\n +\trleadingWhitespace = /^\\s+/,\n +\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n +\trtagName = /<([\\w:]+)/,\n +\trtbody = /<tbody/i,\n +\trhtml = /<|&#?\\w+;/,\n +\trnoInnerhtml = /<(?:script|style|link)/i,\n +\trnocache = /<(?:script|object|embed|option|style)/i,\n +\trnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\\\s/>]", "i"),\n +\trcheckableType = /^(?:checkbox|radio)$/,\n +\t// checked="checked" or checked\n +\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n +\trscriptType = /\\/(java|ecma)script/i,\n +\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n +\twrapMap = {\n +\t\toption: [ 1, "<select multiple=\'multiple\'>", "</select>" ],\n +\t\tlegend: [ 1, "<fieldset>", "</fieldset>" ],\n +\t\tthead: [ 1, "<table>", "</table>" ],\n +\t\ttr: [ 2, "<table><tbody>", "</tbody></table>" ],\n +\t\ttd: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],\n +\t\tcol: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],\n +\t\tarea: [ 1, "<map>", "</map>" ],\n +\t\t_default: [ 0, "", "" ]\n +\t},\n +\tsafeFragment = createSafeFragment( document ),\n +\tfragmentDiv = safeFragment.appendChild( document.createElement("div") );\n +\n +wrapMap.optgroup = wrapMap.option;\n +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n +wrapMap.th = wrapMap.td;\n +\n +// IE6-8 can\'t serialize link, script, style, or any html5 (NoScope) tags,\n +// unless wrapped in a div with non-breaking characters in front of it.\n +if ( !jQuery.support.htmlSerialize ) {\n +\twrapMap._default = [ 1, "X<div>", "</div>" ];\n +}\n +\n +jQuery.fn.extend({\n +\ttext: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\treturn value === undefined ?\n +\t\t\t\tjQuery.text( this ) :\n +\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\twrapAll: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\t// The elements to wrap the target around\n +\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n +\n +\t\t\tif ( this[0].parentNode ) {\n +\t\t\t\twrap.insertBefore( this[0] );\n +\t\t\t}\n +\n +\t\t\twrap.map(function() {\n +\t\t\t\tvar elem = this;\n +\n +\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n +\t\t\t\t\telem = elem.firstChild;\n +\t\t\t\t}\n +\n +\t\t\t\treturn elem;\n +\t\t\t}).append( this );\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\twrapInner: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar self = jQuery( this ),\n +\t\t\t\tcontents = self.contents();\n +\n +\t\t\tif ( contents.length ) {\n +\t\t\t\tcontents.wrapAll( html );\n +\n +\t\t\t} else {\n +\t\t\t\tself.append( html );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\twrap: function( html ) {\n +\t\tvar isFunction = jQuery.isFunction( html );\n +\n +\t\treturn this.each(function(i) {\n +\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n +\t\t});\n +\t},\n +\n +\tunwrap: function() {\n +\t\treturn this.parent().each(function() {\n +\t\t\tif ( !jQuery.nodeName( this, "body" ) ) {\n +\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n +\t\t\t}\n +\t\t}).end();\n +\t},\n +\n +\tappend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n +\t\t\t\tthis.appendChild( elem );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tprepend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n +\t\t\t\tthis.insertBefore( elem, this.firstChild );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tbefore: function() {\n +\t\tif ( !isDisconnected( this[0] ) ) {\n +\t\t\treturn this.domManip(arguments, false, function( elem ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( arguments.length ) {\n +\t\t\tvar set = jQuery.clean( arguments );\n +\t\t\treturn this.pushStack( jQuery.merge( set, this ), "before", this.selector );\n +\t\t}\n +\t},\n +\n +\tafter: function() {\n +\t\tif ( !isDisconnected( this[0] ) ) {\n +\t\t\treturn this.domManip(arguments, false, function( elem ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( arguments.length ) {\n +\t\t\tvar set = jQuery.clean( arguments );\n +\t\t\treturn this.pushStack( jQuery.merge( this, set ), "after", this.selector );\n +\t\t}\n +\t},\n +\n +\t// keepData is for internal use only--do not document\n +\tremove: function( selector, keepData ) {\n +\t\tvar elem,\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n +\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n +\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n +\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName("*") );\n +\t\t\t\t\tjQuery.cleanData( [ elem ] );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tempty: function() {\n +\t\tvar elem,\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n +\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\tjQuery.cleanData( elem.getElementsByTagName("*") );\n +\t\t\t}\n +\n +\t\t\t// Remove any remaining nodes\n +\t\t\twhile ( elem.firstChild ) {\n +\t\t\t\telem.removeChild( elem.firstChild );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tclone: function( dataAndEvents, deepDataAndEvents ) {\n +\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n +\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n +\n +\t\treturn this.map( function () {\n +\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n +\t\t});\n +\t},\n +\n +\thtml: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\tvar elem = this[0] || {},\n +\t\t\t\ti = 0,\n +\t\t\t\tl = this.length;\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\treturn elem.nodeType === 1 ?\n +\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, "" ) :\n +\t\t\t\t\tundefined;\n +\t\t\t}\n +\n +\t\t\t// See if we can take a shortcut and just use innerHTML\n +\t\t\tif ( typeof value === "string" && !rnoInnerhtml.test( value ) &&\n +\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n +\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n +\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {\n +\n +\t\t\t\tvalue = value.replace( rxhtmlTag, "<$1></$2>" );\n +\n +\t\t\t\ttry {\n +\t\t\t\t\tfor (; i < l; i++ ) {\n +\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\t\t\t\telem = this[i] || {};\n +\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( "*" ) );\n +\t\t\t\t\t\t\telem.innerHTML = value;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = 0;\n +\n +\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t\tif ( elem ) {\n +\t\t\t\tthis.empty().append( value );\n +\t\t\t}\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\treplaceWith: function( value ) {\n +\t\tif ( !isDisconnected( this[0] ) ) {\n +\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n +\t\t\t// this can help fix replacing a parent with child elements\n +\t\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\t\treturn this.each(function(i) {\n +\t\t\t\t\tvar self = jQuery(this), old = self.html();\n +\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\tif ( typeof value !== "string" ) {\n +\t\t\t\tvalue = jQuery( value ).detach();\n +\t\t\t}\n +\n +\t\t\treturn this.each(function() {\n +\t\t\t\tvar next = this.nextSibling,\n +\t\t\t\t\tparent = this.parentNode;\n +\n +\t\t\t\tjQuery( this ).remove();\n +\n +\t\t\t\tif ( next ) {\n +\t\t\t\t\tjQuery(next).before( value );\n +\t\t\t\t} else {\n +\t\t\t\t\tjQuery(parent).append( value );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.length ?\n +\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :\n +\t\t\tthis;\n +\t},\n +\n +\tdetach: function( selector ) {\n +\t\treturn this.remove( selector, true );\n +\t},\n +\n +\tdomManip: function( args, table, callback ) {\n +\n +\t\t// Flatten any nested arrays\n +\t\targs = [].concat.apply( [], args );\n +\n +\t\tvar results, first, fragment, iNoClone,\n +\t\t\ti = 0,\n +\t\t\tvalue = args[0],\n +\t\t\tscripts = [],\n +\t\t\tl = this.length;\n +\n +\t\t// We can\'t cloneNode fragments that contain checked, in WebKit\n +\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery(this).domManip( args, table, callback );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction(value) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tvar self = jQuery(this);\n +\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n +\t\t\t\tself.domManip( args, table, callback );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n +\t\t\tfragment = results.fragment;\n +\t\t\tfirst = fragment.firstChild;\n +\n +\t\t\tif ( fragment.childNodes.length === 1 ) {\n +\t\t\t\tfragment = first;\n +\t\t\t}\n +\n +\t\t\tif ( first ) {\n +\t\t\t\ttable = table && jQuery.nodeName( first, "tr" );\n +\n +\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n +\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n +\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n +\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n +\t\t\t\t\tcallback.call(\n +\t\t\t\t\t\ttable && jQuery.nodeName( this[i], "table" ) ?\n +\t\t\t\t\t\t\tfindOrAppend( this[i], "tbody" ) :\n +\t\t\t\t\t\t\tthis[i],\n +\t\t\t\t\t\ti === iNoClone ?\n +\t\t\t\t\t\t\tfragment :\n +\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n +\t\t\t\t\t);\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Fix #11809: Avoid leaking memory\n +\t\t\tfragment = first = null;\n +\n +\t\t\tif ( scripts.length ) {\n +\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n +\t\t\t\t\tif ( elem.src ) {\n +\t\t\t\t\t\tif ( jQuery.ajax ) {\n +\t\t\t\t\t\t\tjQuery.ajax({\n +\t\t\t\t\t\t\t\turl: elem.src,\n +\t\t\t\t\t\t\t\ttype: "GET",\n +\t\t\t\t\t\t\t\tdataType: "script",\n +\t\t\t\t\t\t\t\tasync: false,\n +\t\t\t\t\t\t\t\tglobal: false,\n +\t\t\t\t\t\t\t\t"throws": true\n +\t\t\t\t\t\t\t});\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tjQuery.error("no ajax");\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t}\n +});\n +\n +function findOrAppend( elem, tag ) {\n +\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n +}\n +\n +function cloneCopyEvent( src, dest ) {\n +\n +\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n +\t\treturn;\n +\t}\n +\n +\tvar type, i, l,\n +\t\toldData = jQuery._data( src ),\n +\t\tcurData = jQuery._data( dest, oldData ),\n +\t\tevents = oldData.events;\n +\n +\tif ( events ) {\n +\t\tdelete curData.handle;\n +\t\tcurData.events = {};\n +\n +\t\tfor ( type in events ) {\n +\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n +\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// make the cloned public data object a copy from the original\n +\tif ( curData.data ) {\n +\t\tcurData.data = jQuery.extend( {}, curData.data );\n +\t}\n +}\n +\n +function cloneFixAttributes( src, dest ) {\n +\tvar nodeName;\n +\n +\t// We do not need to do anything for non-Elements\n +\tif ( dest.nodeType !== 1 ) {\n +\t\treturn;\n +\t}\n +\n +\t// clearAttributes removes the attributes, which we don\'t want,\n +\t// but also removes the attachEvent events, which we *do* want\n +\tif ( dest.clearAttributes ) {\n +\t\tdest.clearAttributes();\n +\t}\n +\n +\t// mergeAttributes, in contrast, only merges back on the\n +\t// original attributes, not the events\n +\tif ( dest.mergeAttributes ) {\n +\t\tdest.mergeAttributes( src );\n +\t}\n +\n +\tnodeName = dest.nodeName.toLowerCase();\n +\n +\tif ( nodeName === "object" ) {\n +\t\t// IE6-10 improperly clones children of object elements using classid.\n +\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n +\t\tif ( dest.parentNode ) {\n +\t\t\tdest.outerHTML = src.outerHTML;\n +\t\t}\n +\n +\t\t// This path appears unavoidable for IE9. When cloning an object\n +\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n +\t\t// If the src has innerHTML and the destination does not,\n +\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n +\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n +\t\t\tdest.innerHTML = src.innerHTML;\n +\t\t}\n +\n +\t} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {\n +\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n +\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n +\t\t// a checked appearance if the defaultChecked value isn\'t also set\n +\n +\t\tdest.defaultChecked = dest.checked = src.checked;\n +\n +\t\t// IE6-7 get confused and end up setting the value of a cloned\n +\t\t// checkbox/radio button to an empty string instead of "on"\n +\t\tif ( dest.value !== src.value ) {\n +\t\t\tdest.value = src.value;\n +\t\t}\n +\n +\t// IE6-8 fails to return the selected option to the default selected\n +\t// state when cloning options\n +\t} else if ( nodeName === "option" ) {\n +\t\tdest.selected = src.defaultSelected;\n +\n +\t// IE6-8 fails to set the defaultValue to the correct value when\n +\t// cloning other types of input fields\n +\t} else if ( nodeName === "input" || nodeName === "textarea" ) {\n +\t\tdest.defaultValue = src.defaultValue;\n +\n +\t// IE blanks contents when cloning scripts\n +\t} else if ( nodeName === "script" && dest.text !== src.text ) {\n +\t\tdest.text = src.text;\n +\t}\n +\n +\t// Event data gets referenced instead of copied if the expando\n +\t// gets copied too\n +\tdest.removeAttribute( jQuery.expando );\n +}\n +\n +jQuery.buildFragment = function( args, context, scripts ) {\n +\tvar fragment, cacheable, cachehit,\n +\t\tfirst = args[ 0 ];\n +\n +\t// Set context from what may come in as undefined or a jQuery collection or a node\n +\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n +\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n +\tcontext = context || document;\n +\tcontext = !context.nodeType && context[0] || context;\n +\tcontext = context.ownerDocument || context;\n +\n +\t// Only cache "small" (1/2 KB) HTML strings that are associated with the main document\n +\t// Cloning options loses the selected state, so don\'t cache them\n +\t// IE 6 doesn\'t like it when you put <object> or <embed> elements in a fragment\n +\t// Also, WebKit does not clone \'checked\' attributes on cloneNode, so don\'t cache\n +\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n +\tif ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document &&\n +\t\tfirst.charAt(0) === "<" && !rnocache.test( first ) &&\n +\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n +\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n +\n +\t\t// Mark cacheable and look for a hit\n +\t\tcacheable = true;\n +\t\tfragment = jQuery.fragments[ first ];\n +\t\tcachehit = fragment !== undefined;\n +\t}\n +\n +\tif ( !fragment ) {\n +\t\tfragment = context.createDocumentFragment();\n +\t\tjQuery.clean( args, context, fragment, scripts );\n +\n +\t\t// Update the cache, but only store false\n +\t\t// unless this is a second parsing of the same content\n +\t\tif ( cacheable ) {\n +\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n +\t\t}\n +\t}\n +\n +\treturn { fragment: fragment, cacheable: cacheable };\n +};\n +\n +jQuery.fragments = {};\n +\n +jQuery.each({\n +\tappendTo: "append",\n +\tprependTo: "prepend",\n +\tinsertBefore: "before",\n +\tinsertAfter: "after",\n +\treplaceAll: "replaceWith"\n +}, function( name, original ) {\n +\tjQuery.fn[ name ] = function( selector ) {\n +\t\tvar elems,\n +\t\t\ti = 0,\n +\t\t\tret = [],\n +\t\t\tinsert = jQuery( selector ),\n +\t\t\tl = insert.length,\n +\t\t\tparent = this.length === 1 && this[0].parentNode;\n +\n +\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n +\t\t\tinsert[ original ]( this[0] );\n +\t\t\treturn this;\n +\t\t} else {\n +\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n +\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n +\t\t\t\tret = ret.concat( elems );\n +\t\t\t}\n +\n +\t\t\treturn this.pushStack( ret, name, insert.selector );\n +\t\t}\n +\t};\n +});\n +\n +function getAll( elem ) {\n +\tif ( typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\treturn elem.getElementsByTagName( "*" );\n +\n +\t} else if ( typeof elem.querySelectorAll !== "undefined" ) {\n +\t\treturn elem.querySelectorAll( "*" );\n +\n +\t} else {\n +\t\treturn [];\n +\t}\n +}\n +\n +// Used in clean, fixes the defaultChecked property\n +function fixDefaultChecked( elem ) {\n +\tif ( rcheckableType.test( elem.type ) ) {\n +\t\telem.defaultChecked = elem.checked;\n +\t}\n +}\n +\n +jQuery.extend({\n +\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n +\t\tvar srcElements,\n +\t\t\tdestElements,\n +\t\t\ti,\n +\t\t\tclone;\n +\n +\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {\n +\t\t\tclone = elem.cloneNode( true );\n +\n +\t\t// IE<=8 does not properly clone detached, unknown element nodes\n +\t\t} else {\n +\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n +\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n +\t\t}\n +\n +\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n +\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n +\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n +\t\t\t// Calling detachEvent on the clone will also remove the events\n +\t\t\t// from the original. In order to get around this, we use some\n +\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n +\t\t\t// guys for this hotness.\n +\n +\t\t\tcloneFixAttributes( elem, clone );\n +\n +\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n +\t\t\tsrcElements = getAll( elem );\n +\t\t\tdestElements = getAll( clone );\n +\n +\t\t\t// Weird iteration because IE will replace the length property\n +\t\t\t// with an element if you are cloning the body and one of the\n +\t\t\t// elements on the page has a name or id of "length"\n +\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n +\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n +\t\t\t\tif ( destElements[i] ) {\n +\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Copy the events from the original to the clone\n +\t\tif ( dataAndEvents ) {\n +\t\t\tcloneCopyEvent( elem, clone );\n +\n +\t\t\tif ( deepDataAndEvents ) {\n +\t\t\t\tsrcElements = getAll( elem );\n +\t\t\t\tdestElements = getAll( clone );\n +\n +\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n +\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tsrcElements = destElements = null;\n +\n +\t\t// Return the cloned set\n +\t\treturn clone;\n +\t},\n +\n +\tclean: function( elems, context, fragment, scripts ) {\n +\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n +\t\t\tsafe = context === document && safeFragment,\n +\t\t\tret = [];\n +\n +\t\t// Ensure that context is a document\n +\t\tif ( !context || typeof context.createDocumentFragment === "undefined" ) {\n +\t\t\tcontext = document;\n +\t\t}\n +\n +\t\t// Use the already-created safe fragment if context permits\n +\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n +\t\t\tif ( typeof elem === "number" ) {\n +\t\t\t\telem += "";\n +\t\t\t}\n +\n +\t\t\tif ( !elem ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\t// Convert html string into DOM nodes\n +\t\t\tif ( typeof elem === "string" ) {\n +\t\t\t\tif ( !rhtml.test( elem ) ) {\n +\t\t\t\t\telem = context.createTextNode( elem );\n +\t\t\t\t} else {\n +\t\t\t\t\t// Ensure a safe container in which to render the html\n +\t\t\t\t\tsafe = safe || createSafeFragment( context );\n +\t\t\t\t\tdiv = context.createElement("div");\n +\t\t\t\t\tsafe.appendChild( div );\n +\n +\t\t\t\t\t// Fix "XHTML"-style tags in all browsers\n +\t\t\t\t\telem = elem.replace(rxhtmlTag, "<$1></$2>");\n +\n +\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n +\t\t\t\t\ttag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();\n +\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n +\t\t\t\t\tdepth = wrap[0];\n +\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n +\n +\t\t\t\t\t// Move to the right depth\n +\t\t\t\t\twhile ( depth-- ) {\n +\t\t\t\t\t\tdiv = div.lastChild;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remove IE\'s autoinserted <tbody> from table fragments\n +\t\t\t\t\tif ( !jQuery.support.tbody ) {\n +\n +\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n +\t\t\t\t\t\thasBody = rtbody.test(elem);\n +\t\t\t\t\t\t\ttbody = tag === "table" && !hasBody ?\n +\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n +\n +\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n +\t\t\t\t\t\t\t\twrap[1] === "<table>" && !hasBody ?\n +\t\t\t\t\t\t\t\t\tdiv.childNodes :\n +\t\t\t\t\t\t\t\t\t[];\n +\n +\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n +\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {\n +\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n +\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n +\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = div.childNodes;\n +\n +\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n +\t\t\t\t\tdiv.parentNode.removeChild( div );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( elem.nodeType ) {\n +\t\t\t\tret.push( elem );\n +\t\t\t} else {\n +\t\t\t\tjQuery.merge( ret, elem );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Fix #11356: Clear elements from safeFragment\n +\t\tif ( div ) {\n +\t\t\telem = div = safe = null;\n +\t\t}\n +\n +\t\t// Reset defaultChecked for any radios and checkboxes\n +\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n +\t\tif ( !jQuery.support.appendChecked ) {\n +\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n +\t\t\t\tif ( jQuery.nodeName( elem, "input" ) ) {\n +\t\t\t\t\tfixDefaultChecked( elem );\n +\t\t\t\t} else if ( typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\t\t\t\tjQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Append elements to a provided document fragment\n +\t\tif ( fragment ) {\n +\t\t\t// Special handling of each script element\n +\t\t\thandleScript = function( elem ) {\n +\t\t\t\t// Check if we consider it executable\n +\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n +\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n +\t\t\t\t\t// Return truthy to indicate that it has been handled\n +\t\t\t\t\treturn scripts ?\n +\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n +\t\t\t\t\t\tfragment.appendChild( elem );\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n +\t\t\t\t// Check if we\'re done after handling an executable script\n +\t\t\t\tif ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {\n +\t\t\t\t\t// Append to fragment and handle embedded scripts\n +\t\t\t\t\tfragment.appendChild( elem );\n +\t\t\t\t\tif ( typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n +\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );\n +\n +\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n +\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n +\t\t\t\t\t\ti += jsTags.length;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tcleanData: function( elems, /* internal */ acceptData ) {\n +\t\tvar data, id, elem, type,\n +\t\t\ti = 0,\n +\t\t\tinternalKey = jQuery.expando,\n +\t\t\tcache = jQuery.cache,\n +\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n +\t\t\tspecial = jQuery.event.special;\n +\n +\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n +\n +\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n +\n +\t\t\t\tid = elem[ internalKey ];\n +\t\t\t\tdata = id && cache[ id ];\n +\n +\t\t\t\tif ( data ) {\n +\t\t\t\t\tif ( data.events ) {\n +\t\t\t\t\t\tfor ( type in data.events ) {\n +\t\t\t\t\t\t\tif ( special[ type ] ) {\n +\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n +\n +\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove\'s overhead\n +\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n +\t\t\t\t\tif ( cache[ id ] ) {\n +\n +\t\t\t\t\t\tdelete cache[ id ];\n +\n +\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n +\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n +\t\t\t\t\t\t// we must handle all of these cases\n +\t\t\t\t\t\tif ( deleteExpando ) {\n +\t\t\t\t\t\t\tdelete elem[ internalKey ];\n +\n +\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n +\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\telem[ internalKey ] = null;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\tjQuery.deletedIds.push( id );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +// Limit scope pollution from any deprecated API\n +(function() {\n +\n +var matched, browser;\n +\n +// Use of jQuery.browser is frowned upon.\n +// More details: http://api.jquery.com/jQuery.browser\n +// jQuery.uaMatch maintained for back-compat\n +jQuery.uaMatch = function( ua ) {\n +\tua = ua.toLowerCase();\n +\n +\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n +\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n +\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n +\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n +\t\tua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n +\t\t[];\n +\n +\treturn {\n +\t\tbrowser: match[ 1 ] || "",\n +\t\tversion: match[ 2 ] || "0"\n +\t};\n +};\n +\n +matched = jQuery.uaMatch( navigator.userAgent );\n +browser = {};\n +\n +if ( matched.browser ) {\n +\tbrowser[ matched.browser ] = true;\n +\tbrowser.version = matched.version;\n +}\n +\n +// Chrome is Webkit, but Webkit is also Safari.\n +if ( browser.chrome ) {\n +\tbrowser.webkit = true;\n +} else if ( browser.webkit ) {\n +\tbrowser.safari = true;\n +}\n +\n +jQuery.browser = browser;\n +\n +jQuery.sub = function() {\n +\tfunction jQuerySub( selector, context ) {\n +\t\treturn new jQuerySub.fn.init( selector, context );\n +\t}\n +\tjQuery.extend( true, jQuerySub, this );\n +\tjQuerySub.superclass = this;\n +\tjQuerySub.fn = jQuerySub.prototype = this();\n +\tjQuerySub.fn.constructor = jQuerySub;\n +\tjQuerySub.sub = this.sub;\n +\tjQuerySub.fn.init = function init( selector, context ) {\n +\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n +\t\t\tcontext = jQuerySub( context );\n +\t\t}\n +\n +\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n +\t};\n +\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n +\tvar rootjQuerySub = jQuerySub(document);\n +\treturn jQuerySub;\n +};\n +\n +})();\n +var curCSS, iframe, iframeDoc,\n +\tralpha = /alpha\\([^)]*\\)/i,\n +\tropacity = /opacity=([^)]*)/,\n +\trposition = /^(top|right|bottom|left)$/,\n +\t// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"\n +\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n +\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n +\trmargin = /^margin/,\n +\trnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),\n +\trnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),\n +\trrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ),\n +\telemdisplay = { BODY: "block" },\n +\n +\tcssShow = { position: "absolute", visibility: "hidden", display: "block" },\n +\tcssNormalTransform = {\n +\t\tletterSpacing: 0,\n +\t\tfontWeight: 400\n +\t},\n +\n +\tcssExpand = [ "Top", "Right", "Bottom", "Left" ],\n +\tcssPrefixes = [ "Webkit", "O", "Moz", "ms" ],\n +\n +\teventsToggle = jQuery.fn.toggle;\n +\n +// return a css property mapped to a potentially vendor prefixed property\n +function vendorPropName( style, name ) {\n +\n +\t// shortcut for names that are not vendor prefixed\n +\tif ( name in style ) {\n +\t\treturn name;\n +\t}\n +\n +\t// check for vendor prefixed names\n +\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n +\t\torigName = name,\n +\t\ti = cssPrefixes.length;\n +\n +\twhile ( i-- ) {\n +\t\tname = cssPrefixes[ i ] + capName;\n +\t\tif ( name in style ) {\n +\t\t\treturn name;\n +\t\t}\n +\t}\n +\n +\treturn origName;\n +}\n +\n +function isHidden( elem, el ) {\n +\telem = el || elem;\n +\treturn jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );\n +}\n +\n +function showHide( elements, show ) {\n +\tvar elem, display,\n +\t\tvalues = [],\n +\t\tindex = 0,\n +\t\tlength = elements.length;\n +\n +\tfor ( ; index < length; index++ ) {\n +\t\telem = elements[ index ];\n +\t\tif ( !elem.style ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tvalues[ index ] = jQuery._data( elem, "olddisplay" );\n +\t\tif ( show ) {\n +\t\t\t// Reset the inline display of this element to learn if it is\n +\t\t\t// being hidden by cascaded rules or not\n +\t\t\tif ( !values[ index ] && elem.style.display === "none" ) {\n +\t\t\t\telem.style.display = "";\n +\t\t\t}\n +\n +\t\t\t// Set elements which have been overridden with display: none\n +\t\t\t// in a stylesheet to whatever the default browser style is\n +\t\t\t// for such an element\n +\t\t\tif ( elem.style.display === "" && isHidden( elem ) ) {\n +\t\t\t\tvalues[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );\n +\t\t\t}\n +\t\t} else {\n +\t\t\tdisplay = curCSS( elem, "display" );\n +\n +\t\t\tif ( !values[ index ] && display !== "none" ) {\n +\t\t\t\tjQuery._data( elem, "olddisplay", display );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Set the display of most of the elements in a second loop\n +\t// to avoid the constant reflow\n +\tfor ( index = 0; index < length; index++ ) {\n +\t\telem = elements[ index ];\n +\t\tif ( !elem.style ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tif ( !show || elem.style.display === "none" || elem.style.display === "" ) {\n +\t\t\telem.style.display = show ? values[ index ] || "" : "none";\n +\t\t}\n +\t}\n +\n +\treturn elements;\n +}\n +\n +jQuery.fn.extend({\n +\tcss: function( name, value ) {\n +\t\treturn jQuery.access( this, function( elem, name, value ) {\n +\t\t\treturn value !== undefined ?\n +\t\t\t\tjQuery.style( elem, name, value ) :\n +\t\t\t\tjQuery.css( elem, name );\n +\t\t}, name, value, arguments.length > 1 );\n +\t},\n +\tshow: function() {\n +\t\treturn showHide( this, true );\n +\t},\n +\thide: function() {\n +\t\treturn showHide( this );\n +\t},\n +\ttoggle: function( state, fn2 ) {\n +\t\tvar bool = typeof state === "boolean";\n +\n +\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n +\t\t\treturn eventsToggle.apply( this, arguments );\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tif ( bool ? state : isHidden( this ) ) {\n +\t\t\t\tjQuery( this ).show();\n +\t\t\t} else {\n +\t\t\t\tjQuery( this ).hide();\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +jQuery.extend({\n +\t// Add in style property hooks for overriding the default\n +\t// behavior of getting and setting a style property\n +\tcssHooks: {\n +\t\topacity: {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\tif ( computed ) {\n +\t\t\t\t\t// We should always get a number back from opacity\n +\t\t\t\t\tvar ret = curCSS( elem, "opacity" );\n +\t\t\t\t\treturn ret === "" ? "1" : ret;\n +\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// Exclude the following css properties to add px\n +\tcssNumber: {\n +\t\t"fillOpacity": true,\n +\t\t"fontWeight": true,\n +\t\t"lineHeight": true,\n +\t\t"opacity": true,\n +\t\t"orphans": true,\n +\t\t"widows": true,\n +\t\t"zIndex": true,\n +\t\t"zoom": true\n +\t},\n +\n +\t// Add in properties whose names you wish to fix before\n +\t// setting or getting the value\n +\tcssProps: {\n +\t\t// normalize float css property\n +\t\t"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"\n +\t},\n +\n +\t// Get and set the style property on a DOM Node\n +\tstyle: function( elem, name, value, extra ) {\n +\t\t// Don\'t set styles on text and comment nodes\n +\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tvar ret, type, hooks,\n +\t\t\torigName = jQuery.camelCase( name ),\n +\t\t\tstyle = elem.style;\n +\n +\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n +\n +\t\t// gets hook for the prefixed version\n +\t\t// followed by the unprefixed version\n +\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n +\n +\t\t// Check if we\'re setting a value\n +\t\tif ( value !== undefined ) {\n +\t\t\ttype = typeof value;\n +\n +\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n +\t\t\tif ( type === "string" && (ret = rrelNum.exec( value )) ) {\n +\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n +\t\t\t\t// Fixes bug #9237\n +\t\t\t\ttype = "number";\n +\t\t\t}\n +\n +\t\t\t// Make sure that NaN and null values aren\'t set. See: #7116\n +\t\t\tif ( value == null || type === "number" && isNaN( value ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// If a number was passed in, add \'px\' to the (except for certain CSS properties)\n +\t\t\tif ( type === "number" && !jQuery.cssNumber[ origName ] ) {\n +\t\t\t\tvalue += "px";\n +\t\t\t}\n +\n +\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n +\t\t\tif ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n +\t\t\t\t// Wrapped to prevent IE from throwing errors when \'invalid\' values are provided\n +\t\t\t\t// Fixes bug #5509\n +\t\t\t\ttry {\n +\t\t\t\t\tstyle[ name ] = value;\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\t// If a hook was provided get the non-computed value from there\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\t\t\t}\n +\n +\t\t\t// Otherwise just get the value from the style object\n +\t\t\treturn style[ name ];\n +\t\t}\n +\t},\n +\n +\tcss: function( elem, name, numeric, extra ) {\n +\t\tvar val, num, hooks,\n +\t\t\torigName = jQuery.camelCase( name );\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n +\n +\t\t// gets hook for the prefixed version\n +\t\t// followed by the unprefixed version\n +\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n +\n +\t\t// If a hook was provided get the computed value from there\n +\t\tif ( hooks && "get" in hooks ) {\n +\t\t\tval = hooks.get( elem, true, extra );\n +\t\t}\n +\n +\t\t// Otherwise, if a way to get the computed value exists, use that\n +\t\tif ( val === undefined ) {\n +\t\t\tval = curCSS( elem, name );\n +\t\t}\n +\n +\t\t//convert "normal" to computed value\n +\t\tif ( val === "normal" && name in cssNormalTransform ) {\n +\t\t\tval = cssNormalTransform[ name ];\n +\t\t}\n +\n +\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n +\t\tif ( numeric || extra !== undefined ) {\n +\t\t\tnum = parseFloat( val );\n +\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n +\t\t}\n +\t\treturn val;\n +\t},\n +\n +\t// A method for quickly swapping in/out CSS properties to get correct calculations\n +\tswap: function( elem, options, callback ) {\n +\t\tvar ret, name,\n +\t\t\told = {};\n +\n +\t\t// Remember the old values, and insert the new ones\n +\t\tfor ( name in options ) {\n +\t\t\told[ name ] = elem.style[ name ];\n +\t\t\telem.style[ name ] = options[ name ];\n +\t\t}\n +\n +\t\tret = callback.call( elem );\n +\n +\t\t// Revert the old values\n +\t\tfor ( name in options ) {\n +\t\t\telem.style[ name ] = old[ name ];\n +\t\t}\n +\n +\t\treturn ret;\n +\t}\n +});\n +\n +// NOTE: To any future maintainer, we\'ve window.getComputedStyle\n +// because jsdom on node.js will break without it.\n +if ( window.getComputedStyle ) {\n +\tcurCSS = function( elem, name ) {\n +\t\tvar ret, width, minWidth, maxWidth,\n +\t\t\tcomputed = window.getComputedStyle( elem, null ),\n +\t\t\tstyle = elem.style;\n +\n +\t\tif ( computed ) {\n +\n +\t\t\t// getPropertyValue is only needed for .css(\'filter\') in IE9, see #12537\n +\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n +\n +\t\t\tif ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n +\t\t\t\tret = jQuery.style( elem, name );\n +\t\t\t}\n +\n +\t\t\t// A tribute to the "awesome hack by Dean Edwards"\n +\t\t\t// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right\n +\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n +\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n +\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n +\t\t\t\twidth = style.width;\n +\t\t\t\tminWidth = style.minWidth;\n +\t\t\t\tmaxWidth = style.maxWidth;\n +\n +\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n +\t\t\t\tret = computed.width;\n +\n +\t\t\t\tstyle.width = width;\n +\t\t\t\tstyle.minWidth = minWidth;\n +\t\t\t\tstyle.maxWidth = maxWidth;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t};\n +} else if ( document.documentElement.currentStyle ) {\n +\tcurCSS = function( elem, name ) {\n +\t\tvar left, rsLeft,\n +\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n +\t\t\tstyle = elem.style;\n +\n +\t\t// Avoid setting ret to empty string here\n +\t\t// so we don\'t default to auto\n +\t\tif ( ret == null && style && style[ name ] ) {\n +\t\t\tret = style[ name ];\n +\t\t}\n +\n +\t\t// From the awesome hack by Dean Edwards\n +\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n +\n +\t\t// If we\'re not dealing with a regular pixel number\n +\t\t// but a number that has a weird ending, we need to convert it to pixels\n +\t\t// but not position css attributes, as those are proportional to the parent element instead\n +\t\t// and we can\'t measure the parent instead because it might trigger a "stacking dolls" problem\n +\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n +\n +\t\t\t// Remember the original values\n +\t\t\tleft = style.left;\n +\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n +\n +\t\t\t// Put in the new values to get a computed value out\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n +\t\t\t}\n +\t\t\tstyle.left = name === "fontSize" ? "1em" : ret;\n +\t\t\tret = style.pixelLeft + "px";\n +\n +\t\t\t// Revert the changed values\n +\t\t\tstyle.left = left;\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\telem.runtimeStyle.left = rsLeft;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret === "" ? "auto" : ret;\n +\t};\n +}\n +\n +function setPositiveNumber( elem, value, subtract ) {\n +\tvar matches = rnumsplit.exec( value );\n +\treturn matches ?\n +\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :\n +\t\t\tvalue;\n +}\n +\n +function augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n +\tvar i = extra === ( isBorderBox ? "border" : "content" ) ?\n +\t\t// If we already have the right measurement, avoid augmentation\n +\t\t4 :\n +\t\t// Otherwise initialize for horizontal or vertical properties\n +\t\tname === "width" ? 1 : 0,\n +\n +\t\tval = 0;\n +\n +\tfor ( ; i < 4; i += 2 ) {\n +\t\t// both box models exclude margin, so add it if we want it\n +\t\tif ( extra === "margin" ) {\n +\t\t\t// we use jQuery.css instead of curCSS here\n +\t\t\t// because of the reliableMarginRight CSS hook!\n +\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n +\t\t}\n +\n +\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n +\t\tif ( isBorderBox ) {\n +\t\t\t// border-box includes padding, so remove it if we want content\n +\t\t\tif ( extra === "content" ) {\n +\t\t\t\tval -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0;\n +\t\t\t}\n +\n +\t\t\t// at this point, extra isn\'t border nor margin, so remove border\n +\t\t\tif ( extra !== "margin" ) {\n +\t\t\t\tval -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;\n +\t\t\t}\n +\t\t} else {\n +\t\t\t// at this point, extra isn\'t content, so add padding\n +\t\t\tval += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0;\n +\n +\t\t\t// at this point, extra isn\'t content nor padding, so add border\n +\t\t\tif ( extra !== "padding" ) {\n +\t\t\t\tval += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn val;\n +}\n +\n +function getWidthOrHeight( elem, name, extra ) {\n +\n +\t// Start with offset property, which is equivalent to the border-box value\n +\tvar val = name === "width" ? elem.offsetWidth : elem.offsetHeight,\n +\t\tvalueIsBorderBox = true,\n +\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box";\n +\n +\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n +\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n +\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n +\tif ( val <= 0 || val == null ) {\n +\t\t// Fall back to computed then uncomputed css if necessary\n +\t\tval = curCSS( elem, name );\n +\t\tif ( val < 0 || val == null ) {\n +\t\t\tval = elem.style[ name ];\n +\t\t}\n +\n +\t\t// Computed unit is not pixels. Stop here and return.\n +\t\tif ( rnumnonpx.test(val) ) {\n +\t\t\treturn val;\n +\t\t}\n +\n +\t\t// we need the check for style in case a browser which returns unreliable values\n +\t\t// for getComputedStyle silently falls back to the reliable elem.style\n +\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n +\n +\t\t// Normalize "", auto, and prepare for extra\n +\t\tval = parseFloat( val ) || 0;\n +\t}\n +\n +\t// use the active box-sizing model to add/subtract irrelevant styles\n +\treturn ( val +\n +\t\taugmentWidthOrHeight(\n +\t\t\telem,\n +\t\t\tname,\n +\t\t\textra || ( isBorderBox ? "border" : "content" ),\n +\t\t\tvalueIsBorderBox\n +\t\t)\n +\t) + "px";\n +}\n +\n +\n +// Try to determine the default display value of an element\n +function css_defaultDisplay( nodeName ) {\n +\tif ( elemdisplay[ nodeName ] ) {\n +\t\treturn elemdisplay[ nodeName ];\n +\t}\n +\n +\tvar elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ),\n +\t\tdisplay = elem.css("display");\n +\telem.remove();\n +\n +\t// If the simple way fails,\n +\t// get element\'s real default display by attaching it to a temp iframe\n +\tif ( display === "none" || display === "" ) {\n +\t\t// Use the already-created iframe if possible\n +\t\tiframe = document.body.appendChild(\n +\t\t\tiframe || jQuery.extend( document.createElement("iframe"), {\n +\t\t\t\tframeBorder: 0,\n +\t\t\t\twidth: 0,\n +\t\t\t\theight: 0\n +\t\t\t})\n +\t\t);\n +\n +\t\t// Create a cacheable copy of the iframe document on first call.\n +\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n +\t\t// document to it; WebKit & Firefox won\'t allow reusing the iframe document.\n +\t\tif ( !iframeDoc || !iframe.createElement ) {\n +\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n +\t\t\tiframeDoc.write("<!doctype html><html><body>");\n +\t\t\tiframeDoc.close();\n +\t\t}\n +\n +\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n +\n +\t\tdisplay = curCSS( elem, "display" );\n +\t\tdocument.body.removeChild( iframe );\n +\t}\n +\n +\t// Store the correct default display\n +\telemdisplay[ nodeName ] = display;\n +\n +\treturn display;\n +}\n +\n +jQuery.each([ "height", "width" ], function( i, name ) {\n +\tjQuery.cssHooks[ name ] = {\n +\t\tget: function( elem, computed, extra ) {\n +\t\t\tif ( computed ) {\n +\t\t\t\t// certain elements can have dimension info if we invisibly show them\n +\t\t\t\t// however, it must have a current display style that would benefit from this\n +\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) {\n +\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n +\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t\t});\n +\t\t\t\t} else {\n +\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tset: function( elem, value, extra ) {\n +\t\t\treturn setPositiveNumber( elem, value, extra ?\n +\t\t\t\taugmentWidthOrHeight(\n +\t\t\t\t\telem,\n +\t\t\t\t\tname,\n +\t\t\t\t\textra,\n +\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"\n +\t\t\t\t) : 0\n +\t\t\t);\n +\t\t}\n +\t};\n +});\n +\n +if ( !jQuery.support.opacity ) {\n +\tjQuery.cssHooks.opacity = {\n +\t\tget: function( elem, computed ) {\n +\t\t\t// IE uses filters for opacity\n +\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?\n +\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + "" :\n +\t\t\t\tcomputed ? "1" : "";\n +\t\t},\n +\n +\t\tset: function( elem, value ) {\n +\t\t\tvar style = elem.style,\n +\t\t\t\tcurrentStyle = elem.currentStyle,\n +\t\t\t\topacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",\n +\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || "";\n +\n +\t\t\t// IE has trouble with opacity if it does not have layout\n +\t\t\t// Force it by setting the zoom level\n +\t\t\tstyle.zoom = 1;\n +\n +\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n +\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&\n +\t\t\t\tstyle.removeAttribute ) {\n +\n +\t\t\t\t// Setting style.filter to null, "" & " " still leave "filter:" in the cssText\n +\t\t\t\t// if "filter:" is present at all, clearType is disabled, we want to avoid this\n +\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n +\t\t\t\tstyle.removeAttribute( "filter" );\n +\n +\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n +\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// otherwise, set new filter values\n +\t\t\tstyle.filter = ralpha.test( filter ) ?\n +\t\t\t\tfilter.replace( ralpha, opacity ) :\n +\t\t\t\tfilter + " " + opacity;\n +\t\t}\n +\t};\n +}\n +\n +// These hooks cannot be added until DOM ready because the support test\n +// for it is not run until after DOM ready\n +jQuery(function() {\n +\tif ( !jQuery.support.reliableMarginRight ) {\n +\t\tjQuery.cssHooks.marginRight = {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\t\t\t// Work around by temporarily setting + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +element display to inline-block\n +\t\t\t\treturn jQuery.swap( elem, { "display": "inline-block" }, function() {\n +\t\t\t\t\tif ( computed ) {\n +\t\t\t\t\t\treturn curCSS( elem, "marginRight" );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t};\n +\t}\n +\n +\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n +\t// getComputedStyle returns percent when specified for top/left/bottom/right\n +\t// rather than make the css module depend on the offset module, we just check for it here\n +\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n +\t\tjQuery.each( [ "top", "left" ], function( i, prop ) {\n +\t\t\tjQuery.cssHooks[ prop ] = {\n +\t\t\t\tget: function( elem, computed ) {\n +\t\t\t\t\tif ( computed ) {\n +\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n +\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n +\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t};\n +\t\t});\n +\t}\n +\n +});\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.hidden = function( elem ) {\n +\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none");\n +\t};\n +\n +\tjQuery.expr.filters.visible = function( elem ) {\n +\t\treturn !jQuery.expr.filters.hidden( elem );\n +\t};\n +}\n +\n +// These hooks are used by animate to expand properties\n +jQuery.each({\n +\tmargin: "",\n +\tpadding: "",\n +\tborder: "Width"\n +}, function( prefix, suffix ) {\n +\tjQuery.cssHooks[ prefix + suffix ] = {\n +\t\texpand: function( value ) {\n +\t\t\tvar i,\n +\n +\t\t\t\t// assumes a single number if not a string\n +\t\t\t\tparts = typeof value === "string" ? value.split(" ") : [ value ],\n +\t\t\t\texpanded = {};\n +\n +\t\t\tfor ( i = 0; i < 4; i++ ) {\n +\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n +\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n +\t\t\t}\n +\n +\t\t\treturn expanded;\n +\t\t}\n +\t};\n +\n +\tif ( !rmargin.test( prefix ) ) {\n +\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n +\t}\n +});\n +var r20 = /%20/g,\n +\trbracket = /\\[\\]$/,\n +\trCRLF = /\\r?\\n/g,\n +\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n +\trselectTextarea = /^(?:select|textarea)/i;\n +\n +jQuery.fn.extend({\n +\tserialize: function() {\n +\t\treturn jQuery.param( this.serializeArray() );\n +\t},\n +\tserializeArray: function() {\n +\t\treturn this.map(function(){\n +\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n +\t\t})\n +\t\t.filter(function(){\n +\t\t\treturn this.name && !this.disabled &&\n +\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n +\t\t\t\t\trinput.test( this.type ) );\n +\t\t})\n +\t\t.map(function( i, elem ){\n +\t\t\tvar val = jQuery( this ).val();\n +\n +\t\t\treturn val == null ?\n +\t\t\t\tnull :\n +\t\t\t\tjQuery.isArray( val ) ?\n +\t\t\t\t\tjQuery.map( val, function( val, i ){\n +\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t\t\t\t}) :\n +\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t}).get();\n +\t}\n +});\n +\n +//Serialize an array of form elements or a set of\n +//key/values into a query string\n +jQuery.param = function( a, traditional ) {\n +\tvar prefix,\n +\t\ts = [],\n +\t\tadd = function( key, value ) {\n +\t\t\t// If value is a function, invoke it and return its value\n +\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );\n +\t\t\ts[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );\n +\t\t};\n +\n +\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n +\tif ( traditional === undefined ) {\n +\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n +\t}\n +\n +\t// If an array was passed in, assume that it is an array of form elements.\n +\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n +\t\t// Serialize the form elements\n +\t\tjQuery.each( a, function() {\n +\t\t\tadd( this.name, this.value );\n +\t\t});\n +\n +\t} else {\n +\t\t// If traditional, encode the "old" way (the way 1.3.2 or older\n +\t\t// did it), otherwise encode params recursively.\n +\t\tfor ( prefix in a ) {\n +\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n +\t\t}\n +\t}\n +\n +\t// Return the resulting serialization\n +\treturn s.join( "&" ).replace( r20, "+" );\n +};\n +\n +function buildParams( prefix, obj, traditional, add ) {\n +\tvar name;\n +\n +\tif ( jQuery.isArray( obj ) ) {\n +\t\t// Serialize array item.\n +\t\tjQuery.each( obj, function( i, v ) {\n +\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n +\t\t\t\t// Treat each array item as a scalar.\n +\t\t\t\tadd( prefix, v );\n +\n +\t\t\t} else {\n +\t\t\t\t// If array item is non-scalar (array or object), encode its\n +\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n +\t\t\t\t// Note that rack (as of 1.0.0) can\'t currently deserialize\n +\t\t\t\t// nested arrays properly, and attempting to do so may cause\n +\t\t\t\t// a server error. Possible fixes are to modify rack\'s\n +\t\t\t\t// deserialization algorithm or to provide an option or flag\n +\t\t\t\t// to force array serialization to be shallow.\n +\t\t\t\tbuildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );\n +\t\t\t}\n +\t\t});\n +\n +\t} else if ( !traditional && jQuery.type( obj ) === "object" ) {\n +\t\t// Serialize object item.\n +\t\tfor ( name in obj ) {\n +\t\t\tbuildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );\n +\t\t}\n +\n +\t} else {\n +\t\t// Serialize scalar item.\n +\t\tadd( prefix, obj );\n +\t}\n +}\n +var\n +\t// Document location\n +\tajaxLocParts,\n +\tajaxLocation,\n +\n +\trhash = /#.*$/,\n +\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n +\t// #7653, #8125, #8152: local protocol detection\n +\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n +\trnoContent = /^(?:GET|HEAD)$/,\n +\trprotocol = /^\\/\\//,\n +\trquery = /\\?/,\n +\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n +\trts = /([?&])_=[^&]*/,\n +\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n +\n +\t// Keep a copy of the old load method\n +\t_load = jQuery.fn.load,\n +\n +\t/* Prefilters\n +\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n +\t * 2) These are called:\n +\t * - BEFORE asking for a transport\n +\t * - AFTER param serialization (s.data is a string if s.processData is true)\n +\t * 3) key is the dataType\n +\t * 4) the catchall symbol "*" can be used\n +\t * 5) execution will start with transport dataType and THEN continue down to "*" if needed\n +\t */\n +\tprefilters = {},\n +\n +\t/* Transports bindings\n +\t * 1) key is the dataType\n +\t * 2) the catchall symbol "*" can be used\n +\t * 3) selection will start with transport dataType and THEN go to "*" if needed\n +\t */\n +\ttransports = {},\n +\n +\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n +\tallTypes = ["*/"] + ["*"];\n +\n +// #8138, IE may throw an exception when accessing\n +// a field from window.location if document.domain has been set\n +try {\n +\tajaxLocation = location.href;\n +} catch( e ) {\n +\t// Use the href attribute of an A element\n +\t// since IE will modify it given document.location\n +\tajaxLocation = document.createElement( "a" );\n +\tajaxLocation.href = "";\n +\tajaxLocation = ajaxLocation.href;\n +}\n +\n +// Segment location into parts\n +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n +\n +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n +function addToPrefiltersOrTransports( structure ) {\n +\n +\t// dataTypeExpression is optional and defaults to "*"\n +\treturn function( dataTypeExpression, func ) {\n +\n +\t\tif ( typeof dataTypeExpression !== "string" ) {\n +\t\t\tfunc = dataTypeExpression;\n +\t\t\tdataTypeExpression = "*";\n +\t\t}\n +\n +\t\tvar dataType, list, placeBefore,\n +\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n +\t\t\ti = 0,\n +\t\t\tlength = dataTypes.length;\n +\n +\t\tif ( jQuery.isFunction( func ) ) {\n +\t\t\t// For each dataType in the dataTypeExpression\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tdataType = dataTypes[ i ];\n +\t\t\t\t// We control if we\'re asked to add before\n +\t\t\t\t// any existing element\n +\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n +\t\t\t\tif ( placeBefore ) {\n +\t\t\t\t\tdataType = dataType.substr( 1 ) || "*";\n +\t\t\t\t}\n +\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n +\t\t\t\t// then we add to the structure accordingly\n +\t\t\t\tlist[ placeBefore ? "unshift" : "push" ]( func );\n +\t\t\t}\n +\t\t}\n +\t};\n +}\n +\n +// Base inspection function for prefilters and transports\n +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n +\t\tdataType /* internal */, inspected /* internal */ ) {\n +\n +\tdataType = dataType || options.dataTypes[ 0 ];\n +\tinspected = inspected || {};\n +\n +\tinspected[ dataType ] = true;\n +\n +\tvar selection,\n +\t\tlist = structure[ dataType ],\n +\t\ti = 0,\n +\t\tlength = list ? list.length : 0,\n +\t\texecuteOnly = ( structure === prefilters );\n +\n +\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n +\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n +\t\t// If we got redirected to another dataType\n +\t\t// we try there if executing only and not done already\n +\t\tif ( typeof selection === "string" ) {\n +\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n +\t\t\t\tselection = undefined;\n +\t\t\t} else {\n +\t\t\t\toptions.dataTypes.unshift( selection );\n +\t\t\t\tselection = inspectPrefiltersOrTransports(\n +\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n +\t\t\t}\n +\t\t}\n +\t}\n +\t// If we\'re only executing or nothing was selected\n +\t// we try the catchall dataType if not done already\n +\tif ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {\n +\t\tselection = inspectPrefiltersOrTransports(\n +\t\t\t\tstructure, options, originalOptions, jqXHR, "*", inspected );\n +\t}\n +\t// unnecessary when only executing (prefilters)\n +\t// but it\'ll be ignored by the caller in that case\n +\treturn selection;\n +}\n +\n +// A special extend for ajax options\n +// that takes "flat" options (not to be deep extended)\n +// Fixes #9887\n +function ajaxExtend( target, src ) {\n +\tvar key, deep,\n +\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n +\tfor ( key in src ) {\n +\t\tif ( src[ key ] !== undefined ) {\n +\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n +\t\t}\n +\t}\n +\tif ( deep ) {\n +\t\tjQuery.extend( true, target, deep );\n +\t}\n +}\n +\n +jQuery.fn.load = function( url, params, callback ) {\n +\tif ( typeof url !== "string" && _load ) {\n +\t\treturn _load.apply( this, arguments );\n +\t}\n +\n +\t// Don\'t do a request if no elements are being requested\n +\tif ( !this.length ) {\n +\t\treturn this;\n +\t}\n +\n +\tvar selector, type, response,\n +\t\tself = this,\n +\t\toff = url.indexOf(" ");\n +\n +\tif ( off >= 0 ) {\n +\t\tselector = url.slice( off, url.length );\n +\t\turl = url.slice( 0, off );\n +\t}\n +\n +\t// If it\'s a function\n +\tif ( jQuery.isFunction( params ) ) {\n +\n +\t\t// We assume that it\'s the callback\n +\t\tcallback = params;\n +\t\tparams = undefined;\n +\n +\t// Otherwise, build a param string\n +\t} else if ( params && typeof params === "object" ) {\n +\t\ttype = "POST";\n +\t}\n +\n +\t// Request the remote document\n +\tjQuery.ajax({\n +\t\turl: url,\n +\n +\t\t// if "type" variable is undefined, then "GET" method will be used\n +\t\ttype: type,\n +\t\tdataType: "html",\n +\t\tdata: params,\n +\t\tcomplete: function( jqXHR, status ) {\n +\t\t\tif ( callback ) {\n +\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n +\t\t\t}\n +\t\t}\n +\t}).done(function( responseText ) {\n +\n +\t\t// Save response for use in complete callback\n +\t\tresponse = arguments;\n +\n +\t\t// See if a selector was specified\n +\t\tself.html( selector ?\n +\n +\t\t\t// Create a dummy div to hold the results\n +\t\t\tjQuery("<div>")\n +\n +\t\t\t\t// inject the contents of the document in, removing the scripts\n +\t\t\t\t// to avoid any \'Permission Denied\' errors in IE\n +\t\t\t\t.append( responseText.replace( rscript, "" ) )\n +\n +\t\t\t\t// Locate the specified elements\n +\t\t\t\t.find( selector ) :\n +\n +\t\t\t// If not, just inject the full result\n +\t\t\tresponseText );\n +\n +\t});\n +\n +\treturn this;\n +};\n +\n +// Attach a bunch of functions for handling common AJAX events\n +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){\n +\tjQuery.fn[ o ] = function( f ){\n +\t\treturn this.on( o, f );\n +\t};\n +});\n +\n +jQuery.each( [ "get", "post" ], function( i, method ) {\n +\tjQuery[ method ] = function( url, data, callback, type ) {\n +\t\t// shift arguments if data argument was omitted\n +\t\tif ( jQuery.isFunction( data ) ) {\n +\t\t\ttype = type || callback;\n +\t\t\tcallback = data;\n +\t\t\tdata = undefined;\n +\t\t}\n +\n +\t\treturn jQuery.ajax({\n +\t\t\ttype: method,\n +\t\t\turl: url,\n +\t\t\tdata: data,\n +\t\t\tsuccess: callback,\n +\t\t\tdataType: type\n +\t\t});\n +\t};\n +});\n +\n +jQuery.extend({\n +\n +\tgetScript: function( url, callback ) {\n +\t\treturn jQuery.get( url, undefined, callback, "script" );\n +\t},\n +\n +\tgetJSON: function( url, data, callback ) {\n +\t\treturn jQuery.get( url, data, callback, "json" );\n +\t},\n +\n +\t// Creates a full fledged settings object into target\n +\t// with both ajaxSettings and settings fields.\n +\t// If target is omitted, writes into ajaxSettings.\n +\tajaxSetup: function( target, settings ) {\n +\t\tif ( settings ) {\n +\t\t\t// Building a settings object\n +\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n +\t\t} else {\n +\t\t\t// Extending ajaxSettings\n +\t\t\tsettings = target;\n +\t\t\ttarget = jQuery.ajaxSettings;\n +\t\t}\n +\t\tajaxExtend( target, settings );\n +\t\treturn target;\n +\t},\n +\n +\tajaxSettings: {\n +\t\turl: ajaxLocation,\n +\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n +\t\tglobal: true,\n +\t\ttype: "GET",\n +\t\tcontentType: "application/x-www-form-urlencoded; charset=UTF-8",\n +\t\tprocessData: true,\n +\t\tasync: true,\n +\t\t/*\n +\t\ttimeout: 0,\n +\t\tdata: null,\n +\t\tdataType: null,\n +\t\tusername: null,\n +\t\tpassword: null,\n +\t\tcache: null,\n +\t\tthrows: false,\n +\t\ttraditional: false,\n +\t\theaders: {},\n +\t\t*/\n +\n +\t\taccepts: {\n +\t\t\txml: "application/xml, text/xml",\n +\t\t\thtml: "text/html",\n +\t\t\ttext: "text/plain",\n +\t\t\tjson: "application/json, text/javascript",\n +\t\t\t"*": allTypes\n +\t\t},\n +\n +\t\tcontents: {\n +\t\t\txml: /xml/,\n +\t\t\thtml: /html/,\n +\t\t\tjson: /json/\n +\t\t},\n +\n +\t\tresponseFields: {\n +\t\t\txml: "responseXML",\n +\t\t\ttext: "responseText"\n +\t\t},\n +\n +\t\t// List of data converters\n +\t\t// 1) key format is "source_type destination_type" (a single space in-between)\n +\t\t// 2) the catchall symbol "*" can be used for source_type\n +\t\tconverters: {\n +\n +\t\t\t// Convert anything to text\n +\t\t\t"* text": window.String,\n +\n +\t\t\t// Text to html (true = no transformation)\n +\t\t\t"text html": true,\n +\n +\t\t\t// Evaluate text as a json expression\n +\t\t\t"text json": jQuery.parseJSON,\n +\n +\t\t\t// Parse text as xml\n +\t\t\t"text xml": jQuery.parseXML\n +\t\t},\n +\n +\t\t// For options that shouldn\'t be deep extended:\n +\t\t// you can add your own custom options here if\n +\t\t// and when you create one that shouldn\'t be\n +\t\t// deep extended (see ajaxExtend)\n +\t\tflatOptions: {\n +\t\t\tcontext: true,\n +\t\t\turl: true\n +\t\t}\n +\t},\n +\n +\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n +\tajaxTransport: addToPrefiltersOrTransports( transports ),\n +\n +\t// Main method\n +\tajax: function( url, options ) {\n +\n +\t\t// If url is an object, simulate pre-1.5 signature\n +\t\tif ( typeof url === "object" ) {\n +\t\t\toptions = url;\n +\t\t\turl = undefined;\n +\t\t}\n +\n +\t\t// Force options to be an object\n +\t\toptions = options || {};\n +\n +\t\tvar // ifModified key\n +\t\t\tifModifiedKey,\n +\t\t\t// Response headers\n +\t\t\tresponseHeadersString,\n +\t\t\tresponseHeaders,\n +\t\t\t// transport\n +\t\t\ttransport,\n +\t\t\t// timeout handle\n +\t\t\ttimeoutTimer,\n +\t\t\t// Cross-domain detection vars\n +\t\t\tparts,\n +\t\t\t// To know if global events are to be dispatched\n +\t\t\tfireGlobals,\n +\t\t\t// Loop variable\n +\t\t\ti,\n +\t\t\t// Create the final options object\n +\t\t\ts = jQuery.ajaxSetup( {}, options ),\n +\t\t\t// Callbacks context\n +\t\t\tcallbackContext = s.context || s,\n +\t\t\t// Context for global events\n +\t\t\t// It\'s the callbackContext if one was provided in the options\n +\t\t\t// and if it\'s a DOM node or a jQuery collection\n +\t\t\tglobalEventContext = callbackContext !== s &&\n +\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n +\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n +\t\t\t// Deferreds\n +\t\t\tdeferred = jQuery.Deferred(),\n +\t\t\tcompleteDeferred = jQuery.Callbacks( "once memory" ),\n +\t\t\t// Status-dependent callbacks\n +\t\t\tstatusCode = s.statusCode || {},\n +\t\t\t// Headers (they are sent all at once)\n +\t\t\trequestHeaders = {},\n +\t\t\trequestHeadersNames = {},\n +\t\t\t// The jqXHR state\n +\t\t\tstate = 0,\n +\t\t\t// Default abort message\n +\t\t\tstrAbort = "canceled",\n +\t\t\t// Fake xhr\n +\t\t\tjqXHR = {\n +\n +\t\t\t\treadyState: 0,\n +\n +\t\t\t\t// Caches the header\n +\t\t\t\tsetRequestHeader: function( name, value ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\tvar lname = name.toLowerCase();\n +\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n +\t\t\t\t\t\trequestHeaders[ name ] = value;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Raw string\n +\t\t\t\tgetAllResponseHeaders: function() {\n +\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n +\t\t\t\t},\n +\n +\t\t\t\t// Builds headers hashtable if needed\n +\t\t\t\tgetResponseHeader: function( key ) {\n +\t\t\t\t\tvar match;\n +\t\t\t\t\tif ( state === 2 ) {\n +\t\t\t\t\t\tif ( !responseHeaders ) {\n +\t\t\t\t\t\t\tresponseHeaders = {};\n +\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n +\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n +\t\t\t\t\t}\n +\t\t\t\t\treturn match === undefined ? null : match;\n +\t\t\t\t},\n +\n +\t\t\t\t// Overrides response content-type header\n +\t\t\t\toverrideMimeType: function( type ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\ts.mimeType = type;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Cancel the request\n +\t\t\t\tabort: function( statusText ) {\n +\t\t\t\t\tstatusText = statusText || strAbort;\n +\t\t\t\t\tif ( transport ) {\n +\t\t\t\t\t\ttransport.abort( statusText );\n +\t\t\t\t\t}\n +\t\t\t\t\tdone( 0, statusText );\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\t// Callback for when everything is done\n +\t\t// It is defined here because jslint complains if it is declared\n +\t\t// at the end of the function (which would be more logical and readable)\n +\t\tfunction done( status, nativeStatusText, responses, headers ) {\n +\t\t\tvar isSuccess, success, error, response, modified,\n +\t\t\t\tstatusText = nativeStatusText;\n +\n +\t\t\t// Called once\n +\t\t\tif ( state === 2 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// State is "done" now\n +\t\t\tstate = 2;\n +\n +\t\t\t// Clear timeout if it exists\n +\t\t\tif ( timeoutTimer ) {\n +\t\t\t\tclearTimeout( timeoutTimer );\n +\t\t\t}\n +\n +\t\t\t// Dereference transport for early garbage collection\n +\t\t\t// (no matter how long the jqXHR object will be used)\n +\t\t\ttransport = undefined;\n +\n +\t\t\t// Cache response headers\n +\t\t\tresponseHeadersString = headers || "";\n +\n +\t\t\t// Set readyState\n +\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n +\n +\t\t\t// Get response data\n +\t\t\tif ( responses ) {\n +\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n +\t\t\t}\n +\n +\t\t\t// If successful, handle type chaining\n +\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n +\n +\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\t\t\tif ( s.ifModified ) {\n +\n +\t\t\t\t\tmodified = jqXHR.getResponseHeader("Last-Modified");\n +\t\t\t\t\tif ( modified ) {\n +\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n +\t\t\t\t\t}\n +\t\t\t\t\tmodified = jqXHR.getResponseHeader("Etag");\n +\t\t\t\t\tif ( modified ) {\n +\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// If not modified\n +\t\t\t\tif ( status === 304 ) {\n +\n +\t\t\t\t\tstatusText = "notmodified";\n +\t\t\t\t\tisSuccess = true;\n +\n +\t\t\t\t// If we have data\n +\t\t\t\t} else {\n +\n +\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n +\t\t\t\t\tstatusText = isSuccess.state;\n +\t\t\t\t\tsuccess = isSuccess.data;\n +\t\t\t\t\terror = isSuccess.error;\n +\t\t\t\t\tisSuccess = !error;\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\t// We extract error from statusText\n +\t\t\t\t// then normalize statusText and status for non-aborts\n +\t\t\t\terror = statusText;\n +\t\t\t\tif ( !statusText || status ) {\n +\t\t\t\t\tstatusText = "error";\n +\t\t\t\t\tif ( status < 0 ) {\n +\t\t\t\t\t\tstatus = 0;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set data for the fake xhr object\n +\t\t\tjqXHR.status = status;\n +\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + "";\n +\n +\t\t\t// Success/Error\n +\t\t\tif ( isSuccess ) {\n +\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n +\t\t\t} else {\n +\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n +\t\t\t}\n +\n +\t\t\t// Status-dependent callbacks\n +\t\t\tjqXHR.statusCode( statusCode );\n +\t\t\tstatusCode = undefined;\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),\n +\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n +\t\t\t}\n +\n +\t\t\t// Complete\n +\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );\n +\t\t\t\t// Handle the global AJAX counter\n +\t\t\t\tif ( !( --jQuery.active ) ) {\n +\t\t\t\t\tjQuery.event.trigger( "ajaxStop" );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Attach deferreds\n +\t\tdeferred.promise( jqXHR );\n +\t\tjqXHR.success = jqXHR.done;\n +\t\tjqXHR.error = jqXHR.fail;\n +\t\tjqXHR.complete = completeDeferred.add;\n +\n +\t\t// Status-dependent callbacks\n +\t\tjqXHR.statusCode = function( map ) {\n +\t\t\tif ( map ) {\n +\t\t\t\tvar tmp;\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tfor ( tmp in map ) {\n +\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\ttmp = map[ jqXHR.status ];\n +\t\t\t\t\tjqXHR.always( tmp );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t};\n +\n +\t\t// Remove hash character (#7531: and string promotion)\n +\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n +\t\t// We also use the url parameter if available\n +\t\ts.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );\n +\n +\t\t// Extract dataTypes list\n +\t\ts.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace );\n +\n +\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n +\t\tif ( s.crossDomain == null ) {\n +\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n +\t\t\ts.crossDomain = !!( parts &&\n +\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n +\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=\n +\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )\n +\t\t\t);\n +\t\t}\n +\n +\t\t// Convert data if not already a string\n +\t\tif ( s.data && s.processData && typeof s.data !== "string" ) {\n +\t\t\ts.data = jQuery.param( s.data, s.traditional );\n +\t\t}\n +\n +\t\t// Apply prefilters\n +\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n +\n +\t\t// If request was aborted inside a prefilter, stop there\n +\t\tif ( state === 2 ) {\n +\t\t\treturn jqXHR;\n +\t\t}\n +\n +\t\t// We can fire global events as of now if asked to\n +\t\tfireGlobals = s.global;\n +\n +\t\t// Uppercase the type\n +\t\ts.type = s.type.toUpperCase();\n +\n +\t\t// Determine if request has content\n +\t\ts.hasContent = !rnoContent.test( s.type );\n +\n +\t\t// Watch for a new set of requests\n +\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n +\t\t\tjQuery.event.trigger( "ajaxStart" );\n +\t\t}\n +\n +\t\t// More options handling for requests with no content\n +\t\tif ( !s.hasContent ) {\n +\n +\t\t\t// If data is available, append data to url\n +\t\t\tif ( s.data ) {\n +\t\t\t\ts.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;\n +\t\t\t\t// #9682: remove data so that it\'s not used in an eventual retry\n +\t\t\t\tdelete s.data;\n +\t\t\t}\n +\n +\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n +\t\t\tifModifiedKey = s.url;\n +\n +\t\t\t// Add anti-cache in url if needed\n +\t\t\tif ( s.cache === false ) {\n +\n +\t\t\t\tvar ts = jQuery.now(),\n +\t\t\t\t\t// try replacing _= if it is there\n +\t\t\t\t\tret = s.url.replace( rts, "$1_=" + ts );\n +\n +\t\t\t\t// if nothing was replaced, add timestamp to the end\n +\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the correct header, if data is being sent\n +\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n +\t\t\tjqXHR.setRequestHeader( "Content-Type", s.contentType );\n +\t\t}\n +\n +\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\tif ( s.ifModified ) {\n +\t\t\tifModifiedKey = ifModifiedKey || s.url;\n +\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );\n +\t\t\t}\n +\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the Accepts header for the server, depending on the dataType\n +\t\tjqXHR.setRequestHeader(\n +\t\t\t"Accept",\n +\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n +\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :\n +\t\t\t\ts.accepts[ "*" ]\n +\t\t);\n +\n +\t\t// Check for headers option\n +\t\tfor ( i in s.headers ) {\n +\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n +\t\t}\n +\n +\t\t// Allow custom headers/mimetypes and early abort\n +\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n +\t\t\t\t// Abort if not done already and return\n +\t\t\t\treturn jqXHR.abort();\n +\n +\t\t}\n +\n +\t\t// aborting is no longer a cancellation\n +\t\tstrAbort = "abort";\n +\n +\t\t// Install callbacks on deferreds\n +\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n +\t\t\tjqXHR[ i ]( s[ i ] );\n +\t\t}\n +\n +\t\t// Get transport\n +\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n +\n +\t\t// If no transport, we auto-abort\n +\t\tif ( !transport ) {\n +\t\t\tdone( -1, "No Transport" );\n +\t\t} else {\n +\t\t\tjqXHR.readyState = 1;\n +\t\t\t// Send global event\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );\n +\t\t\t}\n +\t\t\t// Timeout\n +\t\t\tif ( s.async && s.timeout > 0 ) {\n +\t\t\t\ttimeoutTimer = setTimeout( function(){\n +\t\t\t\t\tjqXHR.abort( "timeout" );\n +\t\t\t\t}, s.timeout );\n +\t\t\t}\n +\n +\t\t\ttry {\n +\t\t\t\tstate = 1;\n +\t\t\t\ttransport.send( requestHeaders, done );\n +\t\t\t} catch (e) {\n +\t\t\t\t// Propagate exception as error if not done\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tdone( -1, e );\n +\t\t\t\t// Simply rethrow otherwise\n +\t\t\t\t} else {\n +\t\t\t\t\tthrow e;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn jqXHR;\n +\t},\n +\n +\t// Counter for holding the number of active queries\n +\tactive: 0,\n +\n +\t// Last-Modified header cache for next request\n +\tlastModified: {},\n +\tetag: {}\n +\n +});\n +\n +/* Handles responses to an ajax request:\n + * - sets all responseXXX fields accordingly\n + * - finds the right dataType (mediates between content-type and expected dataType)\n + * - returns the corresponding response\n + */\n +function ajaxHandleResponses( s, jqXHR, responses ) {\n +\n +\tvar ct, type, finalDataType, firstDataType,\n +\t\tcontents = s.contents,\n +\t\tdataTypes = s.dataTypes,\n +\t\tresponseFields = s.responseFields;\n +\n +\t// Fill responseXXX fields\n +\tfor ( type in responseFields ) {\n +\t\tif ( type in responses ) {\n +\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n +\t\t}\n +\t}\n +\n +\t// Remove auto dataType and get content-type in the process\n +\twhile( dataTypes[ 0 ] === "*" ) {\n +\t\tdataTypes.shift();\n +\t\tif ( ct === undefined ) {\n +\t\t\tct = s.mimeType || jqXHR.getResponseHeader( "content-type" );\n +\t\t}\n +\t}\n +\n +\t// Check if we\'re dealing with a known content-type\n +\tif ( ct ) {\n +\t\tfor ( type in contents ) {\n +\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n +\t\t\t\tdataTypes.unshift( type );\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Check to see if we have a response for the expected dataType\n +\tif ( dataTypes[ 0 ] in responses ) {\n +\t\tfinalDataType = dataTypes[ 0 ];\n +\t} else {\n +\t\t// Try convertible dataTypes\n +\t\tfor ( type in responses ) {\n +\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {\n +\t\t\t\tfinalDataType = type;\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t\tif ( !firstDataType ) {\n +\t\t\t\tfirstDataType = type;\n +\t\t\t}\n +\t\t}\n +\t\t// Or just use first one\n +\t\tfinalDataType = finalDataType || firstDataType;\n +\t}\n +\n +\t// If we found a dataType\n +\t// We add the dataType to the list if needed\n +\t// and return the corresponding response\n +\tif ( finalDataType ) {\n +\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n +\t\t\tdataTypes.unshift( finalDataType );\n +\t\t}\n +\t\treturn responses[ finalDataType ];\n +\t}\n +}\n +\n +// Chain conversions given the request and the original response\n +function ajaxConvert( s, response ) {\n +\n +\tvar conv, conv2, current, tmp,\n +\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n +\t\tdataTypes = s.dataTypes.slice(),\n +\t\tprev = dataTypes[ 0 ],\n +\t\tconverters = {},\n +\t\ti = 0;\n +\n +\t// Apply the dataFilter if provided\n +\tif ( s.dataFilter ) {\n +\t\tresponse = s.dataFilter( response, s.dataType );\n +\t}\n +\n +\t// Create converters map with lowercased keys\n +\tif ( dataTypes[ 1 ] ) {\n +\t\tfor ( conv in s.converters ) {\n +\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n +\t\t}\n +\t}\n +\n +\t// Convert to each sequential dataType, tolerating list modification\n +\tfor ( ; (current = dataTypes[++i]); ) {\n +\n +\t\t// There\'s only work to do if current dataType is non-auto\n +\t\tif ( current !== "*" ) {\n +\n +\t\t\t// Convert response if prev dataType is non-auto and differs from current\n +\t\t\tif ( prev !== "*" && prev !== current ) {\n +\n +\t\t\t\t// Seek a direct converter\n +\t\t\t\tconv = converters[ prev + " " + current ] || converters[ "* " + current ];\n +\n +\t\t\t\t// If none found, seek a pair\n +\t\t\t\tif ( !conv ) {\n +\t\t\t\t\tfor ( conv2 in converters ) {\n +\n +\t\t\t\t\t\t// If conv2 outputs current\n +\t\t\t\t\t\ttmp = conv2.split(" ");\n +\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n +\n +\t\t\t\t\t\t\t// If prev can be converted to accepted input\n +\t\t\t\t\t\t\tconv = converters[ prev + " " + tmp[ 0 ] ] ||\n +\t\t\t\t\t\t\t\tconverters[ "* " + tmp[ 0 ] ];\n +\t\t\t\t\t\t\tif ( conv ) {\n +\t\t\t\t\t\t\t\t// Condense equivalence converters\n +\t\t\t\t\t\t\t\tif ( conv === true ) {\n +\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n +\n +\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n +\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n +\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n +\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Apply converter (if not an equivalence)\n +\t\t\t\tif ( conv !== true ) {\n +\n +\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n +\t\t\t\t\tif ( conv && s["throws"] ) {\n +\t\t\t\t\t\tresponse = conv( response );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\tresponse = conv( response );\n +\t\t\t\t\t\t} catch ( e ) {\n +\t\t\t\t\t\t\treturn { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Update prev for next iteration\n +\t\t\tprev = current;\n +\t\t}\n +\t}\n +\n +\treturn { state: "success", data: response };\n +}\n +var oldCallbacks = [],\n +\trquestion = /\\?/,\n +\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n +\tnonce = jQuery.now();\n +\n +// Default jsonp settings\n +jQuery.ajaxSetup({\n +\tjsonp: "callback",\n +\tjsonpCallback: function() {\n +\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );\n +\t\tthis[ callback ] = true;\n +\t\treturn callback;\n +\t}\n +});\n +\n +// Detect, normalize options and install callbacks for jsonp requests\n +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {\n +\n +\tvar callbackName, overwritten, responseContainer,\n +\t\tdata = s.data,\n +\t\turl = s.url,\n +\t\thasCallback = s.jsonp !== false,\n +\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n +\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === "string" &&\n +\t\t\t!( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") &&\n +\t\t\trjsonp.test( data );\n +\n +\t// Handle iff the expected data type is "jsonp" or we have a parameter to set\n +\tif ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) {\n +\n +\t\t// Get callback name, remembering preexisting value associated with it\n +\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n +\t\t\ts.jsonpCallback() :\n +\t\t\ts.jsonpCallback;\n +\t\toverwritten = window[ callbackName ];\n +\n +\t\t// Insert callback into url or form data\n +\t\tif ( replaceInUrl ) {\n +\t\t\ts.url = url.replace( rjsonp, "$1" + callbackName );\n +\t\t} else if ( replaceInData ) {\n +\t\t\ts.data = data.replace( rjsonp, "$1" + callbackName );\n +\t\t} else if ( hasCallback ) {\n +\t\t\ts.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;\n +\t\t}\n +\n +\t\t// Use data converter to retrieve json after script execution\n +\t\ts.converters["script json"] = function() {\n +\t\t\tif ( !responseContainer ) {\n +\t\t\t\tjQuery.error( callbackName + " was not called" );\n +\t\t\t}\n +\t\t\treturn responseContainer[ 0 ];\n +\t\t};\n +\n +\t\t// force json dataType\n +\t\ts.dataTypes[ 0 ] = "json";\n +\n +\t\t// Install callback\n +\t\twindow[ callbackName ] = function() {\n +\t\t\tresponseContainer = arguments;\n +\t\t};\n +\n +\t\t// Clean-up function (fires after converters)\n +\t\tjqXHR.always(function() {\n +\t\t\t// Restore preexisting value\n +\t\t\twindow[ callbackName ] = overwritten;\n +\n +\t\t\t// Save back as free\n +\t\t\tif ( s[ callbackName ] ) {\n +\t\t\t\t// make sure that re-using the options doesn\'t screw things around\n +\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n +\n +\t\t\t\t// save the callback name for future use\n +\t\t\t\toldCallbacks.push( callbackName );\n +\t\t\t}\n +\n +\t\t\t// Call if it was a function and we have a response\n +\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n +\t\t\t\toverwritten( responseContainer[ 0 ] );\n +\t\t\t}\n +\n +\t\t\tresponseContainer = overwritten = undefined;\n +\t\t});\n +\n +\t\t// Delegate to script\n +\t\treturn "script";\n +\t}\n +});\n +// Install script dataType\n +jQuery.ajaxSetup({\n +\taccepts: {\n +\t\tscript: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"\n +\t},\n +\tcontents: {\n +\t\tscript: /javascript|ecmascript/\n +\t},\n +\tconverters: {\n +\t\t"text script": function( text ) {\n +\t\t\tjQuery.globalEval( text );\n +\t\t\treturn text;\n +\t\t}\n +\t}\n +});\n +\n +// Handle cache\'s special case and global\n +jQuery.ajaxPrefilter( "script", function( s ) {\n +\tif ( s.cache === undefined ) {\n +\t\ts.cache = false;\n +\t}\n +\tif ( s.crossDomain ) {\n +\t\ts.type = "GET";\n +\t\ts.global = false;\n +\t}\n +});\n +\n +// Bind script tag hack transport\n +jQuery.ajaxTransport( "script", function(s) {\n +\n +\t// This transport only deals with cross domain requests\n +\tif ( s.crossDomain ) {\n +\n +\t\tvar script,\n +\t\t\thead = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;\n +\n +\t\treturn {\n +\n +\t\t\tsend: function( _, callback ) {\n +\n +\t\t\t\tscript = document.createElement( "script" );\n +\n +\t\t\t\tscript.async = "async";\n +\n +\t\t\t\tif ( s.scriptCharset ) {\n +\t\t\t\t\tscript.charset = s.scriptCharset;\n +\t\t\t\t}\n +\n +\t\t\t\tscript.src = s.url;\n +\n +\t\t\t\t// Attach handlers for all browsers\n +\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n +\n +\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n +\n +\t\t\t\t\t\t// Handle memory leak in IE\n +\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n +\n +\t\t\t\t\t\t// Remove the script\n +\t\t\t\t\t\tif ( head && script.parentNode ) {\n +\t\t\t\t\t\t\thead.removeChild( script );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Dereference the script\n +\t\t\t\t\t\tscript = undefined;\n +\n +\t\t\t\t\t\t// Callback if not abort\n +\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\tcallback( 200, "success" );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n +\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n +\t\t\t\thead.insertBefore( script, head.firstChild );\n +\t\t\t},\n +\n +\t\t\tabort: function() {\n +\t\t\t\tif ( script ) {\n +\t\t\t\t\tscript.onload( 0, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t}\n +});\n +var xhrCallbacks,\n +\t// #5280: Internet Explorer will keep connections alive if we don\'t abort on unload\n +\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n +\t\t// Abort all pending requests\n +\t\tfor ( var key in xhrCallbacks ) {\n +\t\t\txhrCallbacks[ key ]( 0, 1 );\n +\t\t}\n +\t} : false,\n +\txhrId = 0;\n +\n +// Functions to create xhrs\n +function createStandardXHR() {\n +\ttry {\n +\t\treturn new window.XMLHttpRequest();\n +\t} catch( e ) {}\n +}\n +\n +function createActiveXHR() {\n +\ttry {\n +\t\treturn new window.ActiveXObject( "Microsoft.XMLHTTP" );\n +\t} catch( e ) {}\n +}\n +\n +// Create the request object\n +// (This is still attached to ajaxSettings for backward compatibility)\n +jQuery.ajaxSettings.xhr = window.ActiveXObject ?\n +\t/* Microsoft failed to properly\n +\t * implement the XMLHttpRequest in IE7 (can\'t request local files),\n +\t * so we use the ActiveXObject when it is available\n +\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n +\t * we need a fallback.\n +\t */\n +\tfunction() {\n +\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n +\t} :\n +\t// For all other browsers, use the standard XMLHttpRequest object\n +\tcreateStandardXHR;\n +\n +// Determine support properties\n +(function( xhr ) {\n +\tjQuery.extend( jQuery.support, {\n +\t\tajax: !!xhr,\n +\t\tcors: !!xhr && ( "withCredentials" in xhr )\n +\t});\n +})( jQuery.ajaxSettings.xhr() );\n +\n +// Create transport if the browser can provide an xhr\n +if ( jQuery.support.ajax ) {\n +\n +\tjQuery.ajaxTransport(function( s ) {\n +\t\t// Cross domain only allowed if supported through XMLHttpRequest\n +\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n +\n +\t\t\tvar callback;\n +\n +\t\t\treturn {\n +\t\t\t\tsend: function( headers, complete ) {\n +\n +\t\t\t\t\t// Get a new xhr\n +\t\t\t\t\tvar handle, i,\n +\t\t\t\t\t\txhr = s.xhr();\n +\n +\t\t\t\t\t// Open the socket\n +\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n +\t\t\t\t\tif ( s.username ) {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Apply custom fields if provided\n +\t\t\t\t\tif ( s.xhrFields ) {\n +\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n +\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Override mime type if needed\n +\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n +\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// X-Requested-With header\n +\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n +\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n +\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n +\t\t\t\t\t// For same-domain requests, won\'t change header if already provided.\n +\t\t\t\t\tif ( !s.crossDomain && !headers["X-Requested-With"] ) {\n +\t\t\t\t\t\theaders[ "X-Requested-With" ] = "XMLHttpRequest";\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tfor ( i in headers ) {\n +\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} catch( _ ) {}\n +\n +\t\t\t\t\t// Do send the request\n +\t\t\t\t\t// This may raise an exception which is actually\n +\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n +\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n +\n +\t\t\t\t\t// Listener\n +\t\t\t\t\tcallback = function( _, isAbort ) {\n +\n +\t\t\t\t\t\tvar status,\n +\t\t\t\t\t\t\tstatusText,\n +\t\t\t\t\t\t\tresponseHeaders,\n +\t\t\t\t\t\t\tresponses,\n +\t\t\t\t\t\t\txml;\n +\n +\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n +\t\t\t\t\t\t// of an xhr when a network error occurred\n +\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n +\t\t\t\t\t\ttry {\n +\n +\t\t\t\t\t\t\t// Was never called and is aborted or complete\n +\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n +\n +\t\t\t\t\t\t\t\t// Only called once\n +\t\t\t\t\t\t\t\tcallback = undefined;\n +\n +\t\t\t\t\t\t\t\t// Do not keep as active anymore\n +\t\t\t\t\t\t\t\tif ( handle ) {\n +\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n +\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t// If it\'s an abort\n +\t\t\t\t\t\t\t\tif ( isAbort ) {\n +\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n +\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n +\t\t\t\t\t\t\t\t\t\txhr.abort();\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n +\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n +\t\t\t\t\t\t\t\t\tresponses = {};\n +\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n +\n +\t\t\t\t\t\t\t\t\t// Construct response list\n +\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n +\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n +\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n +\t\t\t\t\t\t\t\t\t} catch( e ) {\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n +\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n +\t\t\t\t\t\t\t\t\t} catch( e ) {\n +\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n +\t\t\t\t\t\t\t\t\t\tstatusText = "";\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n +\n +\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n +\t\t\t\t\t\t\t\t\t// (success with no data won\'t get notified, that\'s the best we\n +\t\t\t\t\t\t\t\t\t// can do given current implementations)\n +\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n +\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n +\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = 204;\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t} catch( firefoxAccessException ) {\n +\t\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Call complete if needed\n +\t\t\t\t\t\tif ( responses ) {\n +\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t};\n +\n +\t\t\t\t\tif ( !s.async ) {\n +\t\t\t\t\t\t// if we\'re in sync mode we fire the callback\n +\t\t\t\t\t\tcallback();\n +\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n +\t\t\t\t\t\t// (IE6 & IE7) if it\'s in cache and has been\n +\t\t\t\t\t\t// retrieved directly we need to fire the callback\n +\t\t\t\t\t\tsetTimeout( callback, 0 );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\thandle = ++xhrId;\n +\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n +\t\t\t\t\t\t\t// and attach the unload handler\n +\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n +\t\t\t\t\t\t\t\txhrCallbacks = {};\n +\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n +\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\txhr.onreadystatechange = callback;\n +\t\t\t\t\t}\n +\t\t\t\t},\n +\n +\t\t\t\tabort: function() {\n +\t\t\t\t\tif ( callback ) {\n +\t\t\t\t\t\tcallback(0,1);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t});\n +}\n +var fxNow, timerId,\n +\trfxtypes = /^(?:toggle|show|hide)$/,\n +\trfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),\n +\trrun = /queueHooks$/,\n +\tanimationPrefilters = [ defaultPrefilter ],\n +\ttweeners = {\n +\t\t"*": [function( prop, value ) {\n +\t\t\tvar end, unit,\n +\t\t\t\ttween = this.createTween( prop, value ),\n +\t\t\t\tparts = rfxnum.exec( value ),\n +\t\t\t\ttarget = tween.cur(),\n +\t\t\t\tstart = +target || 0,\n +\t\t\t\tscale = 1,\n +\t\t\t\tmaxIterations = 20;\n +\n +\t\t\tif ( parts ) {\n +\t\t\t\tend = +parts[2];\n +\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );\n +\n +\t\t\t\t// We need to compute starting value\n +\t\t\t\tif ( unit !== "px" && start ) {\n +\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n +\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n +\t\t\t\t\t// Fallback to end or a simple constant\n +\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n +\n +\t\t\t\t\tdo {\n +\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n +\t\t\t\t\t\t// Use a string for doubling factor so we don\'t accidentally see scale as unchanged below\n +\t\t\t\t\t\tscale = scale || ".5";\n +\n +\t\t\t\t\t\t// Adjust and apply\n +\t\t\t\t\t\tstart = start / scale;\n +\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n +\n +\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n +\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we\'ve just had enough\n +\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n +\t\t\t\t}\n +\n +\t\t\t\ttween.unit = unit;\n +\t\t\t\ttween.start = start;\n +\t\t\t\t// If a +=/-= token was provided, we\'re doing a relative animation\n +\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n +\t\t\t}\n +\t\t\treturn tween;\n +\t\t}]\n +\t};\n +\n +// Animations created synchronously will run synchronously\n +function createFxNow() {\n +\tsetTimeout(function() {\n +\t\tfxNow = undefined;\n +\t}, 0 );\n +\treturn ( fxNow = jQuery.now() );\n +}\n +\n +function createTweens( animation, props ) {\n +\tjQuery.each( props, function( prop, value ) {\n +\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),\n +\t\t\tindex = 0,\n +\t\t\tlength = collection.length;\n +\t\tfor ( ; index < length; index++ ) {\n +\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n +\n +\t\t\t\t// we\'re done with this property\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t}\n +\t});\n +}\n +\n +function Animation( elem, properties, options ) {\n +\tvar result,\n +\t\tindex = 0,\n +\t\ttweenerIndex = 0,\n +\t\tlength = animationPrefilters.length,\n +\t\tdeferred = jQuery.Deferred().always( function() {\n +\t\t\t// don\'t match elem in the :animated selector\n +\t\t\tdelete tick.elem;\n +\t\t}),\n +\t\ttick = function() {\n +\t\t\tvar currentTime = fxNow || createFxNow(),\n +\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n +\t\t\t\t// archaic crash bug won\'t allow us to use 1 - ( 0.5 || 0 ) (#12497)\n +\t\t\t\ttemp = remaining / animation.duration || 0,\n +\t\t\t\tpercent = 1 - temp,\n +\t\t\t\tindex = 0,\n +\t\t\t\tlength = animation.tweens.length;\n +\n +\t\t\tfor ( ; index < length ; index++ ) {\n +\t\t\t\tanimation.tweens[ index ].run( percent );\n +\t\t\t}\n +\n +\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n +\n +\t\t\tif ( percent < 1 && length ) {\n +\t\t\t\treturn remaining;\n +\t\t\t} else {\n +\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t},\n +\t\tanimation = deferred.promise({\n +\t\t\telem: elem,\n +\t\t\tprops: jQuery.extend( {}, properties ),\n +\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n +\t\t\toriginalProperties: properties,\n +\t\t\toriginalOptions: options,\n +\t\t\tstartTime: fxNow || createFxNow(),\n +\t\t\tduration: options.duration,\n +\t\t\ttweens: [],\n +\t\t\tcreateTween: function( prop, end, easing ) {\n +\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n +\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n +\t\t\t\tanimation.tweens.push( tween );\n +\t\t\t\treturn tween;\n +\t\t\t},\n +\t\t\tstop: function( gotoEnd ) {\n +\t\t\t\tvar index = 0,\n +\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n +\t\t\t\t\t// otherwise we skip this part\n +\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n +\n +\t\t\t\tfor ( ; index < length ; index++ ) {\n +\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n +\t\t\t\t}\n +\n +\t\t\t\t// resolve when we played the last frame\n +\t\t\t\t// otherwise, reject\n +\t\t\t\tif ( gotoEnd ) {\n +\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n +\t\t\t\t} else {\n +\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t}\n +\t\t}),\n +\t\tprops = animation.props;\n +\n +\tpropFilter( props, animation.opts.specialEasing );\n +\n +\tfor ( ; index < length ; index++ ) {\n +\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n +\t\tif ( result ) {\n +\t\t\treturn result;\n +\t\t}\n +\t}\n +\n +\tcreateTweens( animation, props );\n +\n +\tif ( jQuery.isFunction( animation.opts.start ) ) {\n +\t\tanimation.opts.start.call( elem, animation );\n +\t}\n +\n +\tjQuery.fx.timer(\n +\t\tjQuery.extend( tick, {\n +\t\t\tanim: animation,\n +\t\t\tqueue: animation.opts.queue,\n +\t\t\telem: elem\n +\t\t})\n +\t);\n +\n +\t// attach callbacks from options\n +\treturn animation.progress( animation.opts.progress )\n +\t\t.done( animation.opts.done, animation.opts.complete )\n +\t\t.fail( animation.opts.fail )\n +\t\t.always( animation.opts.always );\n +}\n +\n +function propFilter( props, specialEasing ) {\n +\tvar index, name, easing, value, hooks;\n +\n +\t// camelCase, specialEasing and expand cssHook pass\n +\tfor ( index in props ) {\n +\t\tname = jQuery.camelCase( index );\n +\t\teasing = specialEasing[ name ];\n +\t\tvalue = props[ index ];\n +\t\tif ( jQuery.isArray( value ) ) {\n +\t\t\teasing = value[ 1 ];\n +\t\t\tvalue = props[ index ] = value[ 0 ];\n +\t\t}\n +\n +\t\tif ( index !== name ) {\n +\t\t\tprops[ name ] = value;\n +\t\t\tdelete props[ index ];\n +\t\t}\n +\n +\t\thooks = jQuery.cssHooks[ name ];\n +\t\tif ( hooks && "expand" in hooks ) {\n +\t\t\tvalue = hooks.expand( value );\n +\t\t\tdelete props[ name ];\n +\n +\t\t\t// not quite $.extend, this wont overwrite keys already present.\n +\t\t\t// also - reusing \'index\' from above because we have the correct "name"\n +\t\t\tfor ( index in value ) {\n +\t\t\t\tif ( !( index in props ) ) {\n +\t\t\t\t\tprops[ index ] = value[ index ];\n +\t\t\t\t\tspecialEasing[ index ] = easing;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else {\n +\t\t\tspecialEasing[ name ] = easing;\n +\t\t}\n +\t}\n +}\n +\n +jQuery.Animation = jQuery.extend( Animation, {\n +\n +\ttweener: function( props, callback ) {\n +\t\tif ( jQuery.isFunction( props ) ) {\n +\t\t\tcallback = props;\n +\t\t\tprops = [ "*" ];\n +\t\t} else {\n +\t\t\tprops = props.split(" ");\n +\t\t}\n +\n +\t\tvar prop,\n +\t\t\tindex = 0,\n +\t\t\tlength = props.length;\n +\n +\t\tfor ( ; index < length ; index++ ) {\n +\t\t\tprop = props[ index ];\n +\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n +\t\t\ttweeners[ prop ].unshift( callback );\n +\t\t}\n +\t},\n +\n +\tprefilter: function( callback, prepend ) {\n +\t\tif ( prepend ) {\n +\t\t\tanimationPrefilters.unshift( callback );\n +\t\t} else {\n +\t\t\tanimationPrefilters.push( callback );\n +\t\t}\n +\t}\n +});\n +\n +function defaultPrefilter( elem, props, opts ) {\n +\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n +\t\tanim = this,\n +\t\tstyle = elem.style,\n +\t\torig = {},\n +\t\thandled = [],\n +\t\thidden = elem.nodeType && isHidden( elem );\n +\n +\t// handle queue: false promises\n +\tif ( !opts.queue ) {\n +\t\thooks = jQuery._queueHooks( elem, "fx" );\n +\t\tif ( hooks.unqueued == null ) {\n +\t\t\thooks.unqueued = 0;\n +\t\t\toldfire = hooks.empty.fire;\n +\t\t\thooks.empty.fire = function() {\n +\t\t\t\tif ( !hooks.unqueued ) {\n +\t\t\t\t\toldfire();\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t\thooks.unqueued++;\n +\n +\t\tanim.always(function() {\n +\t\t\t// doing this makes sure that the complete handler will be called\n +\t\t\t// before this completes\n +\t\t\tanim.always(function() {\n +\t\t\t\thooks.unqueued--;\n +\t\t\t\tif ( !jQuery.queue( elem, "fx" ).length ) {\n +\t\t\t\t\thooks.empty.fire();\n +\t\t\t\t}\n +\t\t\t});\n +\t\t});\n +\t}\n +\n +\t// height/width overflow pass\n +\tif ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {\n +\t\t// Make sure that nothing sneaks out\n +\t\t// Record all 3 overflow attributes because IE does not\n +\t\t// change the overflow attribute when overflowX and\n +\t\t// overflowY are set to the same value\n +\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n +\n +\t\t// Set display property to inline-block for height/width\n +\t\t// animations on inline elements that are having width/height animated\n +\t\tif ( jQuery.css( elem, "display" ) === "inline" &&\n +\t\t\t\tjQuery.css( elem, "float" ) === "none" ) {\n +\n +\t\t\t// inline-level elements accept inline-block;\n +\t\t\t// block-level elements need to be inline with layout\n +\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {\n +\t\t\t\tstyle.display = "inline-block";\n +\n +\t\t\t} else {\n +\t\t\t\tstyle.zoom = 1;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\tif ( opts.overflow ) {\n +\t\tstyle.overflow = "hidden";\n +\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n +\t\t\tanim.done(function() {\n +\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n +\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n +\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n +\t\t\t});\n +\t\t}\n +\t}\n +\n +\n +\t// show/hide pass\n +\tfor ( index in props ) {\n +\t\tvalue = props[ index ];\n +\t\tif ( rfxtypes.exec( value ) ) {\n +\t\t\tdelete props[ index ];\n +\t\t\ttoggle = toggle || value === "toggle";\n +\t\t\tif ( value === ( hidden ? "hide" : "show" ) ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\t\t\thandled.push( index );\n +\t\t}\n +\t}\n +\n +\tlength = handled.length;\n +\tif ( length ) {\n +\t\tdataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );\n +\t\tif ( "hidden" in dataShow ) {\n +\t\t\thidden = dataShow.hidden;\n +\t\t}\n +\n +\t\t// store state if its toggle - enables .stop().toggle() to "reverse"\n +\t\tif ( toggle ) {\n +\t\t\tdataShow.hidden = !hidden;\n +\t\t}\n +\t\tif ( hidden ) {\n +\t\t\tjQuery( elem ).show();\n +\t\t} else {\n +\t\t\tanim.done(function() {\n +\t\t\t\tjQuery( elem ).hide();\n +\t\t\t});\n +\t\t}\n +\t\tanim.done(function() {\n +\t\t\tvar prop;\n +\t\t\tjQuery.removeData( elem, "fxshow", true );\n +\t\t\tfor ( prop in orig ) {\n +\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n +\t\t\t}\n +\t\t});\n +\t\tfor ( index = 0 ; index < length ; index++ ) {\n +\t\t\tprop = handled[ index ];\n +\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n +\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n +\n +\t\t\tif ( !( prop in dataShow ) ) {\n +\t\t\t\tdataShow[ prop ] = tween.start;\n +\t\t\t\tif ( hidden ) {\n +\t\t\t\t\ttween.end = tween.start;\n +\t\t\t\t\ttween.start = prop === "width" || prop === "height" ? 1 : 0;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +}\n +\n +function Tween( elem, options, prop, end, easing ) {\n +\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n +}\n +jQuery.Tween = Tween;\n +\n +Tween.prototype = {\n +\tconstructor: Tween,\n +\tinit: function( elem, options, prop, end, easing, unit ) {\n +\t\tthis.elem = elem;\n +\t\tthis.prop = prop;\n +\t\tthis.easing = easing || "swing";\n +\t\tthis.options = options;\n +\t\tthis.start = this.now = this.cur();\n +\t\tthis.end = end;\n +\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );\n +\t},\n +\tcur: function() {\n +\t\tvar hooks = Tween.propHooks[ this.prop ];\n +\n +\t\treturn hooks && hooks.get ?\n +\t\t\thooks.get( this ) :\n +\t\t\tTween.propHooks._default.get( this );\n +\t},\n +\trun: function( percent ) {\n +\t\tvar eased,\n +\t\t\thooks = Tween.propHooks[ this.prop ];\n +\n +\t\tif ( this.options.duration ) {\n +\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n +\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n +\t\t\t);\n +\t\t} else {\n +\t\t\tthis.pos = eased = percent;\n +\t\t}\n +\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n +\n +\t\tif ( this.options.step ) {\n +\t\t\tthis.options.step.call( this.elem, this.now, this );\n +\t\t}\n +\n +\t\tif ( hooks && hooks.set ) {\n +\t\t\thooks.set( this );\n +\t\t} else {\n +\t\t\tTween.propHooks._default.set( this );\n +\t\t}\n +\t\treturn this;\n +\t}\n +};\n +\n +Tween.prototype.init.prototype = Tween.prototype;\n +\n +Tween.propHooks = {\n +\t_default: {\n +\t\tget: function( tween ) {\n +\t\t\tvar result;\n +\n +\t\t\tif ( tween.elem[ tween.prop ] != null &&\n +\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n +\t\t\t\treturn tween.elem[ tween.prop ];\n +\t\t\t}\n +\n +\t\t\t// passing any value as a 4th parameter to .css will automatically\n +\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n +\t\t\t// so, simple values such as "10px" are parsed to Float.\n +\t\t\t// complex values such as "rotate(1rad)" are returned as is.\n +\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, "" );\n +\t\t\t// Empty strings, null, undefined and "auto" are converted to 0.\n +\t\t\treturn !result || result === "auto" ? 0 : result;\n +\t\t},\n +\t\tset: function( tween ) {\n +\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n +\t\t\t// available and use plain properties where available\n +\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n +\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n +\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n +\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n +\t\t\t} else {\n +\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n +\t\t\t}\n +\t\t}\n +\t}\n +};\n +\n +// Remove in 2.0 - this supports IE8\'s panic based approach\n +// to setting things on disconnected nodes\n +\n +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n +\tset: function( tween ) {\n +\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n +\t\t\ttween.elem[ tween.prop ] = tween.now;\n +\t\t}\n +\t}\n +};\n +\n +jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {\n +\tvar cssFn = jQuery.fn[ name ];\n +\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n +\t\treturn speed == null || typeof speed === "boolean" ||\n +\t\t\t// special check for .toggle( handler, handler, ... )\n +\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n +\t\t\tcssFn.apply( this, arguments ) :\n +\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n +\t};\n +});\n +\n +jQuery.fn.extend({\n +\tfadeTo: function( speed, to, easing, callback ) {\n +\n +\t\t// show any hidden elements after setting opacity to 0\n +\t\treturn this.filter( isHidden ).css( "opacity", 0 ).show()\n +\n +\t\t\t// animate to the value specified\n +\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n +\t},\n +\tanimate: function( prop, speed, easing, callback ) {\n +\t\tvar empty = jQuery.isEmptyObject( prop ),\n +\t\t\toptall = jQuery.speed( speed, easing, callback ),\n +\t\t\tdoAnimation = function() {\n +\t\t\t\t// Operate on a copy of prop so per-property easing won\'t be lost\n +\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n +\n +\t\t\t\t// Empty animations resolve immediately\n +\t\t\t\tif ( empty ) {\n +\t\t\t\t\tanim.stop( true );\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\treturn empty || optall.queue === false ?\n +\t\t\tthis.each( doAnimation ) :\n +\t\t\tthis.queue( optall.queue, doAnimation );\n +\t},\n +\tstop: function( type, clearQueue, gotoEnd ) {\n +\t\tvar stopQueue = function( hooks ) {\n +\t\t\tvar stop = hooks.stop;\n +\t\t\tdelete hooks.stop;\n +\t\t\tstop( gotoEnd );\n +\t\t};\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tgotoEnd = clearQueue;\n +\t\t\tclearQueue = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\tif ( clearQueue && type !== false ) {\n +\t\t\tthis.queue( type || "fx", [] );\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar dequeue = true,\n +\t\t\t\tindex = type != null && type + "queueHooks",\n +\t\t\t\ttimers = jQuery.timers,\n +\t\t\t\tdata = jQuery._data( this );\n +\n +\t\t\tif ( index ) {\n +\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n +\t\t\t\t\tstopQueue( data[ index ] );\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( index in data ) {\n +\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n +\t\t\t\t\t\tstopQueue( data[ index ] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tfor ( index = timers.length; index--; ) {\n +\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n +\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n +\t\t\t\t\tdequeue = false;\n +\t\t\t\t\ttimers.splice( index, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// start the next in the queue if the last step wasn\'t forced\n +\t\t\t// timers currently will call their complete callbacks, which will dequeue\n +\t\t\t// but only if they were gotoEnd\n +\t\t\tif ( dequeue || !gotoEnd ) {\n +\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +// Generate parameters to create a standard animation\n +function genFx( type, includeWidth ) {\n +\tvar which,\n +\t\tattrs = { height: type },\n +\t\ti = 0;\n +\n +\t// if we include width, step value is 1 to do all cssExpand values,\n +\t// if we don\'t include width, step value is 2 to skip over Left and Right\n +\tincludeWidth = includeWidth? 1 : 0;\n +\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n +\t\twhich = cssExpand[ i ];\n +\t\tattrs[ "margin" + which ] = attrs[ "padding" + which ] = type;\n +\t}\n +\n +\tif ( includeWidth ) {\n +\t\tattrs.opacity = attrs.width = type;\n +\t}\n +\n +\treturn attrs;\n +}\n +\n +// Generate shortcuts for custom animations\n +jQuery.each({\n +\tslideDown: genFx("show"),\n +\tslideUp: genFx("hide"),\n +\tslideToggle: genFx("toggle"),\n +\tfadeIn: { opacity: "show" },\n +\tfadeOut: { opacity: "hide" },\n +\tfadeToggle: { opacity: "toggle" }\n +}, function( name, props ) {\n +\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n +\t\treturn this.animate( props, speed, easing, callback );\n +\t};\n +});\n +\n +jQuery.speed = function( speed, easing, fn ) {\n +\tvar opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {\n +\t\tcomplete: fn || !fn && easing ||\n +\t\t\tjQuery.isFunction( speed ) && speed,\n +\t\tduration: speed,\n +\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n +\t};\n +\n +\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :\n +\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n +\n +\t// normalize opt.queue - true/undefined/null -> "fx"\n +\tif ( opt.queue == null || opt.queue === true ) {\n +\t\topt.queue = "fx";\n +\t}\n +\n +\t// Queueing\n +\topt.old = opt.complete;\n +\n +\topt.complete = function() {\n +\t\tif ( jQuery.isFunction( opt.old ) ) {\n +\t\t\topt.old.call( this );\n +\t\t}\n +\n +\t\tif ( opt.queue ) {\n +\t\t\tjQuery.dequeue( this, opt.queue );\n +\t\t}\n +\t};\n +\n +\treturn opt;\n +};\n +\n +jQuery.easing = {\n +\tlinear: function( p ) {\n +\t\treturn p;\n +\t},\n +\tswing: function( p ) {\n +\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n +\t}\n +};\n +\n +jQuery.timers = [];\n +jQuery.fx = Tween.prototype.init;\n +jQuery.fx.tick = function() {\n +\tvar timer,\n +\t\ttimers = jQuery.timers,\n +\t\ti = 0;\n +\n +\tfxNow = jQuery.now();\n +\n +\tfor ( ; i < timers.length; i++ ) {\n +\t\ttimer = timers[ i ];\n +\t\t// Checks the timer has not already been removed\n +\t\tif ( !timer() && timers[ i ] === timer ) {\n +\t\t\ttimers.splice( i--, 1 );\n +\t\t}\n +\t}\n +\n +\tif ( !timers.length ) {\n +\t\tjQuery.fx.stop();\n +\t}\n +\tfxNow = undefined;\n +};\n +\n +jQuery.fx.timer = function( timer ) {\n +\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n +\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n +\t}\n +};\n +\n +jQuery.fx.interval = 13;\n +\n +jQuery.fx.stop = function() {\n +\tclearInterval( timerId );\n +\ttimerId = null;\n +};\n +\n +jQuery.fx.speeds = {\n +\tslow: 600,\n +\tfast: 200,\n +\t// Default speed\n +\t_default: 400\n +};\n +\n +// Back Compat <1.8 extension point\n +jQuery.fx.step = {};\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.animated = function( elem ) {\n +\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n +\t\t\treturn elem === fn.elem;\n +\t\t}).length;\n +\t};\n +}\n +var rroot = /^(?:body|html)$/i;\n +\n +jQuery.fn.offset = function( options ) {\n +\tif ( arguments.length ) {\n +\t\treturn options === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function( i ) {\n +\t\t\t\tjQuery.offset.setOffset( this, options, i );\n +\t\t\t});\n +\t}\n +\n +\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n +\t\tbox = { top: 0, left: 0 },\n +\t\telem = this[ 0 ],\n +\t\tdoc = elem && elem.ownerDocument;\n +\n +\tif ( !doc ) {\n +\t\treturn;\n +\t}\n +\n +\tif ( (body = doc.body) === elem ) {\n +\t\treturn jQuery.offset.bodyOffset( elem );\n +\t}\n +\n +\tdocElem = doc.documentElement;\n +\n +\t// Make sure it\'s not a disconnected DOM node\n +\tif ( !jQuery.contains( docElem, elem ) ) {\n +\t\treturn box;\n +\t}\n +\n +\t// If we don\'t have gBCR, just use 0,0 rather than error\n +\t// BlackBerry 5, iOS 3 (original iPhone)\n +\tif ( typeof elem.getBoundingClientRect !== "undefined" ) {\n +\t\tbox = elem.getBoundingClientRect();\n +\t}\n +\twin = getWindow( doc );\n +\tclientTop = docElem.clientTop || body.clientTop || 0;\n +\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n +\tscrollTop = win.pageYOffset || docElem.scrollTop;\n +\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n +\treturn {\n +\t\ttop: box.top + scrollTop - clientTop,\n +\t\tleft: box.left + scrollLeft - clientLeft\n +\t};\n +};\n +\n +jQuery.offset = {\n +\n +\tbodyOffset: function( body ) {\n +\t\tvar top = body.offsetTop,\n +\t\t\tleft = body.offsetLeft;\n +\n +\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n +\t\t\ttop += parseFloat( jQuery.css(body, "marginTop") ) || 0;\n +\t\t\tleft += parseFloat( jQuery.css(body, "marginLeft") ) || 0;\n +\t\t}\n +\n +\t\treturn { top: top, left: left };\n +\t},\n +\n +\tsetOffset: function( elem, options, i ) {\n +\t\tvar position = jQuery.css( elem, "position" );\n +\n +\t\t// set position first, in-case top/left are set even on static elem\n +\t\tif ( position === "static" ) {\n +\t\t\telem.style.position = "relative";\n +\t\t}\n +\n +\t\tvar curElem = jQuery( elem ),\n +\t\t\tcurOffset = curElem.offset(),\n +\t\t\tcurCSSTop = jQuery.css( elem, "top" ),\n +\t\t\tcurCSSLeft = jQuery.css( elem, "left" ),\n +\t\t\tcalculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,\n +\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n +\n +\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n +\t\tif ( calculatePosition ) {\n +\t\t\tcurPosition = curElem.position();\n +\t\t\tcurTop = curPosition.top;\n +\t\t\tcurLeft = curPosition.left;\n +\t\t} else {\n +\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n +\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction( options ) ) {\n +\t\t\toptions = options.call( elem, i, curOffset );\n +\t\t}\n +\n +\t\tif ( options.top != null ) {\n +\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n +\t\t}\n +\t\tif ( options.left != null ) {\n +\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n +\t\t}\n +\n +\t\tif ( "using" in options ) {\n +\t\t\toptions.using.call( elem, props );\n +\t\t} else {\n +\t\t\tcurElem.css( props );\n +\t\t}\n +\t}\n +};\n +\n +\n +jQuery.fn.extend({\n +\n +\tposition: function() {\n +\t\tif ( !this[0] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar elem = this[0],\n +\n +\t\t// Get *real* offsetParent\n +\t\toffsetParent = this.offsetParent(),\n +\n +\t\t// Get correct offsets\n +\t\toffset = this.offset(),\n +\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n +\n +\t\t// Subtract element margins\n +\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n +\t\t// are the same in Safari causing offset.left to incorrectly be 0\n +\t\toffset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;\n +\t\toffset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;\n +\n +\t\t// Add offsetParent borders\n +\t\tparentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;\n +\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;\n +\n +\t\t// Subtract the two offsets\n +\t\treturn {\n +\t\t\ttop: offset.top - parentOffset.top,\n +\t\t\tleft: offset.left - parentOffset.left\n +\t\t};\n +\t},\n +\n +\toffsetParent: function() {\n +\t\treturn this.map(function() {\n +\t\t\tvar offsetParent = this.offsetParent || document.body;\n +\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {\n +\t\t\t\toffsetParent = offsetParent.offsetParent;\n +\t\t\t}\n +\t\t\treturn offsetParent || document.body;\n +\t\t});\n +\t}\n +});\n +\n +\n +// Create scrollLeft and scrollTop methods\n +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {\n +\tvar top = /Y/.test( prop );\n +\n +\tjQuery.fn[ method ] = function( val ) {\n +\t\treturn jQuery.access( this, function( elem, method, val ) {\n +\t\t\tvar win = getWindow( elem );\n +\n +\t\t\tif ( val === undefined ) {\n +\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n +\t\t\t\t\twin.document.documentElement[ method ] :\n +\t\t\t\t\telem[ method ];\n +\t\t\t}\n +\n +\t\t\tif ( win ) {\n +\t\t\t\twin.scrollTo(\n +\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n +\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n +\t\t\t\t);\n +\n +\t\t\t} else {\n +\t\t\t\telem[ method ] = val;\n +\t\t\t}\n +\t\t}, method, val, arguments.length, null );\n +\t};\n +});\n +\n +function getWindow( elem ) {\n +\treturn jQuery.isWindow( elem ) ?\n +\t\telem :\n +\t\telem.nodeType === 9 ?\n +\t\t\telem.defaultView || elem.parentWindow :\n +\t\t\tfalse;\n +}\n +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {\n +\tjQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {\n +\t\t// margin is only for outerHeight, outerWidth\n +\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n +\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),\n +\t\t\t\textra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );\n +\n +\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n +\t\t\t\tvar doc;\n +\n +\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n +\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n +\t\t\t\t\t// isn\'t a whole lot we can do. See pull request at this URL for discussion:\n +\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n +\t\t\t\t\treturn elem.document.documentElement[ "client" + name ];\n +\t\t\t\t}\n +\n +\t\t\t\t// Get document width or height\n +\t\t\t\tif ( elem.nodeType === 9 ) {\n +\t\t\t\t\tdoc = elem.documentElement;\n +\n +\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n +\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n +\t\t\t\t\treturn Math.max(\n +\t\t\t\t\t\telem.body[ "scroll" + name ], doc[ "scroll" + name ],\n +\t\t\t\t\t\telem.body[ "offset" + name ], doc[ "offset" + name ],\n +\t\t\t\t\t\tdoc[ "client" + name ]\n +\t\t\t\t\t);\n +\t\t\t\t}\n +\n +\t\t\t\treturn value === undefined ?\n +\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n +\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n +\n +\t\t\t\t\t// Set width or height on the element\n +\t\t\t\t\tjQuery.style( elem, type, value, extra );\n +\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n +\t\t};\n +\t});\n +});\n +// Expose jQuery to the global object\n +window.jQuery = window.$ = jQuery;\n +\n +// Expose jQuery as an AMD module, but only for AMD loaders that\n +// understand the issues with loading multiple versions of jQuery\n +// in a page that all might call define(). The loader will indicate\n +// they have special allowances for multiple jQuery versions by\n +// specifying define.amd.jQuery = true. Register as a named module,\n +// since jQuery can be concatenated with other files that may use define,\n +// but not use a proper concatenation script that understands anonymous\n +// AMD modules. A named AMD is safest and most robust way to register.\n +// Lowercase jquery is used because AMD module names are derived from\n +// file names, and jQuery is normally delivered in a lowercase file name.\n +// Do this after creating the global so that if an AMD module wants to call\n +// noConflict to hide this version of jQuery, it will work.\n +if ( typeof define === "function" && define.amd && define.amd.jQuery ) {\n +\tdefine( "jquery", [], function () { return jQuery; } );\n +}\n +\n +})( window );\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.8.min.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.8.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..97e880c5d05a0a65a4e64770a286cfbdcd7f2707 --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.8.min.js.xml @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58239481.53</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-1.8.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>93637</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.8.3.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery v1.8.3 jquery.com | jquery.org/license */\r\n +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,g=/\\S/,y=/\\s+/,b=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,w=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,E=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,S=/^[\\],:{}\\s]*$/,x=/(?:^|:|,)(?:\\s*\\[)+/g,T=/\\\\(?:["\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,N=/"[^"\\\\\\r\\n]*"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,C=/^-ms-/,k=/-([\\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\\ufeff\\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\\t\\r\\n]/g,R=/\\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can\'t be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\\.]*|)(?:\\.(.+)|)$/,K=/(?:^|\\s)hover(\\.\\S+|)\\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\\\.)"+f.split(".").sort().join("\\\\.(?:.*\\\\.|)")+"(\\\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\\\.)"+b.join("\\\\.(?:.*\\\\.|)")+"(\\\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.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(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\\\x20\\\\t\\\\r\\\\n\\\\f]",M="(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|("+_+")|)|)"+O+"*\\\\]",H=":("+M+")(?:\\\\((?:([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:"+P+")|[^:]|\\\\\\\\.)*|.*))\\\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\("+O+"*((?:-\\\\d)?\\\\d*)"+O+"*\\\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,U=/^:not/,z=/[\\x20\\t\\r\\n\\f]*[+~]/,W=/:not\\($/,X=/h\\d/i,V=/input|select|textarea|button/i,$=/\\\\(?!\\\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\\\.("+M+")"),NAME:new RegExp("^\\\\[name=[\'\\"]?("+M+")[\'\\"]?\\\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\\\("+O+"*(even|odd|(([+-]|)(\\\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\\\d+)|))"+O+"*\\\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href=\'#\'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class=\'hidden e\'></div><div class=\'hidden\'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name=\'"+d+"\'></a><div name=\'"+d+"\'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/\'|\\\\/g,r=/\\=[\\x20\\t\\r\\n\\f]*([^\'"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=\'\'></option></select>",e.querySelectorAll("[selected]").length||i.push("\\\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=\'\'></p>",e.querySelectorAll("[test^=\'\']").length&&i.push("[*^$]="+O+"*(?:\\"\\"|\'\')"),e.innerHTML="<input type=\'hidden\'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\\\$&"):r.setAttribute("id",c),c="[id=\'"+c+"\'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!=\'\']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"=\'$1\']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\\[\\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\\d+="(?:null|\\d+)"/g,pt=/^\\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,vt=/<([\\w:]+)/,mt=/<tbody/i,gt=/<|&#?\\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\\s*(?:[^=]|=\\s*.checked.)/i,xt=/\\/(java|ecma)script/i,Tt=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,Nt={option:[1,"<select multiple=\'multiple\'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \\/]([\\w.]+)/.exec(e)||/(webkit)[ \\/]([\\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(e)||/(msie) ([\\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\\([^)]*\\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\\[\\]$/,on=/\\r?\\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\\r\\n")}}):{name:t.name,value:n.replace(on,"\\r\\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,dn=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\\/\\//,gn=/\\?/,yn=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\\?/,Dn=/(=)\\?(?=&|$)|\\?\\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); + +]]></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.9.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.9.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e87a8c5097572bab70ae4409f1e9ca5e863eb6e --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.9.js.xml @@ -0,0 +1,9693 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58329250.86</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-1.9.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>267320</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.9.0.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*!\n + * jQuery JavaScript Library v1.9.0\n + * http://jquery.com/\n + *\n + * Includes Sizzle.js\n + * http://sizzlejs.com/\n + *\n + * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors\n + * Released under the MIT license\n + * http://jquery.org/license\n + *\n + * Date: 2013-1-14\n + */\n +(function( window, undefined ) {\n +"use strict";\n +var\n +\t// A central reference to the root jQuery(document)\n +\trootjQuery,\n +\n +\t// The deferred used on DOM ready\n +\treadyList,\n +\n +\t// Use the correct document accordingly with window argument (sandbox)\n +\tdocument = window.document,\n +\tlocation = window.location,\n +\n +\t// Map over jQuery in case of overwrite\n +\t_jQuery = window.jQuery,\n +\n +\t// Map over the $ in case of overwrite\n +\t_$ = window.$,\n +\n +\t// [[Class]] -> type pairs\n +\tclass2type = {},\n +\n +\t// List of deleted data cache ids, so we can reuse them\n +\tcore_deletedIds = [],\n +\n +\tcore_version = "1.9.0",\n +\n +\t// Save a reference to some core methods\n +\tcore_concat = core_deletedIds.concat,\n +\tcore_push = core_deletedIds.push,\n +\tcore_slice = core_deletedIds.slice,\n +\tcore_indexOf = core_deletedIds.indexOf,\n +\tcore_toString = class2type.toString,\n +\tcore_hasOwn = class2type.hasOwnProperty,\n +\tcore_trim = core_version.trim,\n +\n +\t// Define a local copy of jQuery\n +\tjQuery = function( selector, context ) {\n +\t\t// The jQuery object is actually just the init constructor \'enhanced\'\n +\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n +\t},\n +\n +\t// Used for matching numbers\n +\tcore_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n +\n +\t// Used for splitting on whitespace\n +\tcore_rnotwhite = /\\S+/g,\n +\n +\t// Make sure we trim BOM and NBSP (here\'s looking at you, Safari 5.0 and IE)\n +\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n +\n +\t// A simple way to check for HTML strings\n +\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n +\t// Strict HTML recognition (#11290: must start with <)\n +\trquickExpr = /^(?:(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n +\n +\t// Match a standalone tag\n +\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n +\n +\t// JSON RegExp\n +\trvalidchars = /^[\\],:{}\\s]*$/,\n +\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n +\trvalidescape = /\\\\(?:["\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n +\trvalidtokens = /"[^"\\\\\\r\\n]*"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,\n +\n +\t// Matches dashed string for camelizing\n +\trmsPrefix = /^-ms-/,\n +\trdashAlpha = /-([\\da-z])/gi,\n +\n +\t// Used by jQuery.camelCase as callback to replace()\n +\tfcamelCase = function( all, letter ) {\n +\t\treturn letter.toUpperCase();\n +\t},\n +\n +\t// The ready event handler and self cleanup method\n +\tDOMContentLoaded = function() {\n +\t\tif ( document.addEventListener ) {\n +\t\t\tdocument.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\t\t\tjQuery.ready();\n +\t\t} else if ( document.readyState === "complete" ) {\n +\t\t\t// we\'re here because readyState === "complete" in oldIE\n +\t\t\t// which is good enough for us to call the dom ready!\n +\t\t\tdocument.detachEvent( "onreadystatechange", DOMContentLoaded );\n +\t\t\tjQuery.ready();\n +\t\t}\n +\t};\n +\n +jQuery.fn = jQuery.prototype = {\n +\t// The current version of jQuery being used\n +\tjquery: core_version,\n +\n +\tconstructor: jQuery,\n +\tinit: function( selector, context, rootjQuery ) {\n +\t\tvar match, elem;\n +\n +\t\t// HANDLE: $(""), $(null), $(undefined), $(false)\n +\t\tif ( !selector ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle HTML strings\n +\t\tif ( typeof selector === "string" ) {\n +\t\t\tif ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {\n +\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n +\t\t\t\tmatch = [ null, selector, null ];\n +\n +\t\t\t} else {\n +\t\t\t\tmatch = rquickExpr.exec( selector );\n +\t\t\t}\n +\n +\t\t\t// Match html or make sure no context is specified for #id\n +\t\t\tif ( match && (match[1] || !context) ) {\n +\n +\t\t\t\t// HANDLE: $(html) -> $(array)\n +\t\t\t\tif ( match[1] ) {\n +\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n +\n +\t\t\t\t\t// scripts is true for back-compat\n +\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n +\t\t\t\t\t\tmatch[1],\n +\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n +\t\t\t\t\t\ttrue\n +\t\t\t\t\t) );\n +\n +\t\t\t\t\t// HANDLE: $(html, props)\n +\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n +\t\t\t\t\t\tfor ( match in context ) {\n +\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n +\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n +\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n +\n +\t\t\t\t\t\t\t// ...and otherwise set as attributes\n +\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn this;\n +\n +\t\t\t\t// HANDLE: $(#id)\n +\t\t\t\t} else {\n +\t\t\t\t\telem = document.getElementById( match[2] );\n +\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t// Handle the case where IE and Opera return items\n +\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n +\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n +\t\t\t\t\t\tthis.length = 1;\n +\t\t\t\t\t\tthis[0] = elem;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tthis.context = document;\n +\t\t\t\t\tthis.selector = selector;\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\n +\t\t\t// HANDLE: $(expr, $(...))\n +\t\t\t} else if ( !context || context.jquery ) {\n +\t\t\t\treturn ( context || rootjQuery ).find( selector );\n +\n +\t\t\t// HANDLE: $(expr, context)\n +\t\t\t// (which is just equivalent to: $(context).find(expr)\n +\t\t\t} else {\n +\t\t\t\treturn this.constructor( context ).find( selector );\n +\t\t\t}\n +\n +\t\t// HANDLE: $(DOMElement)\n +\t\t} else if ( selector.nodeType ) {\n +\t\t\tthis.context = this[0] = selector;\n +\t\t\tthis.length = 1;\n +\t\t\treturn this;\n +\n +\t\t// HANDLE: $(function)\n +\t\t// Shortcut for document ready\n +\t\t} else if ( jQuery.isFunction( selector ) ) {\n +\t\t\treturn rootjQuery.ready( selector );\n +\t\t}\n +\n +\t\tif ( selector.selector !== undefined ) {\n +\t\t\tthis.selector = selector.selector;\n +\t\t\tthis.context = selector.context;\n +\t\t}\n +\n +\t\treturn jQuery.makeArray( selector, this );\n +\t},\n +\n +\t// Start with an empty selector\n +\tselector: "",\n +\n +\t// The default length of a jQuery object is 0\n +\tlength: 0,\n +\n +\t// The number of elements contained in the matched element set\n +\tsize: function() {\n +\t\treturn this.length;\n +\t},\n +\n +\ttoArray: function() {\n +\t\treturn core_slice.call( this );\n +\t},\n +\n +\t// Get the Nth element in the matched element set OR\n +\t// Get the whole matched element set as a clean array\n +\tget: function( num ) {\n +\t\treturn num == null ?\n +\n +\t\t\t// Return a \'clean\' array\n +\t\t\tthis.toArray() :\n +\n +\t\t\t// Return just the object\n +\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n +\t},\n +\n +\t// Take an array of elements and push it onto the stack\n +\t// (returning the new matched element set)\n +\tpushStack: function( elems ) {\n +\n +\t\t// Build a new jQuery matched element set\n +\t\tvar ret = jQuery.merge( this.constructor(), elems );\n +\n +\t\t// Add the old object onto the stack (as a reference)\n +\t\tret.prevObject = this;\n +\t\tret.context = this.context;\n +\n +\t\t// Return the newly-formed element set\n +\t\treturn ret;\n +\t},\n +\n +\t// Execute a callback for every element in the matched set.\n +\t// (You can seed the arguments with an array of args, but this is\n +\t// only used internally.)\n +\teach: function( callback, args ) {\n +\t\treturn jQuery.each( this, callback, args );\n +\t},\n +\n +\tready: function( fn ) {\n +\t\t// Add the callback\n +\t\tjQuery.ready.promise().done( fn );\n +\n +\t\treturn this;\n +\t},\n +\n +\tslice: function() {\n +\t\treturn this.pushStack( core_slice.apply( this, arguments ) );\n +\t},\n +\n +\tfirst: function() {\n +\t\treturn this.eq( 0 );\n +\t},\n +\n +\tlast: function() {\n +\t\treturn this.eq( -1 );\n +\t},\n +\n +\teq: function( i ) {\n +\t\tvar len = this.length,\n +\t\t\tj = +i + ( i < 0 ? len : 0 );\n +\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n +\t},\n +\n +\tmap: function( callback ) {\n +\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n +\t\t\treturn callback.call( elem, i, elem );\n +\t\t}));\n +\t},\n +\n +\tend: function() {\n +\t\treturn this.prevObject || this.constructor(null);\n +\t},\n +\n +\t// For internal use only.\n +\t// Behaves like an Array\'s method, not like a jQuery method.\n +\tpush: core_push,\n +\tsort: [].sort,\n +\tsplice: [].splice\n +};\n +\n +// Give the init function the jQuery prototype for later instantiation\n +jQuery.fn.init.prototype = jQuery.fn;\n +\n +jQuery.extend = jQuery.fn.extend = function() {\n +\tvar options, name, src, copy, copyIsArray, clone,\n +\t\ttarget = arguments[0] || {},\n +\t\ti = 1,\n +\t\tlength = arguments.length,\n +\t\tdeep = false;\n +\n +\t// Handle a deep copy situation\n +\tif ( typeof target === "boolean" ) {\n +\t\tdeep = target;\n +\t\ttarget = arguments[1] || {};\n +\t\t// skip the boolean and the target\n +\t\ti = 2;\n +\t}\n +\n +\t// Handle case when target is a string or something (possible in deep copy)\n +\tif ( typeof target !== "object" && !jQuery.isFunction(target) ) {\n +\t\ttarget = {};\n +\t}\n +\n +\t// extend jQuery itself if only one argument is passed\n +\tif ( length === i ) {\n +\t\ttarget = this;\n +\t\t--i;\n +\t}\n +\n +\tfor ( ; i < length; i++ ) {\n +\t\t// Only deal with non-null/undefined values\n +\t\tif ( (options = arguments[ i ]) != null ) {\n +\t\t\t// Extend the base object\n +\t\t\tfor ( name in options ) {\n +\t\t\t\tsrc = target[ name ];\n +\t\t\t\tcopy = options[ name ];\n +\n +\t\t\t\t// Prevent never-ending loop\n +\t\t\t\tif ( target === copy ) {\n +\t\t\t\t\tcontinue;\n +\t\t\t\t}\n +\n +\t\t\t\t// Recurse if we\'re merging plain objects or arrays\n +\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n +\t\t\t\t\tif ( copyIsArray ) {\n +\t\t\t\t\t\tcopyIsArray = false;\n +\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Never move original objects, clone them\n +\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n +\n +\t\t\t\t// Don\'t bring in undefined values\n +\t\t\t\t} else if ( copy !== undefined ) {\n +\t\t\t\t\ttarget[ name ] = copy;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Return the modified object\n +\treturn target;\n +};\n +\n +jQuery.extend({\n +\tnoConflict: function( deep ) {\n +\t\tif ( window.$ === jQuery ) {\n +\t\t\twindow.$ = _$;\n +\t\t}\n +\n +\t\tif ( deep && window.jQuery === jQuery ) {\n +\t\t\twindow.jQuery = _jQuery;\n +\t\t}\n +\n +\t\treturn jQuery;\n +\t},\n +\n +\t// Is the DOM ready to be used? Set to true once it occurs.\n +\tisReady: false,\n +\n +\t// A counter to track how many items to wait for before\n +\t// the ready event fires. See #6781\n +\treadyWait: 1,\n +\n +\t// Hold (or release) the ready event\n +\tholdReady: function( hold ) {\n +\t\tif ( hold ) {\n +\t\t\tjQuery.readyWait++;\n +\t\t} else {\n +\t\t\tjQuery.ready( true );\n +\t\t}\n +\t},\n +\n +\t// Handle when the DOM is ready\n +\tready: function( wait ) {\n +\n +\t\t// Abort if there are pending holds or we\'re already ready\n +\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n +\t\tif ( !document.body ) {\n +\t\t\treturn setTimeout( jQuery.ready );\n +\t\t}\n +\n +\t\t// Remember that the DOM is ready\n +\t\tjQuery.isReady = true;\n +\n +\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n +\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// If there are functions bound, to execute\n +\t\treadyList.resolveWith( document, [ jQuery ] );\n +\n +\t\t// Trigger any bound ready events\n +\t\tif ( jQuery.fn.trigger ) {\n +\t\t\tjQuery( document ).trigger("ready").off("ready");\n +\t\t}\n +\t},\n +\n +\t// See test/unit/core.js for details concerning isFunction.\n +\t// Since version 1.3, DOM methods and functions like alert\n +\t// aren\'t supported. They return false on IE (#2968).\n +\tisFunction: function( obj ) {\n +\t\treturn jQuery.type(obj) === "function";\n +\t},\n +\n +\tisArray: Array.isArray || function( obj ) {\n +\t\treturn jQuery.type(obj) === "array";\n +\t},\n +\n +\tisWindow: function( obj ) {\n +\t\treturn obj != null && obj == obj.window;\n +\t},\n +\n +\tisNumeric: function( obj ) {\n +\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n +\t},\n +\n +\ttype: function( obj ) {\n +\t\tif ( obj == null ) {\n +\t\t\treturn String( obj );\n +\t\t}\n +\t\treturn typeof obj === "object" || typeof obj === "function" ?\n +\t\t\tclass2type[ core_toString.call(obj) ] || "object" :\n +\t\t\ttypeof obj;\n +\t},\n +\n +\tisPlainObject: function( obj ) {\n +\t\t// Must be an Object.\n +\t\t// Because of IE, we also have to check the presence of the constructor property.\n +\t\t// Make sure that DOM nodes and window objects don\'t pass through, as well\n +\t\tif ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\ttry {\n +\t\t\t// Not own constructor property must be Object\n +\t\t\tif ( obj.constructor &&\n +\t\t\t\t!core_hasOwn.call(obj, "constructor") &&\n +\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t} catch ( e ) {\n +\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// Own properties are enumerated firstly, so to speed up,\n +\t\t// if last one is own, then all properties are own.\n +\n +\t\tvar key;\n +\t\tfor ( key in obj ) {}\n +\n +\t\treturn key === undefined || core_hasOwn.call( obj, key );\n +\t},\n +\n +\tisEmptyObject: function( obj ) {\n +\t\tvar name;\n +\t\tfor ( name in obj ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\treturn true;\n +\t},\n +\n +\terror: function( msg ) {\n +\t\tthrow new Error( msg );\n +\t},\n +\n +\t// data: string of html\n +\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n +\t// keepScripts (optional): If true, will include scripts passed in the html string\n +\tparseHTML: function( data, context, keepScripts ) {\n +\t\tif ( !data || typeof data !== "string" ) {\n +\t\t\treturn null;\n +\t\t}\n +\t\tif ( typeof context === "boolean" ) {\n +\t\t\tkeepScripts = context;\n +\t\t\tcontext = false;\n +\t\t}\n +\t\tcontext = context || document;\n +\n +\t\tvar parsed = rsingleTag.exec( data ),\n +\t\t\tscripts = !keepScripts && [];\n +\n +\t\t// Single tag\n +\t\tif ( parsed ) {\n +\t\t\treturn [ context.createElement( parsed[1] ) ];\n +\t\t}\n +\n +\t\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n +\t\tif ( scripts ) {\n +\t\t\tjQuery( scripts ).remove();\n +\t\t}\n +\t\treturn jQuery.merge( [], parsed.childNodes );\n +\t},\n +\n +\tparseJSON: function( data ) {\n +\t\t// Attempt to parse using the native JSON parser first\n +\t\tif ( window.JSON && window.JSON.parse ) {\n +\t\t\treturn window.JSON.parse( data );\n +\t\t}\n +\n +\t\tif ( data === null ) {\n +\t\t\treturn data;\n +\t\t}\n +\n +\t\tif ( typeof data === "string" ) {\n +\n +\t\t\t// Make sure leading/trailing whitespace is removed (IE can\'t handle it)\n +\t\t\tdata = jQuery.trim( data );\n +\n +\t\t\tif ( data ) {\n +\t\t\t\t// Make sure the incoming data is actual JSON\n +\t\t\t\t// Logic borrowed from http://json.org/json2.js\n +\t\t\t\tif ( rvalidchars.test( data.replace( rvalidescape, "@" )\n +\t\t\t\t\t.replace( rvalidtokens, "]" )\n +\t\t\t\t\t.replace( rvalidbraces, "")) ) {\n +\n +\t\t\t\t\treturn ( new Function( "return " + data ) )();\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tjQuery.error( "Invalid JSON: " + data );\n +\t},\n +\n +\t// Cross-browser xml parsing\n +\tparseXML: function( data ) {\n +\t\tvar xml, tmp;\n +\t\tif ( !data || typeof data !== "string" ) {\n +\t\t\treturn null;\n +\t\t}\n +\t\ttry {\n +\t\t\tif ( window.DOMParser ) { // Standard\n +\t\t\t\ttmp = new DOMParser();\n +\t\t\t\txml = tmp.parseFromString( data , "text/xml" );\n +\t\t\t} else { // IE\n +\t\t\t\txml = new ActiveXObject( "Microsoft.XMLDOM" );\n +\t\t\t\txml.async = "false";\n +\t\t\t\txml.loadXML( data );\n +\t\t\t}\n +\t\t} catch( e ) {\n +\t\t\txml = undefined;\n +\t\t}\n +\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {\n +\t\t\tjQuery.error( "Invalid XML: " + data );\n +\t\t}\n +\t\treturn xml;\n +\t},\n +\n +\tnoop: function() {},\n +\n +\t// Evaluates a script in a global context\n +\t// Workarounds based on findings by Jim Driscoll\n +\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n +\tglobalEval: function( data ) {\n +\t\tif ( data && jQuery.trim( data ) ) {\n +\t\t\t// We use execScript on Internet Explorer\n +\t\t\t// We use an anonymous function so that context is window\n +\t\t\t// rather than jQuery in Firefox\n +\t\t\t( window.execScript || function( data ) {\n +\t\t\t\twindow[ "eval" ].call( window, data );\n +\t\t\t} )( data );\n +\t\t}\n +\t},\n +\n +\t// Convert dashed to camelCase; used by the css and data modules\n +\t// Microsoft forgot to hump their vendor prefix (#9572)\n +\tcamelCase: function( string ) {\n +\t\treturn string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );\n +\t},\n +\n +\tnodeName: function( elem, name ) {\n +\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n +\t},\n +\n +\t// args is for internal usage only\n +\teach: function( obj, callback, args ) {\n +\t\tvar value,\n +\t\t\ti = 0,\n +\t\t\tlength = obj.length,\n +\t\t\tisArray = isArraylike( obj );\n +\n +\t\tif ( args ) {\n +\t\t\tif ( isArray ) {\n +\t\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n +\n +\t\t\t\t\tif ( value === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( i in obj ) {\n +\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n +\n +\t\t\t\t\tif ( value === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// A special, fast, case for the most common use of each\n +\t\t} else {\n +\t\t\tif ( isArray ) {\n +\t\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n +\n +\t\t\t\t\tif ( value === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( i in obj ) {\n +\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n +\n +\t\t\t\t\tif ( value === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn obj;\n +\t},\n +\n +\t// Use native String.trim function wherever possible\n +\ttrim: core_trim && !core_trim.call("\\uFEFF\\xA0") ?\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\tcore_trim.call( text );\n +\t\t} :\n +\n +\t\t// Otherwise use our own trimming functionality\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\t( text + "" ).replace( rtrim, "" );\n +\t\t},\n +\n +\t// results is for internal usage only\n +\tmakeArray: function( arr, results ) {\n +\t\tvar ret = results || [];\n +\n +\t\tif ( arr != null ) {\n +\t\t\tif ( isArraylike( Object(arr) ) ) {\n +\t\t\t\tjQuery.merge( ret,\n +\t\t\t\t\ttypeof arr === "string" ?\n +\t\t\t\t\t[ arr ] : arr\n +\t\t\t\t);\n +\t\t\t} else {\n +\t\t\t\tcore_push.call( ret, arr );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tinArray: function( elem, arr, i ) {\n +\t\tvar len;\n +\n +\t\tif ( arr ) {\n +\t\t\tif ( core_indexOf ) {\n +\t\t\t\treturn core_indexOf.call( arr, elem, i );\n +\t\t\t}\n +\n +\t\t\tlen = arr.length;\n +\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n +\n +\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\t// Skip accessing in sparse arrays\n +\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n +\t\t\t\t\treturn i;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn -1;\n +\t},\n +\n +\tmerge: function( first, second ) {\n +\t\tvar l = second.length,\n +\t\t\ti = first.length,\n +\t\t\tj = 0;\n +\n +\t\tif ( typeof l === "number" ) {\n +\t\t\tfor ( ; j < l; j++ ) {\n +\t\t\t\tfirst[ i++ ] = second[ j ];\n +\t\t\t}\n +\t\t} else {\n +\t\t\twhile ( second[j] !== undefined ) {\n +\t\t\t\tfirst[ i++ ] = second[ j++ ];\n +\t\t\t}\n +\t\t}\n +\n +\t\tfirst.length = i;\n +\n +\t\treturn first;\n +\t},\n +\n +\tgrep: function( elems, callback, inv ) {\n +\t\tvar retVal,\n +\t\t\tret = [],\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length;\n +\t\tinv = !!inv;\n +\n +\t\t// Go through the array, only saving the items\n +\t\t// that pass the validator function\n +\t\tfor ( ; i < length; i++ ) {\n +\t\t\tretVal = !!callback( elems[ i ], i );\n +\t\t\tif ( inv !== retVal ) {\n +\t\t\t\tret.push( elems[ i ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\t// arg is for internal usage only\n +\tmap: function( elems, callback, arg ) {\n +\t\tvar value,\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length,\n +\t\t\tisArray = isArraylike( elems ),\n +\t\t\tret = [];\n +\n +\t\t// Go through the array, translating each of the items to their\n +\t\tif ( isArray ) {\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tvalue = callback( elems[ i ], i, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// Go through every key on the object,\n +\t\t} else {\n +\t\t\tfor ( i in elems ) {\n +\t\t\t\tvalue = callback( elems[ i ], i, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Flatten any nested arrays\n +\t\treturn core_concat.apply( [], ret );\n +\t},\n +\n +\t// A global GUID counter for objects\n +\tguid: 1,\n +\n +\t// Bind a function to a context, optionally partially applying any\n +\t// arguments.\n +\tproxy: function( fn, context ) {\n +\t\tvar tmp, args, proxy;\n +\n +\t\tif ( typeof context === "string" ) {\n +\t\t\ttmp = fn[ context ];\n +\t\t\tcontext = fn;\n +\t\t\tfn = tmp;\n +\t\t}\n +\n +\t\t// Quick check to determine if target is callable, in the spec\n +\t\t// this throws a TypeError, but we will just return undefined.\n +\t\tif ( !jQuery.isFunction( fn ) ) {\n +\t\t\treturn undefined;\n +\t\t}\n +\n +\t\t// Simulated bind\n +\t\targs = core_slice.call( arguments, 2 );\n +\t\tproxy = function() {\n +\t\t\treturn fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );\n +\t\t};\n +\n +\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n +\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n +\n +\t\treturn proxy;\n +\t},\n +\n +\t// Multifunctional method to get and set values of a collection\n +\t// The value/s can optionally be executed if it\'s a function\n +\taccess: function( elems, fn, key, value, chainable, emptyGet, raw ) {\n +\t\tvar i = 0,\n +\t\t\tlength = elems.length,\n +\t\t\tbulk = key == null;\n +\n +\t\t// Sets many values\n +\t\tif ( jQuery.type( key ) === "object" ) {\n +\t\t\tchainable = true;\n +\t\t\tfor ( i in key ) {\n +\t\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n +\t\t\t}\n +\n +\t\t// Sets one value\n +\t\t} else if ( value !== undefined ) {\n +\t\t\tchainable = true;\n +\n +\t\t\tif ( !jQuery.isFunction( value ) ) {\n +\t\t\t\traw = true;\n +\t\t\t}\n +\n +\t\t\tif ( bulk ) {\n +\t\t\t\t// Bulk operations run against the entire set\n +\t\t\t\tif ( raw ) {\n +\t\t\t\t\tfn.call( elems, value );\n +\t\t\t\t\tfn = null;\n +\n +\t\t\t\t// ...except when executing function values\n +\t\t\t\t} else {\n +\t\t\t\t\tbulk = fn;\n +\t\t\t\t\tfn = function( elem, key, value ) {\n +\t\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n +\t\t\t\t\t};\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( fn ) {\n +\t\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn chainable ?\n +\t\t\telems :\n +\n +\t\t\t// Gets\n +\t\t\tbulk ?\n +\t\t\t\tfn.call( elems ) :\n +\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n +\t},\n +\n +\tnow: function() {\n +\t\treturn ( new Date() ).getTime();\n +\t}\n +});\n +\n +jQuery.ready.promise = function( obj ) {\n +\tif ( !readyList ) {\n +\n +\t\treadyList = jQuery.Deferred();\n +\n +\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n +\t\t// we once tried to use readyState "interactive" here, but it caused issues like the one\n +\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n +\t\tif ( document.readyState === "complete" ) {\n +\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n +\t\t\tsetTimeout( jQuery.ready );\n +\n +\t\t// Standards-based browsers support DOMContentLoaded\n +\t\t} else if ( document.addEventListener ) {\n +\t\t\t// Use the handy event callback\n +\t\t\tdocument.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.addEventListener( "load", jQuery.ready, false );\n +\n +\t\t// If IE event model is used\n +\t\t} else {\n +\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n +\t\t\tdocument.attachEvent( "onreadystatechange", DOMContentLoaded );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.attachEvent( "onload", jQuery.ready );\n +\n +\t\t\t// If IE and not a frame\n +\t\t\t// continually check to see if the document is ready\n +\t\t\tvar top = false;\n +\n +\t\t\ttry {\n +\t\t\t\ttop = window.frameElement == null && document.documentElement;\n +\t\t\t} catch(e) {}\n +\n +\t\t\tif ( top && top.doScroll ) {\n +\t\t\t\t(function doScrollCheck() {\n +\t\t\t\t\tif ( !jQuery.isReady ) {\n +\n +\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t// Use the trick by Diego Perini\n +\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n +\t\t\t\t\t\t\ttop.doScroll("left");\n +\t\t\t\t\t\t} catch(e) {\n +\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// and execute any waiting functions\n +\t\t\t\t\t\tjQuery.ready();\n +\t\t\t\t\t}\n +\t\t\t\t})();\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn readyList.promise( obj );\n +};\n +\n +// Populate the class2type map\n +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {\n +\tclass2type[ "[object " + name + "]" ] = name.toLowerCase();\n +});\n +\n +function isArraylike( obj ) {\n +\tvar length = obj.length,\n +\t\ttype = jQuery.type( obj );\n +\n +\tif ( jQuery.isWindow( obj ) ) {\n +\t\treturn false;\n +\t}\n +\n +\tif ( obj.nodeType === 1 && length ) {\n +\t\treturn true;\n +\t}\n +\n +\treturn type === "array" || type !== "function" &&\n +\t\t( length === 0 ||\n +\t\ttypeof length === "number" && length > 0 && ( length - 1 ) in obj );\n +}\n +\n +// All jQuery objects should point back to these\n +rootjQuery = jQuery(document);\n +// String to Object options format cache\n +var optionsCache = {};\n +\n +// Convert String-formatted options into Object-formatted ones and store in cache\n +function createOptions( options ) {\n +\tvar object = optionsCache[ options ] = {};\n +\tjQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {\n +\t\tobject[ flag ] = true;\n +\t});\n +\treturn object;\n +}\n +\n +/*\n + * Create a callback list using the following parameters:\n + *\n + *\toptions: an optional list of space-separated options that will change how\n + *\t\t\tthe callback list behaves or a more traditional option object\n + *\n + * By default a callback list will act like an event callback list and can be\n + * "fired" multiple times.\n + *\n + * Possible options:\n + *\n + *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n + *\n + *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n + *\t\t\t\t\tafter the list has been fired right away with the latest "memorized"\n + *\t\t\t\t\tvalues (like a Deferred)\n + *\n + *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n + *\n + *\tstopOnFalse:\tinterrupt callings when a callback returns false\n + *\n + */\n +jQuery.Callbacks = function( options ) {\n +\n +\t// Convert options from String-formatted to Object-formatted if needed\n +\t// (we check in cache first)\n +\toptions = typeof options === "string" ?\n +\t\t( optionsCache[ options ] || createOptions( options ) ) :\n +\t\tjQuery.extend( {}, options );\n +\n +\tvar // Last fire value (for non-forgettable lists)\n +\t\tmemory,\n +\t\t// Flag to know if list was already fired\n +\t\tfired,\n +\t\t// Flag to know if list is currently firing\n +\t\tfiring,\n +\t\t// First callback to fire (used internally by add and fireWith)\n +\t\tfiringStart,\n +\t\t// End of the loop when firing\n +\t\tfiringLength,\n +\t\t// Index of currently firing callback (modified by remove if needed)\n +\t\tfiringIndex,\n +\t\t// Actual callback list\n +\t\tlist = [],\n +\t\t// Stack of fire calls for repeatable lists\n +\t\tstack = !options.once && [],\n +\t\t// Fire callbacks\n +\t\tfire = function( data ) {\n +\t\t\tmemory = options.memory && data;\n +\t\t\tfired = true;\n +\t\t\tfiringIndex = firingStart || 0;\n +\t\t\tfiringStart = 0;\n +\t\t\tfiringLength = list.length;\n +\t\t\tfiring = true;\n +\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n +\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n +\t\t\t\t\tmemory = false; // To prevent further calls using add\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tfiring = false;\n +\t\t\tif ( list ) {\n +\t\t\t\tif ( stack ) {\n +\t\t\t\t\tif ( stack.length ) {\n +\t\t\t\t\t\tfire( stack.shift() );\n +\t\t\t\t\t}\n +\t\t\t\t} else if ( memory ) {\n +\t\t\t\t\tlist = [];\n +\t\t\t\t} else {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Actual Callbacks object\n +\t\tself = {\n +\t\t\t// Add a callback or a collection of callbacks to the list\n +\t\t\tadd: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\t// First, we save the current length\n +\t\t\t\t\tvar start = list.length;\n +\t\t\t\t\t(function add( args ) {\n +\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n +\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n +\t\t\t\t\t\t\tif ( type === "function" ) {\n +\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n +\t\t\t\t\t\t\t\t\tlist.push( arg );\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== "string" ) {\n +\t\t\t\t\t\t\t\t// Inspect recursively\n +\t\t\t\t\t\t\t\tadd( arg );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t});\n +\t\t\t\t\t})( arguments );\n +\t\t\t\t\t// Do we need to add the callbacks to the\n +\t\t\t\t\t// current firing batch?\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tfiringLength = list.length;\n +\t\t\t\t\t// With memory, if we\'re not firing then\n +\t\t\t\t\t// we should call right away\n +\t\t\t\t\t} else if ( memory ) {\n +\t\t\t\t\t\tfiringStart = start;\n +\t\t\t\t\t\tfire( memory );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Remove a callback from the list\n +\t\t\tremove: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n +\t\t\t\t\t\tvar index;\n +\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n +\t\t\t\t\t\t\tlist.splice( index, 1 );\n +\t\t\t\t\t\t\t// Handle firing indexes\n +\t\t\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n +\t\t\t\t\t\t\t\t\tfiringLength--;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n +\t\t\t\t\t\t\t\t\tfiringIndex--;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Control if a given callback is in the list\n +\t\t\thas: function( fn ) {\n +\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n +\t\t\t},\n +\t\t\t// Remove all callbacks from the list\n +\t\t\tempty: function() {\n +\t\t\t\tlist = [];\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Have the list do nothing anymore\n +\t\t\tdisable: function() {\n +\t\t\t\tlist = stack = memory = undefined;\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it disabled?\n +\t\t\tdisabled: function() {\n +\t\t\t\treturn !list;\n +\t\t\t},\n +\t\t\t// Lock the list in its current state\n +\t\t\tlock: function() {\n +\t\t\t\tstack = undefined;\n +\t\t\t\tif ( !memory ) {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it locked?\n +\t\t\tlocked: function() {\n +\t\t\t\treturn !stack;\n +\t\t\t},\n +\t\t\t// Call all callbacks with the given context and arguments\n +\t\t\tfireWith: function( context, args ) {\n +\t\t\t\targs = args || [];\n +\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n +\t\t\t\tif ( list && ( !fired || stack ) ) {\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tstack.push( args );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tfire( args );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Call all the callbacks with the given arguments\n +\t\t\tfire: function() {\n +\t\t\t\tself.fireWith( this, arguments );\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// To know if the callbacks have already been called at least once\n +\t\t\tfired: function() {\n +\t\t\t\treturn !!fired;\n +\t\t\t}\n +\t\t};\n +\n +\treturn self;\n +};\n +jQuery.extend({\n +\n +\tDeferred: function( func ) {\n +\t\tvar tuples = [\n +\t\t\t\t// action, add listener, listener list, final state\n +\t\t\t\t[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],\n +\t\t\t\t[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],\n +\t\t\t\t[ "notify", "progress", jQuery.Callbacks("memory") ]\n +\t\t\t],\n +\t\t\tstate = "pending",\n +\t\t\tpromise = {\n +\t\t\t\tstate: function() {\n +\t\t\t\t\treturn state;\n +\t\t\t\t},\n +\t\t\t\talways: function() {\n +\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n +\t\t\t\t\tvar fns = arguments;\n +\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n +\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n +\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n +\t\t\t\t\t\t\t\tfn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n +\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n +\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n +\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n +\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n +\t\t\t\t\t\t\t\t\treturned.promise()\n +\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n +\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n +\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tnewDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t});\n +\t\t\t\t\t\t});\n +\t\t\t\t\t\tfns = null;\n +\t\t\t\t\t}).promise();\n +\t\t\t\t},\n +\t\t\t\t// Get a promise for this deferred\n +\t\t\t\t// If obj is provided, the promise aspect is added to the object\n +\t\t\t\tpromise: function( obj ) {\n +\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tdeferred = {};\n +\n +\t\t// Keep pipe for back-compat\n +\t\tpromise.pipe = promise.then;\n +\n +\t\t// Add list-specific methods\n +\t\tjQuery.each( tuples, function( i, tuple ) {\n +\t\t\tvar list = tuple[ 2 ],\n +\t\t\t\tstateString = tuple[ 3 ];\n +\n +\t\t\t// promise[ done | fail | progress ] = list.add\n +\t\t\tpromise[ tuple[1] ] = list.add;\n +\n +\t\t\t// Handle state\n +\t\t\tif ( stateString ) {\n +\t\t\t\tlist.add(function() {\n +\t\t\t\t\t// state = [ resolved | rejected ]\n +\t\t\t\t\tstate = stateString;\n +\n +\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n +\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n +\t\t\t}\n +\n +\t\t\t// deferred[ resolve | reject | notify ]\n +\t\t\tdeferred[ tuple[0] ] = function() {\n +\t\t\t\tdeferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );\n +\t\t\t\treturn this;\n +\t\t\t};\n +\t\t\tdeferred[ tuple[0] + "With" ] = list.fireWith;\n +\t\t});\n +\n +\t\t// Make the deferred a promise\n +\t\tpromise.promise( deferred );\n +\n +\t\t// Call given func if any\n +\t\tif ( func ) {\n +\t\t\tfunc.call( deferred, deferred );\n +\t\t}\n +\n +\t\t// All done!\n +\t\treturn deferred;\n +\t},\n +\n +\t// Deferred helper\n +\twhen: function( subordinate /* , ..., subordinateN */ ) {\n +\t\tvar i = 0,\n +\t\t\tresolveValues = core_slice.call( arguments ),\n +\t\t\tlength = resolveValues.length,\n +\n +\t\t\t// the count of uncompleted subordinates\n +\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n +\n +\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n +\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n +\n +\t\t\t// Update function for both resolve and progress values\n +\t\t\tupdateFunc = function( i, contexts, values ) {\n +\t\t\t\treturn function( value ) {\n +\t\t\t\t\tcontexts[ i ] = this;\n +\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n +\t\t\t\t\tif( values === progressValues ) {\n +\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n +\t\t\t\t\t} else if ( !( --remaining ) ) {\n +\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t},\n +\n +\t\t\tprogressValues, progressContexts, resolveContexts;\n +\n +\t\t// add listeners to Deferred subordinates; treat others as resolved\n +\t\tif ( length > 1 ) {\n +\t\t\tprogressValues = new Array( length );\n +\t\t\tprogressContexts = new Array( length );\n +\t\t\tresolveContexts = new Array( length );\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n +\t\t\t\t\tresolveValues[ i ].promise()\n +\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n +\t\t\t\t\t\t.fail( deferred.reject )\n +\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n +\t\t\t\t} else {\n +\t\t\t\t\t--remaining;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// if we\'re not waiting on anything, resolve the master\n +\t\tif ( !remaining ) {\n +\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n +\t\t}\n +\n +\t\treturn deferred.promise();\n +\t}\n +});\n +jQuery.support = (function() {\n +\n +\tvar support, all, a, select, opt, input, fragment, eventName, isSupported, i,\n +\t\tdiv = document.createElement("div");\n +\n +\t// Setup\n +\tdiv.setAttribute( "className", "t" );\n +\tdiv.innerHTML = " <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>";\n +\n +\t// Support tests won\'t run in some limited or non-browser environments\n +\tall = div.getElementsByTagName("*");\n +\ta = div.getElementsByTagName("a")[ 0 ];\n +\tif ( !all || !a || !all.length ) {\n +\t\treturn {};\n +\t}\n +\n +\t// First batch of tests\n +\tselect = document.createElement("select");\n +\topt = select.appendChild( document.createElement("option") );\n +\tinput = div.getElementsByTagName("input")[ 0 ];\n +\n +\ta.style.cssText = "top:1px;float:left;opacity:.5";\n +\tsupport = {\n +\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n +\t\tgetSetAttribute: div.className !== "t",\n +\n +\t\t// IE strips leading whitespace when .innerHTML is used\n +\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n +\n +\t\t// Make sure that tbody elements aren\'t automatically inserted\n +\t\t// IE will insert them into empty tables\n +\t\ttbody: !div.getElementsByTagName("tbody").length,\n +\n +\t\t// Make sure that link elements get serialized correctly by innerHTML\n +\t\t// This requires a wrapper element in IE\n +\t\thtmlSerialize: !!div.getElementsByTagName("link").length,\n +\n +\t\t// Get the style information from getAttribute\n +\t\t// (IE uses .cssText instead)\n +\t\tstyle: /top/.test( a.getAttribute("style") ),\n +\n +\t\t// Make sure that URLs aren\'t manipulated\n +\t\t// (IE normalizes it by default)\n +\t\threfNormalized: a.getAttribute("href") === "/a",\n +\n +\t\t// Make sure that element opacity exists\n +\t\t// (IE uses filter instead)\n +\t\t// Use a regex to work around a WebKit issue. See #5145\n +\t\topacity: /^0.5/.test( a.style.opacity ),\n +\n +\t\t// Verify style float existence\n +\t\t// (IE uses styleFloat instead of cssFloat)\n +\t\tcssFloat: !!a.style.cssFloat,\n +\n +\t\t// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)\n +\t\tcheckOn: !!input.value,\n +\n +\t\t// Make sure that a selected-by-default option has a working selected property.\n +\t\t// (WebKit defaults to false instead of true, IE too, if it\'s in an optgroup)\n +\t\toptSelected: opt.selected,\n +\n +\t\t// Tests for enctype support on a form (#6743)\n +\t\tenctype: !!document.createElement("form").enctype,\n +\n +\t\t// Makes sure cloning an html5 element does not cause problems\n +\t\t// Where outerHTML is undefined, this still works\n +\t\thtml5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",\n +\n +\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don\'t support Quirks Mode\n +\t\tboxModel: document.compatMode === "CSS1Compat",\n +\n +\t\t// Will be defined later\n +\t\tdeleteExpando: true,\n +\t\tnoCloneEvent: true,\n +\t\tinlineBlockNeedsLayout: false,\n +\t\tshrinkWrapBlocks: false,\n +\t\treliableMarginRight: true,\n +\t\tboxSizingReliable: true,\n +\t\tpixelPosition: false\n +\t};\n +\n +\t// Make sure checked status is properly cloned\n +\tinput.checked = true;\n +\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n +\n +\t// Make sure that the options inside disabled selects aren\'t marked as disabled\n +\t// (WebKit marks them as disabled)\n +\tselect.disabled = true;\n +\tsupport.optDisabled = !opt.disabled;\n +\n +\t// Support: IE<9\n +\ttry {\n +\t\tdelete div.test;\n +\t} catch( e ) {\n +\t\tsupport.deleteExpando = false;\n +\t}\n +\n +\t// Check if we can trust getAttribute("value")\n +\tinput = document.createElement("input");\n +\tinput.setAttribute( "value", "" );\n +\tsupport.input = input.getAttribute( "value" ) === "";\n +\n +\t// Check if an input maintains its value after becoming a radio\n +\tinput.value = "t";\n +\tinput.setAttribute( "type", "radio" );\n +\tsupport.radioValue = input.value === "t";\n +\n +\t// #11217 - WebKit loses check when the name is after the checked attribute\n +\tinput.setAttribute( "checked", "t" );\n +\tinput.setAttribute( "name", "t" );\n +\n +\tfragment = document.createDocumentFragment();\n +\tfragment.appendChild( input );\n +\n +\t// Check if a disconnected checkbox will retain its checked\n +\t// value of true after appended to the DOM (IE6/7)\n +\tsupport.appendChecked = input.checked;\n +\n +\t// WebKit doesn\'t clone checked state correctly in fragments\n +\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n +\n +\t// Support: IE<9\n +\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n +\t// IE9-10 clones events bound via attachEvent, but they don\'t trigger with .click()\n +\tif ( div.attachEvent ) {\n +\t\tdiv.attachEvent( "onclick", function() {\n +\t\t\tsupport.noCloneEvent = false;\n +\t\t});\n +\n +\t\tdiv.cloneNode( true ).click();\n +\t}\n +\n +\t// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)\n +\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php\n +\tfor ( i in { submit: true, change: true, focusin: true }) {\n +\t\tdiv.setAttribute( eventName = "on" + i, "t" );\n +\n +\t\tsupport[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;\n +\t}\n +\n +\tdiv.style.backgroundClip = "content-box";\n +\tdiv.cloneNode( true ).style.backgroundClip = "";\n +\tsupport.clearCloneStyle = div.style.backgroundClip === "content-box";\n +\n +\t// Run tests that need a body at doc ready\n +\tjQuery(function() {\n +\t\tvar container, marginDiv, tds,\n +\t\t\tdivReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",\n +\t\t\tbody = document.getElementsByTagName("body")[0];\n +\n +\t\tif ( !body ) {\n +\t\t\t// Return for frameset docs that don\'t have a body\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tcontainer = document.createElement("div");\n +\t\tcontainer.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";\n +\n +\t\tbody.appendChild( container ).appendChild( div );\n +\n +\t\t// Support: IE8\n +\t\t// Check if table cells still have offsetWidth/Height when they are set\n +\t\t// to display:none and there are still other visible table cells in a\n +\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n +\t\t// determining if an element has been hidden directly using\n +\t\t// display:none (it is still safe to use offsets if a parent element is\n +\t\t// hidden; don safety goggles and see bug #4512 for more information).\n +\t\tdiv.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";\n +\t\ttds = div.getElementsByTagName("td");\n +\t\ttds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";\n +\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\ttds[ 0 ].style.display = "";\n +\t\ttds[ 1 ].style.display = "none";\n +\n +\t\t// Support: IE8\n +\t\t// Check if empty table cells still have offsetWidth/Height\n +\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\t// Check box-sizing and margin behavior\n +\t\tdiv.innerHTML = "";\n +\t\tdiv.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";\n +\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n +\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n +\n +\t\t// Use window.getComputedStyle because jsdom on node.js will break without it.\n +\t\tif ( window.getComputedStyle ) {\n +\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";\n +\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";\n +\n +\t\t\t// Check if div with explicit width and no margin-right incorrectly\n +\t\t\t// gets computed margin-right based on width of container. (#3333)\n +\t\t\t// Fails in WebKit before Feb 2011 nightlies\n +\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\t\tmarginDiv = div.appendChild( document.createElement("div") );\n +\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n +\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = "0";\n +\t\t\tdiv.style.width = "1px";\n +\n +\t\t\tsupport.reliableMarginRight =\n +\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n +\t\t}\n +\n +\t\tif ( typeof div.style.zoom !== "undefined" ) {\n +\t\t\t// Support: IE<8\n +\t\t\t// Check if natively block-level elements act like inline-block\n +\t\t\t// elements when setting their display to \'inline\' and giving\n +\t\t\t// them layout\n +\t\t\tdiv.innerHTML = "";\n +\t\t\tdiv.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";\n +\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n +\n +\t\t\t// Support: IE6\n +\t\t\t// Check if elements with layout shrink-wrap their children\n +\t\t\tdiv.style.display = "block";\n +\t\t\tdiv.innerHTML = "<div></div>";\n +\t\t\tdiv.firstChild.style.width = "5px";\n +\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n +\n +\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n +\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n +\t\t\tbody.style.zoom = 1;\n +\t\t}\n +\n +\t\tbody.removeChild( container );\n +\n +\t\t// Null elements to avoid leaks in IE\n +\t\tcontainer = div = tds = marginDiv = null;\n +\t});\n +\n +\t// Null elements to avoid leaks in IE\n +\tall = select = fragment = opt = a = input = null;\n +\n +\treturn support;\n +})();\n +\n +var rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n +\trmultiDash = /([A-Z])/g;\n +\t\n +function internalData( elem, name, data, pvt /* Internal Use Only */ ){\n +\tif ( !jQuery.acceptData( elem ) ) {\n +\t\treturn;\n +\t}\n +\n +\tvar thisCache, ret,\n +\t\tinternalKey = jQuery.expando,\n +\t\tgetByName = typeof name === "string",\n +\n +\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n +\t\t// can\'t GC object references properly across the DOM-JS boundary\n +\t\tisNode = elem.nodeType,\n +\n +\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n +\t\t// attached directly to the object so GC can occur automatically\n +\t\tcache = isNode ? jQuery.cache : elem,\n +\n +\t\t// Only defining an ID for JS objects if its cache already exists allows\n +\t\t// the code to shortcut on the same path as a DOM node with no cache\n +\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n +\n +\t// Avoid doing any more work than we need to when trying to get data on an\n +\t// object that has no data at all\n +\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n +\t\treturn;\n +\t}\n +\n +\tif ( !id ) {\n +\t\t// Only DOM nodes need a new unique ID for each element since their data\n +\t\t// ends up in the global cache\n +\t\tif ( isNode ) {\n +\t\t\telem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;\n +\t\t} else {\n +\t\t\tid = internalKey;\n +\t\t}\n +\t}\n +\n +\tif ( !cache[ id ] ) {\n +\t\tcache[ id ] = {};\n +\n +\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n +\t\t// is serialized using JSON.stringify\n +\t\tif ( !isNode ) {\n +\t\t\tcache[ id ].toJSON = jQuery.noop;\n +\t\t}\n +\t}\n +\n +\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n +\t// shallow copied over onto the existing cache\n +\tif ( typeof name === "object" || typeof name === "function" ) {\n +\t\tif ( pvt ) {\n +\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n +\t\t} else {\n +\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n +\t\t}\n +\t}\n +\n +\tthisCache = cache[ id ];\n +\n +\t// jQuery data() is stored in a separate object inside the object\'s internal data\n +\t// cache in order to avoid key collisions between internal data and user-defined\n +\t// data.\n +\tif ( !pvt ) {\n +\t\tif ( !thisCache.data ) {\n +\t\t\tthisCache.data = {};\n +\t\t}\n +\n +\t\tthisCache = thisCache.data;\n +\t}\n +\n +\tif ( data !== undefined ) {\n +\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n +\t}\n +\n +\t// Check for both converted-to-camel and non-converted data property names\n +\t// If a data property was specified\n +\tif ( getByName ) {\n +\n +\t\t// First Try to find as-is property data\n +\t\tret = thisCache[ name ];\n +\n +\t\t// Test for null|undefined property data\n +\t\tif ( ret == null ) {\n +\n +\t\t\t// Try to find the camelCased property\n +\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n +\t\t}\n +\t} else {\n +\t\tret = thisCache;\n +\t}\n +\n +\treturn ret;\n +}\n +\n +function internalRemoveData( elem, name, pvt /* For internal use only */ ){\n +\tif ( !jQuery.acceptData( elem ) ) {\n +\t\treturn;\n +\t}\n +\n +\tvar thisCache, i, l,\n +\n +\t\tisNode = elem.nodeType,\n +\n +\t\t// See jQuery.data for more information\n +\t\tcache = isNode ? jQuery.cache : elem,\n +\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n +\n +\t// If there is already no cache entry for this object, there is no\n +\t// purpose in continuing\n +\tif ( !cache[ id ] ) {\n +\t\treturn;\n +\t}\n +\n +\tif ( name ) {\n +\n +\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n +\n +\t\tif ( thisCache ) {\n +\n +\t\t\t// Support array or space separated string names for data keys\n +\t\t\tif ( !jQuery.isArray( name ) ) {\n +\n +\t\t\t\t// try the string as a key before any manipulation\n +\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\tname = [ name ];\n +\t\t\t\t} else {\n +\n +\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n +\t\t\t\t\tname = jQuery.camelCase( name );\n +\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tname = name.split(" ");\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\t// If "name" is an array of keys...\n +\t\t\t\t// When data is initially created, via ("key", "val") signature,\n +\t\t\t\t// keys will be converted to camelCase.\n +\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n +\t\t\t\t// both plain key and camelCase key. #12786\n +\t\t\t\t// This will only penalize the array argument path.\n +\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n +\t\t\t}\n +\n +\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n +\t\t\t\tdelete thisCache[ name[i] ];\n +\t\t\t}\n +\n +\t\t\t// If there is no data left in the cache, we want to continue\n +\t\t\t// and let the cache object itself get destroyed\n +\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// See jQuery.data for more information\n +\tif ( !pvt ) {\n +\t\tdelete cache[ id ].data;\n +\n +\t\t// Don\'t destroy the parent cache unless the internal data object\n +\t\t// had been the only thing left in it\n +\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n +\t\t\treturn;\n +\t\t}\n +\t}\n +\n +\t// Destroy the cache\n +\tif ( isNode ) {\n +\t\tjQuery.cleanData( [ elem ], true );\n +\n +\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n +\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n +\t\tdelete cache[ id ];\n +\n +\t// When all else fails, null\n +\t} else {\n +\t\tcache[ id ] = null;\n +\t}\n +}\n +\n +jQuery.extend({\n +\tcache: {},\n +\n +\t// Unique for each copy of jQuery on the page\n +\t// Non-digits removed to match rinlinejQuery\n +\texpando: "jQuery" + ( core_version + Math.random() ).replace( /\\D/g, "" ),\n +\n +\t// The following elements throw uncatchable exceptions if you\n +\t// attempt to add expando properties to them.\n +\tnoData: {\n +\t\t"embed": true,\n +\t\t// Ban all objects except for Flash (which handle expandos)\n +\t\t"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",\n +\t\t"applet": true\n +\t},\n +\n +\thasData: function( elem ) {\n +\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n +\t\treturn !!elem && !isEmptyDataObject( elem );\n +\t},\n +\n +\tdata: function( elem, name, data ) {\n +\t\treturn internalData( elem, name, data, false );\n +\t},\n +\n +\tremoveData: function( elem, name ) {\n +\t\treturn internalRemoveData( elem, name, false );\n +\t},\n +\n +\t// For internal use only.\n +\t_data: function( elem, name, data ) {\n +\t\treturn internalData( elem, name, data, true );\n +\t},\n +\t\n +\t_removeData: function( elem, name ) {\n +\t\treturn internalRemoveData( elem, name, true );\n +\t},\n +\n +\t// A method for determining if a DOM node can handle the data expando\n +\tacceptData: function( elem ) {\n +\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n +\n +\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n +\t\treturn !noData || noData !== true && elem.getAttribute("classid") === noData;\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tdata: function( key, value ) {\n +\t\tvar attrs, name,\n +\t\t\telem = this[0],\n +\t\t\ti = 0,\n +\t\t\tdata = null;\n +\n +\t\t// Gets all values\n +\t\tif ( key === undefined ) {\n +\t\t\tif ( this.length ) {\n +\t\t\t\tdata = jQuery.data( elem );\n +\n +\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {\n +\t\t\t\t\tattrs = elem.attributes;\n +\t\t\t\t\tfor ( ; i < attrs.length; i++ ) {\n +\t\t\t\t\t\tname = attrs[i].name;\n +\n +\t\t\t\t\t\tif ( !name.indexOf( "data-" ) ) {\n +\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n +\n +\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tjQuery._data( elem, "parsedAttrs", true );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn data;\n +\t\t}\n +\n +\t\t// Sets multiple values\n +\t\tif ( typeof key === "object" ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery.data( this, key );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn jQuery.access( this, function( value ) {\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\t// Try to fetch any internally stored data first\n +\t\t\t\treturn elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;\n +\t\t\t}\n +\n +\t\t\tthis.each(function() {\n +\t\t\t\tjQuery.data( this, key, value );\n +\t\t\t});\n +\t\t}, null, value, arguments.length > 1, null, true );\n +\t},\n +\n +\tremoveData: function( key ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeData( this, key );\n +\t\t});\n +\t}\n +});\n +\n +function dataAttr( elem, key, data ) {\n +\t// If nothing was found internally, try to fetch any\n +\t// data from the HTML5 data-* attribute\n +\tif ( data === undefined && elem.nodeType === 1 ) {\n +\n +\t\tvar name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();\n +\n +\t\tdata = elem.getAttribute( name );\n +\n +\t\tif ( typeof data === "string" ) {\n +\t\t\ttry {\n +\t\t\t\tdata = data === "true" ? true :\n +\t\t\t\tdata === "false" ? false :\n +\t\t\t\tdata === "null" ? null :\n +\t\t\t\t// Only convert to a number if it doesn\'t change the string\n +\t\t\t\t+data + "" === data ? +data :\n +\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n +\t\t\t\t\tdata;\n +\t\t\t} catch( e ) {}\n +\n +\t\t\t// Make sure we set the data so it isn\'t changed later\n +\t\t\tjQuery.data( elem, key, data );\n +\n +\t\t} else {\n +\t\t\tdata = undefined;\n +\t\t}\n +\t}\n +\n +\treturn data;\n +}\n +\n +// checks a cache object for emptiness\n +function isEmptyDataObject( obj ) {\n +\tvar name;\n +\tfor ( name in obj ) {\n +\n +\t\t// if the public data object is empty, the private is still empty\n +\t\tif ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tif ( name !== "toJSON" ) {\n +\t\t\treturn false;\n +\t\t}\n +\t}\n +\n +\treturn true;\n +}\n +jQuery.extend({\n +\tqueue: function( elem, type, data ) {\n +\t\tvar queue;\n +\n +\t\tif ( elem ) {\n +\t\t\ttype = ( type || "fx" ) + "queue";\n +\t\t\tqueue = jQuery._data( elem, type );\n +\n +\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n +\t\t\tif ( data ) {\n +\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n +\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n +\t\t\t\t} else {\n +\t\t\t\t\tqueue.push( data );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn queue || [];\n +\t\t}\n +\t},\n +\n +\tdequeue: function( elem, type ) {\n +\t\ttype = type || "fx";\n +\n +\t\tvar queue = jQuery.queue( elem, type ),\n +\t\t\tstartLength = queue.length,\n +\t\t\tfn = queue.shift(),\n +\t\t\thooks = jQuery._queueHooks( elem, type ),\n +\t\t\tnext = function() {\n +\t\t\t\tjQuery.dequeue( elem, type );\n +\t\t\t};\n +\n +\t\t// If the fx queue is dequeued, always remove the progress sentinel\n +\t\tif ( fn === "inprogress" ) {\n +\t\t\tfn = queue.shift();\n +\t\t\tstartLength--;\n +\t\t}\n +\n +\t\thooks.cur = fn;\n +\t\tif ( fn ) {\n +\n +\t\t\t// Add a progress sentinel to prevent the fx queue from being\n +\t\t\t// automatically dequeued\n +\t\t\tif ( type === "fx" ) {\n +\t\t\t\tqueue.unshift( "inprogress" );\n +\t\t\t}\n +\n +\t\t\t// clear up the last queue stop function\n +\t\t\tdelete hooks.stop;\n +\t\t\tfn.call( elem, next, hooks );\n +\t\t}\n +\n +\t\tif ( !startLength && hooks ) {\n +\t\t\thooks.empty.fire();\n +\t\t}\n +\t},\n +\n +\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n +\t_queueHooks: function( elem, type ) {\n +\t\tvar key = type + "queueHooks";\n +\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n +\t\t\tempty: jQuery.Callbacks("once memory").add(function() {\n +\t\t\t\tjQuery._removeData( elem, type + "queue" );\n +\t\t\t\tjQuery._removeData( elem, key );\n +\t\t\t})\n +\t\t});\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tqueue: function( type, data ) {\n +\t\tvar setter = 2;\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tdata = type;\n +\t\t\ttype = "fx";\n +\t\t\tsetter--;\n +\t\t}\n +\n +\t\tif ( arguments.length < setter ) {\n +\t\t\treturn jQuery.queue( this[0], type );\n +\t\t}\n +\n +\t\treturn data === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar queue = jQuery.queue( this, type, data );\n +\n +\t\t\t\t// ensure a hooks for this queue\n +\t\t\t\tjQuery._queueHooks( this, type );\n +\n +\t\t\t\tif ( type === "fx" && queue[0] !== "inprogress" ) {\n +\t\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t\t}\n +\t\t\t});\n +\t},\n +\tdequeue: function( type ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.dequeue( this, type );\n +\t\t});\n +\t},\n +\t// Based off of the plugin by Clint Helfers, with permission.\n +\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n +\tdelay: function( time, type ) {\n +\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n +\t\ttype = type || "fx";\n +\n +\t\treturn this.queue( type, function( next, hooks ) {\n +\t\t\tvar timeout = setTimeout( next, time );\n +\t\t\thooks.stop = function() {\n +\t\t\t\tclearTimeout( timeout );\n +\t\t\t};\n +\t\t});\n +\t},\n +\tclearQueue: function( type ) {\n +\t\treturn this.queue( type || "fx", [] );\n +\t},\n +\t// Get a promise resolved when queues of a certain type\n +\t// are emptied (fx is the type by default)\n +\tpromise: function( type, obj ) {\n +\t\tvar tmp,\n +\t\t\tcount = 1,\n +\t\t\tdefer = jQuery.Deferred(),\n +\t\t\telements = this,\n +\t\t\ti = this.length,\n +\t\t\tresolve = function() {\n +\t\t\t\tif ( !( --count ) ) {\n +\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tobj = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\ttype = type || "fx";\n +\n +\t\twhile( i-- ) {\n +\t\t\ttmp = jQuery._data( elements[ i ], type + "queueHooks" );\n +\t\t\tif ( tmp && tmp.empty ) {\n +\t\t\t\tcount++;\n +\t\t\t\ttmp.empty.add( resolve );\n +\t\t\t}\n +\t\t}\n +\t\tresolve();\n +\t\treturn defer.promise( obj );\n +\t}\n +});\n +var nodeHook, boolHook,\n +\trclass = /[\\t\\r\\n]/g,\n +\trreturn = /\\r/g,\n +\trfocusable = /^(?:input|select|textarea|button|object)$/i,\n +\trclickable = /^(?:a|area)$/i,\n +\trboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,\n +\truseDefault = /^(?:checked|selected)$/i,\n +\tgetSetAttribute = jQuery.support.getSetAttribute,\n +\tgetSetInput = jQuery.support.input;\n +\n +jQuery.fn.extend({\n +\tattr: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveAttr: function( name ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeAttr( this, name );\n +\t\t});\n +\t},\n +\n +\tprop: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveProp: function( name ) {\n +\t\tname = jQuery.propFix[ name ] || name;\n +\t\treturn this.each(function() {\n +\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n +\t\t\ttry {\n +\t\t\t\tthis[ name ] = undefined;\n +\t\t\t\tdelete this[ name ];\n +\t\t\t} catch( e ) {}\n +\t\t});\n +\t},\n +\n +\taddClass: function( value ) {\n +\t\tvar classes, elem, cur, clazz, j,\n +\t\t\ti = 0,\n +\t\t\tlen = this.length,\n +\t\t\tproceed = typeof value === "string" && value;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( proceed ) {\n +\t\t\t// The disjunction here is for better compressibility (see removeClass)\n +\t\t\tclasses = ( value || "" ).match( core_rnotwhite ) || [];\n +\n +\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n +\t\t\t\t\t( " " + elem.className + " " ).replace( rclass, " " ) :\n +\t\t\t\t\t" "\n +\t\t\t\t);\n +\n +\t\t\t\tif ( cur ) {\n +\t\t\t\t\tj = 0;\n +\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n +\t\t\t\t\t\tif ( cur.indexOf( " " + clazz + " " ) < 0 ) {\n +\t\t\t\t\t\t\tcur += clazz + " ";\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\telem.className = jQuery.trim( cur );\n +\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tremoveClass: function( value ) {\n +\t\tvar classes, elem, cur, clazz, j,\n +\t\t\ti = 0,\n +\t\t\tlen = this.length,\n +\t\t\tproceed = arguments.length === 0 || typeof value === "string" && value;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n +\t\t\t});\n +\t\t}\n +\t\tif ( proceed ) {\n +\t\t\tclasses = ( value || "" ).match( core_rnotwhite ) || [];\n +\n +\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\t\t\t\t// This expression is here for better compressibility (see addClass)\n +\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n +\t\t\t\t\t( " " + elem.className + " " ).replace( rclass, " " ) :\n +\t\t\t\t\t""\n +\t\t\t\t);\n +\n +\t\t\t\tif ( cur ) {\n +\t\t\t\t\tj = 0;\n +\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n +\t\t\t\t\t\t// Remove *all* instances\n +\t\t\t\t\t\twhile ( cur.indexOf( " " + clazz + " " ) >= 0 ) {\n +\t\t\t\t\t\t\tcur = cur.replace( " " + clazz + " ", " " );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\telem.className = value ? jQuery.trim( cur ) : "";\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\ttoggleClass: function( value, stateVal ) {\n +\t\tvar type = typeof value,\n +\t\t\tisBool = typeof stateVal === "boolean";\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( i ) {\n +\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tif ( type === "string" ) {\n +\t\t\t\t// toggle individual class names\n +\t\t\t\tvar className,\n +\t\t\t\t\ti = 0,\n +\t\t\t\t\tself = jQuery( this ),\n +\t\t\t\t\tstate = stateVal,\n +\t\t\t\t\tclassNames = value.match( core_rnotwhite ) || [];\n +\n +\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n +\t\t\t\t\t// check each className given, space separated list\n +\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n +\t\t\t\t\tself[ state ? "addClass" : "removeClass" ]( className );\n +\t\t\t\t}\n +\n +\t\t\t// Toggle whole class name\n +\t\t\t} else if ( type === "undefined" || type === "boolean" ) {\n +\t\t\t\tif ( this.className ) {\n +\t\t\t\t\t// store className if set\n +\t\t\t\t\tjQuery._data( this, "__className__", this.className );\n +\t\t\t\t}\n +\n +\t\t\t\t// If the element has a class name or if we\'re passed "false",\n +\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n +\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n +\t\t\t\t// falling back to the empty string if nothing was stored.\n +\t\t\t\tthis.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\thasClass: function( selector ) {\n +\t\tvar className = " " + selector + " ",\n +\t\t\ti = 0,\n +\t\t\tl = this.length;\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\tif ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {\n +\t\t\t\treturn true;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\tval: function( value ) {\n +\t\tvar hooks, ret, isFunction,\n +\t\t\telem = this[0];\n +\n +\t\tif ( !arguments.length ) {\n +\t\t\tif ( elem ) {\n +\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n +\n +\t\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {\n +\t\t\t\t\treturn ret;\n +\t\t\t\t}\n +\n +\t\t\t\tret = elem.value;\n +\n +\t\t\t\treturn typeof ret === "string" ?\n +\t\t\t\t\t// handle most common string cases\n +\t\t\t\t\tret.replace(rreturn, "") :\n +\t\t\t\t\t// handle cases where value is null/undef or number\n +\t\t\t\t\tret == null ? "" : ret;\n +\t\t\t}\n +\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tisFunction = jQuery.isFunction( value );\n +\n +\t\treturn this.each(function( i ) {\n +\t\t\tvar val,\n +\t\t\t\tself = jQuery(this);\n +\n +\t\t\tif ( this.nodeType !== 1 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tif ( isFunction ) {\n +\t\t\t\tval = value.call( this, i, self.val() );\n +\t\t\t} else {\n +\t\t\t\tval = value;\n +\t\t\t}\n +\n +\t\t\t// Treat null/undefined as ""; convert numbers to string\n +\t\t\tif ( val == null ) {\n +\t\t\t\tval = "";\n +\t\t\t} else if ( typeof val === "number" ) {\n +\t\t\t\tval += "";\n +\t\t\t} else if ( jQuery.isArray( val ) ) {\n +\t\t\t\tval = jQuery.map(val, function ( value ) {\n +\t\t\t\t\treturn value == null ? "" : value + "";\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n +\n +\t\t\t// If set returns undefined, fall back to normal setting\n +\t\t\tif ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {\n +\t\t\t\tthis.value = val;\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +jQuery.extend({\n +\tvalHooks: {\n +\t\toption: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n +\t\t\t\t// uses .value. See #6932\n +\t\t\t\tvar val = elem.attributes.value;\n +\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n +\t\t\t}\n +\t\t},\n +\t\tselect: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar value, option,\n +\t\t\t\t\toptions = elem.options,\n +\t\t\t\t\tindex = elem.selectedIndex,\n +\t\t\t\t\tone = elem.type === "select-one" || index < 0,\n +\t\t\t\t\tvalues = one ? null : [],\n +\t\t\t\t\tmax = one ? index + 1 : options.length,\n +\t\t\t\t\ti = index < 0 ?\n +\t\t\t\t\t\tmax :\n +\t\t\t\t\t\tone ? index : 0;\n +\n +\t\t\t\t// Loop through all the selected options\n +\t\t\t\tfor ( ; i < max; i++ ) {\n +\t\t\t\t\toption = options[ i ];\n +\n +\t\t\t\t\t// oldIE doesn\'t update selected after form reset (#2551)\n +\t\t\t\t\tif ( ( option.selected || i === index ) &&\n +\t\t\t\t\t\t\t// Don\'t return options that are disabled or in a disabled optgroup\n +\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&\n +\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {\n +\n +\t\t\t\t\t\t// Get the specific value for the option\n +\t\t\t\t\t\tvalue = jQuery( option ).val();\n +\n +\t\t\t\t\t\t// We don\'t need an array for one selects\n +\t\t\t\t\t\tif ( one ) {\n +\t\t\t\t\t\t\treturn value;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Multi-Selects return an array\n +\t\t\t\t\t\tvalues.push( value );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn values;\n +\t\t\t},\n +\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tvar values = jQuery.makeArray( value );\n +\n +\t\t\t\tjQuery(elem).find("option").each(function() {\n +\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n +\t\t\t\t});\n +\n +\t\t\t\tif ( !values.length ) {\n +\t\t\t\t\telem.selectedIndex = -1;\n +\t\t\t\t}\n +\t\t\t\treturn values;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattr: function( elem, name, value ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set attributes on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Fallback to prop when attributes are not supported\n +\t\tif ( typeof elem.getAttribute === "undefined" ) {\n +\t\t\treturn jQuery.prop( elem, name, value );\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\t// All attributes are lowercase\n +\t\t// Grab necessary hook if one is defined\n +\t\tif ( notxml ) {\n +\t\t\tname = name.toLowerCase();\n +\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\n +\t\t\tif ( value === null ) {\n +\t\t\t\tjQuery.removeAttr( elem, name );\n +\n +\t\t\t} else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\telem.setAttribute( name, value + "" );\n +\t\t\t\treturn value;\n +\t\t\t}\n +\n +\t\t} else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\treturn ret;\n +\n +\t\t} else {\n +\n +\t\t\t// In IE9+, Flash objects don\'t have .getAttribute (#12945)\n +\t\t\t// Support: IE9+\n +\t\t\tif ( typeof elem.getAttribute !== "undefined" ) {\n +\t\t\t\tret = elem.getAttribute( name );\n +\t\t\t}\n +\n +\t\t\t// Non-existent attributes return null, we normalize to undefined\n +\t\t\treturn ret == null ?\n +\t\t\t\tundefined :\n +\t\t\t\tret;\n +\t\t}\n +\t},\n +\n +\tremoveAttr: function( elem, value ) {\n +\t\tvar name, propName,\n +\t\t\ti = 0,\n +\t\t\tattrNames = value && value.match( core_rnotwhite );\n +\n +\t\tif ( attrNames && elem.nodeType === 1 ) {\n +\t\t\twhile ( (name = attrNames[i++]) ) {\n +\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\n +\t\t\t\t// Boolean attributes get special treatment (#10870)\n +\t\t\t\tif ( rboolean.test( name ) ) {\n +\t\t\t\t\t// Set corresponding property to false for boolean attributes\n +\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate) for IE<8\n +\t\t\t\t\tif ( !getSetAttribute && ruseDefault.test( name ) ) {\n +\t\t\t\t\t\telem[ jQuery.camelCase( "default-" + name ) ] =\n +\t\t\t\t\t\t\telem[ propName ] = false;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\telem[ propName ] = false;\n +\t\t\t\t\t}\n +\n +\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n +\t\t\t\t} else {\n +\t\t\t\t\tjQuery.attr( elem, name, "" );\n +\t\t\t\t}\n +\n +\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattrHooks: {\n +\t\ttype: {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tif ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {\n +\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n +\t\t\t\t\t// Reset value to default in case type is set after value during creation\n +\t\t\t\t\tvar val = elem.value;\n +\t\t\t\t\telem.setAttribute( "type", value );\n +\t\t\t\t\tif ( val ) {\n +\t\t\t\t\t\telem.value = val;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropFix: {\n +\t\ttabindex: "tabIndex",\n +\t\treadonly: "readOnly",\n +\t\t"for": "htmlFor",\n +\t\t"class": "className",\n +\t\tmaxlength: "maxLength",\n +\t\tcellspacing: "cellSpacing",\n +\t\tcellpadding: "cellPadding",\n +\t\trowspan: "rowSpan",\n +\t\tcolspan: "colSpan",\n +\t\tusemap: "useMap",\n +\t\tframeborder: "frameBorder",\n +\t\tcontenteditable: "contentEditable"\n +\t},\n +\n +\tprop: function( elem, name, value ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set properties on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\tif ( notxml ) {\n +\t\t\t// Fix name and attach hooks\n +\t\t\tname = jQuery.propFix[ name ] || name;\n +\t\t\thooks = jQuery.propHooks[ name ];\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\t\t\tif ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn ( elem[ name ] = value );\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn elem[ name ];\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropHooks: {\n +\t\ttabIndex: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// elem.tabIndex doesn\'t always return the correct value when it hasn\'t been explicitly set\n +\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n +\t\t\t\tvar attributeNode = elem.getAttributeNode("tabindex");\n +\n +\t\t\t\treturn attributeNode && attributeNode.specified ?\n +\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n +\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n +\t\t\t\t\t\t0 :\n +\t\t\t\t\t\tundefined;\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +// Hook for boolean attributes\n +boolHook = {\n +\tget: function( elem, name ) {\n +\t\tvar\n +\t\t\t// Use .prop to determine if this attribute is understood as boolean\n +\t\t\tprop = jQuery.prop( elem, name ),\n +\n +\t\t\t// Fetch it accordingly\n +\t\t\tattr = typeof prop === "boolean" && elem.getAttribute( name ),\n +\t\t\tdetail = typeof prop === "boolean" ?\n +\n +\t\t\t\tgetSetInput && getSetAttribute ?\n +\t\t\t\t\tattr != null :\n +\t\t\t\t\t// oldIE fabricates an empty string for missing boolean attributes\n +\t\t\t\t\t// and conflates checked/selected into attroperties\n +\t\t\t\t\truseDefault.test( name ) ?\n +\t\t\t\t\t\telem[ jQuery.camelCase( "default-" + name ) ] :\n +\t\t\t\t\t\t!!attr :\n +\n +\t\t\t\t// fetch an attribute node for properties not recognized as boolean\n +\t\t\t\telem.getAttributeNode( name );\n +\n +\t\treturn detail && detail.value !== false ?\n +\t\t\tname.toLowerCase() :\n +\t\t\tundefined;\n +\t},\n +\tset: function( elem, value, name ) {\n +\t\tif ( value === false ) {\n +\t\t\t// Remove boolean attributes when set to false\n +\t\t\tjQuery.removeAttr( elem, name );\n +\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n +\t\t\t// IE<8 needs the *property* name\n +\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n +\n +\t\t// Use defaultChecked and defaultSelected for oldIE\n +\t\t} else {\n +\t\t\telem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;\n +\t\t}\n +\n +\t\treturn name;\n +\t}\n +};\n +\n +// fix oldIE value attroperty\n +if ( !getSetInput || !getSetAttribute ) {\n +\tjQuery.attrHooks.value = {\n +\t\tget: function( elem, name ) {\n +\t\t\tvar ret = elem.getAttributeNode( name );\n +\t\t\treturn jQuery.nodeName( elem, "input" ) ?\n +\n +\t\t\t\t// Ignore the value *property* by using defaultValue\n +\t\t\t\telem.defaultValue :\n +\n +\t\t\t\tret && ret.specified ? ret.value : undefined;\n +\t\t},\n +\t\tset: function( elem, value, name ) {\n +\t\t\tif ( jQuery.nodeName( elem, "input" ) ) {\n +\t\t\t\t// Does not return so that setAttribute is also used\n +\t\t\t\telem.defaultValue = value;\n +\t\t\t} else {\n +\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n +\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n +\t\t\t}\n +\t\t}\n +\t};\n +}\n +\n +// IE6/7 do not support getting/setting some attributes with get/setAttribute\n +if ( !getSetAttribute ) {\n +\n +\t// Use this for any attribute in IE6/7\n +\t// This fixes almost every IE6/7 issue\n +\tnodeHook = jQuery.valHooks.button = {\n +\t\tget: function( elem, name ) {\n +\t\t\tvar ret = elem.getAttributeNode( name );\n +\t\t\treturn ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?\n +\t\t\t\tret.value :\n +\t\t\t\tundefined;\n +\t\t},\n +\t\tset: function( elem, value, name ) {\n +\t\t\t// Set the existing or create a new attribute node\n +\t\t\tvar ret = elem.getAttributeNode( name );\n +\t\t\tif ( !ret ) {\n +\t\t\t\telem.setAttributeNode(\n +\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n +\t\t\t\t);\n +\t\t\t}\n +\n +\t\t\tret.value = value += "";\n +\n +\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n +\t\t\treturn name === "value" || value === elem.getAttribute( name ) ?\n +\t\t\t\tvalue :\n +\t\t\t\tundefined;\n +\t\t}\n +\t};\n +\n +\t// Set contenteditable to false on removals(#10429)\n +\t// Setting to empty string throws an error as an invalid value\n +\tjQuery.attrHooks.contenteditable = {\n +\t\tget: nodeHook.get,\n +\t\tset: function( elem, value, name ) {\n +\t\t\tnodeHook.set( elem, value === "" ? false : value, name );\n +\t\t}\n +\t};\n +\n +\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n +\t// This is for removals\n +\tjQuery.each([ "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tif ( value === "" ) {\n +\t\t\t\t\telem.setAttribute( name, "auto" );\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t});\n +}\n +\n +\n +// Some attributes require a special call on IE\n +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n +if ( !jQuery.support.hrefNormalized ) {\n +\tjQuery.each([ "href", "src", "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n +\t\t\t\treturn ret == null ? undefined : ret;\n +\t\t\t}\n +\t\t});\n +\t});\n +\n +\t// href/src property should get the full normalized URL (#10299/#12915)\n +\tjQuery.each([ "href", "src" ], function( i, name ) {\n +\t\tjQuery.propHooks[ name ] = {\n +\t\t\tget: function( elem ) {\n +\t\t\t\treturn elem.getAttribute( name, 4 );\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +\n +if ( !jQuery.support.style ) {\n +\tjQuery.attrHooks.style = {\n +\t\tget: function( elem ) {\n +\t\t\t// Return undefined in the case of empty string\n +\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n +\t\t\t// .cssText, that would destroy case senstitivity in URL\'s, like in "background"\n +\t\t\treturn elem.style.cssText || undefined;\n +\t\t},\n +\t\tset: function( elem, valu + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +e ) {\n +\t\t\treturn ( elem.style.cssText = value + "" );\n +\t\t}\n +\t};\n +}\n +\n +// Safari mis-reports the default selected property of an option\n +// Accessing the parent\'s selectedIndex property fixes it\n +if ( !jQuery.support.optSelected ) {\n +\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n +\t\tget: function( elem ) {\n +\t\t\tvar parent = elem.parentNode;\n +\n +\t\t\tif ( parent ) {\n +\t\t\t\tparent.selectedIndex;\n +\n +\t\t\t\t// Make sure that it also works with optgroups, see #5701\n +\t\t\t\tif ( parent.parentNode ) {\n +\t\t\t\t\tparent.parentNode.selectedIndex;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn null;\n +\t\t}\n +\t});\n +}\n +\n +// IE6/7 call enctype encoding\n +if ( !jQuery.support.enctype ) {\n +\tjQuery.propFix.enctype = "encoding";\n +}\n +\n +// Radios and checkboxes getter/setter\n +if ( !jQuery.support.checkOn ) {\n +\tjQuery.each([ "radio", "checkbox" ], function() {\n +\t\tjQuery.valHooks[ this ] = {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// Handle the case where in Webkit "" is returned instead of "on" if a value isn\'t specified\n +\t\t\t\treturn elem.getAttribute("value") === null ? "on" : elem.value;\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +jQuery.each([ "radio", "checkbox" ], function() {\n +\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n +\t\tset: function( elem, value ) {\n +\t\t\tif ( jQuery.isArray( value ) ) {\n +\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n +\t\t\t}\n +\t\t}\n +\t});\n +});\n +var rformElems = /^(?:input|select|textarea)$/i,\n +\trkeyEvent = /^key/,\n +\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n +\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n +\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n +\n +function returnTrue() {\n +\treturn true;\n +}\n +\n +function returnFalse() {\n +\treturn false;\n +}\n +\n +/*\n + * Helper functions for managing events -- not part of the public interface.\n + * Props to Dean Edwards\' addEvent library for many of the ideas.\n + */\n +jQuery.event = {\n +\n +\tglobal: {},\n +\n +\tadd: function( elem, types, handler, data, selector ) {\n +\n +\t\tvar handleObjIn, eventHandle, tmp,\n +\t\t\tevents, t, handleObj,\n +\t\t\tspecial, handlers, type, namespaces, origType,\n +\t\t\t// Don\'t attach events to noData or text/comment nodes (but allow plain objects)\n +\t\t\telemData = elem.nodeType !== 3 && elem.nodeType !== 8 && jQuery._data( elem );\n +\n +\t\tif ( !elemData ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an object of custom data in lieu of the handler\n +\t\tif ( handler.handler ) {\n +\t\t\thandleObjIn = handler;\n +\t\t\thandler = handleObjIn.handler;\n +\t\t\tselector = handleObjIn.selector;\n +\t\t}\n +\n +\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n +\t\tif ( !handler.guid ) {\n +\t\t\thandler.guid = jQuery.guid++;\n +\t\t}\n +\n +\t\t// Init the element\'s event structure and main handler, if this is the first\n +\t\tif ( !(events = elemData.events) ) {\n +\t\t\tevents = elemData.events = {};\n +\t\t}\n +\t\tif ( !(eventHandle = elemData.handle) ) {\n +\t\t\teventHandle = elemData.handle = function( e ) {\n +\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n +\t\t\t\t// when an event is called after a page has unloaded\n +\t\t\t\treturn typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?\n +\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n +\t\t\t\t\tundefined;\n +\t\t\t};\n +\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n +\t\t\teventHandle.elem = elem;\n +\t\t}\n +\n +\t\t// Handle multiple events separated by a space\n +\t\t// jQuery(...).bind("mouseover mouseout", fn);\n +\t\ttypes = ( types || "" ).match( core_rnotwhite ) || [""];\n +\t\tt = types.length;\n +\t\twhile ( t-- ) {\n +\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = origType = tmp[1];\n +\t\t\tnamespaces = ( tmp[2] || "" ).split( "." ).sort();\n +\n +\t\t\t// If event changes its type, use the special event handlers for the changed type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// If selector defined, determine special event api type, otherwise given type\n +\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n +\n +\t\t\t// Update special based on newly reset type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// handleObj is passed to all event handlers\n +\t\t\thandleObj = jQuery.extend({\n +\t\t\t\ttype: type,\n +\t\t\t\torigType: origType,\n +\t\t\t\tdata: data,\n +\t\t\t\thandler: handler,\n +\t\t\t\tguid: handler.guid,\n +\t\t\t\tselector: selector,\n +\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n +\t\t\t\tnamespace: namespaces.join(".")\n +\t\t\t}, handleObjIn );\n +\n +\t\t\t// Init the event handler queue if we\'re the first\n +\t\t\tif ( !(handlers = events[ type ]) ) {\n +\t\t\t\thandlers = events[ type ] = [];\n +\t\t\t\thandlers.delegateCount = 0;\n +\n +\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n +\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n +\t\t\t\t\t// Bind the global event handler to the element\n +\t\t\t\t\tif ( elem.addEventListener ) {\n +\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n +\n +\t\t\t\t\t} else if ( elem.attachEvent ) {\n +\t\t\t\t\t\telem.attachEvent( "on" + type, eventHandle );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( special.add ) {\n +\t\t\t\tspecial.add.call( elem, handleObj );\n +\n +\t\t\t\tif ( !handleObj.handler.guid ) {\n +\t\t\t\t\thandleObj.handler.guid = handler.guid;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Add to the element\'s handler list, delegates in front\n +\t\t\tif ( selector ) {\n +\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n +\t\t\t} else {\n +\t\t\t\thandlers.push( handleObj );\n +\t\t\t}\n +\n +\t\t\t// Keep track of which events have ever been used, for event optimization\n +\t\t\tjQuery.event.global[ type ] = true;\n +\t\t}\n +\n +\t\t// Nullify elem to prevent memory leaks in IE\n +\t\telem = null;\n +\t},\n +\n +\t// Detach an event or set of events from an element\n +\tremove: function( elem, types, handler, selector, mappedTypes ) {\n +\n +\t\tvar j, origCount, tmp,\n +\t\t\tevents, t, handleObj,\n +\t\t\tspecial, handlers, type, namespaces, origType,\n +\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n +\n +\t\tif ( !elemData || !(events = elemData.events) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Once for each type.namespace in types; type may be omitted\n +\t\ttypes = ( types || "" ).match( core_rnotwhite ) || [""];\n +\t\tt = types.length;\n +\t\twhile ( t-- ) {\n +\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = origType = tmp[1];\n +\t\t\tnamespaces = ( tmp[2] || "" ).split( "." ).sort();\n +\n +\t\t\t// Unbind all events (on this namespace, if provided) for the element\n +\t\t\tif ( !type ) {\n +\t\t\t\tfor ( type in events ) {\n +\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n +\t\t\t\t}\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n +\t\t\thandlers = events[ type ] || [];\n +\t\t\ttmp = tmp[2] && new RegExp( "(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.|)") + "(\\\\.|$)" );\n +\n +\t\t\t// Remove matching events\n +\t\t\torigCount = j = handlers.length;\n +\t\t\twhile ( j-- ) {\n +\t\t\t\thandleObj = handlers[ j ];\n +\n +\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n +\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n +\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n +\t\t\t\t\t( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {\n +\t\t\t\t\thandlers.splice( j, 1 );\n +\n +\t\t\t\t\tif ( handleObj.selector ) {\n +\t\t\t\t\t\thandlers.delegateCount--;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( special.remove ) {\n +\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n +\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n +\t\t\tif ( origCount && !handlers.length ) {\n +\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n +\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n +\t\t\t\t}\n +\n +\t\t\t\tdelete events[ type ];\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Remove the expando if it\'s no longer used\n +\t\tif ( jQuery.isEmptyObject( events ) ) {\n +\t\t\tdelete elemData.handle;\n +\n +\t\t\t// removeData also checks for emptiness and clears the expando if empty\n +\t\t\t// so use it instead of delete\n +\t\t\tjQuery._removeData( elem, "events" );\n +\t\t}\n +\t},\n +\n +\ttrigger: function( event, data, elem, onlyHandlers ) {\n +\n +\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n +\t\t\teventPath = [ elem || document ],\n +\t\t\ttype = event.type || event,\n +\t\t\tnamespaces = event.namespace ? event.namespace.split(".") : [];\n +\n +\t\tcur = tmp = elem = elem || document;\n +\n +\t\t// Don\'t do events on text and comment nodes\n +\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// focus/blur morphs to focusin/out; ensure we\'re not firing them right now\n +\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( type.indexOf(".") >= 0 ) {\n +\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n +\t\t\tnamespaces = type.split(".");\n +\t\t\ttype = namespaces.shift();\n +\t\t\tnamespaces.sort();\n +\t\t}\n +\t\tontype = type.indexOf(":") < 0 && "on" + type;\n +\n +\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n +\t\tevent = event[ jQuery.expando ] ?\n +\t\t\tevent :\n +\t\t\tnew jQuery.Event( type, typeof event === "object" && event );\n +\n +\t\tevent.isTrigger = true;\n +\t\tevent.namespace = namespaces.join(".");\n +\t\tevent.namespace_re = event.namespace ?\n +\t\t\tnew RegExp( "(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.|)") + "(\\\\.|$)" ) :\n +\t\t\tnull;\n +\n +\t\t// Clean up the event in case it is being reused\n +\t\tevent.result = undefined;\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = elem;\n +\t\t}\n +\n +\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n +\t\tdata = data == null ?\n +\t\t\t[ event ] :\n +\t\t\tjQuery.makeArray( data, [ event ] );\n +\n +\t\t// Allow special events to draw outside the lines\n +\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n +\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n +\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\tbubbleType = special.delegateType || type;\n +\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n +\t\t\t\tcur = cur.parentNode;\n +\t\t\t}\n +\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n +\t\t\t\teventPath.push( cur );\n +\t\t\t\ttmp = cur;\n +\t\t\t}\n +\n +\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n +\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n +\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Fire handlers on the event path\n +\t\ti = 0;\n +\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n +\n +\t\t\tevent.type = i > 1 ?\n +\t\t\t\tbubbleType :\n +\t\t\t\tspecial.bindType || type;\n +\n +\t\t\t// jQuery handler\n +\t\t\thandle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );\n +\t\t\tif ( handle ) {\n +\t\t\t\thandle.apply( cur, data );\n +\t\t\t}\n +\n +\t\t\t// Native handler\n +\t\t\thandle = ontype && cur[ ontype ];\n +\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t}\n +\t\tevent.type = type;\n +\n +\t\t// If nobody prevented the default action, do it now\n +\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n +\n +\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n +\t\t\t\t!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {\n +\n +\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n +\t\t\t\t// Can\'t use an .isFunction() check here because IE6/7 fails that test.\n +\t\t\t\t// Don\'t do default actions on window, that\'s where global variables be (#6170)\n +\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\t\t\t// Don\'t re-trigger an onFOO event when we call its FOO() method\n +\t\t\t\t\ttmp = elem[ ontype ];\n +\n +\t\t\t\t\tif ( tmp ) {\n +\t\t\t\t\t\telem[ ontype ] = null;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n +\t\t\t\t\tjQuery.event.triggered = type;\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\telem[ type ]();\n +\t\t\t\t\t} catch ( e ) {\n +\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n +\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n +\t\t\t\t\t}\n +\t\t\t\t\tjQuery.event.triggered = undefined;\n +\n +\t\t\t\t\tif ( tmp ) {\n +\t\t\t\t\t\telem[ ontype ] = tmp;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\tdispatch: function( event ) {\n +\n +\t\t// Make a writable jQuery.Event from the native event object\n +\t\tevent = jQuery.event.fix( event );\n +\n +\t\tvar i, j, ret, matched, handleObj,\n +\t\t\thandlerQueue = [],\n +\t\t\targs = core_slice.call( arguments ),\n +\t\t\thandlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],\n +\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n +\n +\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n +\t\targs[0] = event;\n +\t\tevent.delegateTarget = this;\n +\n +\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n +\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine handlers\n +\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n +\n +\t\t// Run delegates first; they may want to stop propagation beneath us\n +\t\ti = 0;\n +\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n +\t\t\tevent.currentTarget = matched.elem;\n +\n +\t\t\tj = 0;\n +\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n +\n +\t\t\t\t// Triggered event must either 1) have no namespace, or\n +\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n +\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n +\n +\t\t\t\t\tevent.handleObj = handleObj;\n +\t\t\t\t\tevent.data = handleObj.data;\n +\n +\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n +\t\t\t\t\t\t\t.apply( matched.elem, args );\n +\n +\t\t\t\t\tif ( ret !== undefined ) {\n +\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n +\t\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t\t\tevent.stopPropagation();\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Call the postDispatch hook for the mapped type\n +\t\tif ( special.postDispatch ) {\n +\t\t\tspecial.postDispatch.call( this, event );\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\thandlers: function( event, handlers ) {\n +\t\tvar i, matches, sel, handleObj,\n +\t\t\thandlerQueue = [],\n +\t\t\tdelegateCount = handlers.delegateCount,\n +\t\t\tcur = event.target;\n +\n +\t\t// Find delegate handlers\n +\t\t// Black-hole SVG <use> instance trees (#13180)\n +\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n +\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {\n +\n +\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n +\n +\t\t\t\t// Don\'t process clicks on disabled elements (#6911, #8165, #11382, #11764)\n +\t\t\t\tif ( cur.disabled !== true || event.type !== "click" ) {\n +\t\t\t\t\tmatches = [];\n +\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n +\t\t\t\t\t\thandleObj = handlers[ i ];\n +\n +\t\t\t\t\t\t// Don\'t conflict with Object.prototype properties (#13203)\n +\t\t\t\t\t\tsel = handleObj.selector + " ";\n +\n +\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n +\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n +\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n +\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif ( matches[ sel ] ) {\n +\t\t\t\t\t\t\tmatches.push( handleObj );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( matches.length ) {\n +\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Add the remaining (directly-bound) handlers\n +\t\tif ( delegateCount < handlers.length ) {\n +\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n +\t\t}\n +\n +\t\treturn handlerQueue;\n +\t},\n +\n +\tfix: function( event ) {\n +\t\tif ( event[ jQuery.expando ] ) {\n +\t\t\treturn event;\n +\t\t}\n +\n +\t\t// Create a writable copy of the event object and normalize some properties\n +\t\tvar i, prop,\n +\t\t\toriginalEvent = event,\n +\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n +\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n +\n +\t\tevent = new jQuery.Event( originalEvent );\n +\n +\t\ti = copy.length;\n +\t\twhile ( i-- ) {\n +\t\t\tprop = copy[ i ];\n +\t\t\tevent[ prop ] = originalEvent[ prop ];\n +\t\t}\n +\n +\t\t// Support: IE<9\n +\t\t// Fix target property (#1925)\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = originalEvent.srcElement || document;\n +\t\t}\n +\n +\t\t// Support: Chrome 23+, Safari?\n +\t\t// Target should not be a text node (#504, #13143)\n +\t\tif ( event.target.nodeType === 3 ) {\n +\t\t\tevent.target = event.target.parentNode;\n +\t\t}\n +\n +\t\t// Support: IE<9\n +\t\t// For mouse/key events, metaKey==false if it\'s undefined (#3368, #11328)\n +\t\tevent.metaKey = !!event.metaKey;\n +\n +\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n +\t},\n +\n +\t// Includes some event props shared by KeyEvent and MouseEvent\n +\tprops: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),\n +\n +\tfixHooks: {},\n +\n +\tkeyHooks: {\n +\t\tprops: "char charCode key keyCode".split(" "),\n +\t\tfilter: function( event, original ) {\n +\n +\t\t\t// Add which for key events\n +\t\t\tif ( event.which == null ) {\n +\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tmouseHooks: {\n +\t\tprops: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),\n +\t\tfilter: function( event, original ) {\n +\t\t\tvar eventDoc, doc, body,\n +\t\t\t\tbutton = original.button,\n +\t\t\t\tfromElement = original.fromElement;\n +\n +\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n +\t\t\tif ( event.pageX == null && original.clientX != null ) {\n +\t\t\t\teventDoc = event.target.ownerDocument || document;\n +\t\t\t\tdoc = eventDoc.documentElement;\n +\t\t\t\tbody = eventDoc.body;\n +\n +\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n +\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n +\t\t\t}\n +\n +\t\t\t// Add relatedTarget, if necessary\n +\t\t\tif ( !event.relatedTarget && fromElement ) {\n +\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n +\t\t\t}\n +\n +\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n +\t\t\t// Note: button is not normalized, so don\'t use it\n +\t\t\tif ( !event.which && button !== undefined ) {\n +\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tspecial: {\n +\t\tload: {\n +\t\t\t// Prevent triggered image.load events from bubbling to window.load\n +\t\t\tnoBubble: true\n +\t\t},\n +\t\tclick: {\n +\t\t\t// For checkbox, fire native event so checked state will be right\n +\t\t\ttrigger: function() {\n +\t\t\t\tif ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {\n +\t\t\t\t\tthis.click();\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\tfocus: {\n +\t\t\t// Fire native event if possible so blur/focus sequence is correct\n +\t\t\ttrigger: function() {\n +\t\t\t\tif ( this !== document.activeElement && this.focus ) {\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tthis.focus();\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t} catch ( e ) {\n +\t\t\t\t\t\t// Support: IE<9\n +\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n +\t\t\t\t\t\t// let .trigger() run the handlers\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tdelegateType: "focusin"\n +\t\t},\n +\t\tblur: {\n +\t\t\ttrigger: function() {\n +\t\t\t\tif ( this === document.activeElement && this.blur ) {\n +\t\t\t\t\tthis.blur();\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tdelegateType: "focusout"\n +\t\t},\n +\n +\t\tbeforeunload: {\n +\t\t\tpostDispatch: function( event ) {\n +\n +\t\t\t\t// Even when returnValue equals to undefined Firefox will still show alert\n +\t\t\t\tif ( event.result !== undefined ) {\n +\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tsimulate: function( type, elem, event, bubble ) {\n +\t\t// Piggyback on a donor event to simulate a different one.\n +\t\t// Fake originalEvent to avoid donor\'s stopPropagation, but if the\n +\t\t// simulated event prevents default then we do the same on the donor.\n +\t\tvar e = jQuery.extend(\n +\t\t\tnew jQuery.Event(),\n +\t\t\tevent,\n +\t\t\t{ type: type,\n +\t\t\t\tisSimulated: true,\n +\t\t\t\toriginalEvent: {}\n +\t\t\t}\n +\t\t);\n +\t\tif ( bubble ) {\n +\t\t\tjQuery.event.trigger( e, null, elem );\n +\t\t} else {\n +\t\t\tjQuery.event.dispatch.call( elem, e );\n +\t\t}\n +\t\tif ( e.isDefaultPrevented() ) {\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t}\n +};\n +\n +jQuery.removeEvent = document.removeEventListener ?\n +\tfunction( elem, type, handle ) {\n +\t\tif ( elem.removeEventListener ) {\n +\t\t\telem.removeEventListener( type, handle, false );\n +\t\t}\n +\t} :\n +\tfunction( elem, type, handle ) {\n +\t\tvar name = "on" + type;\n +\n +\t\tif ( elem.detachEvent ) {\n +\n +\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n +\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n +\t\t\tif ( typeof elem[ name ] === "undefined" ) {\n +\t\t\t\telem[ name ] = null;\n +\t\t\t}\n +\n +\t\t\telem.detachEvent( name, handle );\n +\t\t}\n +\t};\n +\n +jQuery.Event = function( src, props ) {\n +\t// Allow instantiation without the \'new\' keyword\n +\tif ( !(this instanceof jQuery.Event) ) {\n +\t\treturn new jQuery.Event( src, props );\n +\t}\n +\n +\t// Event object\n +\tif ( src && src.type ) {\n +\t\tthis.originalEvent = src;\n +\t\tthis.type = src.type;\n +\n +\t\t// Events bubbling up the document may have been marked as prevented\n +\t\t// by a handler lower down the tree; reflect the correct value.\n +\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n +\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n +\n +\t// Event type\n +\t} else {\n +\t\tthis.type = src;\n +\t}\n +\n +\t// Put explicitly provided properties onto the event object\n +\tif ( props ) {\n +\t\tjQuery.extend( this, props );\n +\t}\n +\n +\t// Create a timestamp if incoming event doesn\'t have one\n +\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n +\n +\t// Mark it as fixed\n +\tthis[ jQuery.expando ] = true;\n +};\n +\n +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n +jQuery.Event.prototype = {\n +\tisDefaultPrevented: returnFalse,\n +\tisPropagationStopped: returnFalse,\n +\tisImmediatePropagationStopped: returnFalse,\n +\n +\tpreventDefault: function() {\n +\t\tvar e = this.originalEvent;\n +\n +\t\tthis.isDefaultPrevented = returnTrue;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// If preventDefault exists, run it on the original event\n +\t\tif ( e.preventDefault ) {\n +\t\t\te.preventDefault();\n +\n +\t\t// Support: IE\n +\t\t// Otherwise set the returnValue property of the original event to false\n +\t\t} else {\n +\t\t\te.returnValue = false;\n +\t\t}\n +\t},\n +\tstopPropagation: function() {\n +\t\tvar e = this.originalEvent;\n +\n +\t\tthis.isPropagationStopped = returnTrue;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\t\t// If stopPropagation exists, run it on the original event\n +\t\tif ( e.stopPropagation ) {\n +\t\t\te.stopPropagation();\n +\t\t}\n +\n +\t\t// Support: IE\n +\t\t// Set the cancelBubble property of the original event to true\n +\t\te.cancelBubble = true;\n +\t},\n +\tstopImmediatePropagation: function() {\n +\t\tthis.isImmediatePropagationStopped = returnTrue;\n +\t\tthis.stopPropagation();\n +\t}\n +};\n +\n +// Create mouseenter/leave events using mouseover/out and event-time checks\n +jQuery.each({\n +\tmouseenter: "mouseover",\n +\tmouseleave: "mouseout"\n +}, function( orig, fix ) {\n +\tjQuery.event.special[ orig ] = {\n +\t\tdelegateType: fix,\n +\t\tbindType: fix,\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar ret,\n +\t\t\t\ttarget = this,\n +\t\t\t\trelated = event.relatedTarget,\n +\t\t\t\thandleObj = event.handleObj;\n +\n +\t\t\t// For mousenter/leave call the handler if related is outside the target.\n +\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n +\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n +\t\t\t\tevent.type = handleObj.origType;\n +\t\t\t\tret = handleObj.handler.apply( this, arguments );\n +\t\t\t\tevent.type = fix;\n +\t\t\t}\n +\t\t\treturn ret;\n +\t\t}\n +\t};\n +});\n +\n +// IE submit delegation\n +if ( !jQuery.support.submitBubbles ) {\n +\n +\tjQuery.event.special.submit = {\n +\t\tsetup: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n +\t\t\tjQuery.event.add( this, "click._submit keypress._submit", function( e ) {\n +\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n +\t\t\t\tvar elem = e.target,\n +\t\t\t\t\tform = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;\n +\t\t\t\tif ( form && !jQuery._data( form, "submitBubbles" ) ) {\n +\t\t\t\t\tjQuery.event.add( form, "submit._submit", function( event ) {\n +\t\t\t\t\t\tevent._submit_bubble = true;\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery._data( form, "submitBubbles", true );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t// return undefined since we don\'t need an event listener\n +\t\t},\n +\n +\t\tpostDispatch: function( event ) {\n +\t\t\t// If form was submitted by the user, bubble the event up the tree\n +\t\t\tif ( event._submit_bubble ) {\n +\t\t\t\tdelete event._submit_bubble;\n +\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n +\t\t\t\t\tjQuery.event.simulate( "submit", this.parentNode, event, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n +\t\t\tjQuery.event.remove( this, "._submit" );\n +\t\t}\n +\t};\n +}\n +\n +// IE change delegation and checkbox/radio fix\n +if ( !jQuery.support.changeBubbles ) {\n +\n +\tjQuery.event.special.change = {\n +\n +\t\tsetup: function() {\n +\n +\t\t\tif ( rformElems.test( this.nodeName ) ) {\n +\t\t\t\t// IE doesn\'t fire change on a check/radio until blur; trigger it on click\n +\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n +\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n +\t\t\t\tif ( this.type === "checkbox" || this.type === "radio" ) {\n +\t\t\t\t\tjQuery.event.add( this, "propertychange._change", function( event ) {\n +\t\t\t\t\t\tif ( event.originalEvent.propertyName === "checked" ) {\n +\t\t\t\t\t\t\tthis._just_changed = true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery.event.add( this, "click._change", function( event ) {\n +\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n +\t\t\t\t\t\t\tthis._just_changed = false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n +\t\t\t\t\t\tjQuery.event.simulate( "change", this, event, true );\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n +\t\t\tjQuery.event.add( this, "beforeactivate._change", function( e ) {\n +\t\t\t\tvar elem = e.target;\n +\n +\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {\n +\t\t\t\t\tjQuery.event.add( elem, "change._change", function( event ) {\n +\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n +\t\t\t\t\t\t\tjQuery.event.simulate( "change", this.parentNode, event, true );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery._data( elem, "changeBubbles", true );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t},\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar elem = event.target;\n +\n +\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n +\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {\n +\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\tjQuery.event.remove( this, "._change" );\n +\n +\t\t\treturn !rformElems.test( this.nodeName );\n +\t\t}\n +\t};\n +}\n +\n +// Create "bubbling" focus and blur events\n +if ( !jQuery.support.focusinBubbles ) {\n +\tjQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {\n +\n +\t\t// Attach a single capturing handler while someone wants focusin/focusout\n +\t\tvar attaches = 0,\n +\t\t\thandler = function( event ) {\n +\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n +\t\t\t};\n +\n +\t\tjQuery.event.special[ fix ] = {\n +\t\t\tsetup: function() {\n +\t\t\t\tif ( attaches++ === 0 ) {\n +\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tteardown: function() {\n +\t\t\t\tif ( --attaches === 0 ) {\n +\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +\n +jQuery.fn.extend({\n +\n +\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n +\t\tvar origFn, type;\n +\n +\t\t// Types can be a map of types/handlers\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-Object, selector, data )\n +\t\t\tif ( typeof selector !== "string" ) {\n +\t\t\t\t// ( types-Object, data )\n +\t\t\t\tdata = data || selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t\tfor ( type in types ) {\n +\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( data == null && fn == null ) {\n +\t\t\t// ( types, fn )\n +\t\t\tfn = selector;\n +\t\t\tdata = selector = undefined;\n +\t\t} else if ( fn == null ) {\n +\t\t\tif ( typeof selector === "string" ) {\n +\t\t\t\t// ( types, selector, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = undefined;\n +\t\t\t} else {\n +\t\t\t\t// ( types, data, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t} else if ( !fn ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( one === 1 ) {\n +\t\t\torigFn = fn;\n +\t\t\tfn = function( event ) {\n +\t\t\t\t// Can use an empty set, since event contains the info\n +\t\t\t\tjQuery().off( event );\n +\t\t\t\treturn origFn.apply( this, arguments );\n +\t\t\t};\n +\t\t\t// Use same guid so caller can remove using origFn\n +\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n +\t\t}\n +\t\treturn this.each( function() {\n +\t\t\tjQuery.event.add( this, types, fn, data, selector );\n +\t\t});\n +\t},\n +\tone: function( types, selector, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn, 1 );\n +\t},\n +\toff: function( types, selector, fn ) {\n +\t\tvar handleObj, type;\n +\t\tif ( types && types.preventDefault && types.handleObj ) {\n +\t\t\t// ( event ) dispatched jQuery.Event\n +\t\t\thandleObj = types.handleObj;\n +\t\t\tjQuery( types.delegateTarget ).off(\n +\t\t\t\thandleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,\n +\t\t\t\thandleObj.selector,\n +\t\t\t\thandleObj.handler\n +\t\t\t);\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-object [, selector] )\n +\t\t\tfor ( type in types ) {\n +\t\t\t\tthis.off( type, selector, types[ type ] );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( selector === false || typeof selector === "function" ) {\n +\t\t\t// ( types [, fn] )\n +\t\t\tfn = selector;\n +\t\t\tselector = undefined;\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t}\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.remove( this, types, fn, selector );\n +\t\t});\n +\t},\n +\n +\tbind: function( types, data, fn ) {\n +\t\treturn this.on( types, null, data, fn );\n +\t},\n +\tunbind: function( types, fn ) {\n +\t\treturn this.off( types, null, fn );\n +\t},\n +\n +\tdelegate: function( selector, types, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn );\n +\t},\n +\tundelegate: function( selector, types, fn ) {\n +\t\t// ( namespace ) or ( selector, types [, fn] )\n +\t\treturn arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );\n +\t},\n +\n +\ttrigger: function( type, data ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.trigger( type, data, this );\n +\t\t});\n +\t},\n +\ttriggerHandler: function( type, data ) {\n +\t\tvar elem = this[0];\n +\t\tif ( elem ) {\n +\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n +\t\t}\n +\t},\n +\n +\thover: function( fnOver, fnOut ) {\n +\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n +\t}\n +});\n +\n +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +\n +\t"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +\n +\t"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {\n +\n +\t// Handle event binding\n +\tjQuery.fn[ name ] = function( data, fn ) {\n +\t\treturn arguments.length > 0 ?\n +\t\t\tthis.on( name, null, data, fn ) :\n +\t\t\tthis.trigger( name );\n +\t};\n +\n +\tif ( rkeyEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n +\t}\n +\n +\tif ( rmouseEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n +\t}\n +});\n +/*!\n + * Sizzle CSS Selector Engine\n + * Copyright 2012 jQuery Foundation and other contributors\n + * Released under the MIT license\n + * http://sizzlejs.com/\n + */\n +(function( window, undefined ) {\n +\n +var i,\n +\tcachedruns,\n +\tExpr,\n +\tgetText,\n +\tisXML,\n +\tcompile,\n +\thasDuplicate,\n +\toutermostContext,\n +\n +\t// Local document vars\n +\tsetDocument,\n +\tdocument,\n +\tdocElem,\n +\tdocumentIsXML,\n +\trbuggyQSA,\n +\trbuggyMatches,\n +\tmatches,\n +\tcontains,\n +\tsortOrder,\n +\n +\t// Instance-specific data\n +\texpando = "sizzle" + -(new Date()),\n +\tpreferredDoc = window.document,\n +\tsupport = {},\n +\tdirruns = 0,\n +\tdone = 0,\n +\tclassCache = createCache(),\n +\ttokenCache = createCache(),\n +\tcompilerCache = createCache(),\n +\n +\t// General-purpose constants\n +\tstrundefined = typeof undefined,\n +\tMAX_NEGATIVE = 1 << 31,\n +\n +\t// Array methods\n +\tarr = [],\n +\tpop = arr.pop,\n +\tpush = arr.push,\n +\tslice = arr.slice,\n +\t// Use a stripped-down indexOf if we can\'t use a native one\n +\tindexOf = arr.indexOf || function( elem ) {\n +\t\tvar i = 0,\n +\t\t\tlen = this.length;\n +\t\tfor ( ; i < len; i++ ) {\n +\t\t\tif ( this[i] === elem ) {\n +\t\t\t\treturn i;\n +\t\t\t}\n +\t\t}\n +\t\treturn -1;\n +\t},\n +\n +\n +\t// Regular expressions\n +\n +\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n +\twhitespace = "[\\\\x20\\\\t\\\\r\\\\n\\\\f]",\n +\t// http://www.w3.org/TR/css3-syntax/#characters\n +\tcharacterEncoding = "(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+",\n +\n +\t// Loosely modeled on CSS identifier characters\n +\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n +\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n +\tidentifier = characterEncoding.replace( "w", "w#" ),\n +\n +\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n +\toperators = "([*^$|!~]?=)",\n +\tattributes = "\\\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +\n +\t\t"*(?:" + operators + whitespace + "*(?:([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(" + identifier + ")|)|)" + whitespace + "*\\\\]",\n +\n +\t// Prefer arguments quoted,\n +\t// then not containing pseudos/brackets,\n +\t// then attribute selectors/non-parenthetical expressions,\n +\t// then anything else\n +\t// These preferences are here to reduce the number of selectors\n +\t// needing tokenize in the PSEUDO preFilter\n +\tpseudos = ":(" + characterEncoding + ")(?:\\\\((([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\\\)|)",\n +\n +\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n +\trtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)" + whitespace + "+$", "g" ),\n +\n +\trcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),\n +\trcombinators = new RegExp( "^" + whitespace + "*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])" + whitespace + "*" ),\n +\trpseudo = new RegExp( pseudos ),\n +\tridentifier = new RegExp( "^" + identifier + "$" ),\n +\n +\tmatchExpr = {\n +\t\t"ID": new RegExp( "^#(" + characterEncoding + ")" ),\n +\t\t"CLASS": new RegExp( "^\\\\.(" + characterEncoding + ")" ),\n +\t\t"NAME": new RegExp( "^\\\\[name=[\'\\"]?(" + characterEncoding + ")[\'\\"]?\\\\]" ),\n +\t\t"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),\n +\t\t"ATTR": new RegExp( "^" + attributes ),\n +\t\t"PSEUDO": new RegExp( "^" + pseudos ),\n +\t\t"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(" + whitespace +\n +\t\t\t"*(even|odd|(([+-]|)(\\\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +\n +\t\t\t"*(\\\\d+)|))" + whitespace + "*\\\\)|)", "i" ),\n +\t\t// For use in libraries implementing .is()\n +\t\t// We use this for POS matching in `select`\n +\t\t"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(" +\n +\t\t\twhitespace + "*((?:-\\\\d)?\\\\d*)" + whitespace + "*\\\\)|)(?=[^-]|$)", "i" )\n +\t},\n +\n +\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n +\n +\trnative = /\\{\\s*\\[native code\\]\\s*\\}/,\n +\n +\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n +\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n +\n +\trinputs = /^(?:input|select|textarea|button)$/i,\n +\trheader = /^h\\d$/i,\n +\n +\trescape = /\'|\\\\/g,\n +\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^\'"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n +\n +\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n +\trunescape = /\\\\([\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|.)/g,\n +\tfunescape = function( _, escaped ) {\n +\t\tvar high = "0x" + escaped - 0x10000;\n +\t\t// NaN means non-codepoint\n +\t\treturn high !== high ?\n +\t\t\tescaped :\n +\t\t\t// BMP codepoint\n +\t\t\thigh < 0 ?\n +\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n +\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n +\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n +\t};\n +\n +// Use a stripped-down slice if we can\'t use a native one\n +try {\n +\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n +} catch ( e ) {\n +\tslice = function( i ) {\n +\t\tvar elem,\n +\t\t\tresults = [];\n +\t\tfor ( ; (elem = this[i]); i++ ) {\n +\t\t\tresults.push( elem );\n +\t\t}\n +\t\treturn results;\n +\t};\n +}\n +\n +/**\n + * For feature detection\n + * @param {Function} fn The function to test for native support\n + */\n +function isNative( fn ) {\n +\treturn rnative.test( fn + "" );\n +}\n +\n +/**\n + * Create key-value caches of limited size\n + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n + *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n + *\tdeleting the oldest entry\n + */\n +function createCache() {\n +\tvar cache,\n +\t\tkeys = [];\n +\n +\treturn (cache = function( key, value ) {\n +\t\t// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)\n +\t\tif ( keys.push( key += " " ) > Expr.cacheLength ) {\n +\t\t\t// Only keep the most recent entries\n +\t\t\tdelete cache[ keys.shift() ];\n +\t\t}\n +\t\treturn (cache[ key ] = value);\n +\t});\n +}\n +\n +/**\n + * Mark a function for special use by Sizzle\n + * @param {Function} fn The function to mark\n + */\n +function markFunction( fn ) {\n +\tfn[ expando ] = true;\n +\treturn fn;\n +}\n +\n +/**\n + * Support testing using an element\n + * @param {Function} fn Passed the created div and expects a boolean result\n + */\n +function assert( fn ) {\n +\tvar div = document.createElement("div");\n +\n +\ttry {\n +\t\treturn fn( div );\n +\t} catch (e) {\n +\t\treturn false;\n +\t} finally {\n +\t\t// release memory in IE\n +\t\tdiv = null;\n +\t}\n +}\n +\n +function Sizzle( selector, context, results, seed ) {\n +\tvar match, elem, m, nodeType,\n +\t\t// QSA vars\n +\t\ti, groups, old, nid, newContext, newSelector;\n +\n +\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n +\t\tsetDocument( context );\n +\t}\n +\n +\tcontext = context || document;\n +\tresults = results || [];\n +\n +\tif ( !selector || typeof selector !== "string" ) {\n +\t\treturn results;\n +\t}\n +\n +\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n +\t\treturn [];\n +\t}\n +\n +\tif ( !documentIsXML && !seed ) {\n +\n +\t\t// Shortcuts\n +\t\tif ( (match = rquickExpr.exec( selector )) ) {\n +\t\t\t// Speed-up: Sizzle("#ID")\n +\t\t\tif ( (m = match[1]) ) {\n +\t\t\t\tif ( nodeType === 9 ) {\n +\t\t\t\t\telem = context.getElementById( m );\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n +\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\tif ( elem.id === m ) {\n +\t\t\t\t\t\t\tresults.push( elem );\n +\t\t\t\t\t\t\treturn results;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\treturn results;\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\t// Context is not a document\n +\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n +\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n +\t\t\t\t\t\tresults.push( elem );\n +\t\t\t\t\t\treturn results;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t// Speed-up: Sizzle("TAG")\n +\t\t\t} else if ( match[2] ) {\n +\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n +\t\t\t\treturn results;\n +\n +\t\t\t// Speed-up: Sizzle(".CLASS")\n +\t\t\t} else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) {\n +\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n +\t\t\t\treturn results;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// QSA path\n +\t\tif ( support.qsa && !rbuggyQSA.test(selector) ) {\n +\t\t\told = true;\n +\t\t\tnid = expando;\n +\t\t\tnewContext = context;\n +\t\t\tnewSelector = nodeType === 9 && selector;\n +\n +\t\t\t// qSA works strangely on Element-rooted queries\n +\t\t\t// We can work around this by specifying an extra ID on the root\n +\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n +\t\t\t// IE 8 doesn\'t work on object elements\n +\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {\n +\t\t\t\tgroups = tokenize( selector );\n +\n +\t\t\t\tif ( (old = context.getAttribute("id")) ) {\n +\t\t\t\t\tnid = old.replace( rescape, "\\\\$&" );\n +\t\t\t\t} else {\n +\t\t\t\t\tcontext.setAttribute( "id", nid );\n +\t\t\t\t}\n +\t\t\t\tnid = "[id=\'" + nid + "\'] ";\n +\n +\t\t\t\ti = groups.length;\n +\t\t\t\twhile ( i-- ) {\n +\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n +\t\t\t\t}\n +\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n +\t\t\t\tnewSelector = groups.join(",");\n +\t\t\t}\n +\n +\t\t\tif ( newSelector ) {\n +\t\t\t\ttry {\n +\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n +\t\t\t\t\t\tnewSelector\n +\t\t\t\t\t), 0 ) );\n +\t\t\t\t\treturn results;\n +\t\t\t\t} catch(qsaError) {\n +\t\t\t\t} finally {\n +\t\t\t\t\tif ( !old ) {\n +\t\t\t\t\t\tcontext.removeAttribute("id");\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// All others\n +\treturn select( selector.replace( rtrim, "$1" ), context, results, seed );\n +}\n +\n +/**\n + * Detect xml\n + * @param {Element|Object} elem An element or a document\n + */\n +isXML = Sizzle.isXML = function( elem ) {\n +\t// documentElement is verified for cases where it doesn\'t yet exist\n +\t// (such as loading iframes in IE - #4833)\n +\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n +\treturn documentElement ? documentElement.nodeName !== "HTML" : false;\n +};\n +\n +/**\n + * Sets document-related variables once based on the current document\n + * @param {Element|Object} [doc] An element or document object to use to set the document\n + * @returns {Object} Returns the current document\n + */\n +setDocument = Sizzle.setDocument = function( node ) {\n +\tvar doc = node ? node.ownerDocument || node : preferredDoc;\n +\n +\t// If no document and documentElement is available, return\n +\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n +\t\treturn document;\n +\t}\n +\n +\t// Set our document\n +\tdocument = doc;\n +\tdocElem = doc.documentElement;\n +\n +\t// Support tests\n +\tdocumentIsXML = isXML( doc );\n +\n +\t// Check if getElementsByTagName("*") returns only elements\n +\tsupport.tagNameNoComments = assert(function( div ) {\n +\t\tdiv.appendChild( doc.createComment("") );\n +\t\treturn !div.getElementsByTagName("*").length;\n +\t});\n +\n +\t// Check if attributes should be retrieved by attribute nodes\n +\tsupport.attributes = assert(function( div ) {\n +\t\tdiv.innerHTML = "<select></select>";\n +\t\tvar type = typeof div.lastChild.getAttribute("multiple");\n +\t\t// IE8 returns a string for some attributes even when not present\n +\t\treturn type !== "boolean" && type !== "string";\n +\t});\n +\n +\t// Check if getElementsByClassName can be trusted\n +\tsupport.getByClassName = assert(function( div ) {\n +\t\t// Opera can\'t find a second classname (in 9.6)\n +\t\tdiv.innerHTML = "<div class=\'hidden e\'></div><div class=\'hidden\'></div>";\n +\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// Safari 3.2 caches class attributes and doesn\'t catch changes\n +\t\tdiv.lastChild.className = "e";\n +\t\treturn div.getElementsByClassName("e").length === 2;\n +\t});\n +\n +\t// Check if getElementById returns elements by name\n +\t// Check if getElementsByName privileges form controls or returns elements by ID\n +\tsupport.getByName = assert(function( div ) {\n +\t\t// Inject content\n +\t\tdiv.id = expando + 0;\n +\t\tdiv.innerHTML = "<a name=\'" + expando + "\'></a><div name=\'" + expando + "\'></div>";\n +\t\tdocElem.insertBefore( div, docElem.firstChild );\n +\n +\t\t// Test\n +\t\tvar pass = doc.getElementsByName &&\n +\t\t\t// buggy browsers will return fewer than the correct 2\n +\t\t\tdoc.getElementsByName( expando ).length === 2 +\n +\t\t\t// buggy browsers will return more than the correct 0\n +\t\t\tdoc.getElementsByName( expando + 0 ).length;\n +\t\tsupport.getIdNotName = !doc.getElementById( expando );\n +\n +\t\t// Cleanup\n +\t\tdocElem.removeChild( div );\n +\n +\t\treturn pass;\n +\t});\n +\n +\t// IE6/7 return modified attributes\n +\tExpr.attrHandle = assert(function( div ) {\n +\t\tdiv.innerHTML = "<a href=\'#\'></a>";\n +\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n +\t\t\tdiv.firstChild.getAttribute("href") === "#";\n +\t}) ?\n +\t\t{} :\n +\t\t{\n +\t\t\t"href": function( elem ) {\n +\t\t\t\treturn elem.getAttribute( "href", 2 );\n +\t\t\t},\n +\t\t\t"type": function( elem ) {\n +\t\t\t\treturn elem.getAttribute("type");\n +\t\t\t}\n +\t\t};\n +\n +\t// ID find and filter\n +\tif ( support.getIdNotName ) {\n +\t\tExpr.find["ID"] = function( id, context ) {\n +\t\t\tif ( typeof context.getElementById !== strundefined && !documentIsXML ) {\n +\t\t\t\tvar m = context.getElementById( id );\n +\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\treturn m && m.parentNode ? [m] : [];\n +\t\t\t}\n +\t\t};\n +\t\tExpr.filter["ID"] = function( id ) {\n +\t\t\tvar attrId = id.replace( runescape, funescape );\n +\t\t\treturn function( elem ) {\n +\t\t\t\treturn elem.getAttribute("id") === attrId;\n +\t\t\t};\n +\t\t};\n +\t} else {\n +\t\tExpr.find["ID"] = function( id, context ) {\n +\t\t\tif ( typeof context.getElementById !== strundefined && !documentIsXML ) {\n +\t\t\t\tvar m = context.getElementById( id );\n +\n +\t\t\t\treturn m ?\n +\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?\n +\t\t\t\t\t\t[m] :\n +\t\t\t\t\t\tundefined :\n +\t\t\t\t\t[];\n +\t\t\t}\n +\t\t};\n +\t\tExpr.filter["ID"] = function( id ) {\n +\t\t\tvar attrId = id.replace( runescape, funescape );\n +\t\t\treturn function( elem ) {\n +\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");\n +\t\t\t\treturn node && node.value === attrId;\n +\t\t\t};\n +\t\t};\n +\t}\n +\n +\t// Tag\n +\tExpr.find["TAG"] = support.tagNameNoComments ?\n +\t\tfunction( tag, context ) {\n +\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n +\t\t\t\treturn context.getElementsByTagName( tag );\n +\t\t\t}\n +\t\t} :\n +\t\tfunction( tag, context ) {\n +\t\t\tvar elem,\n +\t\t\t\ttmp = [],\n +\t\t\t\ti = 0,\n +\t\t\t\tresults = context.getElementsByTagName( tag );\n +\n +\t\t\t// Filter out possible comments\n +\t\t\tif ( tag === "*" ) {\n +\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n +\t\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\t\ttmp.push( elem );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn tmp;\n +\t\t\t}\n +\t\t\treturn results;\n +\t\t};\n +\n +\t// Name\n +\tExpr.find["NAME"] = support.getByName && function( tag, context ) {\n +\t\tif ( typeof context.getElementsByName !== strundefined ) {\n +\t\t\treturn context.getElementsByName( name );\n +\t\t}\n +\t};\n +\n +\t// Class\n +\tExpr.find["CLASS"] = support.getByClassName && function( className, context ) {\n +\t\tif ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) {\n +\t\t\treturn context.getElementsByClassName( className );\n +\t\t}\n +\t};\n +\n +\t// QSA and matchesSelector support\n +\n +\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n +\trbuggyMatches = [];\n +\n +\t// qSa(:focus) reports false when true (Chrome 21),\n +\t// no need to also add to buggyMatches since matches checks buggyQSA\n +\t// A support test would require too much code (would include document ready)\n +\trbuggyQSA = [ ":focus" ];\n +\n +\tif ( (support.qsa = isNative(doc.querySelectorAll)) ) {\n +\t\t// Build QSA regex\n +\t\t// Regex strategy adopted from Diego Perini\n +\t\tassert(function( div ) {\n +\t\t\t// Select is set to empty string on purpose\n +\t\t\t// This is to test IE\'s treatment of not explictly\n +\t\t\t// setting a boolean content attribute,\n +\t\t\t// since its presence should be enough\n +\t\t\t// http://bugs.jquery.com/ticket/12359\n +\t\t\tdiv.innerHTML = "<select><option selected=\'\'></option></select>";\n +\n +\t\t\t// IE8 - Some boolean attributes are not treated correctly\n +\t\t\tif ( !div.querySelectorAll("[selected]").length ) {\n +\t\t\t\trbuggyQSA.push( "\\\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );\n +\t\t\t}\n +\n +\t\t\t// Webkit/Opera - :checked should return selected option elements\n +\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n +\t\t\t// IE8 throws error here and will not see later tests\n +\t\t\tif ( !div.querySelectorAll(":checked").length ) {\n +\t\t\t\trbuggyQSA.push(":checked");\n +\t\t\t}\n +\t\t});\n +\n +\t\tassert(function( div ) {\n +\n +\t\t\t// Opera 10-12/IE8 - ^= $= *= and empty values\n +\t\t\t// Should not select anything\n +\t\t\tdiv.innerHTML = "<input type=\'hidden\' i=\'\'/>";\n +\t\t\tif ( div.querySelectorAll("[i^=\'\']").length ) {\n +\t\t\t\trbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\\"\\"|\'\')" );\n +\t\t\t}\n +\n +\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n +\t\t\t// IE8 throws error here and will not see later tests\n +\t\t\tif ( !div.querySelectorAll(":enabled").length ) {\n +\t\t\t\trbuggyQSA.push( ":enabled", ":disabled" );\n +\t\t\t}\n +\n +\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n +\t\t\tdiv.querySelectorAll("*,:x");\n +\t\t\trbuggyQSA.push(",.*:");\n +\t\t});\n +\t}\n +\n +\tif ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector ||\n +\t\tdocElem.mozMatchesSelector ||\n +\t\tdocElem.webkitMatchesSelector ||\n +\t\tdocElem.oMatchesSelector ||\n +\t\tdocElem.msMatchesSelector) )) ) {\n +\n +\t\tassert(function( div ) {\n +\t\t\t// Check to see if it\'s possible to do matchesSelector\n +\t\t\t// on a disconnected node (IE 9)\n +\t\t\tsupport.disconnectedMatch = matches.call( div, "div" );\n +\n +\t\t\t// This should fail with an exception\n +\t\t\t// Gecko does not error, returns false instead\n +\t\t\tmatches.call( div, "[s!=\'\']:x" );\n +\t\t\trbuggyMatches.push( "!=", pseudos );\n +\t\t});\n +\t}\n +\n +\trbuggyQSA = new RegExp( rbuggyQSA.join("|") );\n +\trbuggyMatches = new RegExp( rbuggyMatches.join("|") );\n +\n +\t// Element contains another\n +\t// Purposefully does not implement inclusive descendent\n +\t// As in, an element does not contain itself\n +\tcontains = isNative(docElem.contains) || docElem.compareDocumentPosition ?\n +\t\tfunction( a, b ) {\n +\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n +\t\t\t\tbup = b && b.parentNode;\n +\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n +\t\t\t\tadown.contains ?\n +\t\t\t\t\tadown.contains( bup ) :\n +\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n +\t\t\t));\n +\t\t} :\n +\t\tfunction( a, b ) {\n +\t\t\tif ( b ) {\n +\t\t\t\twhile ( (b = b.parentNode) ) {\n +\t\t\t\t\tif ( b === a ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn false;\n +\t\t};\n +\n +\t// Document order sorting\n +\tsortOrder = docElem.compareDocumentPosition ?\n +\tfunction( a, b ) {\n +\t\tvar compare;\n +\n +\t\tif ( a === b ) {\n +\t\t\thasDuplicate = true;\n +\t\t\treturn 0;\n +\t\t}\n +\n +\t\tif ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) {\n +\t\t\tif ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) {\n +\t\t\t\tif ( a === doc || contains( preferredDoc, a ) ) {\n +\t\t\t\t\treturn -1;\n +\t\t\t\t}\n +\t\t\t\tif ( b === doc || contains( preferredDoc, b ) ) {\n +\t\t\t\t\treturn 1;\n +\t\t\t\t}\n +\t\t\t\treturn 0;\n +\t\t\t}\n +\t\t\treturn compare & 4 ? -1 : 1;\n +\t\t}\n +\n +\t\treturn a.compareDocumentPosition ? -1 : 1;\n +\t} :\n +\tfunction( a, b ) {\n +\t\tvar cur,\n +\t\t\ti = 0,\n +\t\t\taup = a.parentNode,\n +\t\t\tbup = b.parentNode,\n +\t\t\tap = [ a ],\n +\t\t\tbp = [ b ];\n +\n +\t\t// The nodes are identical, we can exit early\n +\t\tif ( a === b ) {\n +\t\t\thasDuplicate = true;\n +\t\t\treturn 0;\n +\n +\t\t// Fallback to using sourceIndex (in IE) if it\'s available on both nodes\n +\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n +\t\t\treturn ( ~b.sourceIndex || MAX_NEGATIVE ) - ( contains( preferredDoc, a ) && ~a.sourceIndex || MAX_NEGATIVE );\n +\n +\t\t// Parentless nodes are either documents or disconnected\n +\t\t} else if ( !aup || !bup ) {\n +\t\t\treturn a === doc ? -1 :\n +\t\t\t\tb === doc ? 1 :\n +\t\t\t\taup ? -1 :\n +\t\t\t\tbup ? 1 :\n +\t\t\t\t0;\n +\n +\t\t// If the nodes are siblings, we can do a quick check\n +\t\t} else if ( aup === bup ) {\n +\t\t\treturn siblingCheck( a, b );\n +\t\t}\n +\n +\t\t// Otherwise we need full lists of their ancestors for comparison\n +\t\tcur = a;\n +\t\twhile ( (cur = cur.parentNode) ) {\n +\t\t\tap.unshift( cur );\n +\t\t}\n +\t\tcur = b;\n +\t\twhile ( (cur = cur.parentNode) ) {\n +\t\t\tbp.unshift( cur );\n +\t\t}\n +\n +\t\t// Walk down the tree looking for a discrepancy\n +\t\twhile ( ap[i] === bp[i] ) {\n +\t\t\ti++;\n +\t\t}\n +\n +\t\treturn i ?\n +\t\t\t// Do a sibling check if the nodes have a common ancestor\n +\t\t\tsiblingCheck( ap[i], bp[i] ) :\n +\n +\t\t\t// Otherwise nodes in our document sort first\n +\t\t\tap[i] === preferredDoc ? -1 :\n +\t\t\tbp[i] === preferredDoc ? 1 :\n +\t\t\t0;\n +\t};\n +\n +\t// Always assume the presence of duplicates if sort doesn\'t\n +\t// pass them to our comparison function (as in Google Chrome).\n +\thasDuplicate = false;\n +\t[0, 0].sort( sortOrder );\n +\tsupport.detectDuplicates = hasDuplicate;\n +\n +\treturn document;\n +};\n +\n +Sizzle.matches = function( expr, elements ) {\n +\treturn Sizzle( expr, null, null, elements );\n +};\n +\n +Sizzle.matchesSelector = function( elem, expr ) {\n +\t// Set document vars if needed\n +\tif ( ( elem.ownerDocument || elem ) !== document ) {\n +\t\tsetDocument( elem );\n +\t}\n +\n +\t// Make sure that attribute selectors are quoted\n +\texpr = expr.replace( rattributeQuotes, "=\'$1\']" );\n +\n +\t// rbuggyQSA always contains :focus, so no need for an existence check\n +\tif ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) {\n +\t\ttry {\n +\t\t\tvar ret = matches.call( elem, expr );\n +\n +\t\t\t// IE 9\'s matchesSelector returns false on disconnected nodes\n +\t\t\tif ( ret || support.disconnectedMatch ||\n +\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n +\t\t\t\t\t// fragment in IE 9\n +\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n +\t\t\t\treturn ret;\n +\t\t\t}\n +\t\t} catch(e) {}\n +\t}\n +\n +\treturn Sizzle( expr, document, null, [elem] ).length > 0;\n +};\n +\n +Sizzle.contains = function( context, elem ) {\n +\t// Set document vars if needed\n +\tif ( ( context.ownerDocument || context ) !== document ) {\n +\t\tsetDocument( context );\n +\t}\n +\treturn contains( context, elem );\n +};\n +\n +Sizzle.attr = function( elem, name ) {\n +\tvar val;\n +\n +\t// Set document vars if needed\n +\tif ( ( elem.ownerDocument || elem ) !== document ) {\n +\t\tsetDocument( elem );\n +\t}\n +\n +\tif ( !documentIsXML ) {\n +\t\tname = name.toLowerCase();\n +\t}\n +\tif ( (val = Expr.attrHandle[ name ]) ) {\n +\t\treturn val( elem );\n +\t}\n +\tif ( documentIsXML || support.attributes ) {\n +\t\treturn elem.getAttribute( name );\n +\t}\n +\treturn ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ?\n +\t\tname :\n +\t\tval && val.specified ? val.value : null;\n +};\n +\n +Sizzle.error = function( msg ) {\n +\tthrow new Error( "Syntax error, unrecognized expression: " + msg );\n +};\n +\n +// Document sorting and removing duplicates\n +Sizzle.uniqueSort = function( results ) {\n +\tvar elem,\n +\t\tduplicates = [],\n +\t\ti = 1,\n +\t\tj = 0;\n +\n +\t// Unless we *know* we can detect duplicates, assume their presence\n +\thasDuplicate = !support.detectDuplicates;\n +\tresults.sort( sortOrder );\n +\n +\tif ( hasDuplicate ) {\n +\t\tfor ( ; (elem = results[i]); i++ ) {\n +\t\t\tif ( elem === results[ i - 1 ] ) {\n +\t\t\t\tj = duplicates.push( i );\n +\t\t\t}\n +\t\t}\n +\t\twhile ( j-- ) {\n +\t\t\tresults.splice( duplicates[ j ], 1 );\n +\t\t}\n +\t}\n +\n +\treturn results;\n +};\n +\n +function siblingCheck( a, b ) {\n +\tvar cur = a && b && a.nextSibling;\n +\n +\tfor ( ; cur; cur = cur.nextSibling ) {\n +\t\tif ( cur === b ) {\n +\t\t\treturn -1;\n +\t\t}\n +\t}\n +\n +\treturn a ? 1 : -1;\n +}\n +\n +// Returns a function to use in pseudos for input types\n +function createInputPseudo( type ) {\n +\treturn function( elem ) {\n +\t\tvar name = elem.nodeName.toLowerCase();\n +\t\treturn name === "input" && elem.type === type;\n +\t};\n +}\n +\n +// Returns a function to use in pseudos for buttons\n +function createButtonPseudo( type ) {\n +\treturn function( elem ) {\n +\t\tvar name = elem.nodeName.toLowerCase();\n +\t\treturn (name === "input" || name === "button") && elem.type === type;\n +\t};\n +}\n +\n +// Returns a function to use in pseudos for positionals\n +function createPositionalPseudo( fn ) {\n +\treturn markFunction(function( argument ) {\n +\t\targument = +argument;\n +\t\treturn markFunction(function( seed, matches ) {\n +\t\t\tvar j,\n +\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n +\t\t\t\ti = matchIndexes.length;\n +\n +\t\t\t// Match elements found at the specified indexes\n +\t\t\twhile ( i-- ) {\n +\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n +\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t});\n +}\n +\n +/**\n + * Utility function for retrieving the text value of an array of DOM nodes\n + * @param {Array|Element} elem\n + */\n +getText = Sizzle.getText = function( elem ) {\n +\tvar node,\n +\t\tret = "",\n +\t\ti = 0,\n +\t\tnodeType = elem.nodeType;\n +\n +\tif ( !nodeType ) {\n +\t\t// If no nodeType, this is expected to be an array\n +\t\tfor ( ; (node = elem[i]); i++ ) {\n +\t\t\t// Do not traverse comment nodes\n +\t\t\tret += getText( node );\n +\t\t}\n +\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n +\t\t// Use textContent for elements\n +\t\t// innerText usage removed for consistency of new lines (see #11153)\n +\t\tif ( typeof elem.textContent === "string" ) {\n +\t\t\treturn elem.textContent;\n +\t\t} else {\n +\t\t\t// Traverse its children\n +\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n +\t\t\t\tret += getText( elem );\n +\t\t\t}\n +\t\t}\n +\t} else if ( nodeType === 3 || nodeType === 4 ) {\n +\t\treturn elem.nodeValue;\n +\t}\n +\t// Do not include comment or processing instruction nodes\n +\n +\treturn ret;\n +};\n +\n +Expr = Sizzle.selectors = {\n +\n +\t// Can be adjusted by the user\n +\tcacheLength: 50,\n +\n +\tcreatePseudo: markFunction,\n +\n +\tmatch: matchExpr,\n +\n +\tfind: {},\n +\n +\trelative: {\n +\t\t">": { dir: "parentNode", first: true },\n +\t\t" ": { dir: "parentNode" },\n +\t\t"+": { dir: "previousSibling", first: true },\n +\t\t"~": { dir: "previousSibling" }\n +\t},\n +\n +\tpreFilter: {\n +\t\t"ATTR": function( match ) {\n +\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n +\n +\t\t\t// Move the given value to match[3] whether quoted or unquoted\n +\t\t\tmatch[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );\n +\n +\t\t\tif ( match[2] === "~=" ) {\n +\t\t\t\tmatch[3] = " " + match[3] + " ";\n +\t\t\t}\n +\n +\t\t\treturn match.slice( 0, 4 );\n +\t\t},\n +\n +\t\t"CHILD": function( match ) {\n +\t\t\t/* matches from matchExpr["CHILD"]\n +\t\t\t\t1 type (only|nth|...)\n +\t\t\t\t2 what (child|of-type)\n +\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n +\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n +\t\t\t\t5 sign of xn-component\n +\t\t\t\t6 x of xn-component\n +\t\t\t\t7 sign of y-component\n +\t\t\t\t8 y of y-component\n +\t\t\t*/\n +\t\t\tmatch[1] = match[1].toLowerCase();\n +\n +\t\t\tif ( match[1].slice( 0, 3 ) === "nth" ) {\n +\t\t\t\t// nth-* requires argument\n +\t\t\t\tif ( !match[3] ) {\n +\t\t\t\t\tSizzle.error( match[0] );\n +\t\t\t\t}\n +\n +\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n +\t\t\t\t// remember that false/true cast respectively to 0/1\n +\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );\n +\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );\n +\n +\t\t\t// other types prohibit arguments\n +\t\t\t} else if ( match[3] ) {\n +\t\t\t\tSizzle.error( match[0] );\n +\t\t\t}\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\t"PSEUDO": function( match ) {\n +\t\t\tvar excess,\n +\t\t\t\tunquoted = !match[5] && match[2];\n +\n +\t\t\tif ( matchExpr["CHILD"].test( match[0] ) ) {\n +\t\t\t\treturn null;\n +\t\t\t}\n +\n +\t\t\t// Accept quoted arguments as-is\n +\t\t\tif ( match[4] ) {\n +\t\t\t\tmatch[2] = match[4];\n +\n +\t\t\t// Strip excess characters from unquoted arguments\n +\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n +\t\t\t\t// Get excess from tokenize (recursively)\n +\t\t\t\t(excess = tokenize( unquoted, true )) &&\n +\t\t\t\t// advance to the next closing parenthesis\n +\t\t\t\t(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {\n +\n +\t\t\t\t// excess is a negative index\n +\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n +\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n +\t\t\t}\n +\n +\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n +\t\t\treturn match.slice( 0, 3 );\n +\t\t}\n +\t},\n +\n +\tfilter: {\n +\n +\t\t"TAG": function( nodeName ) {\n +\t\t\tif ( nodeName === "*" ) {\n +\t\t\t\treturn function() { return true; };\n +\t\t\t}\n +\n +\t\t\tnodeName = nodeName.replace( runescape, funescape ).toLowerCase();\n +\t\t\treturn function( elem ) {\n +\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n +\t\t\t};\n +\t\t},\n +\n +\t\t"CLASS": function( className ) {\n +\t\t\tvar pattern = classCache[ className + " " ];\n +\n +\t\t\treturn pattern ||\n +\t\t\t\t(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&\n +\t\t\t\tclassCache( className, function( elem ) {\n +\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );\n +\t\t\t\t});\n +\t\t},\n +\n +\t\t"ATTR": function( name, operator, check ) {\n +\t\t\treturn function( elem ) {\n +\t\t\t\tvar result = Sizzle.attr( elem, name );\n +\n +\t\t\t\tif ( result == null ) {\n +\t\t\t\t\treturn operator === "!=";\n +\t\t\t\t}\n +\t\t\t\tif ( !operator ) {\n +\t\t\t\t\treturn true;\n +\t\t\t\t}\n +\n +\t\t\t\tresult += "";\n +\n +\t\t\t\treturn operator === "=" ? result === check :\n +\t\t\t\t\toperator === "!=" ? result !== check :\n +\t\t\t\t\toperator === "^=" ? check && result.indexOf( check ) === 0 :\n +\t\t\t\t\toperator === "*=" ? check && result.indexOf( check ) > -1 :\n +\t\t\t\t\toperator === "$=" ? check && result.substr( result.length - check.length ) === check :\n +\t\t\t\t\toperator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :\n +\t\t\t\t\toperator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :\n +\t\t\t\t\tfalse;\n +\t\t\t};\n +\t\t},\n +\n +\t\t"CHILD": function( type, what, argument, first, last ) {\n +\t\t\tvar simple = type.slice( 0, 3 ) !== "nth",\n +\t\t\t\tforward = type.slice( -4 ) !== "last",\n +\t\t\t\tofType = what === "of-type";\n +\n +\t\t\treturn first === 1 && last === 0 ?\n +\n +\t\t\t\t// Shortcut for :nth-*(n)\n +\t\t\t\tfunction( elem ) {\n +\t\t\t\t\treturn !!elem.parentNode;\n +\t\t\t\t} :\n +\n +\t\t\t\tfunction( elem, context, xml ) {\n +\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n +\t\t\t\t\t\tdir = simple !== forward ? "nextSibling" : "previousSibling",\n +\t\t\t\t\t\tparent = elem.parentNode,\n +\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n +\t\t\t\t\t\tuseCache = !xml && !ofType;\n +\n +\t\t\t\t\tif ( parent ) {\n +\n +\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n +\t\t\t\t\t\tif ( simple ) {\n +\t\t\t\t\t\t\twhile ( dir ) {\n +\t\t\t\t\t\t\t\tnode = elem;\n +\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n +\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n +\t\t\t\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven\'t yet done so)\n +\t\t\t\t\t\t\t\tstart = dir = type === "only" && !start && "nextSibling";\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\treturn true;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n +\n +\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n +\t\t\t\t\t\tif ( forward && useCache ) {\n +\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n +\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n +\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n +\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n +\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n +\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n +\n +\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n +\n +\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n +\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n +\n +\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n +\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n +\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n +\t\t\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Use previously-cached element index if available\n +\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n +\t\t\t\t\t\t\tdiff = cache[1];\n +\n +\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n +\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n +\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n +\n +\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n +\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n +\t\t\t\t\t\t\t\t\tif ( useCache ) {\n +\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n +\t\t\t\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n +\t\t\t\t\t\tdiff -= last;\n +\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t},\n +\n +\t\t"PSEUDO": function( pseudo, argument ) {\n +\t\t\t// pseudo-class names are case-insensitive\n +\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n +\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n +\t\t\t// Remember that setFilters inherits from pseudos\n +\t\t\tvar args,\n +\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n +\t\t\t\t\tSizzle.error( "unsupported pseudo: " + pseudo );\n +\n +\t\t\t// The user may use createPseudo to indicate that\n +\t\t\t// arguments are needed to create the filter function\n +\t\t\t// just as Sizzle does\n +\t\t\tif ( fn[ expando ] ) {\n +\t\t\t\treturn fn( argument );\n +\t\t\t}\n +\n +\t\t\t// But maintain support for old signatures\n +\t\t\tif ( fn.length > 1 ) {\n +\t\t\t\targs = [ pseudo, pseudo, "", argument ];\n +\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n +\t\t\t\t\tmarkFunction(function( seed, matches ) {\n +\t\t\t\t\t\tvar idx,\n +\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n +\t\t\t\t\t\t\ti = matched.length;\n +\t\t\t\t\t\twhile ( i-- ) {\n +\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n +\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}) :\n +\t\t\t\t\tfunction( elem ) {\n +\t\t\t\t\t\treturn fn( elem, 0, args );\n +\t\t\t\t\t};\n +\t\t\t}\n +\n +\t\t\treturn fn;\n +\t\t}\n +\t},\n +\n +\tpseudos: {\n +\t\t// Potentially complex pseudos\n +\t\t"not": markFunction(function( selector ) {\n +\t\t\t// Trim the selector passed to compile\n +\t\t\t// to avoid treating leading and trailing\n +\t\t\t// spaces as combinators\n +\t\t\tvar input = [],\n +\t\t\t\tresults = [],\n +\t\t\t\tmatcher = compile( selector.replace( rtrim, "$1" ) );\n +\n +\t\t\treturn matcher[ expando ] ?\n +\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n +\t\t\t\t\tvar elem,\n +\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n +\t\t\t\t\t\ti = seed.length;\n +\n +\t\t\t\t\t// Match elements unmatched by `matcher`\n +\t\t\t\t\twhile ( i-- ) {\n +\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n +\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}) :\n +\t\t\t\tfunction( elem, context, xml ) {\n +\t\t\t\t\tinput[0] = elem;\n +\t\t\t\t\tmatcher( input, null, xml, results );\n +\t\t\t\t\treturn !results.pop();\n +\t\t\t\t};\n +\t\t}),\n +\n +\t\t"has": markFunction(function( selector ) {\n +\t\t\treturn function( elem ) {\n +\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n +\t\t\t};\n +\t\t}),\n +\n +\t\t"contains": markFunction(function( text ) {\n +\t\t\treturn function( elem ) {\n +\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n +\t\t\t};\n +\t\t}),\n +\n +\t\t// "Whether an element is represented by a :lang() selector\n +\t\t// is based solely on the element\'s language value\n +\t\t// being equal to the identifier C,\n +\t\t// or beginning with the identifier C immediately followed by "-".\n +\t\t// The matching of C against the element\'s language value is performed case-insensitively.\n +\t\t// The identifier C does not have to be a valid language name."\n +\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n +\t\t"lang": markFunction( function( lang ) {\n +\t\t\t// lang value must be a valid identifider\n +\t\t\tif ( !ridentifier.test(lang || "") ) {\n +\t\t\t\tSizzle.error( "unsupported lang: " + lang );\n +\t\t\t}\n +\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n +\t\t\treturn function( elem ) {\n +\t\t\t\tvar elemLang;\n +\t\t\t\tdo {\n +\t\t\t\t\tif ( (elemLang = documentIsXML ?\n +\t\t\t\t\t\telem.getAttribute("xml:lang") || elem.getAttribute("lang") :\n +\t\t\t\t\t\telem.lang) ) {\n +\n +\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n +\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;\n +\t\t\t\t\t}\n +\t\t\t\t} while ( (elem = elem.parent + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +Node) && elem.nodeType === 1 );\n +\t\t\t\treturn false;\n +\t\t\t};\n +\t\t}),\n +\n +\t\t// Miscellaneous\n +\t\t"target": function( elem ) {\n +\t\t\tvar hash = window.location && window.location.hash;\n +\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n +\t\t},\n +\n +\t\t"root": function( elem ) {\n +\t\t\treturn elem === docElem;\n +\t\t},\n +\n +\t\t"focus": function( elem ) {\n +\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n +\t\t},\n +\n +\t\t// Boolean properties\n +\t\t"enabled": function( elem ) {\n +\t\t\treturn elem.disabled === false;\n +\t\t},\n +\n +\t\t"disabled": function( elem ) {\n +\t\t\treturn elem.disabled === true;\n +\t\t},\n +\n +\t\t"checked": function( elem ) {\n +\t\t\t// In CSS3, :checked should return both checked and selected elements\n +\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n +\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n +\t\t\treturn (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);\n +\t\t},\n +\n +\t\t"selected": function( elem ) {\n +\t\t\t// Accessing this property makes selected-by-default\n +\t\t\t// options in Safari work properly\n +\t\t\tif ( elem.parentNode ) {\n +\t\t\t\telem.parentNode.selectedIndex;\n +\t\t\t}\n +\n +\t\t\treturn elem.selected === true;\n +\t\t},\n +\n +\t\t// Contents\n +\t\t"empty": function( elem ) {\n +\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n +\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n +\t\t\t// not comment, processing instructions, or others\n +\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n +\t\t\t// Greater than "@" means alpha characters (specifically not starting with "#" or "?")\n +\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n +\t\t\t\tif ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn true;\n +\t\t},\n +\n +\t\t"parent": function( elem ) {\n +\t\t\treturn !Expr.pseudos["empty"]( elem );\n +\t\t},\n +\n +\t\t// Element/input types\n +\t\t"header": function( elem ) {\n +\t\t\treturn rheader.test( elem.nodeName );\n +\t\t},\n +\n +\t\t"input": function( elem ) {\n +\t\t\treturn rinputs.test( elem.nodeName );\n +\t\t},\n +\n +\t\t"button": function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn name === "input" && elem.type === "button" || name === "button";\n +\t\t},\n +\n +\t\t"text": function( elem ) {\n +\t\t\tvar attr;\n +\t\t\t// IE6 and 7 will map elem.type to \'text\' for new HTML5 types (search, etc)\n +\t\t\t// use getAttribute instead to test this case\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" &&\n +\t\t\t\telem.type === "text" &&\n +\t\t\t\t( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );\n +\t\t},\n +\n +\t\t// Position-in-collection\n +\t\t"first": createPositionalPseudo(function() {\n +\t\t\treturn [ 0 ];\n +\t\t}),\n +\n +\t\t"last": createPositionalPseudo(function( matchIndexes, length ) {\n +\t\t\treturn [ length - 1 ];\n +\t\t}),\n +\n +\t\t"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {\n +\t\t\treturn [ argument < 0 ? argument + length : argument ];\n +\t\t}),\n +\n +\t\t"even": createPositionalPseudo(function( matchIndexes, length ) {\n +\t\t\tvar i = 0;\n +\t\t\tfor ( ; i < length; i += 2 ) {\n +\t\t\t\tmatchIndexes.push( i );\n +\t\t\t}\n +\t\t\treturn matchIndexes;\n +\t\t}),\n +\n +\t\t"odd": createPositionalPseudo(function( matchIndexes, length ) {\n +\t\t\tvar i = 1;\n +\t\t\tfor ( ; i < length; i += 2 ) {\n +\t\t\t\tmatchIndexes.push( i );\n +\t\t\t}\n +\t\t\treturn matchIndexes;\n +\t\t}),\n +\n +\t\t"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {\n +\t\t\tvar i = argument < 0 ? argument + length : argument;\n +\t\t\tfor ( ; --i >= 0; ) {\n +\t\t\t\tmatchIndexes.push( i );\n +\t\t\t}\n +\t\t\treturn matchIndexes;\n +\t\t}),\n +\n +\t\t"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {\n +\t\t\tvar i = argument < 0 ? argument + length : argument;\n +\t\t\tfor ( ; ++i < length; ) {\n +\t\t\t\tmatchIndexes.push( i );\n +\t\t\t}\n +\t\t\treturn matchIndexes;\n +\t\t})\n +\t}\n +};\n +\n +// Add button/input type pseudos\n +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n +\tExpr.pseudos[ i ] = createInputPseudo( i );\n +}\n +for ( i in { submit: true, reset: true } ) {\n +\tExpr.pseudos[ i ] = createButtonPseudo( i );\n +}\n +\n +function tokenize( selector, parseOnly ) {\n +\tvar matched, match, tokens, type,\n +\t\tsoFar, groups, preFilters,\n +\t\tcached = tokenCache[ selector + " " ];\n +\n +\tif ( cached ) {\n +\t\treturn parseOnly ? 0 : cached.slice( 0 );\n +\t}\n +\n +\tsoFar = selector;\n +\tgroups = [];\n +\tpreFilters = Expr.preFilter;\n +\n +\twhile ( soFar ) {\n +\n +\t\t// Comma and first run\n +\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n +\t\t\tif ( match ) {\n +\t\t\t\t// Don\'t consume trailing commas as valid\n +\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n +\t\t\t}\n +\t\t\tgroups.push( tokens = [] );\n +\t\t}\n +\n +\t\tmatched = false;\n +\n +\t\t// Combinators\n +\t\tif ( (match = rcombinators.exec( soFar )) ) {\n +\t\t\tmatched = match.shift();\n +\t\t\ttokens.push( {\n +\t\t\t\tvalue: matched,\n +\t\t\t\t// Cast descendant combinators to space\n +\t\t\t\ttype: match[0].replace( rtrim, " " )\n +\t\t\t} );\n +\t\t\tsoFar = soFar.slice( matched.length );\n +\t\t}\n +\n +\t\t// Filters\n +\t\tfor ( type in Expr.filter ) {\n +\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n +\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n +\t\t\t\tmatched = match.shift();\n +\t\t\t\ttokens.push( {\n +\t\t\t\t\tvalue: matched,\n +\t\t\t\t\ttype: type,\n +\t\t\t\t\tmatches: match\n +\t\t\t\t} );\n +\t\t\t\tsoFar = soFar.slice( matched.length );\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( !matched ) {\n +\t\t\tbreak;\n +\t\t}\n +\t}\n +\n +\t// Return the length of the invalid excess\n +\t// if we\'re just parsing\n +\t// Otherwise, throw an error or return tokens\n +\treturn parseOnly ?\n +\t\tsoFar.length :\n +\t\tsoFar ?\n +\t\t\tSizzle.error( selector ) :\n +\t\t\t// Cache the tokens\n +\t\t\ttokenCache( selector, groups ).slice( 0 );\n +}\n +\n +function toSelector( tokens ) {\n +\tvar i = 0,\n +\t\tlen = tokens.length,\n +\t\tselector = "";\n +\tfor ( ; i < len; i++ ) {\n +\t\tselector += tokens[i].value;\n +\t}\n +\treturn selector;\n +}\n +\n +function addCombinator( matcher, combinator, base ) {\n +\tvar dir = combinator.dir,\n +\t\tcheckNonElements = base && combinator.dir === "parentNode",\n +\t\tdoneName = done++;\n +\n +\treturn combinator.first ?\n +\t\t// Check against closest ancestor/preceding element\n +\t\tfunction( elem, context, xml ) {\n +\t\t\twhile ( (elem = elem[ dir ]) ) {\n +\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n +\t\t\t\t\treturn matcher( elem, context, xml );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} :\n +\n +\t\t// Check against all ancestor/preceding elements\n +\t\tfunction( elem, context, xml ) {\n +\t\t\tvar data, cache, outerCache,\n +\t\t\t\tdirkey = dirruns + " " + doneName;\n +\n +\t\t\t// We can\'t set arbitrary data on XML nodes, so they don\'t benefit from dir caching\n +\t\t\tif ( xml ) {\n +\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n +\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n +\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n +\t\t\t\t\t\t\treturn true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n +\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n +\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n +\t\t\t\t\t\tif ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {\n +\t\t\t\t\t\t\tif ( (data = cache[1]) === true || data === cachedruns ) {\n +\t\t\t\t\t\t\t\treturn data === true;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tcache = outerCache[ dir ] = [ dirkey ];\n +\t\t\t\t\t\t\tcache[1] = matcher( elem, context, xml ) || cachedruns;\n +\t\t\t\t\t\t\tif ( cache[1] === true ) {\n +\t\t\t\t\t\t\t\treturn true;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +}\n +\n +function elementMatcher( matchers ) {\n +\treturn matchers.length > 1 ?\n +\t\tfunction( elem, context, xml ) {\n +\t\t\tvar i = matchers.length;\n +\t\t\twhile ( i-- ) {\n +\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn true;\n +\t\t} :\n +\t\tmatchers[0];\n +}\n +\n +function condense( unmatched, map, filter, context, xml ) {\n +\tvar elem,\n +\t\tnewUnmatched = [],\n +\t\ti = 0,\n +\t\tlen = unmatched.length,\n +\t\tmapped = map != null;\n +\n +\tfor ( ; i < len; i++ ) {\n +\t\tif ( (elem = unmatched[i]) ) {\n +\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n +\t\t\t\tnewUnmatched.push( elem );\n +\t\t\t\tif ( mapped ) {\n +\t\t\t\t\tmap.push( i );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn newUnmatched;\n +}\n +\n +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n +\tif ( postFilter && !postFilter[ expando ] ) {\n +\t\tpostFilter = setMatcher( postFilter );\n +\t}\n +\tif ( postFinder && !postFinder[ expando ] ) {\n +\t\tpostFinder = setMatcher( postFinder, postSelector );\n +\t}\n +\treturn markFunction(function( seed, results, context, xml ) {\n +\t\tvar temp, i, elem,\n +\t\t\tpreMap = [],\n +\t\t\tpostMap = [],\n +\t\t\tpreexisting = results.length,\n +\n +\t\t\t// Get initial elements from seed or context\n +\t\t\telems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),\n +\n +\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n +\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n +\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n +\t\t\t\telems,\n +\n +\t\t\tmatcherOut = matcher ?\n +\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n +\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n +\n +\t\t\t\t\t// ...intermediate processing is necessary\n +\t\t\t\t\t[] :\n +\n +\t\t\t\t\t// ...otherwise use results directly\n +\t\t\t\t\tresults :\n +\t\t\t\tmatcherIn;\n +\n +\t\t// Find primary matches\n +\t\tif ( matcher ) {\n +\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n +\t\t}\n +\n +\t\t// Apply postFilter\n +\t\tif ( postFilter ) {\n +\t\t\ttemp = condense( matcherOut, postMap );\n +\t\t\tpostFilter( temp, [], context, xml );\n +\n +\t\t\t// Un-match failing elements by moving them back to matcherIn\n +\t\t\ti = temp.length;\n +\t\t\twhile ( i-- ) {\n +\t\t\t\tif ( (elem = temp[i]) ) {\n +\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( seed ) {\n +\t\t\tif ( postFinder || preFilter ) {\n +\t\t\t\tif ( postFinder ) {\n +\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n +\t\t\t\t\ttemp = [];\n +\t\t\t\t\ti = matcherOut.length;\n +\t\t\t\t\twhile ( i-- ) {\n +\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n +\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n +\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n +\t\t\t\t}\n +\n +\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n +\t\t\t\ti = matcherOut.length;\n +\t\t\t\twhile ( i-- ) {\n +\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n +\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n +\n +\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// Add elements to results, through postFinder if defined\n +\t\t} else {\n +\t\t\tmatcherOut = condense(\n +\t\t\t\tmatcherOut === results ?\n +\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n +\t\t\t\t\tmatcherOut\n +\t\t\t);\n +\t\t\tif ( postFinder ) {\n +\t\t\t\tpostFinder( null, results, matcherOut, xml );\n +\t\t\t} else {\n +\t\t\t\tpush.apply( results, matcherOut );\n +\t\t\t}\n +\t\t}\n +\t});\n +}\n +\n +function matcherFromTokens( tokens ) {\n +\tvar checkContext, matcher, j,\n +\t\tlen = tokens.length,\n +\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n +\t\timplicitRelative = leadingRelative || Expr.relative[" "],\n +\t\ti = leadingRelative ? 1 : 0,\n +\n +\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n +\t\tmatchContext = addCombinator( function( elem ) {\n +\t\t\treturn elem === checkContext;\n +\t\t}, implicitRelative, true ),\n +\t\tmatchAnyContext = addCombinator( function( elem ) {\n +\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n +\t\t}, implicitRelative, true ),\n +\t\tmatchers = [ function( elem, context, xml ) {\n +\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n +\t\t\t\t(checkContext = context).nodeType ?\n +\t\t\t\t\tmatchContext( elem, context, xml ) :\n +\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n +\t\t} ];\n +\n +\tfor ( ; i < len; i++ ) {\n +\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n +\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n +\t\t} else {\n +\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n +\n +\t\t\t// Return special upon seeing a positional matcher\n +\t\t\tif ( matcher[ expando ] ) {\n +\t\t\t\t// Find the next relative operator (if any) for proper handling\n +\t\t\t\tj = ++i;\n +\t\t\t\tfor ( ; j < len; j++ ) {\n +\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn setMatcher(\n +\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n +\t\t\t\t\ti > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),\n +\t\t\t\t\tmatcher,\n +\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n +\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n +\t\t\t\t\tj < len && toSelector( tokens )\n +\t\t\t\t);\n +\t\t\t}\n +\t\t\tmatchers.push( matcher );\n +\t\t}\n +\t}\n +\n +\treturn elementMatcher( matchers );\n +}\n +\n +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n +\t// A counter to specify which element is currently being matched\n +\tvar matcherCachedRuns = 0,\n +\t\tbySet = setMatchers.length > 0,\n +\t\tbyElement = elementMatchers.length > 0,\n +\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n +\t\t\tvar elem, j, matcher,\n +\t\t\t\tsetMatched = [],\n +\t\t\t\tmatchedCount = 0,\n +\t\t\t\ti = "0",\n +\t\t\t\tunmatched = seed && [],\n +\t\t\t\toutermost = expandContext != null,\n +\t\t\t\tcontextBackup = outermostContext,\n +\t\t\t\t// We must always have either seed elements or context\n +\t\t\t\telems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),\n +\t\t\t\t// Nested matchers should use non-integer dirruns\n +\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n +\n +\t\t\tif ( outermost ) {\n +\t\t\t\toutermostContext = context !== document && context;\n +\t\t\t\tcachedruns = matcherCachedRuns;\n +\t\t\t}\n +\n +\t\t\t// Add elements passing elementMatchers directly to results\n +\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n +\t\t\t\tif ( byElement && elem ) {\n +\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n +\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n +\t\t\t\t\t\t\tresults.push( elem );\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( outermost ) {\n +\t\t\t\t\t\tdirruns = dirrunsUnique;\n +\t\t\t\t\t\tcachedruns = ++matcherCachedRuns;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Track unmatched elements for set filters\n +\t\t\t\tif ( bySet ) {\n +\t\t\t\t\t// They will have gone through all possible matchers\n +\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n +\t\t\t\t\t\tmatchedCount--;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Lengthen the array for every element, matched or not\n +\t\t\t\t\tif ( seed ) {\n +\t\t\t\t\t\tunmatched.push( elem );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Apply set filters to unmatched elements\n +\t\t\t// `i` starts as a string, so matchedCount would equal "00" if there are no elements\n +\t\t\tmatchedCount += i;\n +\t\t\tif ( bySet && i !== matchedCount ) {\n +\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n +\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( seed ) {\n +\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n +\t\t\t\t\tif ( matchedCount > 0 ) {\n +\t\t\t\t\t\twhile ( i-- ) {\n +\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n +\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Discard index placeholder values to get only actual matches\n +\t\t\t\t\tsetMatched = condense( setMatched );\n +\t\t\t\t}\n +\n +\t\t\t\t// Add matches to results\n +\t\t\t\tpush.apply( results, setMatched );\n +\n +\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n +\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n +\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n +\n +\t\t\t\t\tSizzle.uniqueSort( results );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Override manipulation of globals by nested matchers\n +\t\t\tif ( outermost ) {\n +\t\t\t\tdirruns = dirrunsUnique;\n +\t\t\t\toutermostContext = contextBackup;\n +\t\t\t}\n +\n +\t\t\treturn unmatched;\n +\t\t};\n +\n +\treturn bySet ?\n +\t\tmarkFunction( superMatcher ) :\n +\t\tsuperMatcher;\n +}\n +\n +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n +\tvar i,\n +\t\tsetMatchers = [],\n +\t\telementMatchers = [],\n +\t\tcached = compilerCache[ selector + " " ];\n +\n +\tif ( !cached ) {\n +\t\t// Generate a function of recursive functions that can be used to check each element\n +\t\tif ( !group ) {\n +\t\t\tgroup = tokenize( selector );\n +\t\t}\n +\t\ti = group.length;\n +\t\twhile ( i-- ) {\n +\t\t\tcached = matcherFromTokens( group[i] );\n +\t\t\tif ( cached[ expando ] ) {\n +\t\t\t\tsetMatchers.push( cached );\n +\t\t\t} else {\n +\t\t\t\telementMatchers.push( cached );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Cache the compiled function\n +\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n +\t}\n +\treturn cached;\n +};\n +\n +function multipleContexts( selector, contexts, results ) {\n +\tvar i = 0,\n +\t\tlen = contexts.length;\n +\tfor ( ; i < len; i++ ) {\n +\t\tSizzle( selector, contexts[i], results );\n +\t}\n +\treturn results;\n +}\n +\n +function select( selector, context, results, seed ) {\n +\tvar i, tokens, token, type, find,\n +\t\tmatch = tokenize( selector );\n +\n +\tif ( !seed ) {\n +\t\t// Try to minimize operations if there is only one group\n +\t\tif ( match.length === 1 ) {\n +\n +\t\t\t// Take a shortcut and set the context if the root selector is an ID\n +\t\t\ttokens = match[0] = match[0].slice( 0 );\n +\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&\n +\t\t\t\t\tcontext.nodeType === 9 && !documentIsXML &&\n +\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n +\n +\t\t\t\tcontext = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0];\n +\t\t\t\tif ( !context ) {\n +\t\t\t\t\treturn results;\n +\t\t\t\t}\n +\n +\t\t\t\tselector = selector.slice( tokens.shift().value.length );\n +\t\t\t}\n +\n +\t\t\t// Fetch a seed set for right-to-left matching\n +\t\t\tfor ( i = matchExpr["needsContext"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n +\t\t\t\ttoken = tokens[i];\n +\n +\t\t\t\t// Abort if we hit a combinator\n +\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n +\t\t\t\t\t// Search, expanding context for leading sibling combinators\n +\t\t\t\t\tif ( (seed = find(\n +\t\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n +\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context\n +\t\t\t\t\t)) ) {\n +\n +\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n +\t\t\t\t\t\ttokens.splice( i, 1 );\n +\t\t\t\t\t\tselector = seed.length && toSelector( tokens );\n +\t\t\t\t\t\tif ( !selector ) {\n +\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n +\t\t\t\t\t\t\treturn results;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Compile and execute a filtering function\n +\t// Provide `match` to avoid retokenization if we modified the selector above\n +\tcompile( selector, match )(\n +\t\tseed,\n +\t\tcontext,\n +\t\tdocumentIsXML,\n +\t\tresults,\n +\t\trsibling.test( selector )\n +\t);\n +\treturn results;\n +}\n +\n +// Deprecated\n +Expr.pseudos["nth"] = Expr.pseudos["eq"];\n +\n +// Easy API for creating new setFilters\n +function setFilters() {}\n +Expr.filters = setFilters.prototype = Expr.pseudos;\n +Expr.setFilters = new setFilters();\n +\n +// Initialize with the default document\n +setDocument();\n +\n +// Override sizzle attribute retrieval\n +Sizzle.attr = jQuery.attr;\n +jQuery.find = Sizzle;\n +jQuery.expr = Sizzle.selectors;\n +jQuery.expr[":"] = jQuery.expr.pseudos;\n +jQuery.unique = Sizzle.uniqueSort;\n +jQuery.text = Sizzle.getText;\n +jQuery.isXMLDoc = Sizzle.isXML;\n +jQuery.contains = Sizzle.contains;\n +\n +\n +})( window );\n +var runtil = /Until$/,\n +\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n +\tisSimple = /^.[^:#\\[\\.,]*$/,\n +\trneedsContext = jQuery.expr.match.needsContext,\n +\t// methods guaranteed to produce a unique set when starting from a unique set\n +\tguaranteedUnique = {\n +\t\tchildren: true,\n +\t\tcontents: true,\n +\t\tnext: true,\n +\t\tprev: true\n +\t};\n +\n +jQuery.fn.extend({\n +\tfind: function( selector ) {\n +\t\tvar i, ret, self;\n +\n +\t\tif ( typeof selector !== "string" ) {\n +\t\t\tself = this;\n +\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n +\t\t\t\tfor ( i = 0; i < self.length; i++ ) {\n +\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}) );\n +\t\t}\n +\n +\t\tret = [];\n +\t\tfor ( i = 0; i < this.length; i++ ) {\n +\t\t\tjQuery.find( selector, this[ i ], ret );\n +\t\t}\n +\n +\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n +\t\tret = this.pushStack( jQuery.unique( ret ) );\n +\t\tret.selector = ( this.selector ? this.selector + " " : "" ) + selector;\n +\t\treturn ret;\n +\t},\n +\n +\thas: function( target ) {\n +\t\tvar i,\n +\t\t\ttargets = jQuery( target, this ),\n +\t\t\tlen = targets.length;\n +\n +\t\treturn this.filter(function() {\n +\t\t\tfor ( i = 0; i < len; i++ ) {\n +\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n +\t\t\t\t\treturn true;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tnot: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, false) );\n +\t},\n +\n +\tfilter: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, true) );\n +\t},\n +\n +\tis: function( selector ) {\n +\t\treturn !!selector && (\n +\t\t\ttypeof selector === "string" ?\n +\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n +\t\t\t\t// so $("p:first").is("p:last") won\'t return true for a doc with two "p".\n +\t\t\t\trneedsContext.test( selector ) ?\n +\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n +\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n +\t\t\t\tthis.filter( selector ).length > 0 );\n +\t},\n +\n +\tclosest: function( selectors, context ) {\n +\t\tvar cur,\n +\t\t\ti = 0,\n +\t\t\tl = this.length,\n +\t\t\tret = [],\n +\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?\n +\t\t\t\tjQuery( selectors, context || this.context ) :\n +\t\t\t\t0;\n +\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\tcur = this[i];\n +\n +\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n +\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n +\t\t\t\t\tret.push( cur );\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t\tcur = cur.parentNode;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );\n +\t},\n +\n +\t// Determine the position of an element within\n +\t// the matched set of elements\n +\tindex: function( elem ) {\n +\n +\t\t// No argument, return index in parent\n +\t\tif ( !elem ) {\n +\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n +\t\t}\n +\n +\t\t// index in selector\n +\t\tif ( typeof elem === "string" ) {\n +\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n +\t\t}\n +\n +\t\t// Locate the position of the desired element\n +\t\treturn jQuery.inArray(\n +\t\t\t// If it receives a jQuery object, the first element is used\n +\t\t\telem.jquery ? elem[0] : elem, this );\n +\t},\n +\n +\tadd: function( selector, context ) {\n +\t\tvar set = typeof selector === "string" ?\n +\t\t\t\tjQuery( selector, context ) :\n +\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n +\t\t\tall = jQuery.merge( this.get(), set );\n +\n +\t\treturn this.pushStack( jQuery.unique(all) );\n +\t},\n +\n +\taddBack: function( selector ) {\n +\t\treturn this.add( selector == null ?\n +\t\t\tthis.prevObject : this.prevObject.filter(selector)\n +\t\t);\n +\t}\n +});\n +\n +jQuery.fn.andSelf = jQuery.fn.addBack;\n +\n +function sibling( cur, dir ) {\n +\tdo {\n +\t\tcur = cur[ dir ];\n +\t} while ( cur && cur.nodeType !== 1 );\n +\n +\treturn cur;\n +}\n +\n +jQuery.each({\n +\tparent: function( elem ) {\n +\t\tvar parent = elem.parentNode;\n +\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n +\t},\n +\tparents: function( elem ) {\n +\t\treturn jQuery.dir( elem, "parentNode" );\n +\t},\n +\tparentsUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "parentNode", until );\n +\t},\n +\tnext: function( elem ) {\n +\t\treturn sibling( elem, "nextSibling" );\n +\t},\n +\tprev: function( elem ) {\n +\t\treturn sibling( elem, "previousSibling" );\n +\t},\n +\tnextAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "nextSibling" );\n +\t},\n +\tprevAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "previousSibling" );\n +\t},\n +\tnextUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "nextSibling", until );\n +\t},\n +\tprevUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "previousSibling", until );\n +\t},\n +\tsiblings: function( elem ) {\n +\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n +\t},\n +\tchildren: function( elem ) {\n +\t\treturn jQuery.sibling( elem.firstChild );\n +\t},\n +\tcontents: function( elem ) {\n +\t\treturn jQuery.nodeName( elem, "iframe" ) ?\n +\t\t\telem.contentDocument || elem.contentWindow.document :\n +\t\t\tjQuery.merge( [], elem.childNodes );\n +\t}\n +}, function( name, fn ) {\n +\tjQuery.fn[ name ] = function( until, selector ) {\n +\t\tvar ret = jQuery.map( this, fn, until );\n +\n +\t\tif ( !runtil.test( name ) ) {\n +\t\t\tselector = until;\n +\t\t}\n +\n +\t\tif ( selector && typeof selector === "string" ) {\n +\t\t\tret = jQuery.filter( selector, ret );\n +\t\t}\n +\n +\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n +\n +\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n +\t\t\tret = ret.reverse();\n +\t\t}\n +\n +\t\treturn this.pushStack( ret );\n +\t};\n +});\n +\n +jQuery.extend({\n +\tfilter: function( expr, elems, not ) {\n +\t\tif ( not ) {\n +\t\t\texpr = ":not(" + expr + ")";\n +\t\t}\n +\n +\t\treturn elems.length === 1 ?\n +\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n +\t\t\tjQuery.find.matches(expr, elems);\n +\t},\n +\n +\tdir: function( elem, dir, until ) {\n +\t\tvar matched = [],\n +\t\t\tcur = elem[ dir ];\n +\n +\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n +\t\t\tif ( cur.nodeType === 1 ) {\n +\t\t\t\tmatched.push( cur );\n +\t\t\t}\n +\t\t\tcur = cur[dir];\n +\t\t}\n +\t\treturn matched;\n +\t},\n +\n +\tsibling: function( n, elem ) {\n +\t\tvar r = [];\n +\n +\t\tfor ( ; n; n = n.nextSibling ) {\n +\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n +\t\t\t\tr.push( n );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn r;\n +\t}\n +});\n +\n +// Implement the identical functionality for filter and not\n +function winnow( elements, qualifier, keep ) {\n +\n +\t// Can\'t pass null or undefined to indexOf in Firefox 4\n +\t// Set to 0 to skip string check\n +\tqualifier = qualifier || 0;\n +\n +\tif ( jQuery.isFunction( qualifier ) ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n +\t\t\treturn retVal === keep;\n +\t\t});\n +\n +\t} else if ( qualifier.nodeType ) {\n +\t\treturn jQuery.grep(elements, function( elem ) {\n +\t\t\treturn ( elem === qualifier ) === keep;\n +\t\t});\n +\n +\t} else if ( typeof qualifier === "string" ) {\n +\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n +\t\t\treturn elem.nodeType === 1;\n +\t\t});\n +\n +\t\tif ( isSimple.test( qualifier ) ) {\n +\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n +\t\t} else {\n +\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n +\t\t}\n +\t}\n +\n +\treturn jQuery.grep(elements, function( elem ) {\n +\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n +\t});\n +}\n +function createSafeFragment( document ) {\n +\tvar list = nodeNames.split( "|" ),\n +\t\tsafeFrag = document.createDocumentFragment();\n +\n +\tif ( safeFrag.createElement ) {\n +\t\twhile ( list.length ) {\n +\t\t\tsafeFrag.createElement(\n +\t\t\t\tlist.pop()\n +\t\t\t);\n +\t\t}\n +\t}\n +\treturn safeFrag;\n +}\n +\n +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +\n +\t\t"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",\n +\trinlinejQuery = / jQuery\\d+="(?:null|\\d+)"/g,\n +\trnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\\\s/>]", "i"),\n +\trleadingWhitespace = /^\\s+/,\n +\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n +\trtagName = /<([\\w:]+)/,\n +\trtbody = /<tbody/i,\n +\trhtml = /<|&#?\\w+;/,\n +\trnoInnerhtml = /<(?:script|style|link)/i,\n +\tmanipulation_rcheckableType = /^(?:checkbox|radio)$/i,\n +\t// checked="checked" or checked\n +\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n +\trscriptType = /^$|\\/(?:java|ecma)script/i,\n +\trscriptTypeMasked = /^true\\/(.*)/,\n +\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n +\n +\t// We have to close these tags to support XHTML (#13200)\n +\twrapMap = {\n +\t\toption: [ 1, "<select multiple=\'multiple\'>", "</select>" ],\n +\t\tlegend: [ 1, "<fieldset>", "</fieldset>" ],\n +\t\tarea: [ 1, "<map>", "</map>" ],\n +\t\tparam: [ 1, "<object>", "</object>" ],\n +\t\tthead: [ 1, "<table>", "</table>" ],\n +\t\ttr: [ 2, "<table><tbody>", "</tbody></table>" ],\n +\t\tcol: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],\n +\t\ttd: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],\n +\n +\t\t// IE6-8 can\'t serialize link, script, style, or any html5 (NoScope) tags,\n +\t\t// unless wrapped in a div with non-breaking characters in front of it.\n +\t\t_default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]\n +\t},\n +\tsafeFragment = createSafeFragment( document ),\n +\tfragmentDiv = safeFragment.appendChild( document.createElement("div") );\n +\n +wrapMap.optgroup = wrapMap.option;\n +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n +wrapMap.th = wrapMap.td;\n +\n +jQuery.fn.extend({\n +\ttext: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\treturn value === undefined ?\n +\t\t\t\tjQuery.text( this ) :\n +\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\twrapAll: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\t// The elements to wrap the target around\n +\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n +\n +\t\t\tif ( this[0].parentNode ) {\n +\t\t\t\twrap.insertBefore( this[0] );\n +\t\t\t}\n +\n +\t\t\twrap.map(function() {\n +\t\t\t\tvar elem = this;\n +\n +\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n +\t\t\t\t\telem = elem.firstChild;\n +\t\t\t\t}\n +\n +\t\t\t\treturn elem;\n +\t\t\t}).append( this );\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\twrapInner: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar self = jQuery( this ),\n +\t\t\t\tcontents = self.contents();\n +\n +\t\t\tif ( contents.length ) {\n +\t\t\t\tcontents.wrapAll( html );\n +\n +\t\t\t} else {\n +\t\t\t\tself.append( html );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\twrap: function( html ) {\n +\t\tvar isFunction = jQuery.isFunction( html );\n +\n +\t\treturn this.each(function(i) {\n +\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n +\t\t});\n +\t},\n +\n +\tunwrap: function() {\n +\t\treturn this.parent().each(function() {\n +\t\t\tif ( !jQuery.nodeName( this, "body" ) ) {\n +\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n +\t\t\t}\n +\t\t}).end();\n +\t},\n +\n +\tappend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n +\t\t\t\tthis.appendChild( elem );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tprepend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n +\t\t\t\tthis.insertBefore( elem, this.firstChild );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tbefore: function() {\n +\t\treturn this.domManip( arguments, false, function( elem ) {\n +\t\t\tif ( this.parentNode ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tafter: function() {\n +\t\treturn this.domManip( arguments, false, function( elem ) {\n +\t\t\tif ( this.parentNode ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t// keepData is for internal use only--do not document\n +\tremove: function( selector, keepData ) {\n +\t\tvar elem,\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n +\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {\n +\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n +\t\t\t\t\tjQuery.cleanData( getAll( elem ) );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n +\t\t\t\t\t\tsetGlobalEval( getAll( elem, "script" ) );\n +\t\t\t\t\t}\n +\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tempty: function() {\n +\t\tvar elem,\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n +\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n +\t\t\t}\n +\n +\t\t\t// Remove any remaining nodes\n +\t\t\twhile ( elem.firstChild ) {\n +\t\t\t\telem.removeChild( elem.firstChild );\n +\t\t\t}\n +\n +\t\t\t// If this is a select, ensure that it displays empty (#12336)\n +\t\t\t// Support: IE<9\n +\t\t\tif ( elem.options && jQuery.nodeName( elem, "select" ) ) {\n +\t\t\t\telem.options.length = 0;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tclone: function( dataAndEvents, deepDataAndEvents ) {\n +\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n +\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n +\n +\t\treturn this.map( function () {\n +\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n +\t\t});\n +\t},\n +\n +\thtml: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\tvar elem = this[0] || {},\n +\t\t\t\ti = 0,\n +\t\t\t\tl = this.length;\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\treturn elem.nodeType === 1 ?\n +\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, "" ) :\n +\t\t\t\t\tundefined;\n +\t\t\t}\n +\n +\t\t\t// See if we can take a shortcut and just use innerHTML\n +\t\t\tif ( typeof value === "string" && !rnoInnerhtml.test( value ) &&\n +\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n +\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n +\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {\n +\n +\t\t\t\tvalue = value.replace( rxhtmlTag, "<$1></$2>" );\n +\n +\t\t\t\ttry {\n +\t\t\t\t\tfor (; i < l; i++ ) {\n +\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\t\t\t\telem = this[i] || {};\n +\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n +\t\t\t\t\t\t\telem.innerHTML = value;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = 0;\n +\n +\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t\tif ( elem ) {\n +\t\t\t\tthis.empty().append( value );\n +\t\t\t}\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\treplaceWith: function( value ) {\n +\t\tvar isFunc = jQuery.isFunction( value );\n +\n +\t\t// Make sure that the elements are removed from the DOM before they are inserted\n +\t\t// this can help fix replacing a parent with child elements\n +\t\tif ( !isFunc && typeof value !== "string" ) {\n +\t\t\tvalue = jQuery( value ).not( this ).detach();\n +\t\t}\n +\n +\t\treturn this.domManip( [ value ], true, function( elem ) {\n +\t\t\tvar next = this.nextSibling,\n +\t\t\t\tparent = this.parentNode;\n +\n +\t\t\tif ( parent && this.nodeType === 1 || this.nodeType === 11 ) {\n +\n +\t\t\t\tjQuery( this ).remove();\n +\n +\t\t\t\tif ( next ) {\n +\t\t\t\t\tnext.parentNode.insertBefore( elem, next );\n +\t\t\t\t} else {\n +\t\t\t\t\tparent.appendChild( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tdetach: function( selector ) {\n +\t\treturn this.remove( selector, true );\n +\t},\n +\n +\tdomManip: function( args, table, callback ) {\n +\n +\t\t// Flatten any nested arrays\n +\t\targs = core_concat.apply( [], args );\n +\n +\t\tvar fragment, first, scripts, hasScripts, node, doc,\n +\t\t\ti = 0,\n +\t\t\tl = this.length,\n +\t\t\tset = this,\n +\t\t\tiNoClone = l - 1,\n +\t\t\tvalue = args[0],\n +\t\t\tisFunction = jQuery.isFunction( value );\n +\n +\t\t// We can\'t cloneNode fragments that contain checked, in WebKit\n +\t\tif ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {\n +\t\t\treturn this.each(function( index ) {\n +\t\t\t\tvar self = set.eq( index );\n +\t\t\t\tif ( isFunction ) {\n +\t\t\t\t\targs[0] = value.call( this, index, table ? self.html() : undefined );\n +\t\t\t\t}\n +\t\t\t\tself.domManip( args, table, callback );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( l ) {\n +\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n +\t\t\tfirst = fragment.firstChild;\n +\n +\t\t\tif ( fragment.childNodes.length === 1 ) {\n +\t\t\t\tfragment = first;\n +\t\t\t}\n +\n +\t\t\tif ( first ) {\n +\t\t\t\ttable = table && jQuery.nodeName( first, "tr" );\n +\t\t\t\tscripts = jQuery.map( getAll( fragment, "script" ), disableScript );\n +\t\t\t\thasScripts = scripts.length;\n +\n +\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n +\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n +\t\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\t\tnode = fragment;\n +\n +\t\t\t\t\tif ( i !== iNoClone ) {\n +\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n +\n +\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n +\t\t\t\t\t\tif ( hasScripts ) {\n +\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, "script" ) );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tcallback.call(\n +\t\t\t\t\t\ttable && jQuery.nodeName( this[i], "table" ) ?\n +\t\t\t\t\t\t\tfindOrAppend( this[i], "tbody" ) :\n +\t\t\t\t\t\t\tthis[i],\n +\t\t\t\t\t\tnode,\n +\t\t\t\t\t\ti\n +\t\t\t\t\t);\n +\t\t\t\t}\n +\n +\t\t\t\tif ( hasScripts ) {\n +\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n +\n +\t\t\t\t\t// Reenable scripts\n +\t\t\t\t\tjQuery.map( scripts, restoreScript );\n +\n +\t\t\t\t\t// Evaluate executable scripts on first document insertion\n +\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n +\t\t\t\t\t\tnode = scripts[ i ];\n +\t\t\t\t\t\tif ( rscriptType.test( node.type || "" ) &&\n +\t\t\t\t\t\t\t!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {\n +\n +\t\t\t\t\t\t\tif ( node.src ) {\n +\t\t\t\t\t\t\t\t// Hope ajax is available...\n +\t\t\t\t\t\t\t\tjQuery.ajax({\n +\t\t\t\t\t\t\t\t\turl: node.src,\n +\t\t\t\t\t\t\t\t\ttype: "GET",\n +\t\t\t\t\t\t\t\t\tdataType: "script",\n +\t\t\t\t\t\t\t\t\tasync: false,\n +\t\t\t\t\t\t\t\t\tglobal: false,\n +\t\t\t\t\t\t\t\t\t"throws": true\n +\t\t\t\t\t\t\t\t});\n +\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Fix #11809: Avoid leaking memory\n +\t\t\t\tfragment = first = null;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t}\n +});\n +\n +function findOrAppend( elem, tag ) {\n +\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n +}\n +\n +// Replace/restore the type attribute of script elements for safe DOM manipulation\n +function disableScript( elem ) {\n +\tvar attr = elem.getAttributeNode("type");\n +\telem.type = ( attr && attr.specified ) + "/" + elem.type;\n +\treturn elem;\n +}\n +function restoreScript( elem ) {\n +\tvar match = rscriptTypeMasked.exec( elem.type );\n +\tif ( match ) {\n +\t\telem.type = match[1];\n +\t} else {\n +\t\telem.removeAttribute("type");\n +\t}\n +\treturn elem;\n +}\n +\n +// Mark scripts as having already been evaluated\n +function setGlobalEval( elems, refElements ) {\n +\tvar elem,\n +\t\ti = 0;\n +\tfor ( ; (elem = elems[i]) != null; i++ ) {\n +\t\tjQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );\n +\t}\n +}\n +\n +function cloneCopyEvent( src, dest ) {\n +\n +\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n +\t\treturn;\n +\t}\n +\n +\tvar type, i, l,\n +\t\toldData = jQuery._data( src ),\n +\t\tcurData = jQuery._data( dest, oldData ),\n +\t\tevents = oldData.events;\n +\n +\tif ( events ) {\n +\t\tdelete curData.handle;\n +\t\tcurData.events = {};\n +\n +\t\tfor ( type in events ) {\n +\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n +\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// make the cloned public data object a copy from the original\n +\tif ( curData.data ) {\n +\t\tcurData.data = jQuery.extend( {}, curData.data );\n +\t}\n +}\n +\n +function fixCloneNodeIssues( src, dest ) {\n +\tvar nodeName, data, e;\n +\n +\t// We do not need to do anything for non-Elements\n +\tif ( dest.nodeType !== 1 ) {\n +\t\treturn;\n +\t}\n +\n +\tnodeName = dest.nodeName.toLowerCase();\n +\n +\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n +\tif ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {\n +\t\tdata = jQuery._data( dest );\n +\n +\t\tfor ( e in data.events ) {\n +\t\t\tjQuery.removeEvent( dest, e, data.handle );\n +\t\t}\n +\n +\t\t// Event data gets referenced instead of copied if the expando gets copied too\n +\t\tdest.removeAttribute( jQuery.expando );\n +\t}\n +\n +\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n +\tif ( nodeName === "script" && dest.text !== src.text ) {\n +\t\tdisableScript( dest ).text = src.text;\n +\t\trestoreScript( dest );\n +\n +\t// IE6-10 improperly clones children of object elements using classid.\n +\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n +\t} else if ( nodeName === "object" ) {\n +\t\tif ( dest.parentNode ) {\n +\t\t\tdest.outerHTML = src.outerHTML;\n +\t\t}\n +\n +\t\t// This path appears unavoidable for IE9. When cloning an object\n +\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n +\t\t// If the src has innerHTML and the destination does not,\n +\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n +\t\tif ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n +\t\t\tdest.innerHTML = src.innerHTML;\n +\t\t}\n +\n +\t} else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {\n +\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n +\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n +\t\t// a checked appearance if the defaultChecked value isn\'t also set\n +\n +\t\tdest.defaultChecked = dest.checked = src.checked;\n +\n +\t\t// IE6-7 get confused and end up setting the value of a cloned\n +\t\t// checkbox/radio button to an empty string instead of "on"\n +\t\tif ( dest.value !== src.value ) {\n +\t\t\tdest.value = src.value;\n +\t\t}\n +\n +\t// IE6-8 fails to return the selected option to the default selected\n +\t// state when cloning options\n +\t} else if ( nodeName === "option" ) {\n +\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n +\n +\t// IE6-8 fails to set the defaultValue to the correct value when\n +\t// cloning other types of input fields\n +\t} else if ( nodeName === "input" || nodeName === "textarea" ) {\n +\t\tdest.defaultValue = src.defaultValue;\n +\t}\n +}\n +\n +jQuery.each({\n +\tappendTo: "append",\n +\tprependTo: "prepend",\n +\tinsertBefore: "before",\n +\tinsertAfter: "after",\n +\treplaceAll: "replaceWith"\n +}, function( name, original ) {\n +\tjQuery.fn[ name ] = function( selector ) {\n +\t\tvar elems,\n +\t\t\ti = 0,\n +\t\t\tret = [],\n +\t\t\tinsert = jQuery( selector ),\n +\t\t\tlast = insert.length - 1;\n +\n +\t\tfor ( ; i <= last; i++ ) {\n +\t\t\telems = i === last ? this : this.clone(true);\n +\t\t\tjQuery( insert[i] )[ original ]( elems );\n +\n +\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n +\t\t\tcore_push.apply( ret, elems.get() );\n +\t\t}\n +\n +\t\treturn this.pushStack( ret );\n +\t};\n +});\n +\n +function getAll( context, tag ) {\n +\tvar elems, elem,\n +\t\ti = 0,\n +\t\tfound = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( tag || "*" ) :\n +\t\t\ttypeof context.querySelectorAll !== "undefined" ? context.querySelectorAll( tag || "*" ) :\n +\t\t\tundefined;\n +\n +\tif ( !found ) {\n +\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n +\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n +\t\t\t\tfound.push( elem );\n +\t\t\t} else {\n +\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n +\t\tjQuery.merge( [ context ], found ) :\n +\t\tfound;\n +}\n +\n +// Used in buildFragment, fixes the defaultChecked property\n +function fixDefaultChecked( elem ) {\n +\tif ( manipulation_rcheckableType.test( elem.type ) ) {\n +\t\telem.defaultChecked = elem.checked;\n +\t}\n +}\n +\n +jQuery.extend({\n +\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n +\t\tvar destElements, srcElements, node, i, clone,\n +\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n +\n +\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {\n +\t\t\tclone = elem.cloneNode( true );\n +\n +\t\t// IE<=8 does not properly clone detached, unknown element nodes\n +\t\t} else {\n +\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n +\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n +\t\t}\n +\n +\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n +\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n +\n +\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n +\t\t\tdestElements = getAll( clone );\n +\t\t\tsrcElements = getAll( elem );\n +\n +\t\t\t// Fix all IE cloning issues\n +\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n +\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n +\t\t\t\tif ( destElements[i] ) {\n +\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Copy the events from the original to the clone\n +\t\tif ( dataAndEvents ) {\n +\t\t\tif ( deepDataAndEvents ) {\n +\t\t\t\tsrcElements = srcElements || getAll( elem );\n +\t\t\t\tdestElements = destElements || getAll( clone );\n +\n +\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n +\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tcloneCopyEvent( elem, clone );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Preserve script evaluation history\n +\t\tdestElements = getAll( clone, "script" );\n +\t\tif ( destElements.length > 0 ) {\n +\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, "script" ) );\n +\t\t}\n +\n +\t\tdestElements = srcElements = node = null;\n +\n +\t\t// Return the cloned set\n +\t\treturn clone;\n +\t},\n +\n +\tbuildFragment: function( elems, context, scripts, selection ) {\n +\t\tvar contains, elem, tag, tmp, wrap, tbody, j,\n +\t\t\tl = elems.length,\n +\n +\t\t\t// Ensure a safe fragment\n +\t\t\tsafe = createSafeFragment( context ),\n +\n +\t\t\tnodes = [],\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\telem = elems[ i ];\n +\n +\t\t\tif ( elem || elem === 0 ) {\n +\n +\t\t\t\t// Add nodes directly\n +\t\t\t\tif ( jQuery.type( elem ) === "object" ) {\n +\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n +\n +\t\t\t\t// Convert non-html into a text node\n +\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n +\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n +\n +\t\t\t\t// Convert html into DOM nodes\n +\t\t\t\t} else {\n +\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement("div") );\n +\n +\t\t\t\t\t// Deserialize a standard representation\n +\t\t\t\t\ttag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();\n +\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n +\n +\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];\n +\n +\t\t\t\t\t// Descend through wrappers to the right content\n +\t\t\t\t\tj = wrap[0];\n +\t\t\t\t\twhile ( j-- ) {\n +\t\t\t\t\t\ttmp = tmp.lastChild;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Manually add leading whitespace removed by IE\n +\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n +\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remove IE\'s autoinserted <tbody> from table fragments\n +\t\t\t\t\tif ( !jQuery.support.tbody ) {\n +\n +\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n +\t\t\t\t\t\telem = tag === "table" && !rtbody.test( elem ) ?\n +\t\t\t\t\t\t\ttmp.firstChild :\n +\n +\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n +\t\t\t\t\t\t\twrap[1] === "<table>" && !rtbody.test( elem ) ?\n +\t\t\t\t\t\t\t\ttmp :\n +\t\t\t\t\t\t\t\t0;\n +\n +\t\t\t\t\t\tj = elem && elem.childNodes.length;\n +\t\t\t\t\t\twhile ( j-- ) {\n +\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {\n +\t\t\t\t\t\t\t\telem.removeChild( tbody );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n +\n +\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n +\t\t\t\t\ttmp.textContent = "";\n +\n +\t\t\t\t\t// Fix #12392 for oldIE\n +\t\t\t\t\twhile ( tmp.firstChild ) {\n +\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remember the top-level container for proper cleanup\n +\t\t\t\t\ttmp = safe.lastChild;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Fix #11356: Clear elements from fragment\n +\t\tif ( tmp ) {\n +\t\t\tsafe.removeChild( tmp );\n +\t\t}\n +\n +\t\t// Reset defaultChecked for any radios and checkboxes\n +\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n +\t\tif ( !jQuery.support.appendChecked ) {\n +\t\t\tjQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );\n +\t\t}\n +\n +\t\ti = 0;\n +\t\twhile ( (elem = nodes[ i++ ]) ) {\n +\n +\t\t\t// #4087 - If origin and destination elements are the same, and this is\n +\t\t\t// that element, do not do anything\n +\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n +\n +\t\t\t// Append to fragment\n +\t\t\ttmp = getAll( safe.appendChild( elem ), "script" );\n +\n +\t\t\t// Preserve script evaluation history\n +\t\t\tif ( contains ) {\n +\t\t\t\tsetGlobalEval( tmp );\n +\t\t\t}\n +\n +\t\t\t// Capture executables\n +\t\t\tif ( scripts ) {\n +\t\t\t\tj = 0;\n +\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n +\t\t\t\t\tif ( rscriptType.test( elem.type || "" ) ) {\n +\t\t\t\t\t\tscripts.push( elem );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\ttmp = null;\n +\n +\t\treturn safe;\n +\t},\n +\n +\tcleanData: function( elems, /* internal */ acceptData ) {\n +\t\tvar data, id, elem, type,\n +\t\t\ti = 0,\n +\t\t\tinternalKey = jQuery.expando,\n +\t\t\tcache = jQuery.cache,\n +\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n +\t\t\tspecial = jQuery.event.special;\n +\n +\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n +\n +\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n +\n +\t\t\t\tid = elem[ internalKey ];\n +\t\t\t\tdata = id && cache[ id ];\n +\n +\t\t\t\tif ( data ) {\n +\t\t\t\t\tif ( data.events ) {\n +\t\t\t\t\t\tfor ( type in data.events ) {\n +\t\t\t\t\t\t\tif ( special[ type ] ) {\n +\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n +\n +\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove\'s overhead\n +\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n +\t\t\t\t\tif ( cache[ id ] ) {\n +\n +\t\t\t\t\t\tdelete cache[ id ];\n +\n +\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n +\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n +\t\t\t\t\t\t// we must handle all of these cases\n +\t\t\t\t\t\tif ( deleteExpando ) {\n +\t\t\t\t\t\t\tdelete elem[ internalKey ];\n +\n +\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== "undefined" ) {\n +\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\telem[ internalKey ] = null;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\tcore_deletedIds.push( id );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +var curCSS, getStyles, iframe,\n +\tralpha = /alpha\\([^)]*\\)/i,\n +\tropacity = /opacity\\s*=\\s*([^)]*)/,\n +\trposition = /^(top|right|bottom|left)$/,\n +\t// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"\n +\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n +\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n +\trmargin = /^margin/,\n +\trnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),\n +\trnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),\n +\trrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),\n +\telemdisplay = { BODY: "block" },\n +\n +\tcssShow = { position: "absolute", visibility: "hidden", display: "block" },\n +\tcssNormalTransform = {\n +\t\tletterSpacing: 0,\n +\t\tfontWeight: 400\n +\t},\n +\n +\tcssExpand = [ "Top", "Right", "Bottom", "Left" ],\n +\tcssPrefixes = [ "Webkit", "O", "Moz", "ms" ];\n +\n +// return a css property mapped to a potentially vendor prefixed property\n +function vendorPropName( style, name ) {\n +\n +\t// shortcut for names that are not vendor prefixed\n +\tif ( name in style ) {\n +\t\treturn name;\n +\t}\n +\n +\t// check for vendor prefixed names\n +\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n +\t\torigName = name,\n +\t\ti = cssPrefixes.length;\n +\n +\twhile ( i-- ) {\n +\t\tname = cssPrefixes[ i ] + capName;\n +\t\tif ( name in style ) {\n +\t\t\treturn name;\n +\t\t}\n +\t}\n +\n +\treturn origName;\n +}\n +\n +function isHidden( elem, el ) {\n +\t// isHidden might be called from jQuery#filter function;\n +\t// in that case, element will be second argument\n +\telem = el || elem;\n +\treturn jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );\n +}\n +\n +function showHide( elements, show ) {\n +\tvar elem,\n +\t\tvalues = [],\n +\t\tindex = 0,\n +\t\tlength = elements.length;\n +\n +\tfor ( ; index < length; index++ ) {\n +\t\telem = elements[ index ];\n +\t\tif ( !elem.style ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tvalues[ index ] = jQuery._data( elem, "olddisplay" );\n +\t\tif ( show ) {\n +\t\t\t// Reset the inline display of this element to learn if it is\n +\t\t\t// being hidden by cascaded rules or not\n +\t\t\tif ( !values[ index ] && elem.style.display === "none" ) {\n +\t\t\t\telem.style.display = "";\n +\t\t\t}\n +\n +\t\t\t// Set elements which have been overridden with display: none\n +\t\t\t// in a stylesheet to whatever the default browser style is\n +\t\t\t// for such an element\n +\t\t\tif ( elem.style.display === "" && isHidden( elem ) ) {\n +\t\t\t\tvalues[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );\n +\t\t\t}\n +\t\t} else if ( !values[ index ] && !isHidden( elem ) ) {\n +\t\t\tjQuery._data( elem, "olddisplay", jQuery.css( elem, "display" ) );\n +\t\t}\n +\t}\n +\n +\t// Set the display of most of the elements in a second loop\n +\t// to avoid the constant reflow\n +\tfor ( index = 0; index < length; index++ ) {\n +\t\telem = elements[ index ];\n +\t\tif ( !elem.style ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tif ( !show || elem.style.display === "none" || elem.style.display === "" ) {\n +\t\t\telem.style.display = show ? values[ index ] || "" : "none";\n +\t\t}\n +\t}\n +\n +\treturn elements;\n +}\n +\n +jQuery.fn.extend({\n +\tcss: function( name, value ) {\n +\t\treturn jQuery.access( this, function( elem, name, value ) {\n +\t\t\tvar styles, len,\n +\t\t\t\tmap = {},\n +\t\t\t\ti = 0;\n +\n +\t\t\tif ( jQuery.isArray( name ) ) {\n +\t\t\t\tstyles = getStyles( elem );\n +\t\t\t\tlen = name.length;\n +\n +\t\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n +\t\t\t\t}\n +\n +\t\t\t\treturn map;\n +\t\t\t}\n +\n +\t\t\treturn value !== undefined ?\n +\t\t\t\tjQuery.style( elem, name, value ) :\n +\t\t\t\tjQuery.css( elem, name );\n +\t\t}, name, value, arguments.length > 1 );\n +\t},\n +\tshow: function() {\n +\t\treturn showHide( this, true );\n +\t},\n +\thide: function() {\n +\t\treturn showHide( this );\n +\t},\n +\ttoggle: function( state ) {\n +\t\tvar bool = typeof state === "boolean";\n +\n +\t\treturn this.each(function() {\n +\t\t\tif ( bool ? state : isHidden( this ) ) {\n +\t\t\t\tjQuery( this ).show();\n +\t\t\t} else {\n +\t\t\t\tjQuery( this ).hide();\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +jQuery.extend({\n +\t// Add in style property hooks for overriding the default\n +\t// behavior of getting and setting a style property\n +\tcssHooks: {\n +\t\topacity: {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\tif ( computed ) {\n +\t\t\t\t\t// We should always get a number back from opacity\n +\t\t\t\t\tvar ret = curCSS( elem, "opacity" );\n +\t\t\t\t\treturn ret === "" ? "1" : ret;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// Exclude the following css properties to add px\n +\tcssNumber: {\n +\t\t"columnCount": true,\n +\t\t"fillOpacity": true,\n +\t\t"fontWeight": true,\n +\t\t"lineHeight": true,\n +\t\t"opacity": true,\n +\t\t"orphans": true,\n +\t\t"widows": true,\n +\t\t"zIndex": true,\n +\t\t"zoom": true\n +\t},\n +\n +\t// Add in properties whose names you wish to fix before\n +\t// setting or getting the value\n +\tcssProps: {\n +\t\t// normalize float css property\n +\t\t"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"\n +\t},\n +\n +\t// Get and set the style property on a DOM Node\n +\tstyle: function( elem, name, value, extra ) {\n +\t\t// Don\'t set styles on text and comment nodes\n +\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tvar ret, type, hooks,\n +\t\t\torigName = jQuery.camelCase( name ),\n +\t\t\tstyle = elem.style;\n +\n +\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n +\n +\t\t// gets hook for the prefixed version\n +\t\t// followed by the unprefixed version\n +\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n +\n +\t\t// Check if we\'re setting a value\n +\t\tif ( value !== undefined ) {\n +\t\t\ttype = typeof value;\n +\n +\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n +\t\t\tif ( type === "string" && (ret = rrelNum.exec( value )) ) {\n +\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n +\t\t\t\t// Fixes bug #9237\n +\t\t\t\ttype = "number";\n +\t\t\t}\n +\n +\t\t\t// Make sure that NaN and null values aren\'t set. See: #7116\n +\t\t\tif ( value == null || type === "number" && isNaN( value ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// If a number was passed in, add \'px\' to the (except for certain CSS properties)\n +\t\t\tif ( type === "number" && !jQuery.cssNumber[ origName ] ) {\n +\t\t\t\tvalue += "px";\n +\t\t\t}\n +\n +\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n +\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n +\t\t\tif ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {\n +\t\t\t\tstyle[ name ] = "inherit";\n +\t\t\t}\n +\n +\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n +\t\t\tif ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n +\n +\t\t\t\t// Wrapped to prevent IE from throwing errors when \'invalid\' values are provided\n +\t\t\t\t// Fixes bug #5509\n +\t\t\t\ttry {\n +\t\t\t\t\tstyle[ name ] = value;\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\t// If a hook was provided get the non-computed value from there\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\t\t\t}\n +\n +\t\t\t// Otherwise just get the value from the style object\n +\t\t\treturn style[ name ];\n +\t\t}\n +\t},\n +\n +\tcss: function( elem, name, extra, styles ) {\n +\t\tvar val, num, hooks,\n +\t\t\torigName = jQuery.camelCase( name );\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n +\n +\t\t// gets hook for the prefixed version\n +\t\t// followed by the unprefixed version\n +\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n +\n +\t\t// If a hook was provided get the computed value from there\n +\t\tif ( hooks && "get" in hooks ) {\n +\t\t\tval = hooks.get( elem, true, extra );\n +\t\t}\n +\n +\t\t// Otherwise, if a way to get the computed value exists, use that\n +\t\tif ( val === undefined ) {\n +\t\t\tval = curCSS( elem, name, styles );\n +\t\t}\n +\n +\t\t//convert "normal" to computed value\n +\t\tif ( val === "normal" && name in cssNormalTransform ) {\n +\t\t\tval = cssNormalTransform[ name ];\n +\t\t}\n +\n +\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n +\t\tif ( extra ) {\n +\t\t\tnum = parseFloat( val );\n +\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n +\t\t}\n +\t\treturn val;\n +\t},\n +\n +\t// A method for quickly swapping in/out CSS properties to get correct calculations\n +\tswap: function( elem, options, callback, args ) {\n +\t\tvar ret, name,\n +\t\t\told = {};\n +\n +\t\t// Remember the old values, and insert the new ones\n +\t\tfor ( name in options ) {\n +\t\t\told[ name ] = elem.style[ name ];\n +\t\t\telem.style[ name ] = options[ name ];\n +\t\t}\n +\n +\t\tret = callback.apply( elem, args || [] );\n +\n +\t\t// Revert the old values\n +\t\tfor ( name in options ) {\n +\t\t\telem.style[ name ] = old[ name ];\n +\t\t}\n +\n +\t\treturn ret;\n +\t}\n +});\n +\n +// NOTE: we\'ve included the "window" in window.getComputedStyle\n +// because jsdom on node.js will break without it.\n +if ( window.getComputedStyle ) {\n +\tgetStyles = function( elem ) {\n +\t\treturn window.getComputedStyle( elem, null );\n +\t};\n +\n +\tcurCSS = function( elem, name, _computed ) {\n +\t\tvar width, minWidth, maxWidth,\n +\t\t\tcomputed = _computed || getStyles( elem ),\n +\n +\t\t\t// getPropertyValue is only needed for .css(\'filter\') in IE9, see #12537\n +\t\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,\n +\t\t\tstyle = elem.style;\n +\n +\t\tif ( computed ) {\n +\n +\t\t\tif ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n +\t\t\t\tret = jQuery.style( elem, name );\n +\t\t\t}\n +\n +\t\t\t// A tribute to the "awesome hack by Dean Edwards"\n +\t\t\t// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right\n +\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n +\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n +\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n +\n +\t\t\t\t// Remember the original values\n +\t\t\t\twidth = style.width;\n +\t\t\t\tminWidth = style.minWidth;\n +\t\t\t\tmaxWidth = style.maxWidth;\n +\n +\t\t\t\t// Put in the new values to get a computed value out\n +\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n +\t\t\t\tret = computed.width;\n +\n +\t\t\t\t// Revert the changed values\n +\t\t\t\tstyle.width = width;\n +\t\t\t\tstyle.minWidth = minWidth;\n +\t\t\t\tstyle.maxWidth = maxWidth;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t};\n +} else if ( document.documentElement.currentStyle ) {\n +\tgetStyles = function( elem ) {\n +\t\treturn elem.currentStyle;\n +\t};\n +\n +\tcurCSS = function( elem, name, _computed ) {\n +\t\tvar left, rs, rsLeft,\n +\t\t\tcomputed = _computed || getStyles( elem ),\n +\t\t\tret = computed ? computed[ name ] : undefined,\n +\t\t\tstyle = elem.style;\n +\n +\t\t// Avoid setting ret to empty string here\n +\t\t// so we don\'t default to auto\n +\t\tif ( ret == null && style && style[ name ] ) {\n +\t\t\tret = style[ name ];\n +\t\t}\n +\n +\t\t// From the awesome hack by Dean Edwards\n +\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n +\n +\t\t// If we\'re not dealing with a regular pixel number\n +\t\t// but a number that has a weird ending, we need to convert it to pixels\n +\t\t// but not position css attributes, as those are proportional to the parent element instead\n +\t\t// and we can\'t measure the parent instead because it might trigger a "stacking dolls" problem\n +\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n +\n +\t\t\t// Remember the original values\n +\t\t\tleft = style.left;\n +\t\t\trs = elem.runtimeStyle;\n +\t\t\trsLeft = rs && rs.left;\n +\n +\t\t\t// Put in the new values to get a computed value out\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\trs.left = elem.currentStyle.left;\n +\t\t\t}\n +\t\t\tstyle.left = name === "fontSize" ? "1em" : ret;\n +\t\t\tret = style.pixelLeft + "px";\n +\n +\t\t\t// Revert the changed values\n +\t\t\tstyle.left = left;\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\trs.left = rsLeft;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret === "" ? "auto" : ret;\n +\t};\n +}\n +\n +function setPositiveNumber( elem, value, subtract ) {\n +\tvar matches = rnumsplit.exec( value );\n +\treturn matches ?\n +\t\t// Guard against undefined "subtract", e.g., when used as in cssHooks\n +\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :\n +\t\tvalue;\n +}\n +\n +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n +\tvar i = extra === ( isBorderBox ? "border" : "content" ) ?\n +\t\t// If we already have the right measurement, avoid augmentation\n +\t\t4 :\n +\t\t// Otherwise initialize for horizontal or vertical properties\n +\t\tname === "width" ? 1 : 0,\n +\n +\t\tval = 0;\n +\n +\tfor ( ; i < 4; i += 2 ) {\n +\t\t// both box models exclude margin, so add it if we want it\n +\t\tif ( extra === "margin" ) {\n +\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n +\t\t}\n +\n +\t\tif ( isBorderBox ) {\n +\t\t\t// border-box includes padding, so remove it if we want content\n +\t\t\tif ( extra === "content" ) {\n +\t\t\t\tval -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );\n +\t\t\t}\n +\n +\t\t\t// at this point, extra isn\'t border nor margin, so remove border\n +\t\t\tif ( extra !== "margin" ) {\n +\t\t\t\tval -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );\n +\t\t\t}\n +\t\t} else {\n +\t\t\t// at this point, extra isn\'t content, so add padding\n +\t\t\tval += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );\n +\n +\t\t\t// at this point, extra isn\'t content nor padding, so add border\n +\t\t\tif ( extra !== "padding" ) {\n +\t\t\t\tval += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn val;\n +}\n +\n +function getWidthOrHeight( elem, name, extra ) {\n +\n +\t// Start with offset property, which is equivalent to the border-box value\n +\tvar valueIsBorderBox = true,\n +\t\tval = name === "width" ? elem.offsetWidth : elem.offsetHeight,\n +\t\tstyles = getStyles( elem ),\n +\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";\n +\n +\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n +\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n +\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n +\tif ( val <= 0 || val == null ) {\n +\t\t// Fall back to computed then uncomputed css if necessary\n +\t\tval = curCSS( elem, name, styles );\n +\t\tif ( val < 0 || val == null ) {\n +\t\t\tval = elem.style[ name ];\n +\t\t}\n +\n +\t\t// Computed unit is not pixels. Stop here and return.\n +\t\tif ( rnumnonpx.test(val) ) {\n +\t\t\treturn val;\n +\t\t}\n +\n +\t\t// we need the check for style in case a browser which returns unreliable values\n +\t\t// for getComputedStyle silently falls back to the reliable elem.style\n +\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n +\n +\t\t// Normalize "", auto, and prepare for extra\n +\t\tval = parseFloat( val ) || 0;\n +\t}\n +\n +\t// use the active box-sizing model to add/subtract irrelevant styles\n +\treturn ( val +\n +\t\taugmentWidthOrHeight(\n +\t\t\telem,\n +\t\t\tname,\n +\t\t\textra || ( isBorderBox ? "border" : "content" ),\n +\t\t\tvalueIsBorderBox,\n +\t\t\tstyles\n +\t\t)\n +\t) + "px";\n +}\n +\n +// Try to determine the default display value of an element\n +function css_defaultDisplay( nodeName ) {\n +\tvar doc = document,\n +\t\tdisplay = elemdisplay[ nodeName ];\n +\n +\tif ( !display ) {\n +\t\tdisplay = actualDisplay( nodeName, doc );\n +\n +\t\t// If the simple way fails, read from inside an iframe\n +\t\tif ( display === "none" || !display ) {\n +\t\t\t// Use the already-created iframe if possible\n +\t\t\tiframe = ( iframe ||\n +\t\t\t\tjQuery("<iframe frameborder=\'0\' width=\'0\' height=\'0\'/>")\n +\t\t\t\t.css( "cssText", "display:block !important" )\n +\t\t\t).appendTo( doc.documentElement );\n +\n +\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don\'t choke on reuse\n +\t\t\tdoc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;\n +\t\t\tdoc.write("<!doctype html><html><body>");\n +\t\t\tdoc.close();\n +\n +\t\t\tdisplay = actualDisplay( nodeName, doc );\n +\t\t\tiframe.detach();\n +\t\t}\n +\n +\t\t// Store the correct default display\n +\t\telemdisplay[ nodeName ] = display;\n +\t}\n +\n +\treturn display;\n +}\n +\n +// Called ONLY from within css_defaultDisplay\n +function actualDisplay( name, doc ) {\n +\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n +\t\tdisplay = jQuery.css( elem[0], "display" );\n +\telem.remove();\n +\treturn display;\n +}\n +\n +jQuery.each([ "height", "width" ], function( i, name ) {\n +\tjQuery.cssHooks[ name ] = {\n +\t\tget: function( elem, computed, extra ) {\n +\t\t\tif ( computed ) {\n +\t\t\t\t// certain elements can have dimension info if we invisibly show them\n +\t\t\t\t// however, it must have a current display style that would benefit from this\n +\t\t\t\treturn elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?\n +\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n +\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t\t}) :\n +\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n +\t\t\t}\n +\t\t},\n +\n +\t\tset: function( elem, value, extra ) {\n +\t\t\tvar styles = extra && getStyles( elem );\n +\t\t\treturn setPositiveNumber( elem, value, extra ?\n +\t\t\t\taugmentWidthOrHeight(\n +\t\t\t\t\telem,\n +\t\t\t\t\tname,\n +\t\t\t\t\textra,\n +\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",\n +\t\t\t\t\tstyles\n +\t\t\t\t) : 0\n +\t\t\t);\n +\t\t}\n +\t};\n +});\n +\n +if ( !jQuery.support.opacity ) {\n +\tjQuery.cssHooks.opacity = {\n +\t\tget: function( elem, computed ) {\n +\t\t\t// IE uses filters for opacity\n +\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?\n +\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + "" :\n +\t\t\t\tcomputed ? "1" : "";\n +\t\t},\n +\n +\t\tset: function( elem, value ) {\n +\t\t\tvar style = elem.style,\n +\t\t\t\tcurrentStyle = elem.currentStyle,\n +\t\t\t\topacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",\n +\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || "";\n +\n +\t\t\t// IE has trouble with opacity if it does not have layout\n +\t\t\t// Force it by setting the zoom level\n +\t\t\tstyle.zoom = 1;\n +\n +\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n +\t\t\t// if value === "", then remove inline opacity #12685\n +\t\t\tif ( ( value >= 1 || value === "" ) &&\n +\t\t\t\t\tjQuery.trim( filter.replace( ralpha, "" ) ) === "" &&\n +\t\t\t\t\tstyle.removeAttribute ) {\n +\n +\t\t\t\t// Setting style.filter to null, "" & " " still leave "filter:" in the cssText\n +\t\t\t\t// if "filter:" is present at all, clearType is disabled, we want to avoid this\n +\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n +\t\t\t\tstyle.removeAttribute( "filter" );\n +\n +\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n +\t\t\t\tif ( value === "" || currentStyle && !currentStyle.filter ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// otherwise, set new filter values\n +\t\t\tstyle.filter = ralpha.test( filter ) ?\n +\t\t\t\tfilter.replace( ralpha, opacity ) :\n +\t\t\t\tfilter + " " + opacity;\n +\t\t}\n +\t};\n +}\n +\n +// These hooks cannot be added until DOM ready because the support test\n +// for it is not run until after DOM ready\n +jQuery(function() {\n +\tif ( !jQuery.support.reliableMarginRight ) {\n +\t\tjQuery.cssHooks.marginRight = {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\tif ( computed ) {\n +\t\t\t\t\t// WebKit Bug 13343 - + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + + getComputedStyle returns wrong value for margin-right\n +\t\t\t\t\t// Work around by temporarily setting element display to inline-block\n +\t\t\t\t\treturn jQuery.swap( elem, { "display": "inline-block" },\n +\t\t\t\t\t\tcurCSS, [ elem, "marginRight" ] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t}\n +\n +\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n +\t// getComputedStyle returns percent when specified for top/left/bottom/right\n +\t// rather than make the css module depend on the offset module, we just check for it here\n +\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n +\t\tjQuery.each( [ "top", "left" ], function( i, prop ) {\n +\t\t\tjQuery.cssHooks[ prop ] = {\n +\t\t\t\tget: function( elem, computed ) {\n +\t\t\t\t\tif ( computed ) {\n +\t\t\t\t\t\tcomputed = curCSS( elem, prop );\n +\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n +\t\t\t\t\t\treturn rnumnonpx.test( computed ) ?\n +\t\t\t\t\t\t\tjQuery( elem ).position()[ prop ] + "px" :\n +\t\t\t\t\t\t\tcomputed;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t};\n +\t\t});\n +\t}\n +\n +});\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.hidden = function( elem ) {\n +\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");\n +\t};\n +\n +\tjQuery.expr.filters.visible = function( elem ) {\n +\t\treturn !jQuery.expr.filters.hidden( elem );\n +\t};\n +}\n +\n +// These hooks are used by animate to expand properties\n +jQuery.each({\n +\tmargin: "",\n +\tpadding: "",\n +\tborder: "Width"\n +}, function( prefix, suffix ) {\n +\tjQuery.cssHooks[ prefix + suffix ] = {\n +\t\texpand: function( value ) {\n +\t\t\tvar i = 0,\n +\t\t\t\texpanded = {},\n +\n +\t\t\t\t// assumes a single number if not a string\n +\t\t\t\tparts = typeof value === "string" ? value.split(" ") : [ value ];\n +\n +\t\t\tfor ( ; i < 4; i++ ) {\n +\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n +\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n +\t\t\t}\n +\n +\t\t\treturn expanded;\n +\t\t}\n +\t};\n +\n +\tif ( !rmargin.test( prefix ) ) {\n +\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n +\t}\n +});\n +var r20 = /%20/g,\n +\trbracket = /\\[\\]$/,\n +\trCRLF = /\\r?\\n/g,\n +\trsubmitterTypes = /^(?:submit|button|image|reset)$/i,\n +\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n +\n +jQuery.fn.extend({\n +\tserialize: function() {\n +\t\treturn jQuery.param( this.serializeArray() );\n +\t},\n +\tserializeArray: function() {\n +\t\treturn this.map(function(){\n +\t\t\t// Can add propHook for "elements" to filter or add form elements\n +\t\t\tvar elements = jQuery.prop( this, "elements" );\n +\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n +\t\t})\n +\t\t.filter(function(){\n +\t\t\tvar type = this.type;\n +\t\t\t// Use .is(":disabled") so that fieldset[disabled] works\n +\t\t\treturn this.name && !jQuery( this ).is( ":disabled" ) &&\n +\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n +\t\t\t\t( this.checked || !manipulation_rcheckableType.test( type ) );\n +\t\t})\n +\t\t.map(function( i, elem ){\n +\t\t\tvar val = jQuery( this ).val();\n +\n +\t\t\treturn val == null ?\n +\t\t\t\tnull :\n +\t\t\t\tjQuery.isArray( val ) ?\n +\t\t\t\t\tjQuery.map( val, function( val ){\n +\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t\t\t\t}) :\n +\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t}).get();\n +\t}\n +});\n +\n +//Serialize an array of form elements or a set of\n +//key/values into a query string\n +jQuery.param = function( a, traditional ) {\n +\tvar prefix,\n +\t\ts = [],\n +\t\tadd = function( key, value ) {\n +\t\t\t// If value is a function, invoke it and return its value\n +\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );\n +\t\t\ts[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );\n +\t\t};\n +\n +\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n +\tif ( traditional === undefined ) {\n +\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n +\t}\n +\n +\t// If an array was passed in, assume that it is an array of form elements.\n +\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n +\t\t// Serialize the form elements\n +\t\tjQuery.each( a, function() {\n +\t\t\tadd( this.name, this.value );\n +\t\t});\n +\n +\t} else {\n +\t\t// If traditional, encode the "old" way (the way 1.3.2 or older\n +\t\t// did it), otherwise encode params recursively.\n +\t\tfor ( prefix in a ) {\n +\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n +\t\t}\n +\t}\n +\n +\t// Return the resulting serialization\n +\treturn s.join( "&" ).replace( r20, "+" );\n +};\n +\n +function buildParams( prefix, obj, traditional, add ) {\n +\tvar name;\n +\n +\tif ( jQuery.isArray( obj ) ) {\n +\t\t// Serialize array item.\n +\t\tjQuery.each( obj, function( i, v ) {\n +\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n +\t\t\t\t// Treat each array item as a scalar.\n +\t\t\t\tadd( prefix, v );\n +\n +\t\t\t} else {\n +\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n +\t\t\t\tbuildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );\n +\t\t\t}\n +\t\t});\n +\n +\t} else if ( !traditional && jQuery.type( obj ) === "object" ) {\n +\t\t// Serialize object item.\n +\t\tfor ( name in obj ) {\n +\t\t\tbuildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );\n +\t\t}\n +\n +\t} else {\n +\t\t// Serialize scalar item.\n +\t\tadd( prefix, obj );\n +\t}\n +}\n +var\n +\t// Document location\n +\tajaxLocParts,\n +\tajaxLocation,\n +\t\n +\tajax_nonce = jQuery.now(),\n +\n +\tajax_rquery = /\\?/,\n +\trhash = /#.*$/,\n +\trts = /([?&])_=[^&]*/,\n +\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n +\t// #7653, #8125, #8152: local protocol detection\n +\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n +\trnoContent = /^(?:GET|HEAD)$/,\n +\trprotocol = /^\\/\\//,\n +\trurl = /^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n +\n +\t// Keep a copy of the old load method\n +\t_load = jQuery.fn.load,\n +\n +\t/* Prefilters\n +\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n +\t * 2) These are called:\n +\t * - BEFORE asking for a transport\n +\t * - AFTER param serialization (s.data is a string if s.processData is true)\n +\t * 3) key is the dataType\n +\t * 4) the catchall symbol "*" can be used\n +\t * 5) execution will start with transport dataType and THEN continue down to "*" if needed\n +\t */\n +\tprefilters = {},\n +\n +\t/* Transports bindings\n +\t * 1) key is the dataType\n +\t * 2) the catchall symbol "*" can be used\n +\t * 3) selection will start with transport dataType and THEN go to "*" if needed\n +\t */\n +\ttransports = {},\n +\n +\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n +\tallTypes = "*/".concat("*");\n +\n +// #8138, IE may throw an exception when accessing\n +// a field from window.location if document.domain has been set\n +try {\n +\tajaxLocation = location.href;\n +} catch( e ) {\n +\t// Use the href attribute of an A element\n +\t// since IE will modify it given document.location\n +\tajaxLocation = document.createElement( "a" );\n +\tajaxLocation.href = "";\n +\tajaxLocation = ajaxLocation.href;\n +}\n +\n +// Segment location into parts\n +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n +\n +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n +function addToPrefiltersOrTransports( structure ) {\n +\n +\t// dataTypeExpression is optional and defaults to "*"\n +\treturn function( dataTypeExpression, func ) {\n +\n +\t\tif ( typeof dataTypeExpression !== "string" ) {\n +\t\t\tfunc = dataTypeExpression;\n +\t\t\tdataTypeExpression = "*";\n +\t\t}\n +\n +\t\tvar dataType,\n +\t\t\ti = 0,\n +\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];\n +\n +\t\tif ( jQuery.isFunction( func ) ) {\n +\t\t\t// For each dataType in the dataTypeExpression\n +\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n +\t\t\t\t// Prepend if requested\n +\t\t\t\tif ( dataType[0] === "+" ) {\n +\t\t\t\t\tdataType = dataType.slice( 1 ) || "*";\n +\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n +\n +\t\t\t\t// Otherwise append\n +\t\t\t\t} else {\n +\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t};\n +}\n +\n +// Base inspection function for prefilters and transports\n +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n +\n +\tvar inspected = {},\n +\t\tseekingTransport = ( structure === transports );\n +\n +\tfunction inspect( dataType ) {\n +\t\tvar selected;\n +\t\tinspected[ dataType ] = true;\n +\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n +\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n +\t\t\tif( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n +\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n +\t\t\t\tinspect( dataTypeOrTransport );\n +\t\t\t\treturn false;\n +\t\t\t} else if ( seekingTransport ) {\n +\t\t\t\treturn !( selected = dataTypeOrTransport );\n +\t\t\t}\n +\t\t});\n +\t\treturn selected;\n +\t}\n +\n +\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );\n +}\n +\n +// A special extend for ajax options\n +// that takes "flat" options (not to be deep extended)\n +// Fixes #9887\n +function ajaxExtend( target, src ) {\n +\tvar key, deep,\n +\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n +\n +\tfor ( key in src ) {\n +\t\tif ( src[ key ] !== undefined ) {\n +\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n +\t\t}\n +\t}\n +\tif ( deep ) {\n +\t\tjQuery.extend( true, target, deep );\n +\t}\n +\n +\treturn target;\n +}\n +\n +jQuery.fn.load = function( url, params, callback ) {\n +\tif ( typeof url !== "string" && _load ) {\n +\t\treturn _load.apply( this, arguments );\n +\t}\n +\n +\tvar selector, type, response,\n +\t\tself = this,\n +\t\toff = url.indexOf(" ");\n +\n +\tif ( off >= 0 ) {\n +\t\tselector = url.slice( off, url.length );\n +\t\turl = url.slice( 0, off );\n +\t}\n +\n +\t// If it\'s a function\n +\tif ( jQuery.isFunction( params ) ) {\n +\n +\t\t// We assume that it\'s the callback\n +\t\tcallback = params;\n +\t\tparams = undefined;\n +\n +\t// Otherwise, build a param string\n +\t} else if ( params && typeof params === "object" ) {\n +\t\ttype = "POST";\n +\t}\n +\n +\t// If we have elements to modify, make the request\n +\tif ( self.length > 0 ) {\n +\t\tjQuery.ajax({\n +\t\t\turl: url,\n +\n +\t\t\t// if "type" variable is undefined, then "GET" method will be used\n +\t\t\ttype: type,\n +\t\t\tdataType: "html",\n +\t\t\tdata: params\n +\t\t}).done(function( responseText ) {\n +\n +\t\t\t// Save response for use in complete callback\n +\t\t\tresponse = arguments;\n +\n +\t\t\tself.html( selector ?\n +\n +\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n +\t\t\t\t// Exclude scripts to avoid IE \'Permission Denied\' errors\n +\t\t\t\tjQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n +\n +\t\t\t\t// Otherwise use the full result\n +\t\t\t\tresponseText );\n +\n +\t\t}).complete( callback && function( jqXHR, status ) {\n +\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n +\t\t});\n +\t}\n +\n +\treturn this;\n +};\n +\n +// Attach a bunch of functions for handling common AJAX events\n +jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){\n +\tjQuery.fn[ type ] = function( fn ){\n +\t\treturn this.on( type, fn );\n +\t};\n +});\n +\n +jQuery.each( [ "get", "post" ], function( i, method ) {\n +\tjQuery[ method ] = function( url, data, callback, type ) {\n +\t\t// shift arguments if data argument was omitted\n +\t\tif ( jQuery.isFunction( data ) ) {\n +\t\t\ttype = type || callback;\n +\t\t\tcallback = data;\n +\t\t\tdata = undefined;\n +\t\t}\n +\n +\t\treturn jQuery.ajax({\n +\t\t\turl: url,\n +\t\t\ttype: method,\n +\t\t\tdataType: type,\n +\t\t\tdata: data,\n +\t\t\tsuccess: callback\n +\t\t});\n +\t};\n +});\n +\n +jQuery.extend({\n +\n +\t// Counter for holding the number of active queries\n +\tactive: 0,\n +\n +\t// Last-Modified header cache for next request\n +\tlastModified: {},\n +\tetag: {},\n +\n +\tajaxSettings: {\n +\t\turl: ajaxLocation,\n +\t\ttype: "GET",\n +\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n +\t\tglobal: true,\n +\t\tprocessData: true,\n +\t\tasync: true,\n +\t\tcontentType: "application/x-www-form-urlencoded; charset=UTF-8",\n +\t\t/*\n +\t\ttimeout: 0,\n +\t\tdata: null,\n +\t\tdataType: null,\n +\t\tusername: null,\n +\t\tpassword: null,\n +\t\tcache: null,\n +\t\tthrows: false,\n +\t\ttraditional: false,\n +\t\theaders: {},\n +\t\t*/\n +\n +\t\taccepts: {\n +\t\t\t"*": allTypes,\n +\t\t\ttext: "text/plain",\n +\t\t\thtml: "text/html",\n +\t\t\txml: "application/xml, text/xml",\n +\t\t\tjson: "application/json, text/javascript"\n +\t\t},\n +\n +\t\tcontents: {\n +\t\t\txml: /xml/,\n +\t\t\thtml: /html/,\n +\t\t\tjson: /json/\n +\t\t},\n +\n +\t\tresponseFields: {\n +\t\t\txml: "responseXML",\n +\t\t\ttext: "responseText"\n +\t\t},\n +\n +\t\t// Data converters\n +\t\t// Keys separate source (or catchall "*") and destination types with a single space\n +\t\tconverters: {\n +\n +\t\t\t// Convert anything to text\n +\t\t\t"* text": window.String,\n +\n +\t\t\t// Text to html (true = no transformation)\n +\t\t\t"text html": true,\n +\n +\t\t\t// Evaluate text as a json expression\n +\t\t\t"text json": jQuery.parseJSON,\n +\n +\t\t\t// Parse text as xml\n +\t\t\t"text xml": jQuery.parseXML\n +\t\t},\n +\n +\t\t// For options that shouldn\'t be deep extended:\n +\t\t// you can add your own custom options here if\n +\t\t// and when you create one that shouldn\'t be\n +\t\t// deep extended (see ajaxExtend)\n +\t\tflatOptions: {\n +\t\t\turl: true,\n +\t\t\tcontext: true\n +\t\t}\n +\t},\n +\n +\t// Creates a full fledged settings object into target\n +\t// with both ajaxSettings and settings fields.\n +\t// If target is omitted, writes into ajaxSettings.\n +\tajaxSetup: function( target, settings ) {\n +\t\treturn settings ?\n +\n +\t\t\t// Building a settings object\n +\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n +\n +\t\t\t// Extending ajaxSettings\n +\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n +\t},\n +\n +\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n +\tajaxTransport: addToPrefiltersOrTransports( transports ),\n +\n +\t// Main method\n +\tajax: function( url, options ) {\n +\n +\t\t// If url is an object, simulate pre-1.5 signature\n +\t\tif ( typeof url === "object" ) {\n +\t\t\toptions = url;\n +\t\t\turl = undefined;\n +\t\t}\n +\n +\t\t// Force options to be an object\n +\t\toptions = options || {};\n +\n +\t\tvar transport,\n +\t\t\t// URL without anti-cache param\n +\t\t\tcacheURL,\n +\t\t\t// Response headers\n +\t\t\tresponseHeadersString,\n +\t\t\tresponseHeaders,\n +\t\t\t// timeout handle\n +\t\t\ttimeoutTimer,\n +\t\t\t// Cross-domain detection vars\n +\t\t\tparts,\n +\t\t\t// To know if global events are to be dispatched\n +\t\t\tfireGlobals,\n +\t\t\t// Loop variable\n +\t\t\ti,\n +\t\t\t// Create the final options object\n +\t\t\ts = jQuery.ajaxSetup( {}, options ),\n +\t\t\t// Callbacks context\n +\t\t\tcallbackContext = s.context || s,\n +\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n +\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n +\t\t\t\tjQuery( callbackContext ) :\n +\t\t\t\tjQuery.event,\n +\t\t\t// Deferreds\n +\t\t\tdeferred = jQuery.Deferred(),\n +\t\t\tcompleteDeferred = jQuery.Callbacks("once memory"),\n +\t\t\t// Status-dependent callbacks\n +\t\t\tstatusCode = s.statusCode || {},\n +\t\t\t// Headers (they are sent all at once)\n +\t\t\trequestHeaders = {},\n +\t\t\trequestHeadersNames = {},\n +\t\t\t// The jqXHR state\n +\t\t\tstate = 0,\n +\t\t\t// Default abort message\n +\t\t\tstrAbort = "canceled",\n +\t\t\t// Fake xhr\n +\t\t\tjqXHR = {\n +\t\t\t\treadyState: 0,\n +\n +\t\t\t\t// Builds headers hashtable if needed\n +\t\t\t\tgetResponseHeader: function( key ) {\n +\t\t\t\t\tvar match;\n +\t\t\t\t\tif ( state === 2 ) {\n +\t\t\t\t\t\tif ( !responseHeaders ) {\n +\t\t\t\t\t\t\tresponseHeaders = {};\n +\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n +\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n +\t\t\t\t\t}\n +\t\t\t\t\treturn match == null ? null : match;\n +\t\t\t\t},\n +\n +\t\t\t\t// Raw string\n +\t\t\t\tgetAllResponseHeaders: function() {\n +\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n +\t\t\t\t},\n +\n +\t\t\t\t// Caches the header\n +\t\t\t\tsetRequestHeader: function( name, value ) {\n +\t\t\t\t\tvar lname = name.toLowerCase();\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n +\t\t\t\t\t\trequestHeaders[ name ] = value;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Overrides response content-type header\n +\t\t\t\toverrideMimeType: function( type ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\ts.mimeType = type;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Status-dependent callbacks\n +\t\t\t\tstatusCode: function( map ) {\n +\t\t\t\t\tvar code;\n +\t\t\t\t\tif ( map ) {\n +\t\t\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\t\t\tfor ( code in map ) {\n +\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n +\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t// Execute the appropriate callbacks\n +\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Cancel the request\n +\t\t\t\tabort: function( statusText ) {\n +\t\t\t\t\tvar finalText = statusText || strAbort;\n +\t\t\t\t\tif ( transport ) {\n +\t\t\t\t\t\ttransport.abort( finalText );\n +\t\t\t\t\t}\n +\t\t\t\t\tdone( 0, finalText );\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\t// Attach deferreds\n +\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n +\t\tjqXHR.success = jqXHR.done;\n +\t\tjqXHR.error = jqXHR.fail;\n +\n +\t\t// Remove hash character (#7531: and string promotion)\n +\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n +\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n +\t\t// We also use the url parameter if available\n +\t\ts.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );\n +\n +\t\t// Alias method option to type as per ticket #12004\n +\t\ts.type = options.method || options.type || s.method || s.type;\n +\n +\t\t// Extract dataTypes list\n +\t\ts.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];\n +\n +\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n +\t\tif ( s.crossDomain == null ) {\n +\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n +\t\t\ts.crossDomain = !!( parts &&\n +\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n +\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=\n +\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )\n +\t\t\t);\n +\t\t}\n +\n +\t\t// Convert data if not already a string\n +\t\tif ( s.data && s.processData && typeof s.data !== "string" ) {\n +\t\t\ts.data = jQuery.param( s.data, s.traditional );\n +\t\t}\n +\n +\t\t// Apply prefilters\n +\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n +\n +\t\t// If request was aborted inside a prefilter, stop there\n +\t\tif ( state === 2 ) {\n +\t\t\treturn jqXHR;\n +\t\t}\n +\n +\t\t// We can fire global events as of now if asked to\n +\t\tfireGlobals = s.global;\n +\n +\t\t// Watch for a new set of requests\n +\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n +\t\t\tjQuery.event.trigger("ajaxStart");\n +\t\t}\n +\n +\t\t// Uppercase the type\n +\t\ts.type = s.type.toUpperCase();\n +\n +\t\t// Determine if request has content\n +\t\ts.hasContent = !rnoContent.test( s.type );\n +\n +\t\t// Save the URL in case we\'re toying with the If-Modified-Since\n +\t\t// and/or If-None-Match header later on\n +\t\tcacheURL = s.url;\n +\n +\t\t// More options handling for requests with no content\n +\t\tif ( !s.hasContent ) {\n +\n +\t\t\t// If data is available, append data to url\n +\t\t\tif ( s.data ) {\n +\t\t\t\tcacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );\n +\t\t\t\t// #9682: remove data so that it\'s not used in an eventual retry\n +\t\t\t\tdelete s.data;\n +\t\t\t}\n +\n +\t\t\t// Add anti-cache in url if needed\n +\t\t\tif ( s.cache === false ) {\n +\t\t\t\ts.url = rts.test( cacheURL ) ?\n +\n +\t\t\t\t\t// If there is already a \'_\' parameter, set its value\n +\t\t\t\t\tcacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :\n +\n +\t\t\t\t\t// Otherwise add one to the end\n +\t\t\t\t\tcacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\tif ( s.ifModified ) {\n +\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );\n +\t\t\t}\n +\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the correct header, if data is being sent\n +\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n +\t\t\tjqXHR.setRequestHeader( "Content-Type", s.contentType );\n +\t\t}\n +\n +\t\t// Set the Accepts header for the server, depending on the dataType\n +\t\tjqXHR.setRequestHeader(\n +\t\t\t"Accept",\n +\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n +\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :\n +\t\t\t\ts.accepts[ "*" ]\n +\t\t);\n +\n +\t\t// Check for headers option\n +\t\tfor ( i in s.headers ) {\n +\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n +\t\t}\n +\n +\t\t// Allow custom headers/mimetypes and early abort\n +\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n +\t\t\t// Abort if not done already and return\n +\t\t\treturn jqXHR.abort();\n +\t\t}\n +\n +\t\t// aborting is no longer a cancellation\n +\t\tstrAbort = "abort";\n +\n +\t\t// Install callbacks on deferreds\n +\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n +\t\t\tjqXHR[ i ]( s[ i ] );\n +\t\t}\n +\n +\t\t// Get transport\n +\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n +\n +\t\t// If no transport, we auto-abort\n +\t\tif ( !transport ) {\n +\t\t\tdone( -1, "No Transport" );\n +\t\t} else {\n +\t\t\tjqXHR.readyState = 1;\n +\n +\t\t\t// Send global event\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );\n +\t\t\t}\n +\t\t\t// Timeout\n +\t\t\tif ( s.async && s.timeout > 0 ) {\n +\t\t\t\ttimeoutTimer = setTimeout(function() {\n +\t\t\t\t\tjqXHR.abort("timeout");\n +\t\t\t\t}, s.timeout );\n +\t\t\t}\n +\n +\t\t\ttry {\n +\t\t\t\tstate = 1;\n +\t\t\t\ttransport.send( requestHeaders, done );\n +\t\t\t} catch ( e ) {\n +\t\t\t\t// Propagate exception as error if not done\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tdone( -1, e );\n +\t\t\t\t// Simply rethrow otherwise\n +\t\t\t\t} else {\n +\t\t\t\t\tthrow e;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Callback for when everything is done\n +\t\tfunction done( status, nativeStatusText, responses, headers ) {\n +\t\t\tvar isSuccess, success, error, response, modified,\n +\t\t\t\tstatusText = nativeStatusText;\n +\n +\t\t\t// Called once\n +\t\t\tif ( state === 2 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// State is "done" now\n +\t\t\tstate = 2;\n +\n +\t\t\t// Clear timeout if it exists\n +\t\t\tif ( timeoutTimer ) {\n +\t\t\t\tclearTimeout( timeoutTimer );\n +\t\t\t}\n +\n +\t\t\t// Dereference transport for early garbage collection\n +\t\t\t// (no matter how long the jqXHR object will be used)\n +\t\t\ttransport = undefined;\n +\n +\t\t\t// Cache response headers\n +\t\t\tresponseHeadersString = headers || "";\n +\n +\t\t\t// Set readyState\n +\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n +\n +\t\t\t// Get response data\n +\t\t\tif ( responses ) {\n +\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n +\t\t\t}\n +\n +\t\t\t// If successful, handle type chaining\n +\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n +\n +\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\t\t\tif ( s.ifModified ) {\n +\t\t\t\t\tmodified = jqXHR.getResponseHeader("Last-Modified");\n +\t\t\t\t\tif ( modified ) {\n +\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n +\t\t\t\t\t}\n +\t\t\t\t\tmodified = jqXHR.getResponseHeader("etag");\n +\t\t\t\t\tif ( modified ) {\n +\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// If not modified\n +\t\t\t\tif ( status === 304 ) {\n +\t\t\t\t\tisSuccess = true;\n +\t\t\t\t\tstatusText = "notmodified";\n +\n +\t\t\t\t// If we have data\n +\t\t\t\t} else {\n +\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n +\t\t\t\t\tstatusText = isSuccess.state;\n +\t\t\t\t\tsuccess = isSuccess.data;\n +\t\t\t\t\terror = isSuccess.error;\n +\t\t\t\t\tisSuccess = !error;\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\t// We extract error from statusText\n +\t\t\t\t// then normalize statusText and status for non-aborts\n +\t\t\t\terror = statusText;\n +\t\t\t\tif ( status || !statusText ) {\n +\t\t\t\t\tstatusText = "error";\n +\t\t\t\t\tif ( status < 0 ) {\n +\t\t\t\t\t\tstatus = 0;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set data for the fake xhr object\n +\t\t\tjqXHR.status = status;\n +\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + "";\n +\n +\t\t\t// Success/Error\n +\t\t\tif ( isSuccess ) {\n +\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n +\t\t\t} else {\n +\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n +\t\t\t}\n +\n +\t\t\t// Status-dependent callbacks\n +\t\t\tjqXHR.statusCode( statusCode );\n +\t\t\tstatusCode = undefined;\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",\n +\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n +\t\t\t}\n +\n +\t\t\t// Complete\n +\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );\n +\t\t\t\t// Handle the global AJAX counter\n +\t\t\t\tif ( !( --jQuery.active ) ) {\n +\t\t\t\t\tjQuery.event.trigger("ajaxStop");\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn jqXHR;\n +\t},\n +\n +\tgetScript: function( url, callback ) {\n +\t\treturn jQuery.get( url, undefined, callback, "script" );\n +\t},\n +\n +\tgetJSON: function( url, data, callback ) {\n +\t\treturn jQuery.get( url, data, callback, "json" );\n +\t}\n +});\n +\n +/* Handles responses to an ajax request:\n + * - sets all responseXXX fields accordingly\n + * - finds the right dataType (mediates between content-type and expected dataType)\n + * - returns the corresponding response\n + */\n +function ajaxHandleResponses( s, jqXHR, responses ) {\n +\n +\tvar ct, type, finalDataType, firstDataType,\n +\t\tcontents = s.contents,\n +\t\tdataTypes = s.dataTypes,\n +\t\tresponseFields = s.responseFields;\n +\n +\t// Fill responseXXX fields\n +\tfor ( type in responseFields ) {\n +\t\tif ( type in responses ) {\n +\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n +\t\t}\n +\t}\n +\n +\t// Remove auto dataType and get content-type in the process\n +\twhile( dataTypes[ 0 ] === "*" ) {\n +\t\tdataTypes.shift();\n +\t\tif ( ct === undefined ) {\n +\t\t\tct = s.mimeType || jqXHR.getResponseHeader("Content-Type");\n +\t\t}\n +\t}\n +\n +\t// Check if we\'re dealing with a known content-type\n +\tif ( ct ) {\n +\t\tfor ( type in contents ) {\n +\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n +\t\t\t\tdataTypes.unshift( type );\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Check to see if we have a response for the expected dataType\n +\tif ( dataTypes[ 0 ] in responses ) {\n +\t\tfinalDataType = dataTypes[ 0 ];\n +\t} else {\n +\t\t// Try convertible dataTypes\n +\t\tfor ( type in responses ) {\n +\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {\n +\t\t\t\tfinalDataType = type;\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t\tif ( !firstDataType ) {\n +\t\t\t\tfirstDataType = type;\n +\t\t\t}\n +\t\t}\n +\t\t// Or just use first one\n +\t\tfinalDataType = finalDataType || firstDataType;\n +\t}\n +\n +\t// If we found a dataType\n +\t// We add the dataType to the list if needed\n +\t// and return the corresponding response\n +\tif ( finalDataType ) {\n +\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n +\t\t\tdataTypes.unshift( finalDataType );\n +\t\t}\n +\t\treturn responses[ finalDataType ];\n +\t}\n +}\n +\n +// Chain conversions given the request and the original response\n +function ajaxConvert( s, response ) {\n +\n +\tvar conv, conv2, current, tmp,\n +\t\tconverters = {},\n +\t\ti = 0,\n +\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n +\t\tdataTypes = s.dataTypes.slice(),\n +\t\tprev = dataTypes[ 0 ];\n +\n +\t// Apply the dataFilter if provided\n +\tif ( s.dataFilter ) {\n +\t\tresponse = s.dataFilter( response, s.dataType );\n +\t}\n +\n +\t// Create converters map with lowercased keys\n +\tif ( dataTypes[ 1 ] ) {\n +\t\tfor ( conv in s.converters ) {\n +\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n +\t\t}\n +\t}\n +\n +\t// Convert to each sequential dataType, tolerating list modification\n +\tfor ( ; (current = dataTypes[++i]); ) {\n +\n +\t\t// There\'s only work to do if current dataType is non-auto\n +\t\tif ( current !== "*" ) {\n +\n +\t\t\t// Convert response if prev dataType is non-auto and differs from current\n +\t\t\tif ( prev !== "*" && prev !== current ) {\n +\n +\t\t\t\t// Seek a direct converter\n +\t\t\t\tconv = converters[ prev + " " + current ] || converters[ "* " + current ];\n +\n +\t\t\t\t// If none found, seek a pair\n +\t\t\t\tif ( !conv ) {\n +\t\t\t\t\tfor ( conv2 in converters ) {\n +\n +\t\t\t\t\t\t// If conv2 outputs current\n +\t\t\t\t\t\ttmp = conv2.split(" ");\n +\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n +\n +\t\t\t\t\t\t\t// If prev can be converted to accepted input\n +\t\t\t\t\t\t\tconv = converters[ prev + " " + tmp[ 0 ] ] ||\n +\t\t\t\t\t\t\t\tconverters[ "* " + tmp[ 0 ] ];\n +\t\t\t\t\t\t\tif ( conv ) {\n +\t\t\t\t\t\t\t\t// Condense equivalence converters\n +\t\t\t\t\t\t\t\tif ( conv === true ) {\n +\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n +\n +\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n +\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n +\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n +\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Apply converter (if not an equivalence)\n +\t\t\t\tif ( conv !== true ) {\n +\n +\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n +\t\t\t\t\tif ( conv && s["throws"] ) {\n +\t\t\t\t\t\tresponse = conv( response );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\tresponse = conv( response );\n +\t\t\t\t\t\t} catch ( e ) {\n +\t\t\t\t\t\t\treturn { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Update prev for next iteration\n +\t\t\tprev = current;\n +\t\t}\n +\t}\n +\n +\treturn { state: "success", data: response };\n +}\n +// Install script dataType\n +jQuery.ajaxSetup({\n +\taccepts: {\n +\t\tscript: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"\n +\t},\n +\tcontents: {\n +\t\tscript: /(?:java|ecma)script/\n +\t},\n +\tconverters: {\n +\t\t"text script": function( text ) {\n +\t\t\tjQuery.globalEval( text );\n +\t\t\treturn text;\n +\t\t}\n +\t}\n +});\n +\n +// Handle cache\'s special case and global\n +jQuery.ajaxPrefilter( "script", function( s ) {\n +\tif ( s.cache === undefined ) {\n +\t\ts.cache = false;\n +\t}\n +\tif ( s.crossDomain ) {\n +\t\ts.type = "GET";\n +\t\ts.global = false;\n +\t}\n +});\n +\n +// Bind script tag hack transport\n +jQuery.ajaxTransport( "script", function(s) {\n +\n +\t// This transport only deals with cross domain requests\n +\tif ( s.crossDomain ) {\n +\n +\t\tvar script,\n +\t\t\thead = document.head || jQuery("head")[0] || document.documentElement;\n +\n +\t\treturn {\n +\n +\t\t\tsend: function( _, callback ) {\n +\n +\t\t\t\tscript = document.createElement("script");\n +\n +\t\t\t\tscript.async = true;\n +\n +\t\t\t\tif ( s.scriptCharset ) {\n +\t\t\t\t\tscript.charset = s.scriptCharset;\n +\t\t\t\t}\n +\n +\t\t\t\tscript.src = s.url;\n +\n +\t\t\t\t// Attach handlers for all browsers\n +\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n +\n +\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n +\n +\t\t\t\t\t\t// Handle memory leak in IE\n +\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n +\n +\t\t\t\t\t\t// Remove the script\n +\t\t\t\t\t\tif ( script.parentNode ) {\n +\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Dereference the script\n +\t\t\t\t\t\tscript = null;\n +\n +\t\t\t\t\t\t// Callback if not abort\n +\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\tcallback( 200, "success" );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\n +\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n +\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n +\t\t\t\thead.insertBefore( script, head.firstChild );\n +\t\t\t},\n +\n +\t\t\tabort: function() {\n +\t\t\t\tif ( script ) {\n +\t\t\t\t\tscript.onload( undefined, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t}\n +});\n +var oldCallbacks = [],\n +\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n +\n +// Default jsonp settings\n +jQuery.ajaxSetup({\n +\tjsonp: "callback",\n +\tjsonpCallback: function() {\n +\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );\n +\t\tthis[ callback ] = true;\n +\t\treturn callback;\n +\t}\n +});\n +\n +// Detect, normalize options and install callbacks for jsonp requests\n +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {\n +\n +\tvar callbackName, overwritten, responseContainer,\n +\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n +\t\t\t"url" :\n +\t\t\ttypeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"\n +\t\t);\n +\n +\t// Handle iff the expected data type is "jsonp" or we have a parameter to set\n +\tif ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {\n +\n +\t\t// Get callback name, remembering preexisting value associated with it\n +\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n +\t\t\ts.jsonpCallback() :\n +\t\t\ts.jsonpCallback;\n +\n +\t\t// Insert callback into url or form data\n +\t\tif ( jsonProp ) {\n +\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );\n +\t\t} else if ( s.jsonp !== false ) {\n +\t\t\ts.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;\n +\t\t}\n +\n +\t\t// Use data converter to retrieve json after script execution\n +\t\ts.converters["script json"] = function() {\n +\t\t\tif ( !responseContainer ) {\n +\t\t\t\tjQuery.error( callbackName + " was not called" );\n +\t\t\t}\n +\t\t\treturn responseContainer[ 0 ];\n +\t\t};\n +\n +\t\t// force json dataType\n +\t\ts.dataTypes[ 0 ] = "json";\n +\n +\t\t// Install callback\n +\t\toverwritten = window[ callbackName ];\n +\t\twindow[ callbackName ] = function() {\n +\t\t\tresponseContainer = arguments;\n +\t\t};\n +\n +\t\t// Clean-up function (fires after converters)\n +\t\tjqXHR.always(function() {\n +\t\t\t// Restore preexisting value\n +\t\t\twindow[ callbackName ] = overwritten;\n +\n +\t\t\t// Save back as free\n +\t\t\tif ( s[ callbackName ] ) {\n +\t\t\t\t// make sure that re-using the options doesn\'t screw things around\n +\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n +\n +\t\t\t\t// save the callback name for future use\n +\t\t\t\toldCallbacks.push( callbackName );\n +\t\t\t}\n +\n +\t\t\t// Call if it was a function and we have a response\n +\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n +\t\t\t\toverwritten( responseContainer[ 0 ] );\n +\t\t\t}\n +\n +\t\t\tresponseContainer = overwritten = undefined;\n +\t\t});\n +\n +\t\t// Delegate to script\n +\t\treturn "script";\n +\t}\n +});\n +var xhrCallbacks, xhrSupported,\n +\txhrId = 0,\n +\t// #5280: Internet Explorer will keep connections alive if we don\'t abort on unload\n +\txhrOnUnloadAbort = window.ActiveXObject && function() {\n +\t\t// Abort all pending requests\n +\t\tvar key;\n +\t\tfor ( key in xhrCallbacks ) {\n +\t\t\txhrCallbacks[ key ]( undefined, true );\n +\t\t}\n +\t};\n +\n +// Functions to create xhrs\n +function createStandardXHR() {\n +\ttry {\n +\t\treturn new window.XMLHttpRequest();\n +\t} catch( e ) {}\n +}\n +\n +function createActiveXHR() {\n +\ttry {\n +\t\treturn new window.ActiveXObject("Microsoft.XMLHTTP");\n +\t} catch( e ) {}\n +}\n +\n +// Create the request object\n +// (This is still attached to ajaxSettings for backward compatibility)\n +jQuery.ajaxSettings.xhr = window.ActiveXObject ?\n +\t/* Microsoft failed to properly\n +\t * implement the XMLHttpRequest in IE7 (can\'t request local files),\n +\t * so we use the ActiveXObject when it is available\n +\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n +\t * we need a fallback.\n +\t */\n +\tfunction() {\n +\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n +\t} :\n +\t// For all other browsers, use the standard XMLHttpRequest object\n +\tcreateStandardXHR;\n +\n +// Determine support properties\n +xhrSupported = jQuery.ajaxSettings.xhr();\n +jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );\n +xhrSupported = jQuery.support.ajax = !!xhrSupported;\n +\n +// Create transport if the browser can provide an xhr\n +if ( xhrSupported ) {\n +\n +\tjQuery.ajaxTransport(function( s ) {\n +\t\t// Cross domain only allowed if supported through XMLHttpRequest\n +\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n +\n +\t\t\tvar callback;\n +\n +\t\t\treturn {\n +\t\t\t\tsend: function( headers, complete ) {\n +\n +\t\t\t\t\t// Get a new xhr\n +\t\t\t\t\tvar handle, i,\n +\t\t\t\t\t\txhr = s.xhr();\n +\n +\t\t\t\t\t// Open the socket\n +\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n +\t\t\t\t\tif ( s.username ) {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Apply custom fields if provided\n +\t\t\t\t\tif ( s.xhrFields ) {\n +\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n +\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Override mime type if needed\n +\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n +\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// X-Requested-With header\n +\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n +\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n +\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n +\t\t\t\t\t// For same-domain requests, won\'t change header if already provided.\n +\t\t\t\t\tif ( !s.crossDomain && !headers["X-Requested-With"] ) {\n +\t\t\t\t\t\theaders["X-Requested-With"] = "XMLHttpRequest";\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tfor ( i in headers ) {\n +\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} catch( err ) {}\n +\n +\t\t\t\t\t// Do send the request\n +\t\t\t\t\t// This may raise an exception which is actually\n +\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n +\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n +\n +\t\t\t\t\t// Listener\n +\t\t\t\t\tcallback = function( _, isAbort ) {\n +\n +\t\t\t\t\t\tvar status,\n +\t\t\t\t\t\t\tstatusText,\n +\t\t\t\t\t\t\tresponseHeaders,\n +\t\t\t\t\t\t\tresponses,\n +\t\t\t\t\t\t\txml;\n +\n +\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n +\t\t\t\t\t\t// of an xhr when a network error occurred\n +\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n +\t\t\t\t\t\ttry {\n +\n +\t\t\t\t\t\t\t// Was never called and is aborted or complete\n +\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n +\n +\t\t\t\t\t\t\t\t// Only called once\n +\t\t\t\t\t\t\t\tcallback = undefined;\n +\n +\t\t\t\t\t\t\t\t// Do not keep as active anymore\n +\t\t\t\t\t\t\t\tif ( handle ) {\n +\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n +\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t// If it\'s an abort\n +\t\t\t\t\t\t\t\tif ( isAbort ) {\n +\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n +\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n +\t\t\t\t\t\t\t\t\t\txhr.abort();\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tresponses = {};\n +\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n +\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n +\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n +\n +\t\t\t\t\t\t\t\t\t// Construct response list\n +\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n +\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n +\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n +\t\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === "string" ) {\n +\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n +\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n +\t\t\t\t\t\t\t\t\t} catch( e ) {\n +\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n +\t\t\t\t\t\t\t\t\t\tstatusText = "";\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n +\n +\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n +\t\t\t\t\t\t\t\t\t// (success with no data won\'t get notified, that\'s the best we\n +\t\t\t\t\t\t\t\t\t// can do given current implementations)\n +\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n +\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n +\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = 204;\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t} catch( firefoxAccessException ) {\n +\t\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Call complete if needed\n +\t\t\t\t\t\tif ( responses ) {\n +\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t};\n +\n +\t\t\t\t\tif ( !s.async ) {\n +\t\t\t\t\t\t// if we\'re in sync mode we fire the callback\n +\t\t\t\t\t\tcallback();\n +\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n +\t\t\t\t\t\t// (IE6 & IE7) if it\'s in cache and has been\n +\t\t\t\t\t\t// retrieved directly we need to fire the callback\n +\t\t\t\t\t\tsetTimeout( callback );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\thandle = ++xhrId;\n +\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n +\t\t\t\t\t\t\t// and attach the unload handler\n +\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n +\t\t\t\t\t\t\t\txhrCallbacks = {};\n +\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n +\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\txhr.onreadystatechange = callback;\n +\t\t\t\t\t}\n +\t\t\t\t},\n +\n +\t\t\t\tabort: function() {\n +\t\t\t\t\tif ( callback ) {\n +\t\t\t\t\t\tcallback( undefined, true );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t});\n +}\n +var fxNow, timerId,\n +\trfxtypes = /^(?:toggle|show|hide)$/,\n +\trfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),\n +\trrun = /queueHooks$/,\n +\tanimationPrefilters = [ defaultPrefilter ],\n +\ttweeners = {\n +\t\t"*": [function( prop, value ) {\n +\t\t\tvar end, unit,\n +\t\t\t\ttween = this.createTween( prop, value ),\n +\t\t\t\tparts = rfxnum.exec( value ),\n +\t\t\t\ttarget = tween.cur(),\n +\t\t\t\tstart = +target || 0,\n +\t\t\t\tscale = 1,\n +\t\t\t\tmaxIterations = 20;\n +\n +\t\t\tif ( parts ) {\n +\t\t\t\tend = +parts[2];\n +\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );\n +\n +\t\t\t\t// We need to compute starting value\n +\t\t\t\tif ( unit !== "px" && start ) {\n +\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n +\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n +\t\t\t\t\t// Fallback to end or a simple constant\n +\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n +\n +\t\t\t\t\tdo {\n +\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n +\t\t\t\t\t\t// Use a string for doubling factor so we don\'t accidentally see scale as unchanged below\n +\t\t\t\t\t\tscale = scale || ".5";\n +\n +\t\t\t\t\t\t// Adjust and apply\n +\t\t\t\t\t\tstart = start / scale;\n +\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n +\n +\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n +\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we\'ve just had enough\n +\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n +\t\t\t\t}\n +\n +\t\t\t\ttween.unit = unit;\n +\t\t\t\ttween.start = start;\n +\t\t\t\t// If a +=/-= token was provided, we\'re doing a relative animation\n +\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n +\t\t\t}\n +\t\t\treturn tween;\n +\t\t}]\n +\t};\n +\n +// Animations created synchronously will run synchronously\n +function createFxNow() {\n +\tsetTimeout(function() {\n +\t\tfxNow = undefined;\n +\t});\n +\treturn ( fxNow = jQuery.now() );\n +}\n +\n +function createTweens( animation, props ) {\n +\tjQuery.each( props, function( prop, value ) {\n +\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),\n +\t\t\tindex = 0,\n +\t\t\tlength = collection.length;\n +\t\tfor ( ; index < length; index++ ) {\n +\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n +\n +\t\t\t\t// we\'re done with this property\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t}\n +\t});\n +}\n +\n +function Animation( elem, properties, options ) {\n +\tvar result,\n +\t\tstopped,\n +\t\tindex = 0,\n +\t\tlength = animationPrefilters.length,\n +\t\tdeferred = jQuery.Deferred().always( function() {\n +\t\t\t// don\'t match elem in the :animated selector\n +\t\t\tdelete tick.elem;\n +\t\t}),\n +\t\ttick = function() {\n +\t\t\tif ( stopped ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\tvar currentTime = fxNow || createFxNow(),\n +\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n +\t\t\t\t// archaic crash bug won\'t allow us to use 1 - ( 0.5 || 0 ) (#12497)\n +\t\t\t\ttemp = remaining / animation.duration || 0,\n +\t\t\t\tpercent = 1 - temp,\n +\t\t\t\tindex = 0,\n +\t\t\t\tlength = animation.tweens.length;\n +\n +\t\t\tfor ( ; index < length ; index++ ) {\n +\t\t\t\tanimation.tweens[ index ].run( percent );\n +\t\t\t}\n +\n +\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n +\n +\t\t\tif ( percent < 1 && length ) {\n +\t\t\t\treturn remaining;\n +\t\t\t} else {\n +\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t},\n +\t\tanimation = deferred.promise({\n +\t\t\telem: elem,\n +\t\t\tprops: jQuery.extend( {}, properties ),\n +\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n +\t\t\toriginalProperties: properties,\n +\t\t\toriginalOptions: options,\n +\t\t\tstartTime: fxNow || createFxNow(),\n +\t\t\tduration: options.duration,\n +\t\t\ttweens: [],\n +\t\t\tcreateTween: function( prop, end ) {\n +\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n +\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n +\t\t\t\tanimation.tweens.push( tween );\n +\t\t\t\treturn tween;\n +\t\t\t},\n +\t\t\tstop: function( gotoEnd ) {\n +\t\t\t\tvar index = 0,\n +\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n +\t\t\t\t\t// otherwise we skip this part\n +\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n +\t\t\t\tif ( stopped ) {\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\t\t\t\tstopped = true;\n +\t\t\t\tfor ( ; index < length ; index++ ) {\n +\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n +\t\t\t\t}\n +\n +\t\t\t\t// resolve when we played the last frame\n +\t\t\t\t// otherwise, reject\n +\t\t\t\tif ( gotoEnd ) {\n +\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n +\t\t\t\t} else {\n +\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t}\n +\t\t}),\n +\t\tprops = animation.props;\n +\n +\tpropFilter( props, animation.opts.specialEasing );\n +\n +\tfor ( ; index < length ; index++ ) {\n +\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n +\t\tif ( result ) {\n +\t\t\treturn result;\n +\t\t}\n +\t}\n +\n +\tcreateTweens( animation, props );\n +\n +\tif ( jQuery.isFunction( animation.opts.start ) ) {\n +\t\tanimation.opts.start.call( elem, animation );\n +\t}\n +\n +\tjQuery.fx.timer(\n +\t\tjQuery.extend( tick, {\n +\t\t\telem: elem,\n +\t\t\tanim: animation,\n +\t\t\tqueue: animation.opts.queue\n +\t\t})\n +\t);\n +\n +\t// attach callbacks from options\n +\treturn animation.progress( animation.opts.progress )\n +\t\t.done( animation.opts.done, animation.opts.complete )\n +\t\t.fail( animation.opts.fail )\n +\t\t.always( animation.opts.always );\n +}\n +\n +function propFilter( props, specialEasing ) {\n +\tvar index, name, easing, value, hooks;\n +\n +\t// camelCase, specialEasing and expand cssHook pass\n +\tfor ( index in props ) {\n +\t\tname = jQuery.camelCase( index );\n +\t\teasing = specialEasing[ name ];\n +\t\tvalue = props[ index ];\n +\t\tif ( jQuery.isArray( value ) ) {\n +\t\t\teasing = value[ 1 ];\n +\t\t\tvalue = props[ index ] = value[ 0 ];\n +\t\t}\n +\n +\t\tif ( index !== name ) {\n +\t\t\tprops[ name ] = value;\n +\t\t\tdelete props[ index ];\n +\t\t}\n +\n +\t\thooks = jQuery.cssHooks[ name ];\n +\t\tif ( hooks && "expand" in hooks ) {\n +\t\t\tvalue = hooks.expand( value );\n +\t\t\tdelete props[ name ];\n +\n +\t\t\t// not quite $.extend, this wont overwrite keys already present.\n +\t\t\t// also - reusing \'index\' from above because we have the correct "name"\n +\t\t\tfor ( index in value ) {\n +\t\t\t\tif ( !( index in props ) ) {\n +\t\t\t\t\tprops[ index ] = value[ index ];\n +\t\t\t\t\tspecialEasing[ index ] = easing;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else {\n +\t\t\tspecialEasing[ name ] = easing;\n +\t\t}\n +\t}\n +}\n +\n +jQuery.Animation = jQuery.extend( Animation, {\n +\n +\ttweener: function( props, callback ) {\n +\t\tif ( jQuery.isFunction( props ) ) {\n +\t\t\tcallback = props;\n +\t\t\tprops = [ "*" ];\n +\t\t} else {\n +\t\t\tprops = props.split(" ");\n +\t\t}\n +\n +\t\tvar prop,\n +\t\t\tindex = 0,\n +\t\t\tlength = props.length;\n +\n +\t\tfor ( ; index < length ; index++ ) {\n +\t\t\tprop = props[ index ];\n +\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n +\t\t\ttweeners[ prop ].unshift( callback );\n +\t\t}\n +\t},\n +\n +\tprefilter: function( callback, prepend ) {\n +\t\tif ( prepend ) {\n +\t\t\tanimationPrefilters.unshift( callback );\n +\t\t} else {\n +\t\t\tanimationPrefilters.push( callback );\n +\t\t}\n +\t}\n +});\n +\n +function defaultPrefilter( elem, props, opts ) {\n +\t/*jshint validthis:true */\n +\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n +\t\tanim = this,\n +\t\tstyle = elem.style,\n +\t\torig = {},\n +\t\thandled = [],\n +\t\thidden = elem.nodeType && isHidden( elem );\n +\n +\t// handle queue: false promises\n +\tif ( !opts.queue ) {\n +\t\thooks = jQuery._queueHooks( elem, "fx" );\n +\t\tif ( hooks.unqueued == null ) {\n +\t\t\thooks.unqueued = 0;\n +\t\t\toldfire = hooks.empty.fire;\n +\t\t\thooks.empty.fire = function() {\n +\t\t\t\tif ( !hooks.unqueued ) {\n +\t\t\t\t\toldfire();\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t\thooks.unqueued++;\n +\n +\t\tanim.always(function() {\n +\t\t\t// doing this makes sure that the complete handler will be called\n +\t\t\t// before this completes\n +\t\t\tanim.always(function() {\n +\t\t\t\thooks.unqueued--;\n +\t\t\t\tif ( !jQuery.queue( elem, "fx" ).length ) {\n +\t\t\t\t\thooks.empty.fire();\n +\t\t\t\t}\n +\t\t\t});\n +\t\t});\n +\t}\n +\n +\t// height/width overflow pass\n +\tif ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {\n +\t\t// Make sure that nothing sneaks out\n +\t\t// Record all 3 overflow attributes because IE does not\n +\t\t// change the overflow attribute when overflowX and\n +\t\t// overflowY are set to the same value\n +\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n +\n +\t\t// Set display property to inline-block for height/width\n +\t\t// animations on inline elements that are having width/height animated\n +\t\tif ( jQuery.css( elem, "display" ) === "inline" &&\n +\t\t\t\tjQuery.css( elem, "float" ) === "none" ) {\n +\n +\t\t\t// inline-level elements accept inline-block;\n +\t\t\t// block-level elements need to be inline with layout\n +\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {\n +\t\t\t\tstyle.display = "inline-block";\n +\n +\t\t\t} else {\n +\t\t\t\tstyle.zoom = 1;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\tif ( opts.overflow ) {\n +\t\tstyle.overflow = "hidden";\n +\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n +\t\t\tanim.done(function() {\n +\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n +\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n +\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n +\t\t\t});\n +\t\t}\n +\t}\n +\n +\n +\t// show/hide pass\n +\tfor ( index in props ) {\n +\t\tvalue = props[ index ];\n +\t\tif ( rfxtypes.exec( value ) ) {\n +\t\t\tdelete props[ index ];\n +\t\t\ttoggle = toggle || value === "toggle";\n +\t\t\tif ( value === ( hidden ? "hide" : "show" ) ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\t\t\thandled.push( index );\n +\t\t}\n +\t}\n +\n +\tlength = handled.length;\n +\tif ( length ) {\n +\t\tdataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );\n +\t\tif ( "hidden" in dataShow ) {\n +\t\t\thidden = dataShow.hidden;\n +\t\t}\n +\n +\t\t// store state if its toggle - enables .stop().toggle() to "reverse"\n +\t\tif ( toggle ) {\n +\t\t\tdataShow.hidden = !hidden;\n +\t\t}\n +\t\tif ( hidden ) {\n +\t\t\tjQuery( elem ).show();\n +\t\t} else {\n +\t\t\tanim.done(function() {\n +\t\t\t\tjQuery( elem ).hide();\n +\t\t\t});\n +\t\t}\n +\t\tanim.done(function() {\n +\t\t\tvar prop;\n +\t\t\tjQuery._removeData( elem, "fxshow" );\n +\t\t\tfor ( prop in orig ) {\n +\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n +\t\t\t}\n +\t\t});\n +\t\tfor ( index = 0 ; index < length ; index++ ) {\n +\t\t\tprop = handled[ index ];\n +\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n +\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n +\n +\t\t\tif ( !( prop in dataShow ) ) {\n +\t\t\t\tdataShow[ prop ] = tween.start;\n +\t\t\t\tif ( hidden ) {\n +\t\t\t\t\ttween.end = tween.start;\n +\t\t\t\t\ttween.start = prop === "width" || prop === "height" ? 1 : 0;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +}\n +\n +function Tween( elem, options, prop, end, easing ) {\n +\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n +}\n +jQuery.Tween = Tween;\n +\n +Tween.prototype = {\n +\tconstructor: Tween,\n +\tinit: function( elem, options, prop, end, easing, unit ) {\n +\t\tthis.elem = elem;\n +\t\tthis.prop = prop;\n +\t\tthis.easing = easing || "swing";\n +\t\tthis.options = options;\n +\t\tthis.start = this.now = this.cur();\n +\t\tthis.end = end;\n +\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );\n +\t},\n +\tcur: function() {\n +\t\tvar hooks = Tween.propHooks[ this.prop ];\n +\n +\t\treturn hooks && hooks.get ?\n +\t\t\thooks.get( this ) :\n +\t\t\tTween.propHooks._default.get( this );\n +\t},\n +\trun: function( percent ) {\n +\t\tvar eased,\n +\t\t\thooks = Tween.propHooks[ this.prop ];\n +\n +\t\tif ( this.options.duration ) {\n +\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n +\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n +\t\t\t);\n +\t\t} else {\n +\t\t\tthis.pos = eased = percent;\n +\t\t}\n +\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n +\n +\t\tif ( this.options.step ) {\n +\t\t\tthis.options.step.call( this.elem, this.now, this );\n +\t\t}\n +\n +\t\tif ( hooks && hooks.set ) {\n +\t\t\thooks.set( this );\n +\t\t} else {\n +\t\t\tTween.propHooks._default.set( this );\n +\t\t}\n +\t\treturn this;\n +\t}\n +};\n +\n +Tween.prototype.init.prototype = Tween.prototype;\n +\n +Tween.propHooks = {\n +\t_default: {\n +\t\tget: function( tween ) {\n +\t\t\tvar result;\n +\n +\t\t\tif ( tween.elem[ tween.prop ] != null &&\n +\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n +\t\t\t\treturn tween.elem[ tween.prop ];\n +\t\t\t}\n +\n +\t\t\t// passing a non empty string as a 3rd parameter to .css will automatically\n +\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n +\t\t\t// so, simple values such as "10px" are parsed to Float.\n +\t\t\t// complex values such as "rotate(1rad)" are returned as is.\n +\t\t\tresult = jQuery.css( tween.elem, tween.prop, "auto" );\n +\t\t\t// Empty strings, null, undefined and "auto" are converted to 0.\n +\t\t\treturn !result || result === "auto" ? 0 : result;\n +\t\t},\n +\t\tset: function( tween ) {\n +\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n +\t\t\t// available and use plain properties where available\n +\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n +\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n +\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n +\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n +\t\t\t} else {\n +\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n +\t\t\t}\n +\t\t}\n +\t}\n +};\n +\n +// Remove in 2.0 - this supports IE8\'s panic based approach\n +// to setting things on disconnected nodes\n +\n +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n +\tset: function( tween ) {\n +\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n +\t\t\ttween.elem[ tween.prop ] = tween.now;\n +\t\t}\n +\t}\n +};\n +\n +jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {\n +\tvar cssFn = jQuery.fn[ name ];\n +\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n +\t\treturn speed == null || typeof speed === "boolean" ?\n +\t\t\tcssFn.apply( this, arguments ) :\n +\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n +\t};\n +});\n +\n +jQuery.fn.extend({\n +\tfadeTo: function( speed, to, easing, callback ) {\n +\n +\t\t// show any hidden elements after setting opacity to 0\n +\t\treturn this.filter( isHidden ).css( "opacity", 0 ).show()\n +\n +\t\t\t// animate to the value specified\n +\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n +\t},\n +\tanimate: function( prop, speed, easing, callback ) {\n +\t\tvar empty = jQuery.isEmptyObject( prop ),\n +\t\t\toptall = jQuery.speed( speed, easing, callback ),\n +\t\t\tdoAnimation = function() {\n +\t\t\t\t// Operate on a copy of prop so per-property easing won\'t be lost\n +\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n +\t\t\t\tdoAnimation.finish = function() {\n +\t\t\t\t\tanim.stop( true );\n +\t\t\t\t};\n +\t\t\t\t// Empty animations, or finishing resolves immediately\n +\t\t\t\tif ( empty || jQuery._data( this, "finish" ) ) {\n +\t\t\t\t\tanim.stop( true );\n +\t\t\t\t}\n +\t\t\t};\n +\t\t\tdoAnimation.finish = doAnimation;\n +\n +\t\treturn empty || optall.queue === false ?\n +\t\t\tthis.each( doAnimation ) :\n +\t\t\tthis.queue( optall.queue, doAnimation );\n +\t},\n +\tstop: function( type, clearQueue, gotoEnd ) {\n +\t\tvar stopQueue = function( hooks ) {\n +\t\t\tvar stop = hooks.stop;\n +\t\t\tdelete hooks.stop;\n +\t\t\tstop( gotoEnd );\n +\t\t};\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tgotoEnd = clearQueue;\n +\t\t\tclearQueue = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\tif ( clearQueue && type !== false ) {\n +\t\t\tthis.queue( type || "fx", [] );\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar dequeue = true,\n +\t\t\t\tindex = type != null && type + "queueHooks",\n +\t\t\t\ttimers = jQuery.timers,\n +\t\t\t\tdata = jQuery._data( this );\n +\n +\t\t\tif ( index ) {\n +\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n +\t\t\t\t\tstopQueue( data[ index ] );\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( index in data ) {\n +\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n +\t\t\t\t\t\tstopQueue( data[ index ] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tfor ( index = timers.length; index--; ) {\n +\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n +\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n +\t\t\t\t\tdequeue = false;\n +\t\t\t\t\ttimers.splice( index, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// start the next in the queue if the last step wasn\'t forced\n +\t\t\t// timers currently will call their complete callbacks, which will dequeue\n +\t\t\t// but only if they were gotoEnd\n +\t\t\tif ( dequeue || !gotoEnd ) {\n +\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t}\n +\t\t});\n +\t},\n +\tfinish: function( type ) {\n +\t\tif ( type !== false ) {\n +\t\t\ttype = type || "fx";\n +\t\t}\n +\t\treturn this.each(function() {\n +\t\t\tvar index,\n +\t\t\t\tdata = jQuery._data( this ),\n +\t\t\t\tqueue = data[ type + "queue" ],\n +\t\t\t\thooks = data[ type + "queueHooks" ],\n +\t\t\t\ttimers = jQuery.timers,\n +\t\t\t\tlength = queue ? queue.length : 0;\n +\n +\t\t\t// enable finishing flag on private data\n +\t\t\tdata.finish = true;\n +\n +\t\t\t// empty the queue first\n +\t\t\tjQuery.queue( this, type, [] );\n +\n +\t\t\tif ( hooks && hooks.cur && hooks.cur.finish ) {\n +\t\t\t\thooks.cur.finish.call( this );\n +\t\t\t}\n +\n +\t\t\t// look for any active animations, and finish them\n +\t\t\tfor ( index = timers.length; index--; ) {\n +\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n +\t\t\t\t\ttimers[ index ].anim.stop( true );\n +\t\t\t\t\ttimers.splice( index, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// look for any animations in the old queue and finish them\n +\t\t\tfor ( index = 0; index < length; index++ ) {\n +\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n +\t\t\t\t\tqueue[ index ].finish.call( this );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// turn off finishing flag\n +\t\t\tdelete data.finish;\n +\t\t});\n +\t}\n +});\n +\n +// Generate parameters to create a standard animation\n +function genFx( type, includeWidth ) {\n +\tvar which,\n +\t\tattrs = { height: type },\n +\t\ti = 0;\n +\n +\t// if we include width, step value is 1 to do all cssExpand values,\n +\t// if we don\'t include width, step value is 2 to skip over Left and Right\n +\tincludeWidth = includeWidth? 1 : 0;\n +\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n +\t\twhich = cssExpand[ i ];\n +\t\tattrs[ "margin" + which ] = attrs[ "padding" + which ] = type;\n +\t}\n +\n +\tif ( includeWidth ) {\n +\t\tattrs.opacity = attrs.width = type;\n +\t}\n +\n +\treturn attrs;\n +}\n +\n +// Generate shortcuts for custom animations\n +jQuery.each({\n +\tslideDown: genFx("show"),\n +\tslideUp: genFx("hide"),\n +\tslideToggle: genFx("toggle"),\n +\tfadeIn: { opacity: "show" },\n +\tfadeOut: { opacity: "hide" },\n +\tfadeToggle: { opacity: "toggle" }\n +}, function( name, props ) {\n +\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n +\t\treturn this.animate( props, speed, easing, callback );\n +\t};\n +});\n +\n +jQuery.speed = function( speed, easing, fn ) {\n +\tvar opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {\n +\t\tcomplete: fn || !fn && easing ||\n +\t\t\tjQuery.isFunction( speed ) && speed,\n +\t\tduration: speed,\n +\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n +\t};\n +\n +\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :\n +\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n +\n +\t// normalize opt.queue - true/undefined/null -> "fx"\n +\tif ( opt.queue == null || opt.queue === true ) {\n +\t\topt.queue = "fx";\n +\t}\n +\n +\t// Queueing\n +\topt.old = opt.complete;\n +\n +\topt.complete = function() {\n +\t\tif ( jQuery.isFunction( opt.old ) ) {\n +\t\t\topt.old.call( this );\n +\t\t}\n +\n +\t\tif ( opt.queue ) {\n +\t\t\tjQuery.dequeue( this, opt.queue );\n +\t\t}\n +\t};\n +\n +\treturn opt;\n +};\n +\n +jQuery.easing = {\n +\tlinear: function( p ) {\n +\t\treturn p;\n +\t},\n +\tswing: function( p ) {\n +\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n +\t}\n +};\n +\n +jQuery.timers = [];\n +jQuery.fx = Tween.prototype.init;\n +jQuery.fx.tick = function() {\n +\tvar timer,\n +\t\ttimers = jQuery.timers,\n +\t\ti = 0;\n +\n +\tfxNow = jQuery.now();\n +\n +\tfor ( ; i < timers.length; i++ ) {\n +\t\ttimer = timers[ i ];\n +\t\t// Checks the timer has not already been removed\n +\t\tif ( !timer() && timers[ i ] === timer ) {\n +\t\t\ttimers.splice( i--, 1 );\n +\t\t}\n +\t}\n +\n +\tif ( !timers.length ) {\n +\t\tjQuery.fx.stop();\n +\t}\n +\tfxNow = undefined;\n +};\n +\n +jQuery.fx.timer = function( timer ) {\n +\tif ( timer() && jQuery.timers.push( timer ) ) {\n +\t\tjQuery.fx.start();\n +\t}\n +};\n +\n +jQuery.fx.interval = 13;\n +\n +jQuery.fx.start = function() {\n +\tif ( !timerId ) {\n +\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n +\t}\n +};\n +\n +jQuery.fx.stop = function() {\n +\tclearInterval( timerId );\n +\ttimerId = null;\n +};\n +\n +jQuery.fx.speeds = {\n +\tslow: 600,\n +\tfast: 200,\n +\t// Default speed\n +\t_default: 400\n +};\n +\n +// Back Compat <1.8 extension point\n +jQuery.fx.step = {};\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.animated = function( elem ) {\n +\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n +\t\t\treturn elem === fn.elem;\n +\t\t}).length;\n +\t};\n +}\n +jQuery.fn.offset = function( options ) {\n +\tif ( arguments.length ) {\n +\t\treturn options === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function( i ) {\n +\t\t\t\tjQuery.offset.setOffset( this, options, i );\n +\t\t\t});\n +\t}\n +\n +\tvar docElem, win,\n +\t\tbox = { top: 0, left: 0 },\n +\t\telem = this[ 0 ],\n +\t\tdoc = elem && elem.ownerDocument;\n +\n +\tif ( !doc ) {\n +\t\treturn;\n +\t}\n +\n +\tdocElem = doc.documentElement;\n +\n +\t// Make sure it\'s not a disconnected DOM node\n +\tif ( !jQuery.contains( docElem, elem ) ) {\n +\t\treturn box;\n +\t}\n +\n +\t// If we don\'t have gBCR, just use 0,0 rather than error\n +\t// BlackBerry 5, iOS 3 (original iPhone)\n +\tif ( typeof elem.getBoundingClientRect !== "undefined" ) {\n +\t\tbox = elem.getBoundingClientRect();\n +\t}\n +\twin = getWindow( doc );\n +\treturn {\n +\t\ttop: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),\n +\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n +\t};\n +};\n +\n +jQuery.offset = {\n +\n +\tsetOffset: function( elem, options, i ) {\n +\t\tvar position = jQuery.css( elem, "position" );\n +\n +\t\t// set position first, in-case top/left are set even on static elem\n +\t\tif ( position === "static" ) {\n +\t\t\telem.style.position = "relative";\n +\t\t}\n +\n +\t\tvar curElem = jQuery( elem ),\n +\t\t\tcurOffset = curElem.offset(),\n +\t\t\tcurCSSTop = jQuery.css( elem, "top" ),\n +\t\t\tcurCSSLeft = jQuery.css( elem, "left" ),\n +\t\t\tcalculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,\n +\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n +\n +\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n +\t\tif ( calculatePosition ) {\n +\t\t\tcurPosition = curElem.position();\n +\t\t\tcurTop = curPosition.top;\n +\t\t\tcurLeft = curPosition.left;\n +\t\t} else {\n +\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n +\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction( options ) ) {\n +\t\t\toptions = options.call( elem, i, curOffset );\n +\t\t}\n +\n +\t\tif ( options.top != null ) {\n +\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n +\t\t}\n +\t\tif ( options.left != null ) {\n +\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n +\t\t}\n +\n +\t\tif ( "using" in options ) {\n +\t\t\toptions.using.call( elem, props );\n +\t\t} else {\n +\t\t\tcurElem.css( props );\n +\t\t}\n +\t}\n +};\n +\n +\n +jQuery.fn.extend({\n +\n +\tposition: function() {\n +\t\tif ( !this[ 0 ] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar offsetParent, offset,\n +\t\t\tparentOffset = { top: 0, left: 0 },\n +\t\t\telem = this[ 0 ];\n +\n +\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it\'s only offset parent\n +\t\tif ( jQuery.css( elem, "position" ) === "fixed" ) {\n +\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n +\t\t\toffset = elem.getBoundingClientRect();\n +\t\t} else {\n +\t\t\t// Get *real* offsetParent\n +\t\t\toffsetParent = this.offsetParent();\n +\n +\t\t\t// Get correct offsets\n +\t\t\toffset = this.offset();\n +\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {\n +\t\t\t\tparentOffset = offsetParent.offset();\n +\t\t\t}\n +\n +\t\t\t// Add offsetParent borders\n +\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );\n +\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );\n +\t\t}\n +\n +\t\t// Subtract parent offsets and element margins\n +\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n +\t\t// are the same in Safari causing offset.left to incorrectly be 0\n +\t\treturn {\n +\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),\n +\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)\n +\t\t};\n +\t},\n +\n +\toffsetParent: function() {\n +\t\treturn this.map(function() {\n +\t\t\tvar offsetParent = this.offsetParent || document.documentElement;\n +\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {\n +\t\t\t\toffsetParent = offsetParent.offsetParent;\n +\t\t\t}\n +\t\t\treturn offsetParent || document.documentElement;\n +\t\t});\n +\t}\n +});\n +\n +\n +// Create scrollLeft and scrollTop methods\n +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {\n +\tvar top = /Y/.test( prop );\n +\n +\tjQuery.fn[ method ] = function( val ) {\n +\t\treturn jQuery.access( this, function( elem, method, val ) {\n +\t\t\tvar win = getWindow( elem );\n +\n +\t\t\tif ( val === undefined ) {\n +\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n +\t\t\t\t\twin.document.documentElement[ method ] :\n +\t\t\t\t\telem[ method ];\n +\t\t\t}\n +\n +\t\t\tif ( win ) {\n +\t\t\t\twin.scrollTo(\n +\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n +\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\n +\t\t\t\t);\n +\n +\t\t\t} else {\n +\t\t\t\telem[ method ] = val;\n +\t\t\t}\n +\t\t}, method, val, arguments.length, null );\n +\t};\n +});\n +\n +function getWindow( elem ) {\n +\treturn jQuery.isWindow( elem ) ?\n +\t\telem :\n +\t\telem.nodeType === 9 ?\n +\t\t\telem.defaultView || elem.parentWindow :\n +\t\t\tfalse;\n +}\n +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {\n +\tjQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {\n +\t\t// margin is only for outerHeight, outerWidth\n +\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n +\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),\n +\t\t\t\textra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );\n +\n +\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n +\t\t\t\tvar doc;\n +\n +\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n +\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n +\t\t\t\t\t// isn\'t a whole lot we can do. See pull request at this URL for discussion:\n +\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n +\t\t\t\t\treturn elem.document.documentElement[ "client" + name ];\n +\t\t\t\t}\n +\n +\t\t\t\t// Get document width or height\n +\t\t\t\tif ( elem.nodeType === 9 ) {\n +\t\t\t\t\tdoc = elem.documentElement;\n +\n +\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n +\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n +\t\t\t\t\treturn Math.max(\n +\t\t\t\t\t\telem.body[ "scroll" + name ], doc[ "scroll" + name ],\n +\t\t\t\t\t\telem.body[ "offset" + name ], doc[ "offset" + name ],\n +\t\t\t\t\t\tdoc[ "client" + name ]\n +\t\t\t\t\t);\n +\t\t\t\t}\n +\n +\t\t\t\treturn value === undefined ?\n +\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n +\t\t\t\t\tjQuery.css( elem, type, extra ) :\n +\n +\t\t\t\t\t// Set width or height on the element\n +\t\t\t\t\tjQuery.style( elem, type, value, extra );\n +\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n +\t\t};\n +\t});\n +});\n +// Limit scope pollution from any deprecated API\n +// (function() {\n +\n +// })();\n +// Expose jQuery to the global object\n +window.jQuery = window.$ = jQuery;\n +\n +// Expose jQuery as an AMD module, but only for AMD loaders that\n +// understand the issues with loading multiple versions of jQuery\n +// in a page that all might call define(). The loader will indicate\n +// they have special allowances for multiple jQuery versions by\n +// specifying define.amd.jQuery = true. Register as a named module,\n +// since jQuery can be concatenated with other files that may use define,\n +// but not use a proper concatenation script that understands anonymous\n +// AMD modules. A named AMD is safest and most robust way to register.\n +// Lowercase jquery is used because AMD module names are derived from\n +// file names, and jQuery is normally delivered in a lowercase file name.\n +// Do this after creating the global so that if an AMD module wants to call\n +// noConflict to hide this version of jQuery, it will work.\n +if ( typeof define === "function" && define.amd && define.amd.jQuery ) {\n +\tdefine( "jquery", [], function () { return jQuery; } );\n +}\n +\n +})( window );\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.9.min.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.9.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a904e5998c1f7371a86b709ea13328561bf54e4 --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery-1.9.min.js.xml @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58329271.16</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-1.9.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>93068</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.9.0.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("<iframe frameborder=\'0\' width=\'0\' height=\'0\'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(cn[0].contentWindow||cn[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=A(e,t),cn.detach()),bn[e]=n),n}function A(e,t){var n=st(t.createElement(e)).appendTo(t.body),r=st.css(n[0],"display");return n.remove(),r}function j(e,t,n,r){var i;if(st.isArray(t))st.each(t,function(t,i){n||kn.test(e)?r(e,i):j(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==st.type(t))r(e,t);else for(i in t)j(e+"["+i+"]",t[i],n,r)}function D(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(lt)||[];if(st.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function L(e,n,r,i){function o(u){var l;return a[u]=!0,st.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||s||a[c]?s?!(l=c):t:(n.dataTypes.unshift(c),o(c),!1)}),l}var a={},s=e===$n;return o(n.dataTypes[0])||!a["*"]&&o("*")}function H(e,n){var r,i,o=st.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((o[r]?e:i||(i={}))[r]=n[r]);return i&&st.extend(!0,e,i),e}function M(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(o in c)o in r&&(n[c[o]]=r[o]);for(;"*"===l[0];)l.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("Content-Type"));if(i)for(o in u)if(u[o]&&u[o].test(i)){l.unshift(o);break}if(l[0]in r)a=l[0];else{for(o in r){if(!l[0]||e.converters[o+" "+l[0]]){a=o;break}s||(s=o)}a=a||s}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function q(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=u[++s];)if("*"!==i){if("*"!==l&&l!==i){if(n=a[l+" "+i]||a["* "+i],!n)for(r in a)if(o=r.split(" "),o[1]===i&&(n=a[l+" "+o[0]]||a["* "+o[0]])){n===!0?n=a[r]:a[r]!==!0&&(i=o[0],u.splice(s--,0,i));break}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(c){return{state:"parsererror",error:n?c:"No conversion from "+l+" to "+i}}}l=i}return{state:"success",data:t}}function _(){try{return new e.XMLHttpRequest}catch(t){}}function F(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function O(){return setTimeout(function(){Qn=t}),Qn=st.now()}function B(e,t){st.each(t,function(t,n){for(var r=(rr[t]||[]).concat(rr["*"]),i=0,o=r.length;o>i;i++)if(r[i].call(e,t,n))return})}function P(e,t,n){var r,i,o=0,a=nr.length,s=st.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Qn||O(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:st.extend({},t),opts:st.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Qn||O(),duration:n.duration,tweens:[],createTween:function(t,n){var r=st.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(R(c,l.opts.specialEasing);a>o;o++)if(r=nr[o].call(l,e,c,l.opts))return r;return B(l,c),st.isFunction(l.opts.start)&&l.opts.start.call(e,l),st.fx.timer(st.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function R(e,t){var n,r,i,o,a;for(n in e)if(r=st.camelCase(n),i=t[r],o=e[n],st.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=st.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function W(e,t,n){var r,i,o,a,s,u,l,c,f,p=this,d=e.style,h={},g=[],m=e.nodeType&&w(e);n.queue||(c=st._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,st.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===st.css(e,"display")&&"none"===st.css(e,"float")&&(st.support.inlineBlockNeedsLayout&&"inline"!==S(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",st.support.shrinkWrapBlocks||p.done(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in t)if(o=t[r],Zn.exec(o)){if(delete t[r],u=u||"toggle"===o,o===(m?"hide":"show"))continue;g.push(r)}if(a=g.length){s=st._data(e,"fxshow")||st._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?st(e).show():p.done(function(){st(e).hide()}),p.done(function(){var t;st._removeData(e,"fxshow");for(t in h)st.style(e,t,h[t])});for(r=0;a>r;r++)i=g[r],l=p.createTween(i,m?s[i]:0),h[i]=s[i]||st.style(e,i),i in s||(s[i]=l.start,m&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function $(e,t,n,r,i){return new $.prototype.init(e,t,n,r,i)}function I(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=wn[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function z(e){return st.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var X,U,V=e.document,Y=e.location,J=e.jQuery,G=e.$,Q={},K=[],Z="1.9.0",et=K.concat,tt=K.push,nt=K.slice,rt=K.indexOf,it=Q.toString,ot=Q.hasOwnProperty,at=Z.trim,st=function(e,t){return new st.fn.init(e,t,X)},ut=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,lt=/\\S+/g,ct=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,ft=/^(?:(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,pt=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,dt=/^[\\],:{}\\s]*$/,ht=/(?:^|:|,)(?:\\s*\\[)+/g,gt=/\\\\(?:["\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,mt=/"[^"\\\\\\r\\n]*"|true|false|null|-?(?:\\d+\\.|)\\d+(?:[eE][+-]?\\d+|)/g,yt=/^-ms-/,vt=/-([\\da-z])/gi,bt=function(e,t){return t.toUpperCase()},xt=function(){V.addEventListener?(V.removeEventListener("DOMContentLoaded",xt,!1),st.ready()):"complete"===V.readyState&&(V.detachEvent("onreadystatechange",xt),st.ready())};st.fn=st.prototype={jquery:Z,constructor:st,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ft.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof st?n[0]:n,st.merge(this,st.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:V,!0)),pt.test(i[1])&&st.isPlainObject(n))for(i in n)st.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=V.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=V,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):st.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),st.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return nt.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=st.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return st.each(this,e,t)},ready:function(e){return st.ready.promise().done(e),this},slice:function(){return this.pushStack(nt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(st.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:tt,sort:[].sort,splice:[].splice},st.fn.init.prototype=st.fn,st.extend=st.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||st.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(e=arguments[u]))for(n in e)r=s[n],i=e[n],s!==i&&(c&&i&&(st.isPlainObject(i)||(o=st.isArray(i)))?(o?(o=!1,a=r&&st.isArray(r)?r:[]):a=r&&st.isPlainObject(r)?r:{},s[n]=st.extend(c,a,i)):i!==t&&(s[n]=i));return s},st.extend({noConflict:function(t){return e.$===st&&(e.$=G),t&&e.jQuery===st&&(e.jQuery=J),st},isReady:!1,readyWait:1,holdReady:function(e){e?st.readyWait++:st.ready(!0)},ready:function(e){if(e===!0?!--st.readyWait:!st.isReady){if(!V.body)return setTimeout(st.ready);st.isReady=!0,e!==!0&&--st.readyWait>0||(U.resolveWith(V,[st]),st.fn.trigger&&st(V).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===st.type(e)},isArray:Array.isArray||function(e){return"array"===st.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[it.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==st.type(e)||e.nodeType||st.isWindow(e))return!1;try{if(e.constructor&&!ot.call(e,"constructor")&&!ot.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||ot.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||V;var r=pt.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=st.buildFragment([e],t,i),i&&st(i).remove(),st.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=st.trim(n),n&&dt.test(n.replace(gt,"@").replace(mt,"]").replace(ht,"")))?Function("return "+n)():(st.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||st.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&st.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(yt,"ms-").replace(vt,bt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,o=0,a=e.length,s=n(e);if(r){if(s)for(;a>o&&(i=t.apply(e[o],r),i!==!1);o++);else for(o in e)if(i=t.apply(e[o],r),i===!1)break}else if(s)for(;a>o&&(i=t.call(e[o],o,e[o]),i!==!1);o++);else for(o in e)if(i=t.call(e[o],o,e[o]),i===!1)break;return e},trim:at&&!at.call("\\ufeff\\u00a0")?function(e){return null==e?"":at.call(e)}:function(e){return null==e?"":(e+"").replace(ct,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?st.merge(r,"string"==typeof e?[e]:e):tt.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(rt)return rt.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else for(;n[o]!==t;)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,r){var i,o=0,a=e.length,s=n(e),u=[];if(s)for(;a>o;o++)i=t(e[o],o,r),null!=i&&(u[u.length]=i);else for(o in e)i=t(e[o],o,r),null!=i&&(u[u.length]=i);return et.apply([],u)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(r=e[n],n=e,e=r),st.isFunction(e)?(i=nt.call(arguments,2),o=function(){return e.apply(n||this,i.concat(nt.call(arguments)))},o.guid=e.guid=e.guid||st.guid++,o):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===st.type(r)){o=!0;for(u in r)st.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,st.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(st(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),st.ready.promise=function(t){if(!U)if(U=st.Deferred(),"complete"===V.readyState)setTimeout(st.ready);else if(V.addEventListener)V.addEventListener("DOMContentLoaded",xt,!1),e.addEventListener("load",st.ready,!1);else{V.attachEvent("onreadystatechange",xt),e.attachEvent("onload",st.ready);var n=!1;try{n=null==e.frameElement&&V.documentElement}catch(r){}n&&n.doScroll&&function i(){if(!st.isReady){try{n.doScroll("left")}catch(e){return setTimeout(i,50)}st.ready()}}()}return U.promise(t)},st.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()}),X=st(V);var Tt={};st.Callbacks=function(e){e="string"==typeof e?Tt[e]||r(e):st.extend({},e);var n,i,o,a,s,u,l=[],c=!e.once&&[],f=function(t){for(n=e.memory&&t,i=!0,u=a||0,a=0,s=l.length,o=!0;l&&s>u;u++)if(l[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}o=!1,l&&(c?c.length&&f(c.shift()):n?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function r(t){st.each(t,function(t,n){var i=st.type(n);"function"===i?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==i&&r(n)})})(arguments),o?s=l.length:n&&(a=t,f(n))}return this},remove:function(){return l&&st.each(arguments,function(e,t){for(var n;(n=st.inArray(t,l,n))>-1;)l.splice(n,1),o&&(s>=n&&s--,u>=n&&u--)}),this},has:function(e){return st.inArray(e,l)>-1},empty:function(){return l=[],this},disable:function(){return l=c=n=t,this},disabled:function(){return!l},lock:function(){return c=t,n||p.disable(),this},locked:function(){return!c},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!c||(o?c.push(t):f(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},st.extend({Deferred:function(e){var t=[["resolve","done",st.Callbacks("once memory"),"resolved"],["reject","fail",st.Callbacks("once memory"),"rejected"],["notify","progress",st.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return st.Deferred(function(n){st.each(t,function(t,o){var a=o[0],s=st.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&st.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?st.extend(e,r):r}},i={};return r.pipe=r.then,st.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=nt.call(arguments),a=o.length,s=1!==a||e&&st.isFunction(e.promise)?a:0,u=1===s?e:st.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?nt.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=Array(a),n=Array(a),r=Array(a);a>i;i++)o[i]&&st.isFunction(o[i].promise)?o[i].promise().done(l(i,r,o)).fail(u.reject).progress(l(i,n,t)):--s;return s||u.resolveWith(r,o),u.promise()}}),st.support=function(){var n,r,i,o,a,s,u,l,c,f,p=V.createElement("div");if(p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>",r=p.getElementsByTagName("*"),i=p.getElementsByTagName("a")[0],!r||!i||!r.length)return{};o=V.createElement("select"),a=o.appendChild(V.createElement("option")),s=p.getElementsByTagName("input")[0],i.style.cssText="top:1px;float:left;opacity:.5",n={getSetAttribute:"t"!==p.className,leadingWhitespace:3===p.firstChild.nodeType,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(i.getAttribute("style")),hrefNormalized:"/a"===i.getAttribute("href"),opacity:/^0.5/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:!!s.value,optSelected:a.selected,enctype:!!V.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==V.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===V.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},s.checked=!0,n.noCloneChecked=s.cloneNode(!0).checked,o.disabled=!0,n.optDisabled=!a.disabled;try{delete p.test}catch(d){n.deleteExpando=!1}s=V.createElement("input"),s.setAttribute("value",""),n.input=""===s.getAttribute("value"),s.value="t",s.setAttribute("type","radio"),n.radioValue="t"===s.value,s.setAttribute("checked","t"),s.setAttribute("name","t"),u=V.createDocumentFragment(),u.appendChild(s),n.appendChecked=s.checked,n.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,p.attachEvent&&(p.attachEvent("onclick",function(){n.noCloneEvent=!1}),p.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})p.setAttribute(l="on"+f,"t"),n[f+"Bubbles"]=l in e||p.attributes[l].expando===!1;return p.style.backgroundClip="content-box",p.cloneNode(!0).style.backgroundClip="",n.clearCloneStyle="content-box"===p.style.backgroundClip,st(function(){var r,i,o,a="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",s=V.getElementsByTagName("body")[0];s&&(r=V.createElement("div"),r.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",s.appendChild(r).appendChild(p),p.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=p.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",c=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",n.reliableHiddenOffsets=c&&0===o[0].offsetHeight,p.innerHTML="",p.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",n.boxSizing=4===p.offsetWidth,n.doesNotIncludeMarginInBodyOffset=1!==s.offsetTop,e.getComputedStyle&&(n.pixelPosition="1%"!==(e.getComputedStyle(p,null)||{}).top,n.boxSizingReliable="4px"===(e.getComputedStyle(p,null)||{width:"4px"}).width,i=p.appendChild(V.createElement("div")),i.style.cssText=p.style.cssText=a,i.style.marginRight=i.style.width="0",p.style.width="1px",n.reliableMarginRight=!parseFloat((e.getComputedStyle(i,null)||{}).marginRight)),p.style.zoom!==t&&(p.innerHTML="",p.style.cssText=a+"width:1px;padding:1px;display:inline;zoom:1",n.inlineBlockNeedsLayout=3===p.offsetWidth,p.style.display="block",p.innerHTML="<div></div>",p.firstChild.style.width="5px",n.shrinkWrapBlocks=3!==p.offsetWidth,s.style.zoom=1),s.removeChild(r),r=p=o=i=null)}),r=o=u=a=i=s=null,n}();var wt=/(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,Nt=/([A-Z])/g;st.extend({cache:{},expando:"jQuery"+(Z+Math.random()).replace(/\\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?st.cache[e[st.expando]]:e[st.expando],!!e&&!s(e)},data:function(e,t,n){return i(e,t,n,!1)},removeData:function(e,t){return o(e,t,!1)},_data:function(e,t,n){return i(e,t,n,!0)},_removeData:function(e,t){return o(e,t,!0)},acceptData:function(e){var t=e.nodeName&&st.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),st.fn.extend({data:function(e,n){var r,i,o=this[0],s=0,u=null;if(e===t){if(this.length&&(u=st.data(o),1===o.nodeType&&!st._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>s;s++)i=r[s].name,i.indexOf("data-")||(i=st.camelCase(i.substring(5)),a(o,i,u[i]));st._data(o,"parsedAttrs",!0)}return u}return"object"==typeof e?this.each(function(){st.data(this,e)}):st.access(this,function(n){return n===t?o?a(o,e,st.data(o,e)):null:(this.each(function(){st.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){st.removeData(this,e)})}}),st.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=st._data(e,n),r&&(!i||st.isArray(r)?i=st._data(e,n,st.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=st.queue(e,t),r=n.length,i=n.shift(),o=st._queueHooks(e,t),a=function(){st.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return st._data(e,n)||st._data(e,n,{empty:st.Callbacks("once memory").add(function(){st._removeData(e,t+"queue"),st._removeData(e,n)})})}}),st.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?st.queue(this[0],e):n===t?this:this.each(function(){var t=st.queue(this,e,n);st._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&st.dequeue(this,e)})},dequeue:function(e){return this.each(function(){st.dequeue(this,e)})},delay:function(e,t){return e=st.fx?st.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=st.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=st._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var Ct,kt,Et=/[\\t\\r\\n]/g,St=/\\r/g,At=/^(?:input|select|textarea|button|object)$/i,jt=/^(?:a|area)$/i,Dt=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Lt=/^(?:checked|selected)$/i,Ht=st.support.getSetAttribute,Mt=st.support.input;st.fn.extend({attr:function(e,t){return st.access(this,st.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){st.removeAttr(this,e)})},prop:function(e,t){return st.access(this,st.prop,e,t,arguments.length>1)},removeProp:function(e){return e=st.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=st.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?st.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return st.isFunction(e)?this.each(function(n){st(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n)for(var i,o=0,a=st(this),s=t,u=e.match(lt)||[];i=u[o++];)s=r?s:!a.hasClass(i),a[s?"addClass":"removeClass"](i);else("undefined"===n||"boolean"===n)&&(this.className&&st._data(this,"__className__",this.className),this.className=this.className||e===!1?"":st._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(Et," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=st.isFunction(e),this.each(function(r){var o,a=st(this);1===this.nodeType&&(o=i?e.call(this,r,a.val()):e,null==o?o="":"number"==typeof o?o+="":st.isArray(o)&&(o=st.map(o,function(e){return null==e?"":e+""})),n=st.valHooks[this.type]||st.valHooks[this.nodeName.toLowerCase()],n&&"set"in n&&n.set(this,o,"value")!==t||(this.value=o))});if(o)return n=st.valHooks[o.type]||st.valHooks[o.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(o,"value"))!==t?r:(r=o.value,"string"==typeof r?r.replace(St,""):null==r?"":r)}}}),st.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(st.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&st.nodeName(n.parentNode,"optgroup"))){if(t=st(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=st.makeArray(t);return st(e).find("option").each(function(){this.selected=st.inArray(st(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return e.getAttribute===t?st.prop(e,n,r):(a=1!==s||!st.isXMLDoc(e),a&&(n=n.toLowerCase(),o=st.attrHooks[n]||(Dt.test(n)?kt:Ct)),r===t?o&&a&&"get"in o&&null!==(i=o.get(e,n))?i:(e.getAttribute!==t&&(i=e.getAttribute(n)),null==i?t:i):null!==r?o&&a&&"set"in o&&(i=o.set(e,r,n))!==t?i:(e.setAttribute(n,r+""),r):(st.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(lt);if(o&&1===e.nodeType)for(;n=o[i++];)r=st.propFix[n]||n,Dt.test(n)?!Ht&&Lt.test(n)?e[st.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:st.attr(e,n,""),e.removeAttribute(Ht?n:r)},attrHooks:{type:{set:function(e,t){if(!st.support.radioValue&&"radio"===t&&st.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!st.isXMLDoc(e),a&&(n=st.propFix[n]||n,o=st.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):At.test(e.nodeName)||jt.test(e.nodeName)&&e.href?0:t}}}}),kt={get:function(e,n){var r=st.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?Mt&&Ht?null!=i:Lt.test(n)?e[st.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?st.removeAttr(e,n):Mt&&Ht||!Lt.test(n)?e.setAttribute(!Ht&&st.propFix[n]||n,n):e[st.camelCase("default-"+n)]=e[n]=!0,n}},Mt&&Ht||(st.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return st.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t\n +},set:function(e,n,r){return st.nodeName(e,"input")?(e.defaultValue=n,t):Ct&&Ct.set(e,n,r)}}),Ht||(Ct=st.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},st.attrHooks.contenteditable={get:Ct.get,set:function(e,t,n){Ct.set(e,""===t?!1:t,n)}},st.each(["width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),st.support.hrefNormalized||(st.each(["href","src","width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),st.each(["href","src"],function(e,t){st.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),st.support.style||(st.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),st.support.optSelected||(st.propHooks.selected=st.extend(st.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),st.support.enctype||(st.propFix.enctype="encoding"),st.support.checkOn||st.each(["radio","checkbox"],function(){st.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),st.each(["radio","checkbox"],function(){st.valHooks[this]=st.extend(st.valHooks[this],{set:function(e,n){return st.isArray(n)?e.checked=st.inArray(st(e).val(),n)>=0:t}})});var qt=/^(?:input|select|textarea)$/i,_t=/^key/,Ft=/^(?:mouse|contextmenu)|click/,Ot=/^(?:focusinfocus|focusoutblur)$/,Bt=/^([^.]*)(?:\\.(.+)|)$/;st.event={global:{},add:function(e,n,r,i,o){var a,s,u,l,c,f,p,d,h,g,m,y=3!==e.nodeType&&8!==e.nodeType&&st._data(e);if(y){for(r.handler&&(a=r,r=a.handler,o=a.selector),r.guid||(r.guid=st.guid++),(l=y.events)||(l=y.events={}),(s=y.handle)||(s=y.handle=function(e){return st===t||e&&st.event.triggered===e.type?t:st.event.dispatch.apply(s.elem,arguments)},s.elem=e),n=(n||"").match(lt)||[""],c=n.length;c--;)u=Bt.exec(n[c])||[],h=m=u[1],g=(u[2]||"").split(".").sort(),p=st.event.special[h]||{},h=(o?p.delegateType:p.bindType)||h,p=st.event.special[h]||{},f=st.extend({type:h,origType:m,data:i,handler:r,guid:r.guid,selector:o,needsContext:o&&st.expr.match.needsContext.test(o),namespace:g.join(".")},a),(d=l[h])||(d=l[h]=[],d.delegateCount=0,p.setup&&p.setup.call(e,i,g,s)!==!1||(e.addEventListener?e.addEventListener(h,s,!1):e.attachEvent&&e.attachEvent("on"+h,s))),p.add&&(p.add.call(e,f),f.handler.guid||(f.handler.guid=r.guid)),o?d.splice(d.delegateCount++,0,f):d.push(f),st.event.global[h]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,m=st.hasData(e)&&st._data(e);if(m&&(u=m.events)){for(t=(t||"").match(lt)||[""],l=t.length;l--;)if(s=Bt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(f=st.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],s=s[2]&&RegExp("(^|\\\\.)"+h.join("\\\\.(?:.*\\\\.|)")+"(\\\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||st.removeEvent(e,d,m.handle),delete u[d])}else for(d in u)st.event.remove(e,d+t[l],n,r,!0);st.isEmptyObject(u)&&(delete m.handle,st._removeData(e,"events"))}},trigger:function(n,r,i,o){var a,s,u,l,c,f,p,d=[i||V],h=n.type||n,g=n.namespace?n.namespace.split("."):[];if(s=u=i=i||V,3!==i.nodeType&&8!==i.nodeType&&!Ot.test(h+st.event.triggered)&&(h.indexOf(".")>=0&&(g=h.split("."),h=g.shift(),g.sort()),c=0>h.indexOf(":")&&"on"+h,n=n[st.expando]?n:new st.Event(h,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=g.join("."),n.namespace_re=n.namespace?RegExp("(^|\\\\.)"+g.join("\\\\.(?:.*\\\\.|)")+"(\\\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:st.makeArray(r,[n]),p=st.event.special[h]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!st.isWindow(i)){for(l=p.delegateType||h,Ot.test(l+h)||(s=s.parentNode);s;s=s.parentNode)d.push(s),u=s;u===(i.ownerDocument||V)&&d.push(u.defaultView||u.parentWindow||e)}for(a=0;(s=d[a++])&&!n.isPropagationStopped();)n.type=a>1?l:p.bindType||h,f=(st._data(s,"events")||{})[n.type]&&st._data(s,"handle"),f&&f.apply(s,r),f=c&&s[c],f&&st.acceptData(s)&&f.apply&&f.apply(s,r)===!1&&n.preventDefault();if(n.type=h,!(o||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===h&&st.nodeName(i,"a")||!st.acceptData(i)||!c||!i[h]||st.isWindow(i))){u=i[c],u&&(i[c]=null),st.event.triggered=h;try{i[h]()}catch(m){}st.event.triggered=t,u&&(i[c]=u)}return n.result}},dispatch:function(e){e=st.event.fix(e);var n,r,i,o,a,s=[],u=nt.call(arguments),l=(st._data(this,"events")||{})[e.type]||[],c=st.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=st.event.handlers.call(this,e,l),n=0;(o=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,r=0;(a=o.handlers[r++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(a.namespace))&&(e.handleObj=a,e.data=a.data,i=((st.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u),i!==t&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==e.type){for(i=[],r=0;u>r;r++)a=n[r],o=a.selector+" ",i[o]===t&&(i[o]=a.needsContext?st(o,this).index(l)>=0:st.find(o,this,null,[l]).length),i[o]&&i.push(a);i.length&&s.push({elem:l,handlers:i})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[st.expando])return e;var t,n,r=e,i=st.event.fixHooks[e.type]||{},o=i.props?this.props.concat(i.props):this.props;for(e=new st.Event(r),t=o.length;t--;)n=o[t],e[n]=r[n];return e.target||(e.target=r.srcElement||V),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,i.filter?i.filter(e,r):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,a=n.button,s=n.fromElement;return null==e.pageX&&null!=n.clientX&&(r=e.target.ownerDocument||V,i=r.documentElement,o=r.body,e.pageX=n.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?n.toElement:s),e.which||a===t||(e.which=1&a?1:2&a?3:4&a?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return st.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==V.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===V.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=st.extend(new st.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?st.event.trigger(i,null,t):st.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},st.removeEvent=V.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,n,r){var i="on"+n;e.detachEvent&&(e[i]===t&&(e[i]=null),e.detachEvent(i,r))},st.Event=function(e,n){return this instanceof st.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?u:l):this.type=e,n&&st.extend(this,n),this.timeStamp=e&&e.timeStamp||st.now(),this[st.expando]=!0,t):new st.Event(e,n)},st.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=u,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=u,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u,this.stopPropagation()}},st.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){st.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!st.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),st.support.submitBubbles||(st.event.special.submit={setup:function(){return st.nodeName(this,"form")?!1:(st.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=st.nodeName(n,"input")||st.nodeName(n,"button")?n.form:t;r&&!st._data(r,"submitBubbles")&&(st.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),st._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&st.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return st.nodeName(this,"form")?!1:(st.event.remove(this,"._submit"),t)}}),st.support.changeBubbles||(st.event.special.change={setup:function(){return qt.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(st.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),st.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),st.event.simulate("change",this,e,!0)})),!1):(st.event.add(this,"beforeactivate._change",function(e){var t=e.target;qt.test(t.nodeName)&&!st._data(t,"changeBubbles")&&(st.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||st.event.simulate("change",this.parentNode,e,!0)}),st._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return st.event.remove(this,"._change"),!qt.test(this.nodeName)}}),st.support.focusinBubbles||st.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){st.event.simulate(t,e.target,st.event.fix(e),!0)};st.event.special[t]={setup:function(){0===n++&&V.addEventListener(e,r,!0)},teardown:function(){0===--n&&V.removeEventListener(e,r,!0)}}}),st.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(s in e)this.on(s,n,r,e[s],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=l;else if(!i)return this;return 1===o&&(a=i,i=function(e){return st().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=st.guid++)),this.each(function(){st.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,st(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=l),this.each(function(){st.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){st.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?st.event.trigger(e,n,r,!0):t},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),st.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(e,t){st.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)},_t.test(t)&&(st.event.fixHooks[t]=st.event.keyHooks),Ft.test(t)&&(st.event.fixHooks[t]=st.event.mouseHooks)}),function(e,t){function n(e){return ht.test(e+"")}function r(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>C.cacheLength&&delete e[t.shift()],e[n]=r}}function i(e){return e[P]=!0,e}function o(e){var t=L.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function a(e,t,n,r){var i,o,a,s,u,l,c,d,h,g;if((t?t.ownerDocument||t:R)!==L&&D(t),t=t||L,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!M&&!r){if(i=gt.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&O(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Q.apply(n,K.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&W.getByClassName&&t.getElementsByClassName)return Q.apply(n,K.call(t.getElementsByClassName(a),0)),n}if(W.qsa&&!q.test(e)){if(c=!0,d=P,h=t,g=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=f(e),(c=t.getAttribute("id"))?d=c.replace(vt,"\\\\$&"):t.setAttribute("id",d),d="[id=\'"+d+"\'] ",u=l.length;u--;)l[u]=d+p(l[u]);h=dt.test(e)&&t.parentNode||t,g=l.join(",")}if(g)try{return Q.apply(n,K.call(h.querySelectorAll(g),0)),n}catch(m){}finally{c||t.removeAttribute("id")}}}return x(e.replace(at,"$1"),t,n,r)}function s(e,t){for(var n=e&&t&&e.nextSibling;n;n=n.nextSibling)if(n===t)return-1;return e?1:-1}function u(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e,t){var n,r,i,o,s,u,l,c=X[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=C.preFilter;s;){(!n||(r=ut.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(i=[])),n=!1,(r=lt.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(at," ")}),s=s.slice(n.length));for(o in C.filter)!(r=pt[o].exec(s))||l[o]&&!(r=l[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?a.error(e):X(e,u).slice(0)}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,i=n&&"parentNode"===t.dir,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=$+" "+o;if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(l=t[P]||(t[P]={}),(u=l[r])&&u[0]===c){if((s=u[1])===!0||s===N)return s===!0}else if(u=l[r]=[c],u[1]=e(t,n,a)||N,u[1]===!0)return!0}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function m(e,t,n,r,o,a){return r&&!r[P]&&(r=m(r)),o&&!o[P]&&(o=m(o,a)),i(function(i,a,s,u){var l,c,f,p=[],d=[],h=a.length,m=i||b(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?m:g(m,p,e,s,u),v=n?o||(i?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r)for(l=g(v,d),r(l,[],s,u),c=l.length;c--;)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f));if(i){if(o||e){if(o){for(l=[],c=v.length;c--;)(f=v[c])&&l.push(y[c]=f);o(null,v=[],l,u)}for(c=v.length;c--;)(f=v[c])&&(l=o?Z.call(i,f):p[c])>-1&&(i[l]=!(a[l]=f))}}else v=g(v===a?v.splice(h,v.length):v),o?o(null,a,v,u):Q.apply(a,v)})}function y(e){for(var t,n,r,i=e.length,o=C.relative[e[0].type],a=o||C.relative[" "],s=o?1:0,u=d(function(e){return e===t},a,!0),l=d(function(e){return Z.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==j)||((t=n).nodeType?u(e,n,r):l(e,n,r))}];i>s;s++)if(n=C.relative[e[s].type])c=[d(h(c),n)];else{if(n=C.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;i>r&&!C.relative[e[r].type];r++);return m(s>1&&h(c),s>1&&p(e.slice(0,s-1)).replace(at,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&p(e))}c.push(n)}return h(c)}function v(e,t){var n=0,r=t.length>0,o=e.length>0,s=function(i,s,u,l,c){var f,p,d,h=[],m=0,y="0",v=i&&[],b=null!=c,x=j,T=i||o&&C.find.TAG("*",c&&s.parentNode||s),w=$+=null==x?1:Math.E;for(b&&(j=s!==L&&s,N=n);null!=(f=T[y]);y++){if(o&&f){for(p=0;d=e[p];p++)if(d(f,s,u)){l.push(f);break}b&&($=w,N=++n)}r&&((f=!d&&f)&&m--,i&&v.push(f))}if(m+=y,r&&y!==m){for(p=0;d=t[p];p++)d(v,h,s,u);if(i){if(m>0)for(;y--;)v[y]||h[y]||(h[y]=G.call(l));h=g(h)}Q.apply(l,h),b&&!i&&h.length>0&&m+t.length>1&&a.uniqueSort(l)}return b&&($=w,j=x),v};return r?i(s):s}function b(e,t,n){for(var r=0,i=t.length;i>r;r++)a(e,t[r],n);return n}function x(e,t,n,r){var i,o,a,s,u,l=f(e);if(!r&&1===l.length){if(o=l[0]=l[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===t.nodeType&&!M&&C.relative[o[1].type]){if(t=C.find.ID(a.matches[0].replace(xt,Tt),t)[0],!t)return n;e=e.slice(o.shift().value.length)}for(i=pt.needsContext.test(e)?-1:o.length-1;i>=0&&(a=o[i],!C.relative[s=a.type]);i--)if((u=C.find[s])&&(r=u(a.matches[0].replace(xt,Tt),dt.test(o[0].type)&&t.parentNode||t))){if(o.splice(i,1),e=r.length&&p(o),!e)return Q.apply(n,K.call(r,0)),n;break}}return S(e,l)(r,t,M,n,dt.test(e)),n}function T(){}var w,N,C,k,E,S,A,j,D,L,H,M,q,_,F,O,B,P="sizzle"+-new Date,R=e.document,W={},$=0,I=0,z=r(),X=r(),U=r(),V=typeof t,Y=1<<31,J=[],G=J.pop,Q=J.push,K=J.slice,Z=J.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},et="[\\\\x20\\\\t\\\\r\\\\n\\\\f]",tt="(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+",nt=tt.replace("w","w#"),rt="([*^$|!~]?=)",it="\\\\["+et+"*("+tt+")"+et+"*(?:"+rt+et+"*(?:([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|("+nt+")|)|)"+et+"*\\\\]",ot=":("+tt+")(?:\\\\((([\'\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|"+it.replace(3,8)+")*)|.*)\\\\)|)",at=RegExp("^"+et+"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)"+et+"+$","g"),ut=RegExp("^"+et+"*,"+et+"*"),lt=RegExp("^"+et+"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])"+et+"*"),ct=RegExp(ot),ft=RegExp("^"+nt+"$"),pt={ID:RegExp("^#("+tt+")"),CLASS:RegExp("^\\\\.("+tt+")"),NAME:RegExp("^\\\\[name=[\'\\"]?("+tt+")[\'\\"]?\\\\]"),TAG:RegExp("^("+tt.replace("w","w*")+")"),ATTR:RegExp("^"+it),PSEUDO:RegExp("^"+ot),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\("+et+"*(even|odd|(([+-]|)(\\\\d*)n|)"+et+"*(?:([+-]|)"+et+"*(\\\\d+)|))"+et+"*\\\\)|)","i"),needsContext:RegExp("^"+et+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\("+et+"*((?:-\\\\d)?\\\\d*)"+et+"*\\\\)|)(?=[^-]|$)","i")},dt=/[\\x20\\t\\r\\n\\f]*[+~]/,ht=/\\{\\s*\\[native code\\]\\s*\\}/,gt=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,mt=/^(?:input|select|textarea|button)$/i,yt=/^h\\d$/i,vt=/\'|\\\\/g,bt=/\\=[\\x20\\t\\r\\n\\f]*([^\'"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,xt=/\\\\([\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|.)/g,Tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{K.call(H.childNodes,0)[0].nodeType}catch(wt){K=function(e){for(var t,n=[];t=this[e];e++)n.push(t);return n}}E=a.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},D=a.setDocument=function(e){var r=e?e.ownerDocument||e:R;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=r.documentElement,M=E(r),W.tagNameNoComments=o(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),W.attributes=o(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),W.getByClassName=o(function(e){return e.innerHTML="<div class=\'hidden e\'></div><div class=\'hidden\'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),W.getByName=o(function(e){e.id=P+0,e.innerHTML="<a name=\'"+P+"\'></a><div name=\'"+P+"\'></div>",H.insertBefore(e,H.firstChild);var t=r.getElementsByName&&r.getElementsByName(P).length===2+r.getElementsByName(P+0).length;return W.getIdNotName=!r.getElementById(P),H.removeChild(e),t}),C.attrHandle=o(function(e){return e.innerHTML="<a href=\'#\'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},W.getIdNotName?(C.find.ID=function(e,t){if(typeof t.getElementById!==V&&!M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){return e.getAttribute("id")===t}}):(C.find.ID=function(e,n){if(typeof n.getElementById!==V&&!M){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==V&&r.getAttributeNode("id").value===e?[r]:t:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode("id");return n&&n.value===t}}),C.find.TAG=W.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==V?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i];i++)1===n.nodeType&&r.push(n);return r}return o},C.find.NAME=W.getByName&&function(e,n){return typeof n.getElementsByName!==V?n.getElementsByName(name):t},C.find.CLASS=W.getByClassName&&function(e,n){return typeof n.getElementsByClassName===V||M?t:n.getElementsByClassName(e)},_=[],q=[":focus"],(W.qsa=n(r.querySelectorAll))&&(o(function(e){e.innerHTML="<select><option selected=\'\'></option></select>",e.querySelectorAll("[selected]").length||q.push("\\\\["+et+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||q.push(":checked")}),o(function(e){e.innerHTML="<input type=\'hidden\' i=\'\'/>",e.querySelectorAll("[i^=\'\']").length&&q.push("[*^$]="+et+"*(?:\\"\\"|\'\')"),e.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),q.push(",.*:")})),(W.matchesSelector=n(F=H.matchesSelector||H.mozMatchesSelector||H.webkitMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){W.disconnectedMatch=F.call(e,"div"),F.call(e,"[s!=\'\']:x"),_.push("!=",ot)}),q=RegExp(q.join("|")),_=RegExp(_.join("|")),O=n(H.contains)||H.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},B=H.compareDocumentPosition?function(e,t){var n;return e===t?(A=!0,0):(n=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&n||e.parentNode&&11===e.parentNode.nodeType?e===r||O(R,e)?-1:t===r||O(R,t)?1:0:4&n?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var n,i=0,o=e.parentNode,a=t.parentNode,u=[e],l=[t];if(e===t)return A=!0,0;if(e.sourceIndex&&t.sourceIndex)return(~t.sourceIndex||Y)-(O(R,e)&&~e.sourceIndex||Y);if(!o||!a)return e===r?-1:t===r?1:o?-1:a?1:0;if(o===a)return s(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;u[i]===l[i];)i++;return i?s(u[i],l[i]):u[i]===R?-1:l[i]===R?1:0},A=!1,[0,0].sort(B),W.detectDuplicates=A,L):L},a.matches=function(e,t){return a(e,null,null,t)},a.matchesSelector=function(e,t){if((e.ownerDocument||e)!==L&&D(e),t=t.replace(bt,"=\'$1\']"),!(!W.matchesSelector||M||_&&_.test(t)||q.test(t)))try{var n=F.call(e,t);if(n||W.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return a(t,L,null,[e]).length>0},a.contains=function(e,t){return(e.ownerDocument||e)!==L&&D(e),O(e,t)},a.attr=function(e,t){var n;return(e.ownerDocument||e)!==L&&D(e),M||(t=t.toLowerCase()),(n=C.attrHandle[t])?n(e):M||W.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},a.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},a.uniqueSort=function(e){var t,n=[],r=1,i=0;if(A=!W.detectDuplicates,e.sort(B),A){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},k=a.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=k(t);return n},C=a.selectors={cacheLength:50,createPseudo:i,match:pt,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xt,Tt),e[3]=(e[4]||e[5]||"").replace(xt,Tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||a.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&a.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return pt.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ct.test(n)&&(t=f(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(xt,Tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=z[e+" "];return t||(t=RegExp("(^|"+et+")"+e+"("+et+"|$)"))&&z(e,function(e){return t.test(e.className||typeof e.getAttribute!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=a.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.substr(i.length-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){for(;g;){for(f=t;f=f[g];)if(s?f.nodeName.toLowerCase()===y:1===f.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(c=m[P]||(m[P]={}),l=c[e]||[],d=l[0]===$&&l[1],p=l[0]===$&&l[2],f=d&&m.childNodes[d];f=++d&&f&&f[g]||(p=d=0)||h.pop();)if(1===f.nodeType&&++p&&f===t){c[e]=[$,d,p];break}}else if(v&&(l=(t[P]||(t[P]={}))[e])&&l[0]===$)p=l[1];else for(;(f=++d&&f&&f[g]||(p=d=0)||h.pop())&&((s?f.nodeName.toLowerCase()!==y:1!==f.nodeType)||!++p||(v&&((f[P]||(f[P]={}))[e]=[$,p]),f!==t)););return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,r=C.pseudos[e]||C.setFilters[e.toLowerCase()]||a.error("unsupported pseudo: "+e);return r[P]?r(t):r.length>1?(n=[e,e,"",t],C.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=Z.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],n=[],r=S(e.replace(at,"$1"));return r[P]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:i(function(e){return function(t){return a(e,t).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return ft.test(e||"")||a.error("unsupported lang: "+e),e=e.replace(xt,Tt).toLowerCase(),function(t){var n;do if(n=M?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return mt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[w]=u(w);for(w in{submit:!0,reset:!0})C.pseudos[w]=l(w);S=a.compile=function(e,t){var n,r=[],i=[],o=U[e+" "];if(!o){for(t||(t=f(e)),n=t.length;n--;)o=y(t[n]),o[P]?r.push(o):i.push(o);o=U(e,v(i,r))}return o},C.pseudos.nth=C.pseudos.eq,C.filters=T.prototype=C.pseudos,C.setFilters=new T,D(),a.attr=st.attr,st.find=a,st.expr=a.selectors,st.expr[":"]=st.expr.pseudos,st.unique=a.uniqueSort,st.text=a.getText,st.isXMLDoc=a.isXML,st.contains=a.contains}(e);var Pt=/Until$/,Rt=/^(?:parents|prev(?:Until|All))/,Wt=/^.[^:#\\[\\.,]*$/,$t=st.expr.match.needsContext,It={children:!0,contents:!0,next:!0,prev:!0};st.fn.extend({find:function(e){var t,n,r;if("string"!=typeof e)return r=this,this.pushStack(st(e).filter(function(){for(t=0;r.length>t;t++)if(st.contains(r[t],this))return!0}));for(n=[],t=0;this.length>t;t++)st.find(e,this[t],n);return n=this.pushStack(st.unique(n)),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=st(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(st.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(f(this,e,!1))},filter:function(e){return this.pushStack(f(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?$t.test(e)?st(e,this.context).index(this[0])>=0:st.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=$t.test(e)||"string"!=typeof e?st(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?a.index(n)>-1:st.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return this.pushStack(o.length>1?st.unique(o):o)},index:function(e){return e?"string"==typeof e?st.inArray(this[0],st(e)):st.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?st(e,t):st.makeArray(e&&e.nodeType?[e]:e),r=st.merge(this.get(),n);return this.pushStack(st.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),st.fn.andSelf=st.fn.addBack,st.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return st.dir(e,"parentNode")},parentsUntil:function(e,t,n){return st.dir(e,"parentNode",n)},next:function(e){return c(e,"nextSibling")},prev:function(e){return c(e,"previousSibling")\n +},nextAll:function(e){return st.dir(e,"nextSibling")},prevAll:function(e){return st.dir(e,"previousSibling")},nextUntil:function(e,t,n){return st.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return st.dir(e,"previousSibling",n)},siblings:function(e){return st.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return st.sibling(e.firstChild)},contents:function(e){return st.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:st.merge([],e.childNodes)}},function(e,t){st.fn[e]=function(n,r){var i=st.map(this,t,n);return Pt.test(e)||(r=n),r&&"string"==typeof r&&(i=st.filter(r,i)),i=this.length>1&&!It[e]?st.unique(i):i,this.length>1&&Rt.test(e)&&(i=i.reverse()),this.pushStack(i)}}),st.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?st.find.matchesSelector(t[0],e)?[t[0]]:[]:st.find.matches(e,t)},dir:function(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!st(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var zt="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Xt=/ jQuery\\d+="(?:null|\\d+)"/g,Ut=RegExp("<(?:"+zt+")[\\\\s/>]","i"),Vt=/^\\s+/,Yt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,Jt=/<([\\w:]+)/,Gt=/<tbody/i,Qt=/<|&#?\\w+;/,Kt=/<(?:script|style|link)/i,Zt=/^(?:checkbox|radio)$/i,en=/checked\\s*(?:[^=]|=\\s*.checked.)/i,tn=/^$|\\/(?:java|ecma)script/i,nn=/^true\\/(.*)/,rn=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,on={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:st.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},an=p(V),sn=an.appendChild(V.createElement("div"));on.optgroup=on.option,on.tbody=on.tfoot=on.colgroup=on.caption=on.thead,on.th=on.td,st.fn.extend({text:function(e){return st.access(this,function(e){return e===t?st.text(this):this.empty().append((this[0]&&this[0].ownerDocument||V).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(st.isFunction(e))return this.each(function(t){st(this).wrapAll(e.call(this,t))});if(this[0]){var t=st(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return st.isFunction(e)?this.each(function(t){st(this).wrapInner(e.call(this,t))}):this.each(function(){var t=st(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=st.isFunction(e);return this.each(function(n){st(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){st.nodeName(this,"body")||st(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||st.filter(e,[n]).length>0)&&(t||1!==n.nodeType||st.cleanData(b(n)),n.parentNode&&(t&&st.contains(n.ownerDocument,n)&&m(b(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&st.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&st.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return st.clone(this,e,t)})},html:function(e){return st.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(Xt,""):t;if(!("string"!=typeof e||Kt.test(e)||!st.support.htmlSerialize&&Ut.test(e)||!st.support.leadingWhitespace&&Vt.test(e)||on[(Jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Yt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(st.cleanData(b(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=st.isFunction(e);return t||"string"==typeof e||(e=st(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;(n&&1===this.nodeType||11===this.nodeType)&&(st(this).remove(),t?t.parentNode.insertBefore(e,t):n.appendChild(e))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=et.apply([],e);var i,o,a,s,u,l,c=0,f=this.length,p=this,m=f-1,y=e[0],v=st.isFunction(y);if(v||!(1>=f||"string"!=typeof y||st.support.checkClone)&&en.test(y))return this.each(function(i){var o=p.eq(i);v&&(e[0]=y.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(f&&(i=st.buildFragment(e,this[0].ownerDocument,!1,this),o=i.firstChild,1===i.childNodes.length&&(i=o),o)){for(n=n&&st.nodeName(o,"tr"),a=st.map(b(i,"script"),h),s=a.length;f>c;c++)u=i,c!==m&&(u=st.clone(u,!0,!0),s&&st.merge(a,b(u,"script"))),r.call(n&&st.nodeName(this[c],"table")?d(this[c],"tbody"):this[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,st.map(a,g),c=0;s>c;c++)u=a[c],tn.test(u.type||"")&&!st._data(u,"globalEval")&&st.contains(l,u)&&(u.src?st.ajax({url:u.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):st.globalEval((u.text||u.textContent||u.innerHTML||"").replace(rn,"")));i=o=null}return this}}),st.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){st.fn[e]=function(e){for(var n,r=0,i=[],o=st(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),st(o[r])[t](n),tt.apply(i,n.get());return this.pushStack(i)}}),st.extend({clone:function(e,t,n){var r,i,o,a,s,u=st.contains(e.ownerDocument,e);if(st.support.html5Clone||st.isXMLDoc(e)||!Ut.test("<"+e.nodeName+">")?s=e.cloneNode(!0):(sn.innerHTML=e.outerHTML,sn.removeChild(s=sn.firstChild)),!(st.support.noCloneEvent&&st.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||st.isXMLDoc(e)))for(r=b(s),i=b(e),a=0;null!=(o=i[a]);++a)r[a]&&v(o,r[a]);if(t)if(n)for(i=i||b(e),r=r||b(s),a=0;null!=(o=i[a]);a++)y(o,r[a]);else y(e,s);return r=b(s,"script"),r.length>0&&m(r,!u&&b(e,"script")),r=i=o=null,s},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,f=e.length,d=p(t),h=[],g=0;f>g;g++)if(o=e[g],o||0===o)if("object"===st.type(o))st.merge(h,o.nodeType?[o]:o);else if(Qt.test(o)){for(s=s||d.appendChild(t.createElement("div")),a=(Jt.exec(o)||["",""])[1].toLowerCase(),u=on[a]||on._default,s.innerHTML=u[1]+o.replace(Yt,"<$1></$2>")+u[2],c=u[0];c--;)s=s.lastChild;if(!st.support.leadingWhitespace&&Vt.test(o)&&h.push(t.createTextNode(Vt.exec(o)[0])),!st.support.tbody)for(o="table"!==a||Gt.test(o)?"<table>"!==u[1]||Gt.test(o)?0:s:s.firstChild,c=o&&o.childNodes.length;c--;)st.nodeName(l=o.childNodes[c],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(st.merge(h,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=d.lastChild}else h.push(t.createTextNode(o));for(s&&d.removeChild(s),st.support.appendChecked||st.grep(b(h,"input"),x),g=0;o=h[g++];)if((!r||-1===st.inArray(o,r))&&(i=st.contains(o.ownerDocument,o),s=b(d.appendChild(o),"script"),i&&m(s),n))for(c=0;o=s[c++];)tn.test(o.type||"")&&n.push(o);return s=null,d},cleanData:function(e,n){for(var r,i,o,a,s=0,u=st.expando,l=st.cache,c=st.support.deleteExpando,f=st.event.special;null!=(o=e[s]);s++)if((n||st.acceptData(o))&&(i=o[u],r=i&&l[i])){if(r.events)for(a in r.events)f[a]?st.event.remove(o,a):st.removeEvent(o,a,r.handle);l[i]&&(delete l[i],c?delete o[u]:o.removeAttribute!==t?o.removeAttribute(u):o[u]=null,K.push(i))}}});var un,ln,cn,fn=/alpha\\([^)]*\\)/i,pn=/opacity\\s*=\\s*([^)]*)/,dn=/^(top|right|bottom|left)$/,hn=/^(none|table(?!-c[ea]).+)/,gn=/^margin/,mn=RegExp("^("+ut+")(.*)$","i"),yn=RegExp("^("+ut+")(?!px)[a-z%]+$","i"),vn=RegExp("^([+-])=("+ut+")","i"),bn={BODY:"block"},xn={position:"absolute",visibility:"hidden",display:"block"},Tn={letterSpacing:0,fontWeight:400},wn=["Top","Right","Bottom","Left"],Nn=["Webkit","O","Moz","ms"];st.fn.extend({css:function(e,n){return st.access(this,function(e,n,r){var i,o,a={},s=0;if(st.isArray(n)){for(i=ln(e),o=n.length;o>s;s++)a[n[s]]=st.css(e,n[s],!1,i);return a}return r!==t?st.style(e,n,r):st.css(e,n)},e,n,arguments.length>1)},show:function(){return N(this,!0)},hide:function(){return N(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:w(this))?st(this).show():st(this).hide()})}}),st.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=un(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":st.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=st.camelCase(n),l=e.style;if(n=st.cssProps[u]||(st.cssProps[u]=T(l,u)),s=st.cssHooks[n]||st.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=vn.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(st.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||st.cssNumber[u]||(r+="px"),st.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=st.camelCase(n);return n=st.cssProps[u]||(st.cssProps[u]=T(e.style,u)),s=st.cssHooks[n]||st.cssHooks[u],s&&"get"in s&&(o=s.get(e,!0,r)),o===t&&(o=un(e,n,i)),"normal"===o&&n in Tn&&(o=Tn[n]),r?(a=parseFloat(o),r===!0||st.isNumeric(a)?a||0:o):o},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(ln=function(t){return e.getComputedStyle(t,null)},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||st.contains(e.ownerDocument,e)||(u=st.style(e,n)),yn.test(u)&&gn.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):V.documentElement.currentStyle&&(ln=function(e){return e.currentStyle},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),yn.test(u)&&!dn.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u}),st.each(["height","width"],function(e,n){st.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&hn.test(st.css(e,"display"))?st.swap(e,xn,function(){return E(e,n,i)}):E(e,n,i):t},set:function(e,t,r){var i=r&&ln(e);return C(e,t,r?k(e,n,r,st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,i),i):0)}}}),st.support.opacity||(st.cssHooks.opacity={get:function(e,t){return pn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=st.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===st.trim(o.replace(fn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=fn.test(o)?o.replace(fn,i):o+" "+i)}}),st(function(){st.support.reliableMarginRight||(st.cssHooks.marginRight={get:function(e,n){return n?st.swap(e,{display:"inline-block"},un,[e,"marginRight"]):t}}),!st.support.pixelPosition&&st.fn.position&&st.each(["top","left"],function(e,n){st.cssHooks[n]={get:function(e,r){return r?(r=un(e,n),yn.test(r)?st(e).position()[n]+"px":r):t}}})}),st.expr&&st.expr.filters&&(st.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!st.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||st.css(e,"display"))},st.expr.filters.visible=function(e){return!st.expr.filters.hidden(e)}),st.each({margin:"",padding:"",border:"Width"},function(e,t){st.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+wn[r]+t]=o[r]||o[r-2]||o[0];return i}},gn.test(e)||(st.cssHooks[e+t].set=C)});var Cn=/%20/g,kn=/\\[\\]$/,En=/\\r?\\n/g,Sn=/^(?:submit|button|image|reset)$/i,An=/^(?:input|select|textarea|keygen)/i;st.fn.extend({serialize:function(){return st.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=st.prop(this,"elements");return e?st.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!st(this).is(":disabled")&&An.test(this.nodeName)&&!Sn.test(e)&&(this.checked||!Zt.test(e))}).map(function(e,t){var n=st(this).val();return null==n?null:st.isArray(n)?st.map(n,function(e){return{name:t.name,value:e.replace(En,"\\r\\n")}}):{name:t.name,value:n.replace(En,"\\r\\n")}}).get()}}),st.param=function(e,n){var r,i=[],o=function(e,t){t=st.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=st.ajaxSettings&&st.ajaxSettings.traditional),st.isArray(e)||e.jquery&&!st.isPlainObject(e))st.each(e,function(){o(this.name,this.value)});else for(r in e)j(r,e[r],n,o);return i.join("&").replace(Cn,"+")};var jn,Dn,Ln=st.now(),Hn=/\\?/,Mn=/#.*$/,qn=/([?&])_=[^&]*/,_n=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/gm,Fn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,On=/^(?:GET|HEAD)$/,Bn=/^\\/\\//,Pn=/^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,Rn=st.fn.load,Wn={},$n={},In="*/".concat("*");try{Dn=Y.href}catch(zn){Dn=V.createElement("a"),Dn.href="",Dn=Dn.href}jn=Pn.exec(Dn.toLowerCase())||[],st.fn.load=function(e,n,r){if("string"!=typeof e&&Rn)return Rn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),st.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(o="POST"),s.length>0&&st.ajax({url:e,type:o,dataType:"html",data:n}).done(function(e){a=arguments,s.html(i?st("<div>").append(st.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,a||[e.responseText,t,e])}),this},st.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){st.fn[t]=function(e){return this.on(t,e)}}),st.each(["get","post"],function(e,n){st[n]=function(e,r,i,o){return st.isFunction(r)&&(o=o||i,i=r,r=t),st.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),st.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Dn,type:"GET",isLocal:Fn.test(jn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":In,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"},converters:{"* text":e.String,"text html":!0,"text json":st.parseJSON,"text xml":st.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?H(H(e,st.ajaxSettings),t):H(st.ajaxSettings,e)},ajaxPrefilter:D(Wn),ajaxTransport:D($n),ajax:function(e,n){function r(e,n,r,s){var l,f,v,b,T,N=n;2!==x&&(x=2,u&&clearTimeout(u),i=t,a=s||"",w.readyState=e>0?4:0,r&&(b=M(p,w,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=w.getResponseHeader("Last-Modified"),T&&(st.lastModified[o]=T),T=w.getResponseHeader("etag"),T&&(st.etag[o]=T)),304===e?(l=!0,N="notmodified"):(l=q(p,b),N=l.state,f=l.data,v=l.error,l=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),w.status=e,w.statusText=(n||N)+"",l?g.resolveWith(d,[f,N,w]):g.rejectWith(d,[w,N,v]),w.statusCode(y),y=t,c&&h.trigger(l?"ajaxSuccess":"ajaxError",[w,p,l?f:v]),m.fireWith(d,[w,N]),c&&(h.trigger("ajaxComplete",[w,p]),--st.active||st.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=t),n=n||{};var i,o,a,s,u,l,c,f,p=st.ajaxSetup({},n),d=p.context||p,h=p.context&&(d.nodeType||d.jquery)?st(d):st.event,g=st.Deferred(),m=st.Callbacks("once memory"),y=p.statusCode||{},v={},b={},x=0,T="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!s)for(s={};t=_n.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,v[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)y[t]=[y[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||T;return i&&i.abort(t),r(0,t),this}};if(g.promise(w).complete=m.add,w.success=w.done,w.error=w.fail,p.url=((e||p.url||Dn)+"").replace(Mn,"").replace(Bn,jn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=st.trim(p.dataType||"*").toLowerCase().match(lt)||[""],null==p.crossDomain&&(l=Pn.exec(p.url.toLowerCase()),p.crossDomain=!(!l||l[1]===jn[1]&&l[2]===jn[2]&&(l[3]||("http:"===l[1]?80:443))==(jn[3]||("http:"===jn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=st.param(p.data,p.traditional)),L(Wn,p,n,w),2===x)return w;c=p.global,c&&0===st.active++&&st.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!On.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(Hn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=qn.test(o)?o.replace(qn,"$1_="+Ln++):o+(Hn.test(o)?"&":"?")+"_="+Ln++)),p.ifModified&&(st.lastModified[o]&&w.setRequestHeader("If-Modified-Since",st.lastModified[o]),st.etag[o]&&w.setRequestHeader("If-None-Match",st.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&w.setRequestHeader("Content-Type",p.contentType),w.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+In+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)w.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(d,w,p)===!1||2===x))return w.abort();T="abort";for(f in{success:1,error:1,complete:1})w[f](p[f]);if(i=L($n,p,n,w)){w.readyState=1,c&&h.trigger("ajaxSend",[w,p]),p.async&&p.timeout>0&&(u=setTimeout(function(){w.abort("timeout")},p.timeout));try{x=1,i.send(v,r)}catch(N){if(!(2>x))throw N;r(-1,N)}}else r(-1,"No Transport");return w},getScript:function(e,n){return st.get(e,t,n,"script")},getJSON:function(e,t,n){return st.get(e,t,n,"json")}}),st.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return st.globalEval(e),e}}}),st.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),st.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=V.head||st("head")[0]||V.documentElement;return{send:function(t,i){n=V.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Xn=[],Un=/(=)\\?(?=&|$)|\\?\\?/;st.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xn.pop()||st.expando+"_"+Ln++;return this[e]=!0,e}}),st.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Un.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Un.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=st.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Un,"$1"+o):n.jsonp!==!1&&(n.url+=(Hn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||st.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Xn.push(o)),s&&st.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Vn,Yn,Jn=0,Gn=e.ActiveXObject&&function(){var e;for(e in Vn)Vn[e](t,!0)};st.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&_()||F()}:_,Yn=st.ajaxSettings.xhr(),st.support.cors=!!Yn&&"withCredentials"in Yn,Yn=st.support.ajax=!!Yn,Yn&&st.ajaxTransport(function(n){if(!n.crossDomain||st.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,f,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=st.noop,Gn&&delete Vn[a]),i)4!==u.readyState&&u.abort();else{f={},s=u.status,p=u.responseXML,c=u.getAllResponseHeaders(),p&&p.documentElement&&(f.xml=p),"string"==typeof u.responseText&&(f.text=u.responseText);try{l=u.statusText}catch(d){l=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=f.text?200:404}}catch(h){i||o(-1,h)}f&&o(s,l,f,c)},n.async?4===u.readyState?setTimeout(r):(a=++Jn,Gn&&(Vn||(Vn={},st(e).unload(Gn)),Vn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Qn,Kn,Zn=/^(?:toggle|show|hide)$/,er=RegExp("^(?:([+-])=|)("+ut+")([a-z%]*)$","i"),tr=/queueHooks$/,nr=[W],rr={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=er.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(st.cssNumber[e]?"":"px"),"px"!==r&&s){s=st.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,st.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};st.Animation=st.extend(P,{tweener:function(e,t){st.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],rr[n]=rr[n]||[],rr[n].unshift(t)},prefilter:function(e,t){t?nr.unshift(e):nr.push(e)}}),st.Tween=$,$.prototype={constructor:$,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(st.cssNumber[n]?"":"px")},cur:function(){var e=$.propHooks[this.prop];return e&&e.get?e.get(this):$.propHooks._default.get(this)},run:function(e){var t,n=$.propHooks[this.prop];return this.pos=t=this.options.duration?st.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):$.propHooks._default.set(this),this}},$.prototype.init.prototype=$.prototype,$.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=st.css(e.elem,e.prop,"auto"),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){st.fx.step[e.prop]?st.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[st.cssProps[e.prop]]||st.cssHooks[e.prop])?st.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},$.propHooks.scrollTop=$.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},st.each(["toggle","show","hide"],function(e,t){var n=st.fn[t];st.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(I(t,!0),e,r,i)}}),st.fn.extend({fadeTo:function(e,t,n,r){return this.filter(w).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=st.isEmptyObject(e),o=st.speed(t,n,r),a=function(){var t=P(this,st.extend({},e),o);a.finish=function(){t.stop(!0)},(i||st._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=st.timers,a=st._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&tr.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&st.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=st._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=st.timers,a=r?r.length:0;for(n.finish=!0,st.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),st.each({slideDown:I("show"),slideUp:I("hide"),slideToggle:I("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){st.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),st.speed=function(e,t,n){var r=e&&"object"==typeof e?st.extend({},e):{complete:n||!n&&t||st.isFunction(e)&&e,duration:e,easing:n&&t||t&&!st.isFunction(t)&&t};return r.duration=st.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in st.fx.speeds?st.fx.speeds[r.duration]:st.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){st.isFunction(r.old)&&r.old.call(this),r.queue&&st.dequeue(this,r.queue)},r},st.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},st.timers=[],st.fx=$.prototype.init,st.fx.tick=function(){var e,n=st.timers,r=0;for(Qn=st.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||st.fx.stop(),Qn=t},st.fx.timer=function(e){e()&&st.timers.push(e)&&st.fx.start()},st.fx.interval=13,st.fx.start=function(){Kn||(Kn=setInterval(st.fx.tick,st.fx.interval))},st.fx.stop=function(){clearInterval(Kn),Kn=null},st.fx.speeds={slow:600,fast:200,_default:400},st.fx.step={},st.expr&&st.expr.filters&&(st.expr.filters.animated=function(e){return st.grep(st.timers,function(t){return e===t.elem}).length}),st.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){st.offset.setOffset(this,e,t)});var n,r,i={top:0,left:0},o=this[0],a=o&&o.ownerDocument;if(a)return n=a.documentElement,st.contains(n,o)?(o.getBoundingClientRect!==t&&(i=o.getBoundingClientRect()),r=z(a),{top:i.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:i.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):i},st.offset={setOffset:function(e,t,n){var r=st.css(e,"position");"static"===r&&(e.style.position="relative");var i,o,a=st(e),s=a.offset(),u=st.css(e,"top"),l=st.css(e,"left"),c=("absolute"===r||"fixed"===r)&&st.inArray("auto",[u,l])>-1,f={},p={};c?(p=a.position(),i=p.top,o=p.left):(i=parseFloat(u)||0,o=parseFloat(l)||0),st.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(f.top=t.top-s.top+i),null!=t.left&&(f.left=t.left-s.left+o),"using"in t?t.using.call(e,f):a.css(f)}},st.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===st.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),st.nodeName(e[0],"html")||(n=e.offset()),n.top+=st.css(e[0],"borderTopWidth",!0),n.left+=st.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-st.css(r,"marginTop",!0),left:t.left-n.left-st.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||V.documentElement;e&&!st.nodeName(e,"html")&&"static"===st.css(e,"position");)e=e.offsetParent;return e||V.documentElement})}}),st.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);st.fn[e]=function(i){return st.access(this,function(e,i,o){var a=z(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?st(a).scrollLeft():o,r?o:st(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}}),st.each({Height:"height",Width:"width"},function(e,n){st.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){st.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return st.access(this,function(n,r,i){var o;return st.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?st.css(n,r,s):st.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=st,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return st})})(window);\n +//@ sourceMappingURL=jquery.min.map + +]]></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.js.xml index 651cf9315fbda38bc7c630aa8ea5b9cc7e1cf02d..97bf4a7ca8ced489e8ae19cd58524572e8b59a1c 100644 --- a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.js.xml +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624492.57</string> </value> + <value> <string>ts58329290.51</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -34,11 +34,11 @@ </item> <item> <key> <string>size</string> </key> - <value> <int>94840</int> </value> + <value> <int>252881</int> </value> </item> <item> <key> <string>title</string> </key> - <value> <string>jquery-1.7.2.min.js</string> </value> + <value> <string>jquery-1.7.2.js</string> </value> </item> </dictionary> </pickle> @@ -53,13 +53,9466 @@ <key> <string>data</string> </key> <value> <string encoding="cdata"><![CDATA[ -/*! jQuery v1.7.2 jquery.com | jquery.org/license */\n -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:["\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test("Â ")&&(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href=\'/a\' style=\'top:1px;float:left;opacity:.55;\'>a</a><input type=\'checkbox\'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style=\'"+r+t+"5px solid #000;",q="<div "+n+"display:block;\'><div style=\'"+t+"0;display:block;overflow:hidden;\'></div></div>"+"<table "+n+"\' cellpadding=\'0\' cellspacing=\'0\'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style=\'"+t+"0;display:none\'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style=\'width:5px;\'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can\'t be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(\n -a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\\\s)"+b[3]+"(?:\\\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\\\.)"+l.split(".").sort().join("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\\\.)"+i.join("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement 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){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.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){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.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|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\\t\\n\\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,"");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name=\'"+d+"\'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href=\'#\'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class=\'TEST\'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/\'/g,"\\\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id=\'"+n+"\'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!=\'\']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class=\'test e\'></div><div class=\'test\'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\\d+="(?:\\d+|null)"/g,X=/^\\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,Z=/<([\\w:]+)/,$=/<tbody/i,_=/<|&#?\\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\\\s/>]","i"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,"<select multiple=\'multiple\'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f\n -.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\\([^)]*\\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\\-+]?(?:\\d*\\.)?\\d+$/i,bt=/^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,bu=/^([\\-+])=([\\-+.\\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\\?/,bM=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\\r\\n")}}):{name:b.name,value:c.replace(bE,"\\r\\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(&|$)|\\?\\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); +/*!\n + * jQuery JavaScript Library v1.7.2\n + * http://jquery.com/\n + *\n + * Copyright 2011, John Resig\n + * Dual licensed under the MIT or GPL Version 2 licenses.\n + * http://jquery.org/license\n + *\n + * Includes Sizzle.js\n + * http://sizzlejs.com/\n + * Copyright 2011, The Dojo Foundation\n + * Released under the MIT, BSD, and GPL Licenses.\n + *\n + * Date: Wed Mar 21 12:46:34 2012 -0700\n + */\n +(function( window, undefined ) {\n +\n +// Use the correct document accordingly with window argument (sandbox)\n +var document = window.document,\n +\tnavigator = window.navigator,\n +\tlocation = window.location;\n +var jQuery = (function() {\n +\n +// Define a local copy of jQuery\n +var jQuery = function( selector, context ) {\n +\t\t// The jQuery object is actually just the init constructor \'enhanced\'\n +\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n +\t},\n +\n +\t// Map over jQuery in case of overwrite\n +\t_jQuery = window.jQuery,\n +\n +\t// Map over the $ in case of overwrite\n +\t_$ = window.$,\n +\n +\t// A central reference to the root jQuery(document)\n +\trootjQuery,\n +\n +\t// A simple way to check for HTML strings or ID strings\n +\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n +\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n +\n +\t// Check if a string has a non-whitespace character in it\n +\trnotwhite = /\\S/,\n +\n +\t// Used for trimming whitespace\n +\ttrimLeft = /^\\s+/,\n +\ttrimRight = /\\s+$/,\n +\n +\t// Match a standalone tag\n +\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n +\n +\t// JSON RegExp\n +\trvalidchars = /^[\\],:{}\\s]*$/,\n +\trvalidescape = /\\\\(?:["\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n +\trvalidtokens = /"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n +\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n +\n +\t// Useragent RegExp\n +\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n +\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n +\trmsie = /(msie) ([\\w.]+)/,\n +\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n +\n +\t// Matches dashed string for camelizing\n +\trdashAlpha = /-([a-z]|[0-9])/ig,\n +\trmsPrefix = /^-ms-/,\n +\n +\t// Used by jQuery.camelCase as callback to replace()\n +\tfcamelCase = function( all, letter ) {\n +\t\treturn ( letter + "" ).toUpperCase();\n +\t},\n +\n +\t// Keep a UserAgent string for use with jQuery.browser\n +\tuserAgent = navigator.userAgent,\n +\n +\t// For matching the engine and version of the browser\n +\tbrowserMatch,\n +\n +\t// The deferred used on DOM ready\n +\treadyList,\n +\n +\t// The ready event handler\n +\tDOMContentLoaded,\n +\n +\t// Save a reference to some core methods\n +\ttoString = Object.prototype.toString,\n +\thasOwn = Object.prototype.hasOwnProperty,\n +\tpush = Array.prototype.push,\n +\tslice = Array.prototype.slice,\n +\ttrim = String.prototype.trim,\n +\tindexOf = Array.prototype.indexOf,\n +\n +\t// [[Class]] -> type pairs\n +\tclass2type = {};\n +\n +jQuery.fn = jQuery.prototype = {\n +\tconstructor: jQuery,\n +\tinit: function( selector, context, rootjQuery ) {\n +\t\tvar match, elem, ret, doc;\n +\n +\t\t// Handle $(""), $(null), or $(undefined)\n +\t\tif ( !selector ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle $(DOMElement)\n +\t\tif ( selector.nodeType ) {\n +\t\t\tthis.context = this[0] = selector;\n +\t\t\tthis.length = 1;\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// The body element only exists once, optimize finding it\n +\t\tif ( selector === "body" && !context && document.body ) {\n +\t\t\tthis.context = document;\n +\t\t\tthis[0] = document.body;\n +\t\t\tthis.selector = selector;\n +\t\t\tthis.length = 1;\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\t// Handle HTML strings\n +\t\tif ( typeof selector === "string" ) {\n +\t\t\t// Are we dealing with HTML string or an ID?\n +\t\t\tif ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {\n +\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n +\t\t\t\tmatch = [ null, selector, null ];\n +\n +\t\t\t} else {\n +\t\t\t\tmatch = quickExpr.exec( selector );\n +\t\t\t}\n +\n +\t\t\t// Verify a match, and that no context was specified for #id\n +\t\t\tif ( match && (match[1] || !context) ) {\n +\n +\t\t\t\t// HANDLE: $(html) -> $(array)\n +\t\t\t\tif ( match[1] ) {\n +\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n +\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n +\n +\t\t\t\t\t// If a single string is passed in and it\'s a single tag\n +\t\t\t\t\t// just do a createElement and skip the rest\n +\t\t\t\t\tret = rsingleTag.exec( selector );\n +\n +\t\t\t\t\tif ( ret ) {\n +\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n +\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n +\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n +\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn jQuery.merge( this, selector );\n +\n +\t\t\t\t// HANDLE: $("#id")\n +\t\t\t\t} else {\n +\t\t\t\t\telem = document.getElementById( match[2] );\n +\n +\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t// Handle the case where IE and Opera return items\n +\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n +\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n +\t\t\t\t\t\tthis.length = 1;\n +\t\t\t\t\t\tthis[0] = elem;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tthis.context = document;\n +\t\t\t\t\tthis.selector = selector;\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\n +\t\t\t// HANDLE: $(expr, $(...))\n +\t\t\t} else if ( !context || context.jquery ) {\n +\t\t\t\treturn ( context || rootjQuery ).find( selector );\n +\n +\t\t\t// HANDLE: $(expr, context)\n +\t\t\t// (which is just equivalent to: $(context).find(expr)\n +\t\t\t} else {\n +\t\t\t\treturn this.constructor( context ).find( selector );\n +\t\t\t}\n +\n +\t\t// HANDLE: $(function)\n +\t\t// Shortcut for document ready\n +\t\t} else if ( jQuery.isFunction( selector ) ) {\n +\t\t\treturn rootjQuery.ready( selector );\n +\t\t}\n +\n +\t\tif ( selector.selector !== undefined ) {\n +\t\t\tthis.selector = selector.selector;\n +\t\t\tthis.context = selector.context;\n +\t\t}\n +\n +\t\treturn jQuery.makeArray( selector, this );\n +\t},\n +\n +\t// Start with an empty selector\n +\tselector: "",\n +\n +\t// The current version of jQuery being used\n +\tjquery: "1.7.2",\n +\n +\t// The default length of a jQuery object is 0\n +\tlength: 0,\n +\n +\t// The number of elements contained in the matched element set\n +\tsize: function() {\n +\t\treturn this.length;\n +\t},\n +\n +\ttoArray: function() {\n +\t\treturn slice.call( this, 0 );\n +\t},\n +\n +\t// Get the Nth element in the matched element set OR\n +\t// Get the whole matched element set as a clean array\n +\tget: function( num ) {\n +\t\treturn num == null ?\n +\n +\t\t\t// Return a \'clean\' array\n +\t\t\tthis.toArray() :\n +\n +\t\t\t// Return just the object\n +\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n +\t},\n +\n +\t// Take an array of elements and push it onto the stack\n +\t// (returning the new matched element set)\n +\tpushStack: function( elems, name, selector ) {\n +\t\t// Build a new jQuery matched element set\n +\t\tvar ret = this.constructor();\n +\n +\t\tif ( jQuery.isArray( elems ) ) {\n +\t\t\tpush.apply( ret, elems );\n +\n +\t\t} else {\n +\t\t\tjQuery.merge( ret, elems );\n +\t\t}\n +\n +\t\t// Add the old object onto the stack (as a reference)\n +\t\tret.prevObject = this;\n +\n +\t\tret.context = this.context;\n +\n +\t\tif ( name === "find" ) {\n +\t\t\tret.selector = this.selector + ( this.selector ? " " : "" ) + selector;\n +\t\t} else if ( name ) {\n +\t\t\tret.selector = this.selector + "." + name + "(" + selector + ")";\n +\t\t}\n +\n +\t\t// Return the newly-formed element set\n +\t\treturn ret;\n +\t},\n +\n +\t// Execute a callback for every element in the matched set.\n +\t// (You can seed the arguments with an array of args, but this is\n +\t// only used internally.)\n +\teach: function( callback, args ) {\n +\t\treturn jQuery.each( this, callback, args );\n +\t},\n +\n +\tready: function( fn ) {\n +\t\t// Attach the listeners\n +\t\tjQuery.bindReady();\n +\n +\t\t// Add the callback\n +\t\treadyList.add( fn );\n +\n +\t\treturn this;\n +\t},\n +\n +\teq: function( i ) {\n +\t\ti = +i;\n +\t\treturn i === -1 ?\n +\t\t\tthis.slice( i ) :\n +\t\t\tthis.slice( i, i + 1 );\n +\t},\n +\n +\tfirst: function() {\n +\t\treturn this.eq( 0 );\n +\t},\n +\n +\tlast: function() {\n +\t\treturn this.eq( -1 );\n +\t},\n +\n +\tslice: function() {\n +\t\treturn this.pushStack( slice.apply( this, arguments ),\n +\t\t\t"slice", slice.call(arguments).join(",") );\n +\t},\n +\n +\tmap: function( callback ) {\n +\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n +\t\t\treturn callback.call( elem, i, elem );\n +\t\t}));\n +\t},\n +\n +\tend: function() {\n +\t\treturn this.prevObject || this.constructor(null);\n +\t},\n +\n +\t// For internal use only.\n +\t// Behaves like an Array\'s method, not like a jQuery method.\n +\tpush: push,\n +\tsort: [].sort,\n +\tsplice: [].splice\n +};\n +\n +// Give the init function the jQuery prototype for later instantiation\n +jQuery.fn.init.prototype = jQuery.fn;\n +\n +jQuery.extend = jQuery.fn.extend = function() {\n +\tvar options, name, src, copy, copyIsArray, clone,\n +\t\ttarget = arguments[0] || {},\n +\t\ti = 1,\n +\t\tlength = arguments.length,\n +\t\tdeep = false;\n +\n +\t// Handle a deep copy situation\n +\tif ( typeof target === "boolean" ) {\n +\t\tdeep = target;\n +\t\ttarget = arguments[1] || {};\n +\t\t// skip the boolean and the target\n +\t\ti = 2;\n +\t}\n +\n +\t// Handle case when target is a string or something (possible in deep copy)\n +\tif ( typeof target !== "object" && !jQuery.isFunction(target) ) {\n +\t\ttarget = {};\n +\t}\n +\n +\t// extend jQuery itself if only one argument is passed\n +\tif ( length === i ) {\n +\t\ttarget = this;\n +\t\t--i;\n +\t}\n +\n +\tfor ( ; i < length; i++ ) {\n +\t\t// Only deal with non-null/undefined values\n +\t\tif ( (options = arguments[ i ]) != null ) {\n +\t\t\t// Extend the base object\n +\t\t\tfor ( name in options ) {\n +\t\t\t\tsrc = target[ name ];\n +\t\t\t\tcopy = options[ name ];\n +\n +\t\t\t\t// Prevent never-ending loop\n +\t\t\t\tif ( target === copy ) {\n +\t\t\t\t\tcontinue;\n +\t\t\t\t}\n +\n +\t\t\t\t// Recurse if we\'re merging plain objects or arrays\n +\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n +\t\t\t\t\tif ( copyIsArray ) {\n +\t\t\t\t\t\tcopyIsArray = false;\n +\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Never move original objects, clone them\n +\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n +\n +\t\t\t\t// Don\'t bring in undefined values\n +\t\t\t\t} else if ( copy !== undefined ) {\n +\t\t\t\t\ttarget[ name ] = copy;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Return the modified object\n +\treturn target;\n +};\n +\n +jQuery.extend({\n +\tnoConflict: function( deep ) {\n +\t\tif ( window.$ === jQuery ) {\n +\t\t\twindow.$ = _$;\n +\t\t}\n +\n +\t\tif ( deep && window.jQuery === jQuery ) {\n +\t\t\twindow.jQuery = _jQuery;\n +\t\t}\n +\n +\t\treturn jQuery;\n +\t},\n +\n +\t// Is the DOM ready to be used? Set to true once it occurs.\n +\tisReady: false,\n +\n +\t// A counter to track how many items to wait for before\n +\t// the ready event fires. See #6781\n +\treadyWait: 1,\n +\n +\t// Hold (or release) the ready event\n +\tholdReady: function( hold ) {\n +\t\tif ( hold ) {\n +\t\t\tjQuery.readyWait++;\n +\t\t} else {\n +\t\t\tjQuery.ready( true );\n +\t\t}\n +\t},\n +\n +\t// Handle when the DOM is ready\n +\tready: function( wait ) {\n +\t\t// Either a released hold or an DOMready/load event and not yet ready\n +\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n +\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n +\t\t\tif ( !document.body ) {\n +\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n +\t\t\t}\n +\n +\t\t\t// Remember that the DOM is ready\n +\t\t\tjQuery.isReady = true;\n +\n +\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n +\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// If there are functions bound, to execute\n +\t\t\treadyList.fireWith( document, [ jQuery ] );\n +\n +\t\t\t// Trigger any bound ready events\n +\t\t\tif ( jQuery.fn.trigger ) {\n +\t\t\t\tjQuery( document ).trigger( "ready" ).off( "ready" );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tbindReady: function() {\n +\t\tif ( readyList ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\treadyList = jQuery.Callbacks( "once memory" );\n +\n +\t\t// Catch cases where $(document).ready() is called after the\n +\t\t// browser event has already occurred.\n +\t\tif ( document.readyState === "complete" ) {\n +\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n +\t\t\treturn setTimeout( jQuery.ready, 1 );\n +\t\t}\n +\n +\t\t// Mozilla, Opera and webkit nightlies currently support this event\n +\t\tif ( document.addEventListener ) {\n +\t\t\t// Use the handy event callback\n +\t\t\tdocument.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.addEventListener( "load", jQuery.ready, false );\n +\n +\t\t// If IE event model is used\n +\t\t} else if ( document.attachEvent ) {\n +\t\t\t// ensure firing before onload,\n +\t\t\t// maybe late but safe also for iframes\n +\t\t\tdocument.attachEvent( "onreadystatechange", DOMContentLoaded );\n +\n +\t\t\t// A fallback to window.onload, that will always work\n +\t\t\twindow.attachEvent( "onload", jQuery.ready );\n +\n +\t\t\t// If IE and not a frame\n +\t\t\t// continually check to see if the document is ready\n +\t\t\tvar toplevel = false;\n +\n +\t\t\ttry {\n +\t\t\t\ttoplevel = window.frameElement == null;\n +\t\t\t} catch(e) {}\n +\n +\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n +\t\t\t\tdoScrollCheck();\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// See test/unit/core.js for details concerning isFunction.\n +\t// Since version 1.3, DOM methods and functions like alert\n +\t// aren\'t supported. They return false on IE (#2968).\n +\tisFunction: function( obj ) {\n +\t\treturn jQuery.type(obj) === "function";\n +\t},\n +\n +\tisArray: Array.isArray || function( obj ) {\n +\t\treturn jQuery.type(obj) === "array";\n +\t},\n +\n +\tisWindow: function( obj ) {\n +\t\treturn obj != null && obj == obj.window;\n +\t},\n +\n +\tisNumeric: function( obj ) {\n +\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n +\t},\n +\n +\ttype: function( obj ) {\n +\t\treturn obj == null ?\n +\t\t\tString( obj ) :\n +\t\t\tclass2type[ toString.call(obj) ] || "object";\n +\t},\n +\n +\tisPlainObject: function( obj ) {\n +\t\t// Must be an Object.\n +\t\t// Because of IE, we also have to check the presence of the constructor property.\n +\t\t// Make sure that DOM nodes and window objects don\'t pass through, as well\n +\t\tif ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\ttry {\n +\t\t\t// Not own constructor property must be Object\n +\t\t\tif ( obj.constructor &&\n +\t\t\t\t!hasOwn.call(obj, "constructor") &&\n +\t\t\t\t!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t} catch ( e ) {\n +\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// Own properties are enumerated firstly, so to speed up,\n +\t\t// if last one is own, then all properties are own.\n +\n +\t\tvar key;\n +\t\tfor ( key in obj ) {}\n +\n +\t\treturn key === undefined || hasOwn.call( obj, key );\n +\t},\n +\n +\tisEmptyObject: function( obj ) {\n +\t\tfor ( var name in obj ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\treturn true;\n +\t},\n +\n +\terror: function( msg ) {\n +\t\tthrow new Error( msg );\n +\t},\n +\n +\tparseJSON: function( data ) {\n +\t\tif ( typeof data !== "string" || !data ) {\n +\t\t\treturn null;\n +\t\t}\n +\n +\t\t// Make sure leading/trailing whitespace is removed (IE can\'t handle it)\n +\t\tdata = jQuery.trim( data );\n +\n +\t\t// Attempt to parse using the native JSON parser first\n +\t\tif ( window.JSON && window.JSON.parse ) {\n +\t\t\treturn window.JSON.parse( data );\n +\t\t}\n +\n +\t\t// Make sure the incoming data is actual JSON\n +\t\t// Logic borrowed from http://json.org/json2.js\n +\t\tif ( rvalidchars.test( data.replace( rvalidescape, "@" )\n +\t\t\t.replace( rvalidtokens, "]" )\n +\t\t\t.replace( rvalidbraces, "")) ) {\n +\n +\t\t\treturn ( new Function( "return " + data ) )();\n +\n +\t\t}\n +\t\tjQuery.error( "Invalid JSON: " + data );\n +\t},\n +\n +\t// Cross-browser xml parsing\n +\tparseXML: function( data ) {\n +\t\tif ( typeof data !== "string" || !data ) {\n +\t\t\treturn null;\n +\t\t}\n +\t\tvar xml, tmp;\n +\t\ttry {\n +\t\t\tif ( window.DOMParser ) { // Standard\n +\t\t\t\ttmp = new DOMParser();\n +\t\t\t\txml = tmp.parseFromString( data , "text/xml" );\n +\t\t\t} else { // IE\n +\t\t\t\txml = new ActiveXObject( "Microsoft.XMLDOM" );\n +\t\t\t\txml.async = "false";\n +\t\t\t\txml.loadXML( data );\n +\t\t\t}\n +\t\t} catch( e ) {\n +\t\t\txml = undefined;\n +\t\t}\n +\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {\n +\t\t\tjQuery.error( "Invalid XML: " + data );\n +\t\t}\n +\t\treturn xml;\n +\t},\n +\n +\tnoop: function() {},\n +\n +\t// Evaluates a script in a global context\n +\t// Workarounds based on findings by Jim Driscoll\n +\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n +\tglobalEval: function( data ) {\n +\t\tif ( data && rnotwhite.test( data ) ) {\n +\t\t\t// We use execScript on Internet Explorer\n +\t\t\t// We use an anonymous function so that context is window\n +\t\t\t// rather than jQuery in Firefox\n +\t\t\t( window.execScript || function( data ) {\n +\t\t\t\twindow[ "eval" ].call( window, data );\n +\t\t\t} )( data );\n +\t\t}\n +\t},\n +\n +\t// Convert dashed to camelCase; used by the css and data modules\n +\t// Microsoft forgot to hump their vendor prefix (#9572)\n +\tcamelCase: function( string ) {\n +\t\treturn string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );\n +\t},\n +\n +\tnodeName: function( elem, name ) {\n +\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n +\t},\n +\n +\t// args is for internal usage only\n +\teach: function( object, callback, args ) {\n +\t\tvar name, i = 0,\n +\t\t\tlength = object.length,\n +\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n +\n +\t\tif ( args ) {\n +\t\t\tif ( isObj ) {\n +\t\t\t\tfor ( name in object ) {\n +\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < length; ) {\n +\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// A special, fast, case for the most common use of each\n +\t\t} else {\n +\t\t\tif ( isObj ) {\n +\t\t\t\tfor ( name in object ) {\n +\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < length; ) {\n +\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn object;\n +\t},\n +\n +\t// Use native String.trim function wherever possible\n +\ttrim: trim ?\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\ttrim.call( text );\n +\t\t} :\n +\n +\t\t// Otherwise use our own trimming functionality\n +\t\tfunction( text ) {\n +\t\t\treturn text == null ?\n +\t\t\t\t"" :\n +\t\t\t\ttext.toString().replace( trimLeft, "" ).replace( trimRight, "" );\n +\t\t},\n +\n +\t// results is for internal usage only\n +\tmakeArray: function( array, results ) {\n +\t\tvar ret = results || [];\n +\n +\t\tif ( array != null ) {\n +\t\t\t// The window, strings (and functions) also have \'length\'\n +\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n +\t\t\tvar type = jQuery.type( array );\n +\n +\t\t\tif ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {\n +\t\t\t\tpush.call( ret, array );\n +\t\t\t} else {\n +\t\t\t\tjQuery.merge( ret, array );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tinArray: function( elem, array, i ) {\n +\t\tvar len;\n +\n +\t\tif ( array ) {\n +\t\t\tif ( indexOf ) {\n +\t\t\t\treturn indexOf.call( array, elem, i );\n +\t\t\t}\n +\n +\t\t\tlen = array.length;\n +\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n +\n +\t\t\tfor ( ; i < len; i++ ) {\n +\t\t\t\t// Skip accessing in sparse arrays\n +\t\t\t\tif ( i in array && array[ i ] === elem ) {\n +\t\t\t\t\treturn i;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn -1;\n +\t},\n +\n +\tmerge: function( first, second ) {\n +\t\tvar i = first.length,\n +\t\t\tj = 0;\n +\n +\t\tif ( typeof second.length === "number" ) {\n +\t\t\tfor ( var l = second.length; j < l; j++ ) {\n +\t\t\t\tfirst[ i++ ] = second[ j ];\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\twhile ( second[j] !== undefined ) {\n +\t\t\t\tfirst[ i++ ] = second[ j++ ];\n +\t\t\t}\n +\t\t}\n +\n +\t\tfirst.length = i;\n +\n +\t\treturn first;\n +\t},\n +\n +\tgrep: function( elems, callback, inv ) {\n +\t\tvar ret = [], retVal;\n +\t\tinv = !!inv;\n +\n +\t\t// Go through the array, only saving the items\n +\t\t// that pass the validator function\n +\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n +\t\t\tretVal = !!callback( elems[ i ], i );\n +\t\t\tif ( inv !== retVal ) {\n +\t\t\t\tret.push( elems[ i ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\t// arg is for internal usage only\n +\tmap: function( elems, callback, arg ) {\n +\t\tvar value, key, ret = [],\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length,\n +\t\t\t// jquery objects are treated as arrays\n +\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n +\n +\t\t// Go through the array, translating each of the items to their\n +\t\tif ( isArray ) {\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tvalue = callback( elems[ i ], i, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t// Go through every key on the object,\n +\t\t} else {\n +\t\t\tfor ( key in elems ) {\n +\t\t\t\tvalue = callback( elems[ key ], key, arg );\n +\n +\t\t\t\tif ( value != null ) {\n +\t\t\t\t\tret[ ret.length ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Flatten any nested arrays\n +\t\treturn ret.concat.apply( [], ret );\n +\t},\n +\n +\t// A global GUID counter for objects\n +\tguid: 1,\n +\n +\t// Bind a function to a context, optionally partially applying any\n +\t// arguments.\n +\tproxy: function( fn, context ) {\n +\t\tif ( typeof context === "string" ) {\n +\t\t\tvar tmp = fn[ context ];\n +\t\t\tcontext = fn;\n +\t\t\tfn = tmp;\n +\t\t}\n +\n +\t\t// Quick check to determine if target is callable, in the spec\n +\t\t// this throws a TypeError, but we will just return undefined.\n +\t\tif ( !jQuery.isFunction( fn ) ) {\n +\t\t\treturn undefined;\n +\t\t}\n +\n +\t\t// Simulated bind\n +\t\tvar args = slice.call( arguments, 2 ),\n +\t\t\tproxy = function() {\n +\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n +\t\t\t};\n +\n +\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n +\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n +\n +\t\treturn proxy;\n +\t},\n +\n +\t// Mutifunctional method to get and set values to a collection\n +\t// The value/s can optionally be executed if it\'s a function\n +\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n +\t\tvar exec,\n +\t\t\tbulk = key == null,\n +\t\t\ti = 0,\n +\t\t\tlength = elems.length;\n +\n +\t\t// Sets many values\n +\t\tif ( key && typeof key === "object" ) {\n +\t\t\tfor ( i in key ) {\n +\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n +\t\t\t}\n +\t\t\tchainable = 1;\n +\n +\t\t// Sets one value\n +\t\t} else if ( value !== undefined ) {\n +\t\t\t// Optionally, function values get executed if exec is true\n +\t\t\texec = pass === undefined && jQuery.isFunction( value );\n +\n +\t\t\tif ( bulk ) {\n +\t\t\t\t// Bulk operations only iterate when executing function values\n +\t\t\t\tif ( exec ) {\n +\t\t\t\t\texec = fn;\n +\t\t\t\t\tfn = function( elem, key, value ) {\n +\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n +\t\t\t\t\t};\n +\n +\t\t\t\t// Otherwise they run against the entire set\n +\t\t\t\t} else {\n +\t\t\t\t\tfn.call( elems, value );\n +\t\t\t\t\tfn = null;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( fn ) {\n +\t\t\t\tfor (; i < length; i++ ) {\n +\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tchainable = 1;\n +\t\t}\n +\n +\t\treturn chainable ?\n +\t\t\telems :\n +\n +\t\t\t// Gets\n +\t\t\tbulk ?\n +\t\t\t\tfn.call( elems ) :\n +\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n +\t},\n +\n +\tnow: function() {\n +\t\treturn ( new Date() ).getTime();\n +\t},\n +\n +\t// Use of jQuery.browser is frowned upon.\n +\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n +\tuaMatch: function( ua ) {\n +\t\tua = ua.toLowerCase();\n +\n +\t\tvar match = rwebkit.exec( ua ) ||\n +\t\t\tropera.exec( ua ) ||\n +\t\t\trmsie.exec( ua ) ||\n +\t\t\tua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||\n +\t\t\t[];\n +\n +\t\treturn { browser: match[1] || "", version: match[2] || "0" };\n +\t},\n +\n +\tsub: function() {\n +\t\tfunction jQuerySub( selector, context ) {\n +\t\t\treturn new jQuerySub.fn.init( selector, context );\n +\t\t}\n +\t\tjQuery.extend( true, jQuerySub, this );\n +\t\tjQuerySub.superclass = this;\n +\t\tjQuerySub.fn = jQuerySub.prototype = this();\n +\t\tjQuerySub.fn.constructor = jQuerySub;\n +\t\tjQuerySub.sub = this.sub;\n +\t\tjQuerySub.fn.init = function init( selector, context ) {\n +\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n +\t\t\t\tcontext = jQuerySub( context );\n +\t\t\t}\n +\n +\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n +\t\t};\n +\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n +\t\tvar rootjQuerySub = jQuerySub(document);\n +\t\treturn jQuerySub;\n +\t},\n +\n +\tbrowser: {}\n +});\n +\n +// Populate the class2type map\n +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {\n +\tclass2type[ "[object " + name + "]" ] = name.toLowerCase();\n +});\n +\n +browserMatch = jQuery.uaMatch( userAgent );\n +if ( browserMatch.browser ) {\n +\tjQuery.browser[ browserMatch.browser ] = true;\n +\tjQuery.browser.version = browserMatch.version;\n +}\n +\n +// Deprecated, use jQuery.browser.webkit instead\n +if ( jQuery.browser.webkit ) {\n +\tjQuery.browser.safari = true;\n +}\n +\n +// IE doesn\'t match non-breaking spaces with \\s\n +if ( rnotwhite.test( "\\xA0" ) ) {\n +\ttrimLeft = /^[\\s\\xA0]+/;\n +\ttrimRight = /[\\s\\xA0]+$/;\n +}\n +\n +// All jQuery objects should point back to these\n +rootjQuery = jQuery(document);\n +\n +// Cleanup functions for the document ready method\n +if ( document.addEventListener ) {\n +\tDOMContentLoaded = function() {\n +\t\tdocument.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );\n +\t\tjQuery.ready();\n +\t};\n +\n +} else if ( document.attachEvent ) {\n +\tDOMContentLoaded = function() {\n +\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n +\t\tif ( document.readyState === "complete" ) {\n +\t\t\tdocument.detachEvent( "onreadystatechange", DOMContentLoaded );\n +\t\t\tjQuery.ready();\n +\t\t}\n +\t};\n +}\n +\n +// The DOM ready check for Internet Explorer\n +function doScrollCheck() {\n +\tif ( jQuery.isReady ) {\n +\t\treturn;\n +\t}\n +\n +\ttry {\n +\t\t// If IE is used, use the trick by Diego Perini\n +\t\t// http://javascript.nwbox.com/IEContentLoaded/\n +\t\tdocument.documentElement.doScroll("left");\n +\t} catch(e) {\n +\t\tsetTimeout( doScrollCheck, 1 );\n +\t\treturn;\n +\t}\n +\n +\t// and execute any waiting functions\n +\tjQuery.ready();\n +}\n +\n +return jQuery;\n +\n +})();\n +\n +\n +// String to Object flags format cache\n +var flagsCache = {};\n +\n +// Convert String-formatted flags into Object-formatted ones and store in cache\n +function createFlags( flags ) {\n +\tvar object = flagsCache[ flags ] = {},\n +\t\ti, length;\n +\tflags = flags.split( /\\s+/ );\n +\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n +\t\tobject[ flags[i] ] = true;\n +\t}\n +\treturn object;\n +}\n +\n +/*\n + * Create a callback list using the following parameters:\n + *\n + *\tflags:\tan optional list of space-separated flags that will change how\n + *\t\t\tthe callback list behaves\n + *\n + * By default a callback list will act like an event callback list and can be\n + * "fired" multiple times.\n + *\n + * Possible flags:\n + *\n + *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n + *\n + *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n + *\t\t\t\t\tafter the list has been fired right away with the latest "memorized"\n + *\t\t\t\t\tvalues (like a Deferred)\n + *\n + *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n + *\n + *\tstopOnFalse:\tinterrupt callings when a callback returns false\n + *\n + */\n +jQuery.Callbacks = function( flags ) {\n +\n +\t// Convert flags from String-formatted to Object-formatted\n +\t// (we check in cache first)\n +\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n +\n +\tvar // Actual callback list\n +\t\tlist = [],\n +\t\t// Stack of fire calls for repeatable lists\n +\t\tstack = [],\n +\t\t// Last fire value (for non-forgettable lists)\n +\t\tmemory,\n +\t\t// Flag to know if list was already fired\n +\t\tfired,\n +\t\t// Flag to know if list is currently firing\n +\t\tfiring,\n +\t\t// First callback to fire (used internally by add and fireWith)\n +\t\tfiringStart,\n +\t\t// End of the loop when firing\n +\t\tfiringLength,\n +\t\t// Index of currently firing callback (modified by remove if needed)\n +\t\tfiringIndex,\n +\t\t// Add one or several callbacks to the list\n +\t\tadd = function( args ) {\n +\t\t\tvar i,\n +\t\t\t\tlength,\n +\t\t\t\telem,\n +\t\t\t\ttype,\n +\t\t\t\tactual;\n +\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n +\t\t\t\telem = args[ i ];\n +\t\t\t\ttype = jQuery.type( elem );\n +\t\t\t\tif ( type === "array" ) {\n +\t\t\t\t\t// Inspect recursively\n +\t\t\t\t\tadd( elem );\n +\t\t\t\t} else if ( type === "function" ) {\n +\t\t\t\t\t// Add if not in unique mode and callback is not in\n +\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n +\t\t\t\t\t\tlist.push( elem );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Fire callbacks\n +\t\tfire = function( context, args ) {\n +\t\t\targs = args || [];\n +\t\t\tmemory = !flags.memory || [ context, args ];\n +\t\t\tfired = true;\n +\t\t\tfiring = true;\n +\t\t\tfiringIndex = firingStart || 0;\n +\t\t\tfiringStart = 0;\n +\t\t\tfiringLength = list.length;\n +\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n +\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n +\t\t\t\t\tmemory = true; // Mark as halted\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tfiring = false;\n +\t\t\tif ( list ) {\n +\t\t\t\tif ( !flags.once ) {\n +\t\t\t\t\tif ( stack && stack.length ) {\n +\t\t\t\t\t\tmemory = stack.shift();\n +\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n +\t\t\t\t\t}\n +\t\t\t\t} else if ( memory === true ) {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t} else {\n +\t\t\t\t\tlist = [];\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Actual Callbacks object\n +\t\tself = {\n +\t\t\t// Add a callback or a collection of callbacks to the list\n +\t\t\tadd: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tvar length = list.length;\n +\t\t\t\t\tadd( arguments );\n +\t\t\t\t\t// Do we need to add the callbacks to the\n +\t\t\t\t\t// current firing batch?\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tfiringLength = list.length;\n +\t\t\t\t\t// With memory, if we\'re not firing then\n +\t\t\t\t\t// we should call right away, unless previous\n +\t\t\t\t\t// firing was halted (stopOnFalse)\n +\t\t\t\t\t} else if ( memory && memory !== true ) {\n +\t\t\t\t\t\tfiringStart = length;\n +\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Remove a callback from the list\n +\t\t\tremove: function() {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tvar args = arguments,\n +\t\t\t\t\t\targIndex = 0,\n +\t\t\t\t\t\targLength = args.length;\n +\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n +\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n +\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n +\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n +\t\t\t\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n +\t\t\t\t\t\t\t\t\t\tfiringLength--;\n +\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n +\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n +\t\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t// Remove the element\n +\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n +\t\t\t\t\t\t\t\t// If we have some unicity property then\n +\t\t\t\t\t\t\t\t// we only need to do this once\n +\t\t\t\t\t\t\t\tif ( flags.unique ) {\n +\t\t\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Control if a given callback is in the list\n +\t\t\thas: function( fn ) {\n +\t\t\t\tif ( list ) {\n +\t\t\t\t\tvar i = 0,\n +\t\t\t\t\t\tlength = list.length;\n +\t\t\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\t\t\tif ( fn === list[ i ] ) {\n +\t\t\t\t\t\t\treturn true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t},\n +\t\t\t// Remove all callbacks from the list\n +\t\t\tempty: function() {\n +\t\t\t\tlist = [];\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Have the list do nothing anymore\n +\t\t\tdisable: function() {\n +\t\t\t\tlist = stack = memory = undefined;\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it disabled?\n +\t\t\tdisabled: function() {\n +\t\t\t\treturn !list;\n +\t\t\t},\n +\t\t\t// Lock the list in its current state\n +\t\t\tlock: function() {\n +\t\t\t\tstack = undefined;\n +\t\t\t\tif ( !memory || memory === true ) {\n +\t\t\t\t\tself.disable();\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Is it locked?\n +\t\t\tlocked: function() {\n +\t\t\t\treturn !stack;\n +\t\t\t},\n +\t\t\t// Call all callbacks with the given context and arguments\n +\t\t\tfireWith: function( context, args ) {\n +\t\t\t\tif ( stack ) {\n +\t\t\t\t\tif ( firing ) {\n +\t\t\t\t\t\tif ( !flags.once ) {\n +\t\t\t\t\t\t\tstack.push( [ context, args ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n +\t\t\t\t\t\tfire( context, args );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// Call all the callbacks with the given arguments\n +\t\t\tfire: function() {\n +\t\t\t\tself.fireWith( this, arguments );\n +\t\t\t\treturn this;\n +\t\t\t},\n +\t\t\t// To know if the callbacks have already been called at least once\n +\t\t\tfired: function() {\n +\t\t\t\treturn !!fired;\n +\t\t\t}\n +\t\t};\n +\n +\treturn self;\n +};\n +\n +\n +\n +\n +var // Static reference to slice\n +\tsliceDeferred = [].slice;\n +\n +jQuery.extend({\n +\n +\tDeferred: function( func ) {\n +\t\tvar doneList = jQuery.Callbacks( "once memory" ),\n +\t\t\tfailList = jQuery.Callbacks( "once memory" ),\n +\t\t\tprogressList = jQuery.Callbacks( "memory" ),\n +\t\t\tstate = "pending",\n +\t\t\tlists = {\n +\t\t\t\tresolve: doneList,\n +\t\t\t\treject: failList,\n +\t\t\t\tnotify: progressList\n +\t\t\t},\n +\t\t\tpromise = {\n +\t\t\t\tdone: doneList.add,\n +\t\t\t\tfail: failList.add,\n +\t\t\t\tprogress: progressList.add,\n +\n +\t\t\t\tstate: function() {\n +\t\t\t\t\treturn state;\n +\t\t\t\t},\n +\n +\t\t\t\t// Deprecated\n +\t\t\t\tisResolved: doneList.fired,\n +\t\t\t\tisRejected: failList.fired,\n +\n +\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n +\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\t\t\t\talways: function() {\n +\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n +\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n +\t\t\t\t\t\tjQuery.each( {\n +\t\t\t\t\t\t\tdone: [ fnDone, "resolve" ],\n +\t\t\t\t\t\t\tfail: [ fnFail, "reject" ],\n +\t\t\t\t\t\t\tprogress: [ fnProgress, "notify" ]\n +\t\t\t\t\t\t}, function( handler, data ) {\n +\t\t\t\t\t\t\tvar fn = data[ 0 ],\n +\t\t\t\t\t\t\t\taction = data[ 1 ],\n +\t\t\t\t\t\t\t\treturned;\n +\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n +\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n +\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n +\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n +\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n +\t\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\t\tnewDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t});\n +\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t});\n +\t\t\t\t\t}).promise();\n +\t\t\t\t},\n +\t\t\t\t// Get a promise for this deferred\n +\t\t\t\t// If obj is provided, the promise aspect is added to the object\n +\t\t\t\tpromise: function( obj ) {\n +\t\t\t\t\tif ( obj == null ) {\n +\t\t\t\t\t\tobj = promise;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tfor ( var key in promise ) {\n +\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\treturn obj;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tdeferred = promise.promise({}),\n +\t\t\tkey;\n +\n +\t\tfor ( key in lists ) {\n +\t\t\tdeferred[ key ] = lists[ key ].fire;\n +\t\t\tdeferred[ key + "With" ] = lists[ key ].fireWith;\n +\t\t}\n +\n +\t\t// Handle state\n +\t\tdeferred.done( function() {\n +\t\t\tstate = "resolved";\n +\t\t}, failList.disable, progressList.lock ).fail( function() {\n +\t\t\tstate = "rejected";\n +\t\t}, doneList.disable, progressList.lock );\n +\n +\t\t// Call given func if any\n +\t\tif ( func ) {\n +\t\t\tfunc.call( deferred, deferred );\n +\t\t}\n +\n +\t\t// All done!\n +\t\treturn deferred;\n +\t},\n +\n +\t// Deferred helper\n +\twhen: function( firstParam ) {\n +\t\tvar args = sliceDeferred.call( arguments, 0 ),\n +\t\t\ti = 0,\n +\t\t\tlength = args.length,\n +\t\t\tpValues = new Array( length ),\n +\t\t\tcount = length,\n +\t\t\tpCount = length,\n +\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n +\t\t\t\tfirstParam :\n +\t\t\t\tjQuery.Deferred(),\n +\t\t\tpromise = deferred.promise();\n +\t\tfunction resolveFunc( i ) {\n +\t\t\treturn function( value ) {\n +\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n +\t\t\t\tif ( !( --count ) ) {\n +\t\t\t\t\tdeferred.resolveWith( deferred, args );\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t\tfunction progressFunc( i ) {\n +\t\t\treturn function( value ) {\n +\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n +\t\t\t\tdeferred.notifyWith( promise, pValues );\n +\t\t\t};\n +\t\t}\n +\t\tif ( length > 1 ) {\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n +\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n +\t\t\t\t} else {\n +\t\t\t\t\t--count;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tif ( !count ) {\n +\t\t\t\tdeferred.resolveWith( deferred, args );\n +\t\t\t}\n +\t\t} else if ( deferred !== firstParam ) {\n +\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n +\t\t}\n +\t\treturn promise;\n +\t}\n +});\n +\n +\n +\n +\n +jQuery.support = (function() {\n +\n +\tvar support,\n +\t\tall,\n +\t\ta,\n +\t\tselect,\n +\t\topt,\n +\t\tinput,\n +\t\tfragment,\n +\t\ttds,\n +\t\tevents,\n +\t\teventName,\n +\t\ti,\n +\t\tisSupported,\n +\t\tdiv = document.createElement( "div" ),\n +\t\tdocumentElement = document.documentElement;\n +\n +\t// Preliminary tests\n +\tdiv.setAttribute("className", "t");\n +\tdiv.innerHTML = " <link/><table></table><a href=\'/a\' style=\'top:1px;float:left;opacity:.55;\'>a</a><input type=\'checkbox\'/>";\n +\n +\tall = div.getElementsByTagName( "*" );\n +\ta = div.getElementsByTagName( "a" )[ 0 ];\n +\n +\t// Can\'t get basic test support\n +\tif ( !all || !all.length || !a ) {\n +\t\treturn {};\n +\t}\n +\n +\t// First batch of supports tests\n +\tselect = document.createElement( "select" );\n +\topt = select.appendChild( document.createElement("option") );\n +\tinput = div.getElementsByTagName( "input" )[ 0 ];\n +\n +\tsupport = {\n +\t\t// IE strips leading whitespace when .innerHTML is used\n +\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n +\n +\t\t// Make sure that tbody elements aren\'t automatically inserted\n +\t\t// IE will insert them into empty tables\n +\t\ttbody: !div.getElementsByTagName("tbody").length,\n +\n +\t\t// Make sure that link elements get serialized correctly by innerHTML\n +\t\t// This requires a wrapper element in IE\n +\t\thtmlSerialize: !!div.getElementsByTagName("link").length,\n +\n +\t\t// Get the style information from getAttribute\n +\t\t// (IE uses .cssText instead)\n +\t\tstyle: /top/.test( a.getAttribute("style") ),\n +\n +\t\t// Make sure that URLs aren\'t manipulated\n +\t\t// (IE normalizes it by default)\n +\t\threfNormalized: ( a.getAttribute("href") === "/a" ),\n +\n +\t\t// Make sure that element opacity exists\n +\t\t// (IE uses filter instead)\n +\t\t// Use a regex to work around a WebKit issue. See #5145\n +\t\topacity: /^0.55/.test( a.style.opacity ),\n +\n +\t\t// Verify style float existence\n +\t\t// (IE uses styleFloat instead of cssFloat)\n +\t\tcssFloat: !!a.style.cssFloat,\n +\n +\t\t// Make sure that if no value is specified for a checkbox\n +\t\t// that it defaults to "on".\n +\t\t// (WebKit defaults to "" instead)\n +\t\tcheckOn: ( input.value === "on" ),\n +\n +\t\t// Make sure that a selected-by-default option has a working selected property.\n +\t\t// (WebKit defaults to false instead of true, IE too, if it\'s in an optgroup)\n +\t\toptSelected: opt.selected,\n +\n +\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n +\t\tgetSetAttribute: div.className !== "t",\n +\n +\t\t// Tests for enctype support on a form(#6743)\n +\t\tenctype: !!document.createElement("form").enctype,\n +\n +\t\t// Makes sure cloning an html5 element does not cause problems\n +\t\t// Where outerHTML is undefined, this still works\n +\t\thtml5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",\n +\n +\t\t// Will be defined later\n +\t\tsubmitBubbles: true,\n +\t\tchangeBubbles: true,\n +\t\tfocusinBubbles: false,\n +\t\tdeleteExpando: true,\n +\t\tnoCloneEvent: true,\n +\t\tinlineBlockNeedsLayout: false,\n +\t\tshrinkWrapBlocks: false,\n +\t\treliableMarginRight: true,\n +\t\tpixelMargin: true\n +\t};\n +\n +\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n +\tjQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");\n +\n +\t// Make sure checked status is properly cloned\n +\tinput.checked = true;\n +\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n +\n +\t// Make sure that the options inside disabled selects aren\'t marked as disabled\n +\t// (WebKit marks them as disabled)\n +\tselect.disabled = true;\n +\tsupport.optDisabled = !opt.disabled;\n +\n +\t// Test to see if it\'s possible to delete an expando from an element\n +\t// Fails in Internet Explorer\n +\ttry {\n +\t\tdelete div.test;\n +\t} catch( e ) {\n +\t\tsupport.deleteExpando = false;\n +\t}\n +\n +\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n +\t\tdiv.attachEvent( "onclick", function() {\n +\t\t\t// Cloning a node shouldn\'t copy over any\n +\t\t\t// bound event handlers (IE does this)\n +\t\t\tsupport.noCloneEvent = false;\n +\t\t});\n +\t\tdiv.cloneNode( true ).fireEvent( "onclick" );\n +\t}\n +\n +\t// Check if a radio maintains its value\n +\t// after being appended to the DOM\n +\tinput = document.createElement("input");\n +\tinput.value = "t";\n +\tinput.setAttribute("type", "radio");\n +\tsupport.radioValue = input.value === "t";\n +\n +\tinput.setAttribute("checked", "checked");\n +\n +\t// #11217 - WebKit loses check when the name is after the checked attribute\n +\tinput.setAttribute( "name", "t" );\n +\n +\tdiv.appendChild( input );\n +\tfragment = document.createDocumentFragment();\n +\tfragment.appendChild( div.lastChild );\n +\n +\t// WebKit doesn\'t clone checked state correctly in fragments\n +\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n +\n +\t// Check if a disconnected checkbox will retain its checked\n +\t// value of true after appended to the DOM (IE6/7)\n +\tsupport.appendChecked = input.checked;\n +\n +\tfragment.removeChild( input );\n +\tfragment.appendChild( div );\n +\n +\t// Technique from Juriy Zaytsev\n +\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n +\t// We only care about the case where non-standard event systems\n +\t// are used, namely in IE. Short-circuiting here helps us to\n +\t// avoid an eval call (in setAttribute) which can cause CSP\n +\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n +\tif ( div.attachEvent ) {\n +\t\tfor ( i in {\n +\t\t\tsubmit: 1,\n +\t\t\tchange: 1,\n +\t\t\tfocusin: 1\n +\t\t}) {\n +\t\t\teventName = "on" + i;\n +\t\t\tisSupported = ( eventName in div );\n +\t\t\tif ( !isSupported ) {\n +\t\t\t\tdiv.setAttribute( eventName, "return;" );\n +\t\t\t\tisSupported = ( typeof div[ eventName ] === "function" );\n +\t\t\t}\n +\t\t\tsupport[ i + "Bubbles" ] = isSupported;\n +\t\t}\n +\t}\n +\n +\tfragment.removeChild( div );\n +\n +\t// Null elements to avoid leaks in IE\n +\tfragment = select = opt = div = input = null;\n +\n +\t// Run tests that need a body at doc ready\n +\tjQuery(function() {\n +\t\tvar container, outer, inner, table, td, offsetSupport,\n +\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n +\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n +\t\t\tbody = document.getElementsByTagName("body")[0];\n +\n +\t\tif ( !body ) {\n +\t\t\t// Return for frameset docs that don\'t have a body\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tconMarginTop = 1;\n +\t\tpaddingMarginBorder = "padding:0;margin:0;border:";\n +\t\tpositionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";\n +\t\tpaddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";\n +\t\tstyle = "style=\'" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";\n +\t\thtml = "<div " + style + "display:block;\'><div style=\'" + paddingMarginBorder + "0;display:block;overflow:hidden;\'></div></div>" +\n +\t\t\t"<table " + style + "\' cellpadding=\'0\' cellspacing=\'0\'>" +\n +\t\t\t"<tr><td></td></tr></table>";\n +\n +\t\tcontainer = document.createElement("div");\n +\t\tcontainer.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";\n +\t\tbody.insertBefore( container, body.firstChild );\n +\n +\t\t// Construct the test element\n +\t\tdiv = document.createElement("div");\n +\t\tcontainer.appendChild( div );\n +\n +\t\t// Check if table cells still have offsetWidth/Height when they are set\n +\t\t// to display:none and there are still other visible table cells in a\n +\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n +\t\t// determining if an element has been hidden directly using\n +\t\t// display:none (it is still safe to use offsets if a parent element is\n +\t\t// hidden; don safety goggles and see bug #4512 for more information).\n +\t\t// (only IE 8 fails this test)\n +\t\tdiv.innerHTML = "<table><tr><td style=\'" + paddingMarginBorder + "0;display:none\'></td><td>t</td></tr></table>";\n +\t\ttds = div.getElementsByTagName( "td" );\n +\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\ttds[ 0 ].style.display = "";\n +\t\ttds[ 1 ].style.display = "none";\n +\n +\t\t// Check if empty table cells still have offsetWidth/Height\n +\t\t// (IE <= 8 fail this test)\n +\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n +\n +\t\t// Check if div with explicit width and no margin-right incorrectly\n +\t\t// gets computed margin-right based on width of container. For more\n +\t\t// info see bug #3333\n +\t\t// Fails in WebKit before Feb 2011 nightlies\n +\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\tif ( window.getComputedStyle ) {\n +\t\t\tdiv.innerHTML = "";\n +\t\t\tmarginDiv = document.createElement( "div" );\n +\t\t\tmarginDiv.style.width = "0";\n +\t\t\tmarginDiv.style.marginRight = "0";\n +\t\t\tdiv.style.width = "2px";\n +\t\t\tdiv.appendChild( marginDiv );\n +\t\t\tsupport.reliableMarginRight =\n +\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n +\t\t}\n +\n +\t\tif ( typeof div.style.zoom !== "undefined" ) {\n +\t\t\t// Check if natively block-level elements act like inline-block\n +\t\t\t// elements when setting their display to \'inline\' and giving\n +\t\t\t// them layout\n +\t\t\t// (IE < 8 does this)\n +\t\t\tdiv.innerHTML = "";\n +\t\t\tdiv.style.width = div.style.padding = "1px";\n +\t\t\tdiv.style.border = 0;\n +\t\t\tdiv.style.overflow = "hidden";\n +\t\t\tdiv.style.display = "inline";\n +\t\t\tdiv.style.zoom = 1;\n +\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n +\n +\t\t\t// Check if elements with layout shrink-wrap their children\n +\t\t\t// (IE 6 does this)\n +\t\t\tdiv.style.display = "block";\n +\t\t\tdiv.style.overflow = "visible";\n +\t\t\tdiv.innerHTML = "<div style=\'width:5px;\'></div>";\n +\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n +\t\t}\n +\n +\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n +\t\tdiv.innerHTML = html;\n +\n +\t\touter = div.firstChild;\n +\t\tinner = outer.firstChild;\n +\t\ttd = outer.nextSibling.firstChild.firstChild;\n +\n +\t\toffsetSupport = {\n +\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n +\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n +\t\t};\n +\n +\t\tinner.style.position = "fixed";\n +\t\tinner.style.top = "20px";\n +\n +\t\t// safari subtracts parent border width here which is 5px\n +\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n +\t\tinner.style.position = inner.style.top = "";\n +\n +\t\touter.style.overflow = "hidden";\n +\t\touter.style.position = "relative";\n +\n +\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n +\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n +\n +\t\tif ( window.getComputedStyle ) {\n +\t\t\tdiv.style.marginTop = "1%";\n +\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";\n +\t\t}\n +\n +\t\tif ( typeof container.style.zoom !== "undefined" ) {\n +\t\t\tcontainer.style.zoom = 1;\n +\t\t}\n +\n +\t\tbody.removeChild( container );\n +\t\tmarginDiv = div = container = null;\n +\n +\t\tjQuery.extend( support, offsetSupport );\n +\t});\n +\n +\treturn support;\n +})();\n +\n +\n +\n +\n +var rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n +\trmultiDash = /([A-Z])/g;\n +\n +jQuery.extend({\n +\tcache: {},\n +\n +\t// Please use with caution\n +\tuuid: 0,\n +\n +\t// Unique for each copy of jQuery on the page\n +\t// Non-digits removed to match rinlinejQuery\n +\texpando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, "" ),\n +\n +\t// The following elements throw uncatchable exceptions if you\n +\t// attempt to add expando properties to them.\n +\tnoData: {\n +\t\t"embed": true,\n +\t\t// Ban all objects except for Flash (which handle expandos)\n +\t\t"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",\n +\t\t"applet": true\n +\t},\n +\n +\thasData: function( elem ) {\n +\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n +\t\treturn !!elem && !isEmptyDataObject( elem );\n +\t},\n +\n +\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n +\t\tif ( !jQuery.acceptData( elem ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar privateCache, thisCache, ret,\n +\t\t\tinternalKey = jQuery.expando,\n +\t\t\tgetByName = typeof name === "string",\n +\n +\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n +\t\t\t// can\'t GC object references properly across the DOM-JS boundary\n +\t\t\tisNode = elem.nodeType,\n +\n +\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n +\t\t\t// attached directly to the object so GC can occur automatically\n +\t\t\tcache = isNode ? jQuery.cache : elem,\n +\n +\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n +\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n +\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n +\t\t\tisEvents = name === "events";\n +\n +\t\t// Avoid doing any more work than we need to when trying to get data on an\n +\t\t// object that has no data at all\n +\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( !id ) {\n +\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n +\t\t\t// ends up in the global cache\n +\t\t\tif ( isNode ) {\n +\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n +\t\t\t} else {\n +\t\t\t\tid = internalKey;\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( !cache[ id ] ) {\n +\t\t\tcache[ id ] = {};\n +\n +\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n +\t\t\t// is serialized using JSON.stringify\n +\t\t\tif ( !isNode ) {\n +\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n +\t\t// shallow copied over onto the existing cache\n +\t\tif ( typeof name === "object" || typeof name === "function" ) {\n +\t\t\tif ( pvt ) {\n +\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n +\t\t\t} else {\n +\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n +\t\t\t}\n +\t\t}\n +\n +\t\tprivateCache = thisCache = cache[ id ];\n +\n +\t\t// jQuery data() is stored in a separate object inside the object\'s internal data\n +\t\t// cache in order to avoid key collisions between internal data and user-defined\n +\t\t// data.\n +\t\tif ( !pvt ) {\n +\t\t\tif ( !thisCache.data ) {\n +\t\t\t\tthisCache.data = {};\n +\t\t\t}\n +\n +\t\t\tthisCache = thisCache.data;\n +\t\t}\n +\n +\t\tif ( data !== undefined ) {\n +\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n +\t\t}\n +\n +\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n +\t\t// it is undocumented and subject to change. But does anyone listen? No.\n +\t\tif ( isEvents && !thisCache[ name ] ) {\n +\t\t\treturn privateCache.events;\n +\t\t}\n +\n +\t\t// Check for both converted-to-camel and non-converted data property names\n +\t\t// If a data property was specified\n +\t\tif ( getByName ) {\n +\n +\t\t\t// First Try to find as-is property data\n +\t\t\tret = thisCache[ name ];\n +\n +\t\t\t// Test for null|undefined property data\n +\t\t\tif ( ret == null ) {\n +\n +\t\t\t\t// Try to find the camelCased property\n +\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n +\t\t\t}\n +\t\t} else {\n +\t\t\tret = thisCache;\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n +\t\tif ( !jQuery.acceptData( elem ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar thisCache, i, l,\n +\n +\t\t\t// Reference to internal data cache key\n +\t\t\tinternalKey = jQuery.expando,\n +\n +\t\t\tisNode = elem.nodeType,\n +\n +\t\t\t// See jQuery.data for more information\n +\t\t\tcache = isNode ? jQuery.cache : elem,\n +\n +\t\t\t// See jQuery.data for more information\n +\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n +\n +\t\t// If there is already no cache entry for this object, there is no\n +\t\t// purpose in continuing\n +\t\tif ( !cache[ id ] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( name ) {\n +\n +\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n +\n +\t\t\tif ( thisCache ) {\n +\n +\t\t\t\t// Support array or space separated string names for data keys\n +\t\t\t\tif ( !jQuery.isArray( name ) ) {\n +\n +\t\t\t\t\t// try the string as a key before any manipulation\n +\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t} else {\n +\n +\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n +\t\t\t\t\t\tname = jQuery.camelCase( name );\n +\t\t\t\t\t\tif ( name in thisCache ) {\n +\t\t\t\t\t\t\tname = [ name ];\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tname = name.split( " " );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n +\t\t\t\t\tdelete thisCache[ name[i] ];\n +\t\t\t\t}\n +\n +\t\t\t\t// If there is no data left in the cache, we want to continue\n +\t\t\t\t// and let the cache object itself get destroyed\n +\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// See jQuery.data for more information\n +\t\tif ( !pvt ) {\n +\t\t\tdelete cache[ id ].data;\n +\n +\t\t\t// Don\'t destroy the parent cache unless the internal data object\n +\t\t\t// had been the only thing left in it\n +\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n +\t\t// the window, but it will allow it on all other JS objects; other browsers\n +\t\t// don\'t care\n +\t\t// Ensure that `cache` is not a window object #10080\n +\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n +\t\t\tdelete cache[ id ];\n +\t\t} else {\n +\t\t\tcache[ id ] = null;\n +\t\t}\n +\n +\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n +\t\t// false lookups in the cache for entries that no longer exist\n +\t\tif ( isNode ) {\n +\t\t\t// IE does not allow us to delete expando properties from nodes,\n +\t\t\t// nor does it have a removeAttribute function on Document nodes;\n +\t\t\t// we must handle all of these cases\n +\t\t\tif ( jQuery.support.deleteExpando ) {\n +\t\t\t\tdelete elem[ internalKey ];\n +\t\t\t} else if ( elem.removeAttribute ) {\n +\t\t\t\telem.removeAttribute( internalKey );\n +\t\t\t} else {\n +\t\t\t\telem[ internalKey ] = null;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// For internal use only.\n +\t_data: function( elem, name, data ) {\n +\t\treturn jQuery.data( elem, name, data, true );\n +\t},\n +\n +\t// A method for determining if a DOM node can handle the data expando\n +\tacceptData: function( elem ) {\n +\t\tif ( elem.nodeName ) {\n +\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n +\n +\t\t\tif ( match ) {\n +\t\t\t\treturn !(match === true || elem.getAttribute("classid") !== match);\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn true;\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tdata: function( key, value ) {\n +\t\tvar parts, part, attr, name, l,\n +\t\t\telem = this[0],\n +\t\t\ti = 0,\n +\t\t\tdata = null;\n +\n +\t\t// Gets all values\n +\t\tif ( key === undefined ) {\n +\t\t\tif ( this.length ) {\n +\t\t\t\tdata = jQuery.data( elem );\n +\n +\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {\n +\t\t\t\t\tattr = elem.attributes;\n +\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n +\t\t\t\t\t\tname = attr[i].name;\n +\n +\t\t\t\t\t\tif ( name.indexOf( "data-" ) === 0 ) {\n +\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n +\n +\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tjQuery._data( elem, "parsedAttrs", true );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn data;\n +\t\t}\n +\n +\t\t// Sets multiple values\n +\t\tif ( typeof key === "object" ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery.data( this, key );\n +\t\t\t});\n +\t\t}\n +\n +\t\tparts = key.split( ".", 2 );\n +\t\tparts[1] = parts[1] ? "." + parts[1] : "";\n +\t\tpart = parts[1] + "!";\n +\n +\t\treturn jQuery.access( this, function( value ) {\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\tdata = this.triggerHandler( "getData" + part, [ parts[0] ] );\n +\n +\t\t\t\t// Try to fetch any internally stored data first\n +\t\t\t\tif ( data === undefined && elem ) {\n +\t\t\t\t\tdata = jQuery.data( elem, key );\n +\t\t\t\t\tdata = dataAttr( elem, key, data );\n +\t\t\t\t}\n +\n +\t\t\t\treturn data === undefined && parts[1] ?\n +\t\t\t\t\tthis.data( parts[0] ) :\n +\t\t\t\t\tdata;\n +\t\t\t}\n +\n +\t\t\tparts[1] = value;\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar self = jQuery( this );\n +\n +\t\t\t\tself.triggerHandler( "setData" + part, parts );\n +\t\t\t\tjQuery.data( this, key, value );\n +\t\t\t\tself.triggerHandler( "changeData" + part, parts );\n +\t\t\t});\n +\t\t}, null, value, arguments.length > 1, null, false );\n +\t},\n +\n +\tremoveData: function( key ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeData( this, key );\n +\t\t});\n +\t}\n +});\n +\n +function dataAttr( elem, key, data ) {\n +\t// If nothing was found internally, try to fetch any\n +\t// data from the HTML5 data-* attribute\n +\tif ( data === undefined && elem.nodeType === 1 ) {\n +\n +\t\tvar name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();\n +\n +\t\tdata = elem.getAttribute( name );\n +\n +\t\tif ( typeof data === "string" ) {\n +\t\t\ttry {\n +\t\t\t\tdata = data === "true" ? true :\n +\t\t\t\tdata === "false" ? false :\n +\t\t\t\tdata === "null" ? null :\n +\t\t\t\tjQuery.isNumeric( data ) ? +data :\n +\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n +\t\t\t\t\tdata;\n +\t\t\t} catch( e ) {}\n +\n +\t\t\t// Make sure we set the data so it isn\'t changed later\n +\t\t\tjQuery.data( elem, key, data );\n +\n +\t\t} else {\n +\t\t\tdata = undefined;\n +\t\t}\n +\t}\n +\n +\treturn data;\n +}\n +\n +// checks a cache object for emptiness\n +function isEmptyDataObject( obj ) {\n +\tfor ( var name in obj ) {\n +\n +\t\t// if the public data object is empty, the private is still empty\n +\t\tif ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {\n +\t\t\tcontinue;\n +\t\t}\n +\t\tif ( name !== "toJSON" ) {\n +\t\t\treturn false;\n +\t\t}\n +\t}\n +\n +\treturn true;\n +}\n +\n +\n +\n +\n +function handleQueueMarkDefer( elem, type, src ) {\n +\tvar deferDataKey = type + "defer",\n +\t\tqueueDataKey = type + "queue",\n +\t\tmarkDataKey = type + "mark",\n +\t\tdefer = jQuery._data( elem, deferDataKey );\n +\tif ( defer &&\n +\t\t( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&\n +\t\t( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {\n +\t\t// Give room for hard-coded callbacks to fire first\n +\t\t// and eventually mark/queue something else on the element\n +\t\tsetTimeout( function() {\n +\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n +\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n +\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n +\t\t\t\tdefer.fire();\n +\t\t\t}\n +\t\t}, 0 );\n +\t}\n +}\n +\n +jQuery.extend({\n +\n +\t_mark: function( elem, type ) {\n +\t\tif ( elem ) {\n +\t\t\ttype = ( type || "fx" ) + "mark";\n +\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n +\t\t}\n +\t},\n +\n +\t_unmark: function( force, elem, type ) {\n +\t\tif ( force !== true ) {\n +\t\t\ttype = elem;\n +\t\t\telem = force;\n +\t\t\tforce = false;\n +\t\t}\n +\t\tif ( elem ) {\n +\t\t\ttype = type || "fx";\n +\t\t\tvar key = type + "mark",\n +\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n +\t\t\tif ( count ) {\n +\t\t\t\tjQuery._data( elem, key, count );\n +\t\t\t} else {\n +\t\t\t\tjQuery.removeData( elem, key, true );\n +\t\t\t\thandleQueueMarkDefer( elem, type, "mark" );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tqueue: function( elem, type, data ) {\n +\t\tvar q;\n +\t\tif ( elem ) {\n +\t\t\ttype = ( type || "fx" ) + "queue";\n +\t\t\tq = jQuery._data( elem, type );\n +\n +\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n +\t\t\tif ( data ) {\n +\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n +\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n +\t\t\t\t} else {\n +\t\t\t\t\tq.push( data );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn q || [];\n +\t\t}\n +\t},\n +\n +\tdequeue: function( elem, type ) {\n +\t\ttype = type || "fx";\n +\n +\t\tvar queue = jQuery.queue( elem, type ),\n +\t\t\tfn = queue.shift(),\n +\t\t\thooks = {};\n +\n +\t\t// If the fx queue is dequeued, always remove the progress sentinel\n +\t\tif ( fn === "inprogress" ) {\n +\t\t\tfn = queue.shift();\n +\t\t}\n +\n +\t\tif ( fn ) {\n +\t\t\t// Add a progress sentinel to prevent the fx queue from being\n +\t\t\t// automatically dequeued\n +\t\t\tif ( type === "fx" ) {\n +\t\t\t\tqueue.unshift( "inprogress" );\n +\t\t\t}\n +\n +\t\t\tjQuery._data( elem, type + ".run", hooks );\n +\t\t\tfn.call( elem, function() {\n +\t\t\t\tjQuery.dequeue( elem, type );\n +\t\t\t}, hooks );\n +\t\t}\n +\n +\t\tif ( !queue.length ) {\n +\t\t\tjQuery.removeData( elem, type + "queue " + type + ".run", true );\n +\t\t\thandleQueueMarkDefer( elem, type, "queue" );\n +\t\t}\n +\t}\n +});\n +\n +jQuery.fn.extend({\n +\tqueue: function( type, data ) {\n +\t\tvar setter = 2;\n +\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tdata = type;\n +\t\t\ttype = "fx";\n +\t\t\tsetter--;\n +\t\t}\n +\n +\t\tif ( arguments.length < setter ) {\n +\t\t\treturn jQuery.queue( this[0], type );\n +\t\t}\n +\n +\t\treturn data === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar queue = jQuery.queue( this, type, data );\n +\n +\t\t\t\tif ( type === "fx" && queue[0] !== "inprogress" ) {\n +\t\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t\t}\n +\t\t\t});\n +\t},\n +\tdequeue: function( type ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.dequeue( this, type );\n +\t\t});\n +\t},\n +\t// Based off of the plugin by Clint Helfers, with permission.\n +\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n +\tdelay: function( time, type ) {\n +\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n +\t\ttype = type || "fx";\n +\n +\t\treturn this.queue( type, function( next, hooks ) {\n +\t\t\tvar timeout = setTimeout( next, time );\n +\t\t\thooks.stop = function() {\n +\t\t\t\tclearTimeout( timeout );\n +\t\t\t};\n +\t\t});\n +\t},\n +\tclearQueue: function( type ) {\n +\t\treturn this.queue( type || "fx", [] );\n +\t},\n +\t// Get a promise resolved when queues of a certain type\n +\t// are emptied (fx is the type by default)\n +\tpromise: function( type, object ) {\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tobject = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\ttype = type || "fx";\n +\t\tvar defer = jQuery.Deferred(),\n +\t\t\telements = this,\n +\t\t\ti = elements.length,\n +\t\t\tcount = 1,\n +\t\t\tdeferDataKey = type + "defer",\n +\t\t\tqueueDataKey = type + "queue",\n +\t\t\tmarkDataKey = type + "mark",\n +\t\t\ttmp;\n +\t\tfunction resolve() {\n +\t\t\tif ( !( --count ) ) {\n +\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n +\t\t\t}\n +\t\t}\n +\t\twhile( i-- ) {\n +\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n +\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n +\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n +\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {\n +\t\t\t\tcount++;\n +\t\t\t\ttmp.add( resolve );\n +\t\t\t}\n +\t\t}\n +\t\tresolve();\n +\t\treturn defer.promise( object );\n +\t}\n +});\n +\n +\n +\n +\n +var rclass = /[\\n\\t\\r]/g,\n +\trspace = /\\s+/,\n +\trreturn = /\\r/g,\n +\trtype = /^(?:button|input)$/i,\n +\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n +\trclickable = /^a(?:rea)?$/i,\n +\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n +\tgetSetAttribute = jQuery.support.getSetAttribute,\n +\tnodeHook, boolHook, fixSpecified;\n +\n +jQuery.fn.extend({\n +\tattr: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveAttr: function( name ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.removeAttr( this, name );\n +\t\t});\n +\t},\n +\n +\tprop: function( name, value ) {\n +\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n +\t},\n +\n +\tremoveProp: function( name ) {\n +\t\tname = jQuery.propFix[ name ] || name;\n +\t\treturn this.each(function() {\n +\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n +\t\t\ttry {\n +\t\t\t\tthis[ name ] = undefined;\n +\t\t\t\tdelete this[ name ];\n +\t\t\t} catch( e ) {}\n +\t\t});\n +\t},\n +\n +\taddClass: function( value ) {\n +\t\tvar classNames, i, l, elem,\n +\t\t\tsetClass, c, cl;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( value && typeof value === "string" ) {\n +\t\t\tclassNames = value.split( rspace );\n +\n +\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n +\t\t\t\t\t\telem.className = value;\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tsetClass = " " + elem.className + " ";\n +\n +\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n +\t\t\t\t\t\t\tif ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {\n +\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + " ";\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tremoveClass: function( value ) {\n +\t\tvar classNames, i, l, elem, className, c, cl;\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( j ) {\n +\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( (value && typeof value === "string") || value === undefined ) {\n +\t\t\tclassNames = ( value || "" ).split( rspace );\n +\n +\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n +\t\t\t\t\tif ( value ) {\n +\t\t\t\t\t\tclassName = (" " + elem.className + " ").replace( rclass, " " );\n +\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n +\t\t\t\t\t\t\tclassName = className.replace(" " + classNames[ c ] + " ", " ");\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\telem.className = jQuery.trim( className );\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\telem.className = "";\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\ttoggleClass: function( value, stateVal ) {\n +\t\tvar type = typeof value,\n +\t\t\tisBool = typeof stateVal === "boolean";\n +\n +\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\treturn this.each(function( i ) {\n +\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tif ( type === "string" ) {\n +\t\t\t\t// toggle individual class names\n +\t\t\t\tvar className,\n +\t\t\t\t\ti = 0,\n +\t\t\t\t\tself = jQuery( this ),\n +\t\t\t\t\tstate = stateVal,\n +\t\t\t\t\tclassNames = value.split( rspace );\n +\n +\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n +\t\t\t\t\t// check each className given, space seperated list\n +\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n +\t\t\t\t\tself[ state ? "addClass" : "removeClass" ]( className );\n +\t\t\t\t}\n +\n +\t\t\t} else if ( type === "undefined" || type === "boolean" ) {\n +\t\t\t\tif ( this.className ) {\n +\t\t\t\t\t// store className if set\n +\t\t\t\t\tjQuery._data( this, "__className__", this.className );\n +\t\t\t\t}\n +\n +\t\t\t\t// toggle whole className\n +\t\t\t\tthis.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\thasClass: function( selector ) {\n +\t\tvar className = " " + selector + " ",\n +\t\t\ti = 0,\n +\t\t\tl = this.length;\n +\t\tfor ( ; i < l; i++ ) {\n +\t\t\tif ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {\n +\t\t\t\treturn true;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\tval: function( value ) {\n +\t\tvar hooks, ret, isFunction,\n +\t\t\telem = this[0];\n +\n +\t\tif ( !arguments.length ) {\n +\t\t\tif ( elem ) {\n +\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n +\n +\t\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {\n +\t\t\t\t\treturn ret;\n +\t\t\t\t}\n +\n +\t\t\t\tret = elem.value;\n +\n +\t\t\t\treturn typeof ret === "string" ?\n +\t\t\t\t\t// handle most common string cases\n +\t\t\t\t\tret.replace(rreturn, "") :\n +\t\t\t\t\t// handle cases where value is null/undef or number\n +\t\t\t\t\tret == null ? "" : ret;\n +\t\t\t}\n +\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tisFunction = jQuery.isFunction( value );\n +\n +\t\treturn this.each(function( i ) {\n +\t\t\tvar self = jQuery(this), val;\n +\n +\t\t\tif ( this.nodeType !== 1 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tif ( isFunction ) {\n +\t\t\t\tval = value.call( this, i, self.val() );\n +\t\t\t} else {\n +\t\t\t\tval = value;\n +\t\t\t}\n +\n +\t\t\t// Treat null/undefined as ""; convert numbers to string\n +\t\t\tif ( val == null ) {\n +\t\t\t\tval = "";\n +\t\t\t} else if ( typeof val === "number" ) {\n +\t\t\t\tval += "";\n +\t\t\t} else if ( jQuery.isArray( val ) ) {\n +\t\t\t\tval = jQuery.map(val, function ( value ) {\n +\t\t\t\t\treturn value == null ? "" : value + "";\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n +\n +\t\t\t// If set returns undefined, fall back to normal setting\n +\t\t\tif ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {\n +\t\t\t\tthis.value = val;\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +jQuery.extend({\n +\tvalHooks: {\n +\t\toption: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n +\t\t\t\t// uses .value. See #6932\n +\t\t\t\tvar val = elem.attributes.value;\n +\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n +\t\t\t}\n +\t\t},\n +\t\tselect: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar value, i, max, option,\n +\t\t\t\t\tindex = elem.selectedIndex,\n +\t\t\t\t\tvalues = [],\n +\t\t\t\t\toptions = elem.options,\n +\t\t\t\t\tone = elem.type === "select-one";\n +\n +\t\t\t\t// Nothing was selected\n +\t\t\t\tif ( index < 0 ) {\n +\t\t\t\t\treturn null;\n +\t\t\t\t}\n +\n +\t\t\t\t// Loop through all the selected options\n +\t\t\t\ti = one ? index : 0;\n +\t\t\t\tmax = one ? index + 1 : options.length;\n +\t\t\t\tfor ( ; i < max; i++ ) {\n +\t\t\t\t\toption = options[ i ];\n +\n +\t\t\t\t\t// Don\'t return options that are disabled or in a disabled optgroup\n +\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&\n +\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {\n +\n +\t\t\t\t\t\t// Get the specific value for the option\n +\t\t\t\t\t\tvalue = jQuery( option ).val();\n +\n +\t\t\t\t\t\t// We don\'t need an array for one selects\n +\t\t\t\t\t\tif ( one ) {\n +\t\t\t\t\t\t\treturn value;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Multi-Selects return an array\n +\t\t\t\t\t\tvalues.push( value );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n +\t\t\t\tif ( one && !values.length && options.length ) {\n +\t\t\t\t\treturn jQuery( options[ index ] ).val();\n +\t\t\t\t}\n +\n +\t\t\t\treturn values;\n +\t\t\t},\n +\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tvar values = jQuery.makeArray( value );\n +\n +\t\t\t\tjQuery(elem).find("option").each(function() {\n +\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n +\t\t\t\t});\n +\n +\t\t\t\tif ( !values.length ) {\n +\t\t\t\t\telem.selectedIndex = -1;\n +\t\t\t\t}\n +\t\t\t\treturn values;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattrFn: {\n +\t\tval: true,\n +\t\tcss: true,\n +\t\thtml: true,\n +\t\ttext: true,\n +\t\tdata: true,\n +\t\twidth: true,\n +\t\theight: true,\n +\t\toffset: true\n +\t},\n +\n +\tattr: function( elem, name, value, pass ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set attributes on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( pass && name in jQuery.attrFn ) {\n +\t\t\treturn jQuery( elem )[ name ]( value );\n +\t\t}\n +\n +\t\t// Fallback to prop when attributes are not supported\n +\t\tif ( typeof elem.getAttribute === "undefined" ) {\n +\t\t\treturn jQuery.prop( elem, name, value );\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\t// All attributes are lowercase\n +\t\t// Grab necessary hook if one is defined\n +\t\tif ( notxml ) {\n +\t\t\tname = name.toLowerCase();\n +\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\n +\t\t\tif ( value === null ) {\n +\t\t\t\tjQuery.removeAttr( elem, name );\n +\t\t\t\treturn;\n +\n +\t\t\t} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\telem.setAttribute( name, "" + value );\n +\t\t\t\treturn value;\n +\t\t\t}\n +\n +\t\t} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\treturn ret;\n +\n +\t\t} else {\n +\n +\t\t\tret = elem.getAttribute( name );\n +\n +\t\t\t// Non-existent attributes return null, we normalize to undefined\n +\t\t\treturn ret === null ?\n +\t\t\t\tundefined :\n +\t\t\t\tret;\n +\t\t}\n +\t},\n +\n +\tremoveAttr: function( elem, value ) {\n +\t\tvar propName, attrNames, name, l, isBool,\n +\t\t\ti = 0;\n +\n +\t\tif ( value && elem.nodeType === 1 ) {\n +\t\t\tattrNames = value.toLowerCase().split( rspace );\n +\t\t\tl = attrNames.length;\n +\n +\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\tname = attrNames[ i ];\n +\n +\t\t\t\tif ( name ) {\n +\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\t\t\t\t\tisBool = rboolean.test( name );\n +\n +\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n +\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n +\t\t\t\t\tif ( !isBool ) {\n +\t\t\t\t\t\tjQuery.attr( elem, name, "" );\n +\t\t\t\t\t}\n +\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n +\n +\t\t\t\t\t// Set corresponding property to false for boolean attributes\n +\t\t\t\t\tif ( isBool && propName in elem ) {\n +\t\t\t\t\t\telem[ propName ] = false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tattrHooks: {\n +\t\ttype: {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\t// We can\'t allow the type property to be changed (since it causes problems in IE)\n +\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n +\t\t\t\t\tjQuery.error( "type property can\'t be changed" );\n +\t\t\t\t} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {\n +\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n +\t\t\t\t\t// Reset value to it\'s default in case type is set after value\n +\t\t\t\t\t// This is for element creation\n +\t\t\t\t\tvar val = elem.value;\n +\t\t\t\t\telem.setAttribute( "type", value );\n +\t\t\t\t\tif ( val ) {\n +\t\t\t\t\t\telem.value = val;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\t// Use the value property for back compat\n +\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n +\t\tvalue: {\n +\t\t\tget: function( elem, name ) {\n +\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, "button" ) ) {\n +\t\t\t\t\treturn nodeHook.get( elem, name );\n +\t\t\t\t}\n +\t\t\t\treturn name in elem ?\n +\t\t\t\t\telem.value :\n +\t\t\t\t\tnull;\n +\t\t\t},\n +\t\t\tset: function( elem, value, name ) {\n +\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, "button" ) ) {\n +\t\t\t\t\treturn nodeHook.set( elem, value, name );\n +\t\t\t\t}\n +\t\t\t\t// Does not return so that setAttribute is also used\n +\t\t\t\telem.value = value;\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropFix: {\n +\t\ttabindex: "tabIndex",\n +\t\treadonly: "readOnly",\n +\t\t"for": "htmlFor",\n +\t\t"class": "className",\n +\t\tmaxlength: "maxLength",\n +\t\tcellspacing: "cellSpacing",\n +\t\tcellpadding: "cellPadding",\n +\t\trowspan: "rowSpan",\n +\t\tcolspan: "colSpan",\n +\t\tusemap: "useMap",\n +\t\tframeborder: "frameBorder",\n +\t\tcontenteditable: "contentEditable"\n +\t},\n +\n +\tprop: function( elem, name, value ) {\n +\t\tvar ret, hooks, notxml,\n +\t\t\tnType = elem.nodeType;\n +\n +\t\t// don\'t get/set properties on text, comment and attribute nodes\n +\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n +\n +\t\tif ( notxml ) {\n +\t\t\t// Fix name and attach hooks\n +\t\t\tname = jQuery.propFix[ name ] || name;\n +\t\t\thooks = jQuery.propHooks[ name ];\n +\t\t}\n +\n +\t\tif ( value !== undefined ) {\n +\t\t\tif ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn ( elem[ name ] = value );\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n +\t\t\t\treturn ret;\n +\n +\t\t\t} else {\n +\t\t\t\treturn elem[ name ];\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tpropHooks: {\n +\t\ttabIndex: {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// elem.tabIndex doesn\'t always return the correct value when it hasn\'t been explicitly set\n +\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n +\t\t\t\tvar attributeNode = elem.getAttributeNode("tabindex");\n +\n +\t\t\t\treturn attributeNode && attributeNode.specified ?\n +\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n +\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n +\t\t\t\t\t\t0 :\n +\t\t\t\t\t\tundefined;\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\n +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n +\n +// Hook for boolean attributes\n +boolHook = {\n +\tget: function( elem, name ) {\n +\t\t// Align boolean attributes with corresponding properties\n +\t\t// Fall back to attribute presence where some booleans are not supported\n +\t\tvar attrNode,\n +\t\t\tproperty = jQuery.prop( elem, name );\n +\t\treturn property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n +\t\t\tname.toLowerCase() :\n +\t\t\tundefined;\n +\t},\n +\tset: function( elem, value, name ) {\n +\t\tvar propName;\n +\t\tif ( value === false ) {\n +\t\t\t// Remove boolean attributes when set to false\n +\t\t\tjQuery.removeAttr( elem, name );\n +\t\t} else {\n +\t\t\t// value is true since we know at this point it\'s type boolean and not false\n +\t\t\t// Set boolean attributes to the same name and set the DOM property\n +\t\t\tpropName = jQuery.propFix[ name ] || name;\n +\t\t\tif ( propName in elem ) {\n +\t\t\t\t// Only set the IDL specifically if it already exists on the element\n +\t\t\t\telem[ propName ] = true;\n +\t\t\t}\n +\n +\t\t\telem.setAttribute( name, name.toLowerCase() );\n +\t\t}\n +\t\treturn name;\n +\t}\n +};\n +\n +// IE6/7 do not support getting/setting some attributes with get/setAttribute\n +if ( !getSetAttribute ) {\n +\n +\tfixSpecified = {\n +\t\tname: true,\n +\t\tid: true,\n +\t\tcoords: true\n +\t};\n +\n +\t// Use this for any attribute in IE6/7\n +\t// This fixes almost every IE6/7 issue\n +\tnodeHook = jQuery.valHooks.button = {\n +\t\tget: function( elem, name ) {\n +\t\t\tvar ret;\n +\t\t\tret = elem.getAttributeNode( name );\n +\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?\n +\t\t\t\tret.nodeValue :\n +\t\t\t\tundefined;\n +\t\t},\n +\t\tset: function( elem, value, name ) {\n +\t\t\t// Set the existing or create a new attribute node\n +\t\t\tvar ret = elem.getAttributeNode( name );\n +\t\t\tif ( !ret ) {\n +\t\t\t\tret = document.createAttribute( name );\n +\t\t\t\telem.setAttributeNode( ret );\n +\t\t\t}\n +\t\t\treturn ( ret.nodeValue = value + "" );\n +\t\t}\n +\t};\n +\n +\t// Apply the nodeHook to tabindex\n +\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n +\n +\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n +\t// This is for removals\n +\tjQuery.each([ "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tset: function( elem, value ) {\n +\t\t\t\tif ( value === "" ) {\n +\t\t\t\t\telem.setAttribute( name, "auto" );\n +\t\t\t\t\treturn value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t});\n +\n +\t// Set contenteditable to false on removals(#10429)\n +\t// Setting to empty string throws an error as an invalid value\n +\tjQuery.attrHooks.contenteditable = {\n +\t\tget: nodeHook.get,\n +\t\tset: function( elem, value, name ) {\n +\t\t\tif ( value === "" ) {\n +\t\t\t\tvalue = "false";\n +\t\t\t}\n +\t\t\tnodeHook.set( elem, value, name );\n +\t\t}\n +\t};\n +}\n +\n +\n +// Some attributes require a special call on IE\n +if ( !jQuery.support.hrefNormalized ) {\n +\tjQuery.each([ "href", "src", "width", "height" ], function( i, name ) {\n +\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n +\t\t\tget: function( elem ) {\n +\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n +\t\t\t\treturn ret === null ? undefined : ret;\n +\t\t\t}\n +\t\t});\n +\t});\n +}\n +\n +if ( !jQuery.support.style ) {\n +\tjQuery.attrHooks.style = {\n +\t\tget: function( elem ) {\n +\t\t\t// Return undefined in the case of empty string\n +\t\t\t// Normalize to lowercase since IE uppercases css property names\n +\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n +\t\t},\n +\t\tset: function( elem, value ) {\n +\t\t\treturn ( elem.style.cssText = "" + value );\n +\t\t}\n +\t};\n +}\n +\n +// Safari mis-reports the default selected property of an option\n +// Accessing the parent\'s selectedIndex property fixes it\n +if ( !jQuery.support.optSelected ) {\n +\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n +\t\tget: function( elem ) {\n +\t\t\tvar parent = elem.parentNode;\n +\n +\t\t\tif ( parent ) {\n +\t\t\t\tparent.selectedIndex;\n +\n +\t\t\t\t// Make sure that it also works with optgroups, see #5701\n +\t\t\t\tif ( parent.parentNode ) {\n +\t\t\t\t\tparent.parentNode.selectedIndex;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn null;\n +\t\t}\n +\t});\n +}\n +\n +// IE6/7 call enctype encoding\n +if ( !jQuery.support.enctype ) {\n +\tjQuery.propFix.enctype = "encoding";\n +}\n +\n +// Radios and checkboxes getter/setter\n +if ( !jQuery.support.checkOn ) {\n +\tjQuery.each([ "radio", "checkbox" ], function() {\n +\t\tjQuery.valHooks[ this ] = {\n +\t\t\tget: function( elem ) {\n +\t\t\t\t// Handle the case where in Webkit "" is returned instead of "on" if a value isn\'t specified\n +\t\t\t\treturn elem.getAttribute("value") === null ? "on" : elem.value;\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +jQuery.each([ "radio", "checkbox" ], function() {\n +\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n +\t\tset: function( elem, value ) {\n +\t\t\tif ( jQuery.isArray( value ) ) {\n +\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n +\t\t\t}\n +\t\t}\n +\t});\n +});\n +\n +\n +\n +\n +var rformElems = /^(?:textarea|input|select)$/i,\n +\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n +\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n +\trkeyEvent = /^key/,\n +\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n +\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n +\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n +\tquickParse = function( selector ) {\n +\t\tvar quick = rquickIs.exec( selector );\n +\t\tif ( quick ) {\n +\t\t\t// 0 1 2 3\n +\t\t\t// [ _, tag, id, class ]\n +\t\t\tquick[1] = ( quick[1] || "" ).toLowerCase();\n +\t\t\tquick[3] = quick[3] && new RegExp( "(?:^|\\\\s)" + quick[3] + "(?:\\\\s|$)" );\n +\t\t}\n +\t\treturn quick;\n +\t},\n +\tquickIs = function( elem, m ) {\n +\t\tvar attrs = elem.attributes || {};\n +\t\treturn (\n +\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n +\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n +\t\t\t(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))\n +\t\t);\n +\t},\n +\thoverHack = function( events ) {\n +\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );\n +\t};\n +\n +/*\n + * Helper functions for managing events -- not part of the public interface.\n + * Props to Dean Edwards\' addEvent library for many of the ideas.\n + */\n +jQuery.event = {\n +\n +\tadd: function( elem, types, handler, data, selector ) {\n +\n +\t\tvar elemData, eventHandle, events,\n +\t\t\tt, tns, type, namespaces, handleObj,\n +\t\t\thandleObjIn, quick, handlers, special;\n +\n +\t\t// Don\'t attach events to noData or text/comment nodes (allow plain objects tho)\n +\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an object of custom data in lieu of the handler\n +\t\tif ( handler.handler ) {\n +\t\t\thandleObjIn = handler;\n +\t\t\thandler = handleObjIn.handler;\n +\t\t\tselector = handleObjIn.selector;\n +\t\t}\n +\n +\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n +\t\tif ( !handler.guid ) {\n +\t\t\thandler.guid = jQuery.guid++;\n +\t\t}\n +\n +\t\t// Init the element\'s event structure and main handler, if this is the first\n +\t\tevents = elemData.events;\n +\t\tif ( !events ) {\n +\t\t\telemData.events = events = {};\n +\t\t}\n +\t\teventHandle = elemData.handle;\n +\t\tif ( !eventHandle ) {\n +\t\t\telemData.handle = eventHandle = function( e ) {\n +\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n +\t\t\t\t// when an event is called after a page has unloaded\n +\t\t\t\treturn typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?\n +\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n +\t\t\t\t\tundefined;\n +\t\t\t};\n +\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n +\t\t\teventHandle.elem = elem;\n +\t\t}\n +\n +\t\t// Handle multiple events separated by a space\n +\t\t// jQuery(...).bind("mouseover mouseout", fn);\n +\t\ttypes = jQuery.trim( hoverHack(types) ).split( " " );\n +\t\tfor ( t = 0; t < types.length; t++ ) {\n +\n +\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = tns[1];\n +\t\t\tnamespaces = ( tns[2] || "" ).split( "." ).sort();\n +\n +\t\t\t// If event changes its type, use the special event handlers for the changed type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// If selector defined, determine special event api type, otherwise given type\n +\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n +\n +\t\t\t// Update special based on newly reset type\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\n +\t\t\t// handleObj is passed to all event handlers\n +\t\t\thandleObj = jQuery.extend({\n +\t\t\t\ttype: type,\n +\t\t\t\torigType: tns[1],\n +\t\t\t\tdata: data,\n +\t\t\t\thandler: handler,\n +\t\t\t\tguid: handler.guid,\n +\t\t\t\tselector: selector,\n +\t\t\t\tquick: selector && quickParse( selector ),\n +\t\t\t\tnamespace: namespaces.join(".")\n +\t\t\t}, handleObjIn );\n +\n +\t\t\t// Init the event handler queue if we\'re the first\n +\t\t\thandlers = events[ type ];\n +\t\t\tif ( !handlers ) {\n +\t\t\t\thandlers = events[ type ] = [];\n +\t\t\t\thandlers.delegateCount = 0;\n +\n +\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n +\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n +\t\t\t\t\t// Bind the global event handler to the element\n +\t\t\t\t\tif ( elem.addEventListener ) {\n +\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n +\n +\t\t\t\t\t} else if ( elem.attachEvent ) {\n +\t\t\t\t\t\telem.attachEvent( "on" + type, eventHandle );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( special.add ) {\n +\t\t\t\tspecial.add.call( elem, handleObj );\n +\n +\t\t\t\tif ( !handleObj.handler.guid ) {\n +\t\t\t\t\thandleObj.handler.guid = handler.guid;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Add to the element\'s handler list, delegates in front\n +\t\t\tif ( selector ) {\n +\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n +\t\t\t} else {\n +\t\t\t\thandlers.push( handleObj );\n +\t\t\t}\n +\n +\t\t\t// Keep track of which events have ever been used, for event optimization\n +\t\t\tjQuery.event.global[ type ] = true;\n +\t\t}\n +\n +\t\t// Nullify elem to prevent memory leaks in IE\n +\t\telem = null;\n +\t},\n +\n +\tglobal: {},\n +\n +\t// Detach an event or set of events from an element\n +\tremove: function( elem, types, handler, selector, mappedTypes ) {\n +\n +\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n +\t\t\tt, tns, type, origType, namespaces, origCount,\n +\t\t\tj, events, special, handle, eventType, handleObj;\n +\n +\t\tif ( !elemData || !(events = elemData.events) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Once for each type.namespace in types; type may be omitted\n +\t\ttypes = jQuery.trim( hoverHack( types || "" ) ).split(" ");\n +\t\tfor ( t = 0; t < types.length; t++ ) {\n +\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n +\t\t\ttype = origType = tns[1];\n +\t\t\tnamespaces = tns[2];\n +\n +\t\t\t// Unbind all events (on this namespace, if provided) for the element\n +\t\t\tif ( !type ) {\n +\t\t\t\tfor ( type in events ) {\n +\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n +\t\t\t\t}\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n +\t\t\teventType = events[ type ] || [];\n +\t\t\torigCount = eventType.length;\n +\t\t\tnamespaces = namespaces ? new RegExp("(^|\\\\.)" + namespaces.split(".").sort().join("\\\\.(?:.*\\\\.)?") + "(\\\\.|$)") : null;\n +\n +\t\t\t// Remove matching events\n +\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n +\t\t\t\thandleObj = eventType[ j ];\n +\n +\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n +\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n +\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n +\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {\n +\t\t\t\t\teventType.splice( j--, 1 );\n +\n +\t\t\t\t\tif ( handleObj.selector ) {\n +\t\t\t\t\t\teventType.delegateCount--;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( special.remove ) {\n +\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n +\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n +\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n +\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n +\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n +\t\t\t\t}\n +\n +\t\t\t\tdelete events[ type ];\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Remove the expando if it\'s no longer used\n +\t\tif ( jQuery.isEmptyObject( events ) ) {\n +\t\t\thandle = elemData.handle;\n +\t\t\tif ( handle ) {\n +\t\t\t\thandle.elem = null;\n +\t\t\t}\n +\n +\t\t\t// removeData also checks for emptiness and clears the expando if empty\n +\t\t\t// so use it instead of delete\n +\t\t\tjQuery.removeData( elem, [ "events", "handle" ], true );\n +\t\t}\n +\t},\n +\n +\t// Events that are safe to short-circuit if no handlers are attached.\n +\t// Native DOM events should not be added, they may have inline handlers.\n +\tcustomEvent: {\n +\t\t"getData": true,\n +\t\t"setData": true,\n +\t\t"changeData": true\n +\t},\n +\n +\ttrigger: function( event, data, elem, onlyHandlers ) {\n +\t\t// Don\'t do events on text and comment nodes\n +\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Event object or event type\n +\t\tvar type = event.type || event,\n +\t\t\tnamespaces = [],\n +\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n +\n +\t\t// focus/blur morphs to focusin/out; ensure we\'re not firing them right now\n +\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( type.indexOf( "!" ) >= 0 ) {\n +\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n +\t\t\ttype = type.slice(0, -1);\n +\t\t\texclusive = true;\n +\t\t}\n +\n +\t\tif ( type.indexOf( "." ) >= 0 ) {\n +\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n +\t\t\tnamespaces = type.split(".");\n +\t\t\ttype = namespaces.shift();\n +\t\t\tnamespaces.sort();\n +\t\t}\n +\n +\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n +\t\t\t// No jQuery handlers for this event type, and it can\'t have inline handlers\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Caller can pass in an Event, Object, or just an event type string\n +\t\tevent = typeof event === "object" ?\n +\t\t\t// jQuery.Event object\n +\t\t\tevent[ jQuery.expando ] ? event :\n +\t\t\t// Object literal\n +\t\t\tnew jQuery.Event( type, event ) :\n +\t\t\t// Just the event type (string)\n +\t\t\tnew jQuery.Event( type );\n +\n +\t\tevent.type = type;\n +\t\tevent.isTrigger = true;\n +\t\tevent.exclusive = exclusive;\n +\t\tevent.namespace = namespaces.join( "." );\n +\t\tevent.namespace_re = event.namespace? new RegExp("(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.)?") + "(\\\\.|$)") : null;\n +\t\tontype = type.indexOf( ":" ) < 0 ? "on" + type : "";\n +\n +\t\t// Handle a global trigger\n +\t\tif ( !elem ) {\n +\n +\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n +\t\t\tcache = jQuery.cache;\n +\t\t\tfor ( i in cache ) {\n +\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n +\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Clean up the event in case it is being reused\n +\t\tevent.result = undefined;\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = elem;\n +\t\t}\n +\n +\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n +\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n +\t\tdata.unshift( event );\n +\n +\t\t// Allow special events to draw outside the lines\n +\t\tspecial = jQuery.event.special[ type ] || {};\n +\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n +\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n +\t\teventPath = [[ elem, special.bindType || type ]];\n +\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\tbubbleType = special.delegateType || type;\n +\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n +\t\t\told = null;\n +\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n +\t\t\t\teventPath.push([ cur, bubbleType ]);\n +\t\t\t\told = cur;\n +\t\t\t}\n +\n +\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n +\t\t\tif ( old && old === elem.ownerDocument ) {\n +\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Fire handlers on the event path\n +\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n +\n +\t\t\tcur = eventPath[i][0];\n +\t\t\tevent.type = eventPath[i][1];\n +\n +\t\t\thandle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );\n +\t\t\tif ( handle ) {\n +\t\t\t\thandle.apply( cur, data );\n +\t\t\t}\n +\t\t\t// Note that this is a bare JS function and not a jQuery handler\n +\t\t\thandle = ontype && cur[ ontype ];\n +\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t}\n +\t\tevent.type = type;\n +\n +\t\t// If nobody prevented the default action, do it now\n +\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n +\n +\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n +\t\t\t\t!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {\n +\n +\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n +\t\t\t\t// Can\'t use an .isFunction() check here because IE6/7 fails that test.\n +\t\t\t\t// Don\'t do default actions on window, that\'s where global variables be (#6170)\n +\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n +\t\t\t\tif ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n +\n +\t\t\t\t\t// Don\'t re-trigger an onFOO event when we call its FOO() method\n +\t\t\t\t\told = elem[ ontype ];\n +\n +\t\t\t\t\tif ( old ) {\n +\t\t\t\t\t\telem[ ontype ] = null;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n +\t\t\t\t\tjQuery.event.triggered = type;\n +\t\t\t\t\telem[ type ]();\n +\t\t\t\t\tjQuery.event.triggered = undefined;\n +\n +\t\t\t\t\tif ( old ) {\n +\t\t\t\t\t\telem[ ontype ] = old;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\tdispatch: function( event ) {\n +\n +\t\t// Make a writable jQuery.Event from the native event object\n +\t\tevent = jQuery.event.fix( event || window.event );\n +\n +\t\tvar handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),\n +\t\t\tdelegateCount = handlers.delegateCount,\n +\t\t\targs = [].slice.call( arguments, 0 ),\n +\t\t\trun_all = !event.exclusive && !event.namespace,\n +\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n +\t\t\thandlerQueue = [],\n +\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n +\n +\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n +\t\targs[0] = event;\n +\t\tevent.delegateTarget = this;\n +\n +\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n +\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Determine handlers that should run if there are delegated events\n +\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n +\t\tif ( delegateCount && !(event.button && event.type === "click") ) {\n +\n +\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n +\t\t\tjqcur = jQuery(this);\n +\t\t\tjqcur.context = this.ownerDocument || this;\n +\n +\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n +\n +\t\t\t\t// Don\'t process events on disabled elements (#6911, #8165)\n +\t\t\t\tif ( cur.disabled !== true ) {\n +\t\t\t\t\tselMatch = {};\n +\t\t\t\t\tmatches = [];\n +\t\t\t\t\tjqcur[0] = cur;\n +\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n +\t\t\t\t\t\thandleObj = handlers[ i ];\n +\t\t\t\t\t\tsel = handleObj.selector;\n +\n +\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n +\t\t\t\t\t\t\tselMatch[ sel ] = (\n +\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n +\t\t\t\t\t\t\t);\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n +\t\t\t\t\t\t\tmatches.push( handleObj );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( matches.length ) {\n +\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Add the remaining (directly-bound) handlers\n +\t\tif ( handlers.length > delegateCount ) {\n +\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n +\t\t}\n +\n +\t\t// Run delegates first; they may want to stop propagation beneath us\n +\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n +\t\t\tmatched = handlerQueue[ i ];\n +\t\t\tevent.currentTarget = matched.elem;\n +\n +\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n +\t\t\t\thandleObj = matched.matches[ j ];\n +\n +\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n +\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n +\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n +\n +\t\t\t\t\tevent.data = handleObj.data;\n +\t\t\t\t\tevent.handleObj = handleObj;\n +\n +\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n +\t\t\t\t\t\t\t.apply( matched.elem, args );\n +\n +\t\t\t\t\tif ( ret !== undefined ) {\n +\t\t\t\t\t\tevent.result = ret;\n +\t\t\t\t\t\tif ( ret === false ) {\n +\t\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t\t\tevent.stopPropagation();\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Call the postDispatch hook for the mapped type\n +\t\tif ( special.postDispatch ) {\n +\t\t\tspecial.postDispatch.call( this, event );\n +\t\t}\n +\n +\t\treturn event.result;\n +\t},\n +\n +\t// Includes some event props shared by KeyEvent and MouseEvent\n +\t// *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n +\tprops: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),\n +\n +\tfixHooks: {},\n +\n +\tkeyHooks: {\n +\t\tprops: "char charCode key keyCode".split(" "),\n +\t\tfilter: function( event, original ) {\n +\n +\t\t\t// Add which for key events\n +\t\t\tif ( event.which == null ) {\n +\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tmouseHooks: {\n +\t\tprops: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),\n +\t\tfilter: function( event, original ) {\n +\t\t\tvar eventDoc, doc, body,\n +\t\t\t\tbutton = original.button,\n +\t\t\t\tfromElement = original.fromElement;\n +\n +\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n +\t\t\tif ( event.pageX == null && original.clientX != null ) {\n +\t\t\t\teventDoc = event.target.ownerDocument || document;\n +\t\t\t\tdoc = eventDoc.documentElement;\n +\t\t\t\tbody = eventDoc.body;\n +\n +\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n +\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n +\t\t\t}\n +\n +\t\t\t// Add relatedTarget, if necessary\n +\t\t\tif ( !event.relatedTarget && fromElement ) {\n +\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n +\t\t\t}\n +\n +\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n +\t\t\t// Note: button is not normalized, so don\'t use it\n +\t\t\tif ( !event.which && button !== undefined ) {\n +\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n +\t\t\t}\n +\n +\t\t\treturn event;\n +\t\t}\n +\t},\n +\n +\tfix: function( event ) {\n +\t\tif ( event[ jQuery.expando ] ) {\n +\t\t\treturn event;\n +\t\t}\n +\n +\t\t// Create a writable copy of the event object and normalize some properties\n +\t\tvar i, prop,\n +\t\t\toriginalEvent = event,\n +\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n +\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n +\n +\t\tevent = jQuery.Event( originalEvent );\n +\n +\t\tfor ( i = copy.length; i; ) {\n +\t\t\tprop = copy[ --i ];\n +\t\t\tevent[ prop ] = originalEvent[ prop ];\n +\t\t}\n +\n +\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n +\t\tif ( !event.target ) {\n +\t\t\tevent.target = originalEvent.srcElement || document;\n +\t\t}\n +\n +\t\t// Target should not be a text node (#504, Safari)\n +\t\tif ( event.target.nodeType === 3 ) {\n +\t\t\tevent.target = event.target.parentNode;\n +\t\t}\n +\n +\t\t// For mouse/key events; add metaKey if it\'s not there (#3368, IE6/7/8)\n +\t\tif ( event.metaKey === undefined ) {\n +\t\t\tevent.metaKey = event.ctrlKey;\n +\t\t}\n +\n +\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n +\t},\n +\n +\tspecial: {\n +\t\tready: {\n +\t\t\t// Make sure the ready event is setup\n +\t\t\tsetup: jQuery.bindReady\n +\t\t},\n +\n +\t\tload: {\n +\t\t\t// Prevent triggered image.load events from bubbling to window.load\n +\t\t\tnoBubble: true\n +\t\t},\n +\n +\t\tfocus: {\n +\t\t\tdelegateType: "focusin"\n +\t\t},\n +\t\tblur: {\n +\t\t\tdelegateType: "focusout"\n +\t\t},\n +\n +\t\tbeforeunload: {\n +\t\t\tsetup: function( data, namespaces, eventHandle ) {\n +\t\t\t\t// We only want to do this special case on windows\n +\t\t\t\tif ( jQuery.isWindow( this ) ) {\n +\t\t\t\t\tthis.onbeforeunload = eventHandle;\n +\t\t\t\t}\n +\t\t\t},\n +\n +\t\t\tteardown: function( namespaces, eventHandle ) {\n +\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n +\t\t\t\t\tthis.onbeforeunload = null;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tsimulate: function( type, elem, event, bubble ) {\n +\t\t// Piggyback on a donor event to simulate a different one.\n +\t\t// Fake originalEvent to avoid donor\'s stopPropagation, but if the\n +\t\t// simulated event prevents default then we do the same on the donor.\n +\t\tvar e = jQuery.extend(\n +\t\t\tnew jQuery.Event(),\n +\t\t\tevent,\n +\t\t\t{ type: type,\n +\t\t\t\tisSimulated: true,\n +\t\t\t\toriginalEvent: {}\n +\t\t\t}\n +\t\t);\n +\t\tif ( bubble ) {\n +\t\t\tjQuery.event.trigger( e, null, elem );\n +\t\t} else {\n +\t\t\tjQuery.event.dispatch.call( elem, e );\n +\t\t}\n +\t\tif ( e.isDefaultPrevented() ) {\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t}\n +};\n +\n +// Some plugins are using, but it\'s undocumented/deprecated and will be removed.\n +// The 1.7 special event interface should provide all the hooks needed now.\n +jQuery.event.handle = jQuery.event.dispatch;\n +\n +jQuery.removeEvent = document.removeEventListener ?\n +\tfunction( elem, type, handle ) {\n +\t\tif ( elem.removeEventListener ) {\n +\t\t\telem.removeEventListener( type, handle, false );\n +\t\t}\n +\t} :\n +\tfunction( elem, type, handle ) {\n +\t\tif ( elem.detachEvent ) {\n +\t\t\telem.detachEvent( "on" + type, handle );\n +\t\t}\n +\t};\n +\n +jQuery.Event = function( src, props ) {\n +\t// Allow instantiation without the \'new\' keyword\n +\tif ( !(this instanceof jQuery.Event) ) {\n +\t\treturn new jQuery.Event( src, props );\n +\t}\n +\n +\t// Event object\n +\tif ( src && src.type ) {\n +\t\tthis.originalEvent = src;\n +\t\tthis.type = src.type;\n +\n +\t\t// Events bubbling up the document may have been marked as prevented\n +\t\t// by a handler lower down the tree; reflect the correct value.\n +\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n +\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n +\n +\t// Event type\n +\t} else {\n +\t\tthis.type = src;\n +\t}\n +\n +\t// Put explicitly provided properties onto the event object\n +\tif ( props ) {\n +\t\tjQuery.extend( this, props );\n +\t}\n +\n +\t// Create a timestamp if incoming event doesn\'t have one\n +\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n +\n +\t// Mark it as fixed\n +\tthis[ jQuery.expando ] = true;\n +};\n +\n +function returnFalse() {\n +\treturn false;\n +}\n +function returnTrue() {\n +\treturn true;\n +}\n +\n +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n +jQuery.Event.prototype = {\n +\tpreventDefault: function() {\n +\t\tthis.isDefaultPrevented = returnTrue;\n +\n +\t\tvar e = this.originalEvent;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// if preventDefault exists run it on the original event\n +\t\tif ( e.preventDefault ) {\n +\t\t\te.preventDefault();\n +\n +\t\t// otherwise set the returnValue property of the original event to false (IE)\n +\t\t} else {\n +\t\t\te.returnValue = false;\n +\t\t}\n +\t},\n +\tstopPropagation: function() {\n +\t\tthis.isPropagationStopped = returnTrue;\n +\n +\t\tvar e = this.originalEvent;\n +\t\tif ( !e ) {\n +\t\t\treturn;\n +\t\t}\n +\t\t// if stopPropagation exists run it on the original event\n +\t\tif ( e.stopPropagation ) {\n +\t\t\te.stopPropagation();\n +\t\t}\n +\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n +\t\te.cancelBubble = true;\n +\t},\n +\tstopImmediatePropagation: function() {\n +\t\tthis.isImmediatePropagationStopped = returnTrue;\n +\t\tthis.stopPropagation();\n +\t},\n +\tisDefaultPrevented: returnFalse,\n +\tisPropagationStopped: returnFalse,\n +\tisImmediatePropagationStopped: returnFalse\n +};\n +\n +// Create mouseenter/leave events using mouseover/out and event-time checks\n +jQuery.each({\n +\tmouseenter: "mouseover",\n +\tmouseleave: "mouseout"\n +}, function( orig, fix ) {\n +\tjQuery.event.special[ orig ] = {\n +\t\tdelegateType: fix,\n +\t\tbindType: fix,\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar target = this,\n +\t\t\t\trelated = event.relatedTarget,\n +\t\t\t\thandleObj = event.handleObj,\n +\t\t\t\tselector = handleObj.selector,\n +\t\t\t\tret;\n +\n +\t\t\t// For mousenter/leave call the handler if related is outside the target.\n +\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n +\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n +\t\t\t\tevent.type = handleObj.origType;\n +\t\t\t\tret = handleObj.handler.apply( this, arguments );\n +\t\t\t\tevent.type = fix;\n +\t\t\t}\n +\t\t\treturn ret;\n +\t\t}\n +\t};\n +});\n +\n +// IE submit delegation\n +if ( !jQuery.support.submitBubbles ) {\n +\n +\tjQuery.event.special.submit = {\n +\t\tsetup: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n +\t\t\tjQuery.event.add( this, "click._submit keypress._submit", function( e ) {\n +\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n +\t\t\t\tvar elem = e.target,\n +\t\t\t\t\tform = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;\n +\t\t\t\tif ( form && !form._submit_attached ) {\n +\t\t\t\t\tjQuery.event.add( form, "submit._submit", function( event ) {\n +\t\t\t\t\t\tevent._submit_bubble = true;\n +\t\t\t\t\t});\n +\t\t\t\t\tform._submit_attached = true;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t// return undefined since we don\'t need an event listener\n +\t\t},\n +\t\t\n +\t\tpostDispatch: function( event ) {\n +\t\t\t// If form was submitted by the user, bubble the event up the tree\n +\t\t\tif ( event._submit_bubble ) {\n +\t\t\t\tdelete event._submit_bubble;\n +\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n +\t\t\t\t\tjQuery.event.simulate( "submit", this.parentNode, event, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\t// Only need this for delegated form submit events\n +\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n +\t\t\tjQuery.event.remove( this, "._submit" );\n +\t\t}\n +\t};\n +}\n +\n +// IE change delegation and checkbox/radio fix\n +if ( !jQuery.support.changeBubbles ) {\n +\n +\tjQuery.event.special.change = {\n +\n +\t\tsetup: function() {\n +\n +\t\t\tif ( rformElems.test( this.nodeName ) ) {\n +\t\t\t\t// IE doesn\'t fire change on a check/radio until blur; trigger it on click\n +\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n +\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n +\t\t\t\tif ( this.type === "checkbox" || this.type === "radio" ) {\n +\t\t\t\t\tjQuery.event.add( this, "propertychange._change", function( event ) {\n +\t\t\t\t\t\tif ( event.originalEvent.propertyName === "checked" ) {\n +\t\t\t\t\t\t\tthis._just_changed = true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\tjQuery.event.add( this, "click._change", function( event ) {\n +\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n +\t\t\t\t\t\t\tthis._just_changed = false;\n +\t\t\t\t\t\t\tjQuery.event.simulate( "change", this, event, true );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n +\t\t\tjQuery.event.add( this, "beforeactivate._change", function( e ) {\n +\t\t\t\tvar elem = e.target;\n +\n +\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n +\t\t\t\t\tjQuery.event.add( elem, "change._change", function( event ) {\n +\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n +\t\t\t\t\t\t\tjQuery.event.simulate( "change", this.parentNode, event, true );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t\telem._change_attached = true;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t},\n +\n +\t\thandle: function( event ) {\n +\t\t\tvar elem = event.target;\n +\n +\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n +\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {\n +\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n +\t\t\t}\n +\t\t},\n +\n +\t\tteardown: function() {\n +\t\t\tjQuery.event.remove( this, "._change" );\n +\n +\t\t\treturn rformElems.test( this.nodeName );\n +\t\t}\n +\t};\n +}\n +\n +// Create "bubbling" focus and blur events\n +if ( !jQuery.support.focusinBubbles ) {\n +\tjQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {\n +\n +\t\t// Attach a single capturing handler while someone wants focusin/focusout\n +\t\tvar attaches = 0,\n +\t\t\thandler = function( event ) {\n +\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n +\t\t\t};\n +\n +\t\tjQuery.event.special[ fix ] = {\n +\t\t\tsetup: function() {\n +\t\t\t\tif ( attaches++ === 0 ) {\n +\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tteardown: function() {\n +\t\t\t\tif ( --attaches === 0 ) {\n +\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t});\n +}\n +\n +jQuery.fn.extend({\n +\n +\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n +\t\tvar origFn, type;\n +\n +\t\t// Types can be a map of types/handlers\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-Object, selector, data )\n +\t\t\tif ( typeof selector !== "string" ) { // && selector != null\n +\t\t\t\t// ( types-Object, data )\n +\t\t\t\tdata = data || selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t\tfor ( type in types ) {\n +\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( data == null && fn == null ) {\n +\t\t\t// ( types, fn )\n +\t\t\tfn = selector;\n +\t\t\tdata = selector = undefined;\n +\t\t} else if ( fn == null ) {\n +\t\t\tif ( typeof selector === "string" ) {\n +\t\t\t\t// ( types, selector, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = undefined;\n +\t\t\t} else {\n +\t\t\t\t// ( types, data, fn )\n +\t\t\t\tfn = data;\n +\t\t\t\tdata = selector;\n +\t\t\t\tselector = undefined;\n +\t\t\t}\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t} else if ( !fn ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( one === 1 ) {\n +\t\t\torigFn = fn;\n +\t\t\tfn = function( event ) {\n +\t\t\t\t// Can use an empty set, since event contains the info\n +\t\t\t\tjQuery().off( event );\n +\t\t\t\treturn origFn.apply( this, arguments );\n +\t\t\t};\n +\t\t\t// Use same guid so caller can remove using origFn\n +\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n +\t\t}\n +\t\treturn this.each( function() {\n +\t\t\tjQuery.event.add( this, types, fn, data, selector );\n +\t\t});\n +\t},\n +\tone: function( types, selector, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn, 1 );\n +\t},\n +\toff: function( types, selector, fn ) {\n +\t\tif ( types && types.preventDefault && types.handleObj ) {\n +\t\t\t// ( event ) dispatched jQuery.Event\n +\t\t\tvar handleObj = types.handleObj;\n +\t\t\tjQuery( types.delegateTarget ).off(\n +\t\t\t\thandleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,\n +\t\t\t\thandleObj.selector,\n +\t\t\t\thandleObj.handler\n +\t\t\t);\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( typeof types === "object" ) {\n +\t\t\t// ( types-object [, selector] )\n +\t\t\tfor ( var type in types ) {\n +\t\t\t\tthis.off( type, selector, types[ type ] );\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( selector === false || typeof selector === "function" ) {\n +\t\t\t// ( types [, fn] )\n +\t\t\tfn = selector;\n +\t\t\tselector = undefined;\n +\t\t}\n +\t\tif ( fn === false ) {\n +\t\t\tfn = returnFalse;\n +\t\t}\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.remove( this, types, fn, selector );\n +\t\t});\n +\t},\n +\n +\tbind: function( types, data, fn ) {\n +\t\treturn this.on( types, null, data, fn );\n +\t},\n +\tunbind: function( types, fn ) {\n +\t\treturn this.off( types, null, fn );\n +\t},\n +\n +\tlive: function( types, data, fn ) {\n +\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n +\t\treturn this;\n +\t},\n +\tdie: function( types, fn ) {\n +\t\tjQuery( this.context ).off( types, this.selector || "**", fn );\n +\t\treturn this;\n +\t},\n +\n +\tdelegate: function( selector, types, data, fn ) {\n +\t\treturn this.on( types, selector, data, fn );\n +\t},\n +\tundelegate: function( selector, types, fn ) {\n +\t\t// ( namespace ) or ( selector, types [, fn] )\n +\t\treturn arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );\n +\t},\n +\n +\ttrigger: function( type, data ) {\n +\t\treturn this.each(function() {\n +\t\t\tjQuery.event.trigger( type, data, this );\n +\t\t});\n +\t},\n +\ttriggerHandler: function( type, data ) {\n +\t\tif ( this[0] ) {\n +\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n +\t\t}\n +\t},\n +\n +\ttoggle: function( fn ) {\n +\t\t// Save reference to arguments for access in closure\n +\t\tvar args = arguments,\n +\t\t\tguid = fn.guid || jQuery.guid++,\n +\t\t\ti = 0,\n +\t\t\ttoggler = function( event ) {\n +\t\t\t\t// Figure out which function to execute\n +\t\t\t\tvar lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;\n +\t\t\t\tjQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );\n +\n +\t\t\t\t// Make sure that clicks stop\n +\t\t\t\tevent.preventDefault();\n +\n +\t\t\t\t// and execute the function\n +\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n +\t\t\t};\n +\n +\t\t// link all the functions, so any of them can unbind this click handler\n +\t\ttoggler.guid = guid;\n +\t\twhile ( i < args.length ) {\n +\t\t\targs[ i++ ].guid = guid;\n +\t\t}\n +\n +\t\treturn this.click( toggler );\n +\t},\n +\n +\thover: function( fnOver, fnOut ) {\n +\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n +\t}\n +});\n +\n +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +\n +\t"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +\n +\t"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {\n +\n +\t// Handle event binding\n +\tjQuery.fn[ name ] = function( data, fn ) {\n +\t\tif ( fn == null ) {\n +\t\t\tfn = data;\n +\t\t\tdata = null;\n +\t\t}\n +\n +\t\treturn arguments.length > 0 ?\n +\t\t\tthis.on( name, null, data, fn ) :\n +\t\t\tthis.trigger( name );\n +\t};\n +\n +\tif ( jQuery.attrFn ) {\n +\t\tjQuery.attrFn[ name ] = true;\n +\t}\n +\n +\tif ( rkeyEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n +\t}\n +\n +\tif ( rmouseEvent.test( name ) ) {\n +\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n +\t}\n +});\n +\n +\n +\n +/*!\n + * Sizzle CSS Selector Engine\n + * Copyright 2011, The Dojo Foundation\n + * Released under the MIT, BSD, and GPL Licenses.\n + * More information: http://sizzlejs.com/\n + */\n +(function(){\n +\n +var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n +\texpando = "sizcache" + (Math.random() + \'\').replace(\'.\', \'\'),\n +\tdone = 0,\n +\ttoString = Object.prototype.toString,\n +\thasDuplicate = false,\n +\tbaseHasDuplicate = true,\n +\trBackslash = /\\\\/g,\n +\trReturn = /\\r\\n/g,\n +\trNonWord = /\\W/;\n +\n +// Here we check if the JavaScript engine is using some sort of\n +// optimization where it does not always call our comparision\n +// function. If that is the case, discard the hasDuplicate value.\n +// Thus far that includes Google Chrome.\n +[0, 0].sort(function() {\n +\tbaseHasDuplicate = false;\n +\treturn 0;\n +});\n +\n +var Sizzle = function( selector, context, results, seed ) {\n +\tresults = results || [];\n +\tcontext = context || document;\n +\n +\tvar origContext = context;\n +\n +\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n +\t\treturn [];\n +\t}\n +\n +\tif ( !selector || typeof selector !== "string" ) {\n +\t\treturn results;\n +\t}\n +\n +\tvar m, set, checkSet, extra, ret, cur, pop, i,\n +\t\tprune = true,\n +\t\tcontextXML = Sizzle.isXML( context ),\n +\t\tparts = [],\n +\t\tsoFar = selector;\n +\n +\t// Reset the position of the chunker regexp (start from head)\n +\tdo {\n +\t\tchunker.exec( "" );\n +\t\tm = chunker.exec( soFar );\n +\n +\t\tif ( m ) {\n +\t\t\tsoFar = m[3];\n +\n +\t\t\tparts.push( m[1] );\n +\n +\t\t\tif ( m[2] ) {\n +\t\t\t\textra = m[3];\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\t} while ( m );\n +\n +\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n +\n +\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n +\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n +\n +\t\t} else {\n +\t\t\tset = Expr.relative[ parts[0] ] ?\n +\t\t\t\t[ context ] :\n +\t\t\t\tSizzle( parts.shift(), context );\n +\n +\t\t\twhile ( parts.length ) {\n +\t\t\t\tselector = parts.shift();\n +\n +\t\t\t\tif ( Expr.relative[ selector ] ) {\n +\t\t\t\t\tselector += parts.shift();\n +\t\t\t\t}\n +\n +\t\t\t\tset = posProcess( selector, set, seed );\n +\t\t\t}\n +\t\t}\n +\n +\t} else {\n +\t\t// Take a shortcut and set the context if the root selector is an ID\n +\t\t// (but not if it\'ll be faster if the inner selector is an ID)\n +\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n +\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n +\n +\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n +\t\t\tcontext = ret.expr ?\n +\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n +\t\t\t\tret.set[0];\n +\t\t}\n +\n +\t\tif ( context ) {\n +\t\t\tret = seed ?\n +\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n +\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );\n +\n +\t\t\tset = ret.expr ?\n +\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n +\t\t\t\tret.set;\n +\n +\t\t\tif ( parts.length > 0 ) {\n +\t\t\t\tcheckSet = makeArray( set );\n +\n +\t\t\t} else {\n +\t\t\t\tprune = false;\n +\t\t\t}\n +\n +\t\t\twhile ( parts.length ) {\n +\t\t\t\tcur = parts.pop();\n +\t\t\t\tpop = cur;\n +\n +\t\t\t\tif ( !Expr.relative[ cur ] ) {\n +\t\t\t\t\tcur = "";\n +\t\t\t\t} else {\n +\t\t\t\t\tpop = parts.pop();\n +\t\t\t\t}\n +\n +\t\t\t\tif ( pop == null ) {\n +\t\t\t\t\tpop = context;\n +\t\t\t\t}\n +\n +\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tcheckSet = parts = [];\n +\t\t}\n +\t}\n +\n +\tif ( !checkSet ) {\n +\t\tcheckSet = set;\n +\t}\n +\n +\tif ( !checkSet ) {\n +\t\tSizzle.error( cur || selector );\n +\t}\n +\n +\tif ( toString.call(checkSet) === "[object Array]" ) {\n +\t\tif ( !prune ) {\n +\t\t\tresults.push.apply( results, checkSet );\n +\n +\t\t} else if ( context && context.nodeType === 1 ) {\n +\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n +\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n +\t\t\t\t\tresults.push( set[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n +\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n +\t\t\t\t\tresults.push( set[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t} else {\n +\t\tmakeArray( checkSet, results );\n +\t}\n +\n +\tif ( extra ) {\n +\t\tSizzle( extra, origContext, results, seed );\n +\t\tSizzle.uniqueSort( results );\n +\t}\n +\n +\treturn results;\n +};\n +\n +Sizzle.uniqueSort = function( results ) {\n +\tif ( sortOrder ) {\n +\t\thasDuplicate = baseHasDuplicate;\n +\t\tresults.sort( sortOrder );\n +\n +\t\tif ( hasDuplicate ) {\n +\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n +\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n +\t\t\t\t\tresults.splice( i--, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn results;\n +};\n +\n +Sizzle.matches = function( expr, set ) {\n +\treturn Sizzle( expr, null, null, set );\n +};\n +\n +Sizzle.matchesSelector = function( node, expr ) {\n +\treturn Sizzle( expr, null, null, [node] ).length > 0;\n +};\n +\n +Sizzle.find = function( expr, context, isXML ) {\n +\tvar set, i, len, match, type, left;\n +\n +\tif ( !expr ) {\n +\t\treturn [];\n +\t}\n +\n +\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n +\t\ttype = Expr.order[i];\n +\n +\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n +\t\t\tleft = match[1];\n +\t\t\tmatch.splice( 1, 1 );\n +\n +\t\t\tif ( left.substr( left.length - 1 ) !== "\\\\" ) {\n +\t\t\t\tmatch[1] = (match[1] || "").replace( rBackslash, "" );\n +\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n +\n +\t\t\t\tif ( set != null ) {\n +\t\t\t\t\texpr = expr.replace( Expr.match[ type ], "" );\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\tif ( !set ) {\n +\t\tset = typeof context.getElementsByTagName !== "undefined" ?\n +\t\t\tcontext.getElementsByTagName( "*" ) :\n +\t\t\t[];\n +\t}\n +\n +\treturn { set: set, expr: expr };\n +};\n +\n +Sizzle.filter = function( expr, set, inplace, not ) {\n +\tvar match, anyFound,\n +\t\ttype, found, item, filter, left,\n +\t\ti, pass,\n +\t\told = expr,\n +\t\tresult = [],\n +\t\tcurLoop = set,\n +\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n +\n +\twhile ( expr && set.length ) {\n +\t\tfor ( type in Expr.filter ) {\n +\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n +\t\t\t\tfilter = Expr.filter[ type ];\n +\t\t\t\tleft = match[1];\n +\n +\t\t\t\tanyFound = false;\n +\n +\t\t\t\tmatch.splice(1,1);\n +\n +\t\t\t\tif ( left.substr( left.length - 1 ) === "\\\\" ) {\n +\t\t\t\t\tcontinue;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( curLoop === result ) {\n +\t\t\t\t\tresult = [];\n +\t\t\t\t}\n +\n +\t\t\t\tif ( Expr.preFilter[ type ] ) {\n +\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n +\n +\t\t\t\t\tif ( !match ) {\n +\t\t\t\t\t\tanyFound = found = true;\n +\n +\t\t\t\t\t} else if ( match === true ) {\n +\t\t\t\t\t\tcontinue;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( match ) {\n +\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n +\t\t\t\t\t\tif ( item ) {\n +\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n +\t\t\t\t\t\t\tpass = not ^ found;\n +\n +\t\t\t\t\t\t\tif ( inplace && found != null ) {\n +\t\t\t\t\t\t\t\tif ( pass ) {\n +\t\t\t\t\t\t\t\t\tanyFound = true;\n +\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t} else if ( pass ) {\n +\t\t\t\t\t\t\t\tresult.push( item );\n +\t\t\t\t\t\t\t\tanyFound = true;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( found !== undefined ) {\n +\t\t\t\t\tif ( !inplace ) {\n +\t\t\t\t\t\tcurLoop = result;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\texpr = expr.replace( Expr.match[ type ], "" );\n +\n +\t\t\t\t\tif ( !anyFound ) {\n +\t\t\t\t\t\treturn [];\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Improper expression\n +\t\tif ( expr === old ) {\n +\t\t\tif ( anyFound == null ) {\n +\t\t\t\tSizzle.error( expr );\n +\n +\t\t\t} else {\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\n +\t\told = expr;\n +\t}\n +\n +\treturn curLoop;\n +};\n +\n +Sizzle.error = function( msg ) {\n +\tthrow new Error( "Syntax error, unrecognized expression: " + msg );\n +};\n +\n +/**\n + * Utility function for retreiving the text value of an array of DOM nodes\n + * @param {Array|Element} elem\n + */\n +var getText = Sizzle.getText = function( elem ) {\n + var i, node,\n +\t\tnodeType = elem.nodeType,\n +\t\tret = "";\n +\n +\tif ( nodeType ) {\n +\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n +\t\t\t// Use textContent || innerText for elements\n +\t\t\tif ( typeof elem.textContent === \'string\' ) {\n +\t\t\t\treturn elem.textContent;\n +\t\t\t} else if ( typeof elem.innerText === \'string\' ) {\n +\t\t\t\t// Replace IE\'s carriage returns\n +\t\t\t\treturn elem.innerText.replace( rReturn, \'\' );\n +\t\t\t} else {\n +\t\t\t\t// Traverse it\'s children\n +\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n +\t\t\t\t\tret += getText( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n +\t\t\treturn elem.nodeValue;\n +\t\t}\n +\t} else {\n +\n +\t\t// If no nodeType, this is expected to be an array\n +\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n +\t\t\t// Do not traverse comment nodes\n +\t\t\tif ( node.nodeType !== 8 ) {\n +\t\t\t\tret += getText( node );\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn ret;\n +};\n +\n +var Expr = Sizzle.selectors = {\n +\torder: [ "ID", "NAME", "TAG" ],\n +\n +\tmatch: {\n +\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n +\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n +\t\tNAME: /\\[name=[\'"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)[\'"]*\\]/,\n +\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:([\'"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n +\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n +\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n +\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n +\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n +\t},\n +\n +\tleftMatch: {},\n +\n +\tattrMap: {\n +\t\t"class": "className",\n +\t\t"for": "htmlFor"\n +\t},\n +\n +\tattrHandle: {\n +\t\thref: function( elem ) {\n +\t\t\treturn elem.getAttribute( "href" );\n +\t\t},\n +\t\ttype: function( elem ) {\n +\t\t\treturn elem.getAttribute( "type" );\n +\t\t}\n +\t},\n +\n +\trelative: {\n +\t\t"+": function(checkSet, part){\n +\t\t\tvar isPartStr = typeof part === "string",\n +\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n +\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n +\n +\t\t\tif ( isTag ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\t\t\t}\n +\n +\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n +\t\t\t\tif ( (elem = checkSet[i]) ) {\n +\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n +\n +\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n +\t\t\t\t\t\telem || false :\n +\t\t\t\t\t\telem === part;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( isPartStrNotTag ) {\n +\t\t\t\tSizzle.filter( part, checkSet, true );\n +\t\t\t}\n +\t\t},\n +\n +\t\t">": function( checkSet, part ) {\n +\t\t\tvar elem,\n +\t\t\t\tisPartStr = typeof part === "string",\n +\t\t\t\ti = 0,\n +\t\t\t\tl = checkSet.length;\n +\n +\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\n +\t\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\t\telem = checkSet[i];\n +\n +\t\t\t\t\tif ( elem ) {\n +\t\t\t\t\t\tvar parent = elem.parentNode;\n +\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t} else {\n +\t\t\t\tfor ( ; i < l; i++ ) {\n +\t\t\t\t\telem = checkSet[i];\n +\n +\t\t\t\t\tif ( elem ) {\n +\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n +\t\t\t\t\t\t\telem.parentNode :\n +\t\t\t\t\t\t\telem.parentNode === part;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( isPartStr ) {\n +\t\t\t\t\tSizzle.filter( part, checkSet, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\t"": function(checkSet, part, isXML){\n +\t\t\tvar nodeCheck,\n +\t\t\t\tdoneName = done++,\n +\t\t\t\tcheckFn = dirCheck;\n +\n +\t\t\tif ( typeof part === "string" && !rNonWord.test( part ) ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\t\t\t\tnodeCheck = part;\n +\t\t\t\tcheckFn = dirNodeCheck;\n +\t\t\t}\n +\n +\t\t\tcheckFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );\n +\t\t},\n +\n +\t\t"~": function( checkSet, part, isXML ) {\n +\t\t\tvar nodeCheck,\n +\t\t\t\tdoneName = done++,\n +\t\t\t\tcheckFn = dirCheck;\n +\n +\t\t\tif ( typeof part === "string" && !rNonWord.test( part ) ) {\n +\t\t\t\tpart = part.toLowerCase();\n +\t\t\t\tnodeCheck = part;\n +\t\t\t\tcheckFn = dirNodeCheck;\n +\t\t\t}\n +\n +\t\t\tcheckFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );\n +\t\t}\n +\t},\n +\n +\tfind: {\n +\t\tID: function( match, context, isXML ) {\n +\t\t\tif ( typeof context.getElementById !== "undefined" && !isXML ) {\n +\t\t\t\tvar m = context.getElementById(match[1]);\n +\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\treturn m && m.parentNode ? [m] : [];\n +\t\t\t}\n +\t\t},\n +\n +\t\tNAME: function( match, context ) {\n +\t\t\tif ( typeof context.getElementsByName !== "undefined" ) {\n +\t\t\t\tvar ret = [],\n +\t\t\t\t\tresults = context.getElementsByName( match[1] );\n +\n +\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n +\t\t\t\t\tif ( results[i].getAttribute("name") === match[1] ) {\n +\t\t\t\t\t\tret.push( results[i] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn ret.length === 0 ? null : ret;\n +\t\t\t}\n +\t\t},\n +\n +\t\tTAG: function( match, context ) {\n +\t\t\tif ( typeof context.getElementsByTagName !== "undefined" ) {\n +\t\t\t\treturn context.getElementsByTagName( match[1] );\n +\t\t\t}\n +\t\t}\n +\t},\n +\tpreFilter: {\n +\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n +\t\t\tmatch = " " + match[1].replace( rBackslash, "" ) + " ";\n +\n +\t\t\tif ( isXML ) {\n +\t\t\t\treturn match;\n +\t\t\t}\n +\n +\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n +\t\t\t\tif ( elem ) {\n +\t\t\t\t\tif ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\\t\\n\\r]/g, " ").indexOf(match) >= 0) ) {\n +\t\t\t\t\t\tif ( !inplace ) {\n +\t\t\t\t\t\t\tresult.push( elem );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} else if ( inplace ) {\n +\t\t\t\t\t\tcurLoop[i] = false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn false;\n +\t\t},\n +\n +\t\tID: function( match ) {\n +\t\t\treturn match[1].replace( rBackslash, "" );\n +\t\t},\n +\n +\t\tTAG: function( match, curLoop ) {\n +\t\t\treturn match[1].replace( rBackslash, "" ).toLowerCase();\n +\t\t},\n +\n +\t\tCHILD: function( match ) {\n +\t\t\tif ( match[1] === "nth" ) {\n +\t\t\t\tif ( !match[2] ) {\n +\t\t\t\t\tSizzle.error( match[0] );\n +\t\t\t\t}\n +\n +\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, \'\');\n +\n +\t\t\t\t// parse equations like \'even\', \'odd\', \'5\', \'2n\', \'3n+2\', \'4n-1\', \'-n+6\'\n +\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n +\t\t\t\t\tmatch[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||\n +\t\t\t\t\t!/\\D/.test( match[2] ) && "0n+" + match[2] || match[2]);\n +\n +\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n +\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n +\t\t\t\tmatch[3] = test[3] - 0;\n +\t\t\t}\n +\t\t\t ]]></string> </value> </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +else if ( match[2] ) {\n +\t\t\t\tSizzle.error( match[0] );\n +\t\t\t}\n +\n +\t\t\t// TODO: Move to normal caching system\n +\t\t\tmatch[0] = done++;\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n +\t\t\tvar name = match[1] = match[1].replace( rBackslash, "" );\n +\n +\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n +\t\t\t\tmatch[1] = Expr.attrMap[name];\n +\t\t\t}\n +\n +\t\t\t// Handle if an un-quoted value was used\n +\t\t\tmatch[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );\n +\n +\t\t\tif ( match[2] === "~=" ) {\n +\t\t\t\tmatch[4] = " " + match[4] + " ";\n +\t\t\t}\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n +\t\t\tif ( match[1] === "not" ) {\n +\t\t\t\t// If we\'re dealing with a complex expression, or a simple one\n +\t\t\t\tif ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\\w/.test(match[3]) ) {\n +\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n +\n +\t\t\t\t\tif ( !inplace ) {\n +\t\t\t\t\t\tresult.push.apply( result, ret );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\n +\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n +\t\t\t\treturn true;\n +\t\t\t}\n +\n +\t\t\treturn match;\n +\t\t},\n +\n +\t\tPOS: function( match ) {\n +\t\t\tmatch.unshift( true );\n +\n +\t\t\treturn match;\n +\t\t}\n +\t},\n +\n +\tfilters: {\n +\t\tenabled: function( elem ) {\n +\t\t\treturn elem.disabled === false && elem.type !== "hidden";\n +\t\t},\n +\n +\t\tdisabled: function( elem ) {\n +\t\t\treturn elem.disabled === true;\n +\t\t},\n +\n +\t\tchecked: function( elem ) {\n +\t\t\treturn elem.checked === true;\n +\t\t},\n +\n +\t\tselected: function( elem ) {\n +\t\t\t// Accessing this property makes selected-by-default\n +\t\t\t// options in Safari work properly\n +\t\t\tif ( elem.parentNode ) {\n +\t\t\t\telem.parentNode.selectedIndex;\n +\t\t\t}\n +\n +\t\t\treturn elem.selected === true;\n +\t\t},\n +\n +\t\tparent: function( elem ) {\n +\t\t\treturn !!elem.firstChild;\n +\t\t},\n +\n +\t\tempty: function( elem ) {\n +\t\t\treturn !elem.firstChild;\n +\t\t},\n +\n +\t\thas: function( elem, i, match ) {\n +\t\t\treturn !!Sizzle( match[3], elem ).length;\n +\t\t},\n +\n +\t\theader: function( elem ) {\n +\t\t\treturn (/h\\d/i).test( elem.nodeName );\n +\t\t},\n +\n +\t\ttext: function( elem ) {\n +\t\t\tvar attr = elem.getAttribute( "type" ), type = elem.type;\n +\t\t\t// IE6 and 7 will map elem.type to \'text\' for new HTML5 types (search, etc)\n +\t\t\t// use getAttribute instead to test this case\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );\n +\t\t},\n +\n +\t\tradio: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;\n +\t\t},\n +\n +\t\tcheckbox: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;\n +\t\t},\n +\n +\t\tfile: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "file" === elem.type;\n +\t\t},\n +\n +\t\tpassword: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "password" === elem.type;\n +\t\t},\n +\n +\t\tsubmit: function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn (name === "input" || name === "button") && "submit" === elem.type;\n +\t\t},\n +\n +\t\timage: function( elem ) {\n +\t\t\treturn elem.nodeName.toLowerCase() === "input" && "image" === elem.type;\n +\t\t},\n +\n +\t\treset: function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn (name === "input" || name === "button") && "reset" === elem.type;\n +\t\t},\n +\n +\t\tbutton: function( elem ) {\n +\t\t\tvar name = elem.nodeName.toLowerCase();\n +\t\t\treturn name === "input" && "button" === elem.type || name === "button";\n +\t\t},\n +\n +\t\tinput: function( elem ) {\n +\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n +\t\t},\n +\n +\t\tfocus: function( elem ) {\n +\t\t\treturn elem === elem.ownerDocument.activeElement;\n +\t\t}\n +\t},\n +\tsetFilters: {\n +\t\tfirst: function( elem, i ) {\n +\t\t\treturn i === 0;\n +\t\t},\n +\n +\t\tlast: function( elem, i, match, array ) {\n +\t\t\treturn i === array.length - 1;\n +\t\t},\n +\n +\t\teven: function( elem, i ) {\n +\t\t\treturn i % 2 === 0;\n +\t\t},\n +\n +\t\todd: function( elem, i ) {\n +\t\t\treturn i % 2 === 1;\n +\t\t},\n +\n +\t\tlt: function( elem, i, match ) {\n +\t\t\treturn i < match[3] - 0;\n +\t\t},\n +\n +\t\tgt: function( elem, i, match ) {\n +\t\t\treturn i > match[3] - 0;\n +\t\t},\n +\n +\t\tnth: function( elem, i, match ) {\n +\t\t\treturn match[3] - 0 === i;\n +\t\t},\n +\n +\t\teq: function( elem, i, match ) {\n +\t\t\treturn match[3] - 0 === i;\n +\t\t}\n +\t},\n +\tfilter: {\n +\t\tPSEUDO: function( elem, match, i, array ) {\n +\t\t\tvar name = match[1],\n +\t\t\t\tfilter = Expr.filters[ name ];\n +\n +\t\t\tif ( filter ) {\n +\t\t\t\treturn filter( elem, i, match, array );\n +\n +\t\t\t} else if ( name === "contains" ) {\n +\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;\n +\n +\t\t\t} else if ( name === "not" ) {\n +\t\t\t\tvar not = match[3];\n +\n +\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n +\t\t\t\t\tif ( not[j] === elem ) {\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\treturn true;\n +\n +\t\t\t} else {\n +\t\t\t\tSizzle.error( name );\n +\t\t\t}\n +\t\t},\n +\n +\t\tCHILD: function( elem, match ) {\n +\t\t\tvar first, last,\n +\t\t\t\tdoneName, parent, cache,\n +\t\t\t\tcount, diff,\n +\t\t\t\ttype = match[1],\n +\t\t\t\tnode = elem;\n +\n +\t\t\tswitch ( type ) {\n +\t\t\t\tcase "only":\n +\t\t\t\tcase "first":\n +\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n +\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n +\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( type === "first" ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tnode = elem;\n +\n +\t\t\t\t\t/* falls through */\n +\t\t\t\tcase "last":\n +\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n +\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n +\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\treturn true;\n +\n +\t\t\t\tcase "nth":\n +\t\t\t\t\tfirst = match[2];\n +\t\t\t\t\tlast = match[3];\n +\n +\t\t\t\t\tif ( first === 1 && last === 0 ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tdoneName = match[0];\n +\t\t\t\t\tparent = elem.parentNode;\n +\n +\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n +\t\t\t\t\t\tcount = 0;\n +\n +\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n +\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n +\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\tparent[ expando ] = doneName;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tdiff = elem.nodeIndex - last;\n +\n +\t\t\t\t\tif ( first === 0 ) {\n +\t\t\t\t\t\treturn diff === 0;\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n +\t\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tID: function( elem, match ) {\n +\t\t\treturn elem.nodeType === 1 && elem.getAttribute("id") === match;\n +\t\t},\n +\n +\t\tTAG: function( elem, match ) {\n +\t\t\treturn (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n +\t\t},\n +\n +\t\tCLASS: function( elem, match ) {\n +\t\t\treturn (" " + (elem.className || elem.getAttribute("class")) + " ")\n +\t\t\t\t.indexOf( match ) > -1;\n +\t\t},\n +\n +\t\tATTR: function( elem, match ) {\n +\t\t\tvar name = match[1],\n +\t\t\t\tresult = Sizzle.attr ?\n +\t\t\t\t\tSizzle.attr( elem, name ) :\n +\t\t\t\t\tExpr.attrHandle[ name ] ?\n +\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n +\t\t\t\t\telem[ name ] != null ?\n +\t\t\t\t\t\telem[ name ] :\n +\t\t\t\t\t\telem.getAttribute( name ),\n +\t\t\t\tvalue = result + "",\n +\t\t\t\ttype = match[2],\n +\t\t\t\tcheck = match[4];\n +\n +\t\t\treturn result == null ?\n +\t\t\t\ttype === "!=" :\n +\t\t\t\t!type && Sizzle.attr ?\n +\t\t\t\tresult != null :\n +\t\t\t\ttype === "=" ?\n +\t\t\t\tvalue === check :\n +\t\t\t\ttype === "*=" ?\n +\t\t\t\tvalue.indexOf(check) >= 0 :\n +\t\t\t\ttype === "~=" ?\n +\t\t\t\t(" " + value + " ").indexOf(check) >= 0 :\n +\t\t\t\t!check ?\n +\t\t\t\tvalue && result !== false :\n +\t\t\t\ttype === "!=" ?\n +\t\t\t\tvalue !== check :\n +\t\t\t\ttype === "^=" ?\n +\t\t\t\tvalue.indexOf(check) === 0 :\n +\t\t\t\ttype === "$=" ?\n +\t\t\t\tvalue.substr(value.length - check.length) === check :\n +\t\t\t\ttype === "|=" ?\n +\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + "-" :\n +\t\t\t\tfalse;\n +\t\t},\n +\n +\t\tPOS: function( elem, match, i, array ) {\n +\t\t\tvar name = match[2],\n +\t\t\t\tfilter = Expr.setFilters[ name ];\n +\n +\t\t\tif ( filter ) {\n +\t\t\t\treturn filter( elem, i, match, array );\n +\t\t\t}\n +\t\t}\n +\t}\n +};\n +\n +var origPOS = Expr.match.POS,\n +\tfescape = function(all, num){\n +\t\treturn "\\\\" + (num - 0 + 1);\n +\t};\n +\n +for ( var type in Expr.match ) {\n +\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n +\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n +}\n +// Expose origPOS\n +// "global" as in regardless of relation to brackets/parens\n +Expr.match.globalPOS = origPOS;\n +\n +var makeArray = function( array, results ) {\n +\tarray = Array.prototype.slice.call( array, 0 );\n +\n +\tif ( results ) {\n +\t\tresults.push.apply( results, array );\n +\t\treturn results;\n +\t}\n +\n +\treturn array;\n +};\n +\n +// Perform a simple check to determine if the browser is capable of\n +// converting a NodeList to an array using builtin methods.\n +// Also verifies that the returned array holds DOM nodes\n +// (which is not the case in the Blackberry browser)\n +try {\n +\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n +\n +// Provide a fallback method if it does not work\n +} catch( e ) {\n +\tmakeArray = function( array, results ) {\n +\t\tvar i = 0,\n +\t\t\tret = results || [];\n +\n +\t\tif ( toString.call(array) === "[object Array]" ) {\n +\t\t\tArray.prototype.push.apply( ret, array );\n +\n +\t\t} else {\n +\t\t\tif ( typeof array.length === "number" ) {\n +\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n +\t\t\t\t\tret.push( array[i] );\n +\t\t\t\t}\n +\n +\t\t\t} else {\n +\t\t\t\tfor ( ; array[i]; i++ ) {\n +\t\t\t\t\tret.push( array[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t};\n +}\n +\n +var sortOrder, siblingCheck;\n +\n +if ( document.documentElement.compareDocumentPosition ) {\n +\tsortOrder = function( a, b ) {\n +\t\tif ( a === b ) {\n +\t\t\thasDuplicate = true;\n +\t\t\treturn 0;\n +\t\t}\n +\n +\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n +\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n +\t\t}\n +\n +\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n +\t};\n +\n +} else {\n +\tsortOrder = function( a, b ) {\n +\t\t// The nodes are identical, we can exit early\n +\t\tif ( a === b ) {\n +\t\t\thasDuplicate = true;\n +\t\t\treturn 0;\n +\n +\t\t// Fallback to using sourceIndex (in IE) if it\'s available on both nodes\n +\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n +\t\t\treturn a.sourceIndex - b.sourceIndex;\n +\t\t}\n +\n +\t\tvar al, bl,\n +\t\t\tap = [],\n +\t\t\tbp = [],\n +\t\t\taup = a.parentNode,\n +\t\t\tbup = b.parentNode,\n +\t\t\tcur = aup;\n +\n +\t\t// If the nodes are siblings (or identical) we can do a quick check\n +\t\tif ( aup === bup ) {\n +\t\t\treturn siblingCheck( a, b );\n +\n +\t\t// If no parents were found then the nodes are disconnected\n +\t\t} else if ( !aup ) {\n +\t\t\treturn -1;\n +\n +\t\t} else if ( !bup ) {\n +\t\t\treturn 1;\n +\t\t}\n +\n +\t\t// Otherwise they\'re somewhere else in the tree so we need\n +\t\t// to build up a full list of the parentNodes for comparison\n +\t\twhile ( cur ) {\n +\t\t\tap.unshift( cur );\n +\t\t\tcur = cur.parentNode;\n +\t\t}\n +\n +\t\tcur = bup;\n +\n +\t\twhile ( cur ) {\n +\t\t\tbp.unshift( cur );\n +\t\t\tcur = cur.parentNode;\n +\t\t}\n +\n +\t\tal = ap.length;\n +\t\tbl = bp.length;\n +\n +\t\t// Start walking down the tree looking for a discrepancy\n +\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n +\t\t\tif ( ap[i] !== bp[i] ) {\n +\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// We ended someplace up the tree so do a sibling check\n +\t\treturn i === al ?\n +\t\t\tsiblingCheck( a, bp[i], -1 ) :\n +\t\t\tsiblingCheck( ap[i], b, 1 );\n +\t};\n +\n +\tsiblingCheck = function( a, b, ret ) {\n +\t\tif ( a === b ) {\n +\t\t\treturn ret;\n +\t\t}\n +\n +\t\tvar cur = a.nextSibling;\n +\n +\t\twhile ( cur ) {\n +\t\t\tif ( cur === b ) {\n +\t\t\t\treturn -1;\n +\t\t\t}\n +\n +\t\t\tcur = cur.nextSibling;\n +\t\t}\n +\n +\t\treturn 1;\n +\t};\n +}\n +\n +// Check to see if the browser returns elements by name when\n +// querying by getElementById (and provide a workaround)\n +(function(){\n +\t// We\'re going to inject a fake input element with a specified name\n +\tvar form = document.createElement("div"),\n +\t\tid = "script" + (new Date()).getTime(),\n +\t\troot = document.documentElement;\n +\n +\tform.innerHTML = "<a name=\'" + id + "\'/>";\n +\n +\t// Inject it into the root element, check its status, and remove it quickly\n +\troot.insertBefore( form, root.firstChild );\n +\n +\t// The workaround has to do additional checks after a getElementById\n +\t// Which slows things down for other browsers (hence the branching)\n +\tif ( document.getElementById( id ) ) {\n +\t\tExpr.find.ID = function( match, context, isXML ) {\n +\t\t\tif ( typeof context.getElementById !== "undefined" && !isXML ) {\n +\t\t\t\tvar m = context.getElementById(match[1]);\n +\n +\t\t\t\treturn m ?\n +\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?\n +\t\t\t\t\t\t[m] :\n +\t\t\t\t\t\tundefined :\n +\t\t\t\t\t[];\n +\t\t\t}\n +\t\t};\n +\n +\t\tExpr.filter.ID = function( elem, match ) {\n +\t\t\tvar node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");\n +\n +\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n +\t\t};\n +\t}\n +\n +\troot.removeChild( form );\n +\n +\t// release memory in IE\n +\troot = form = null;\n +})();\n +\n +(function(){\n +\t// Check to see if the browser returns only elements\n +\t// when doing getElementsByTagName("*")\n +\n +\t// Create a fake element\n +\tvar div = document.createElement("div");\n +\tdiv.appendChild( document.createComment("") );\n +\n +\t// Make sure no comments are found\n +\tif ( div.getElementsByTagName("*").length > 0 ) {\n +\t\tExpr.find.TAG = function( match, context ) {\n +\t\t\tvar results = context.getElementsByTagName( match[1] );\n +\n +\t\t\t// Filter out possible comments\n +\t\t\tif ( match[1] === "*" ) {\n +\t\t\t\tvar tmp = [];\n +\n +\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n +\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n +\t\t\t\t\t\ttmp.push( results[i] );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tresults = tmp;\n +\t\t\t}\n +\n +\t\t\treturn results;\n +\t\t};\n +\t}\n +\n +\t// Check to see if an attribute returns normalized href attributes\n +\tdiv.innerHTML = "<a href=\'#\'></a>";\n +\n +\tif ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&\n +\t\t\tdiv.firstChild.getAttribute("href") !== "#" ) {\n +\n +\t\tExpr.attrHandle.href = function( elem ) {\n +\t\t\treturn elem.getAttribute( "href", 2 );\n +\t\t};\n +\t}\n +\n +\t// release memory in IE\n +\tdiv = null;\n +})();\n +\n +if ( document.querySelectorAll ) {\n +\t(function(){\n +\t\tvar oldSizzle = Sizzle,\n +\t\t\tdiv = document.createElement("div"),\n +\t\t\tid = "__sizzle__";\n +\n +\t\tdiv.innerHTML = "<p class=\'TEST\'></p>";\n +\n +\t\t// Safari can\'t handle uppercase or unicode characters when\n +\t\t// in quirks mode.\n +\t\tif ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tSizzle = function( query, context, extra, seed ) {\n +\t\t\tcontext = context || document;\n +\n +\t\t\t// Only use querySelectorAll on non-XML documents\n +\t\t\t// (ID selectors don\'t work in non-HTML documents)\n +\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n +\t\t\t\t// See if we find a selector to speed up\n +\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n +\n +\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n +\t\t\t\t\t// Speed-up: Sizzle("TAG")\n +\t\t\t\t\tif ( match[1] ) {\n +\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n +\n +\t\t\t\t\t// Speed-up: Sizzle(".CLASS")\n +\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n +\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( context.nodeType === 9 ) {\n +\t\t\t\t\t// Speed-up: Sizzle("body")\n +\t\t\t\t\t// The body element only exists once, optimize finding it\n +\t\t\t\t\tif ( query === "body" && context.body ) {\n +\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n +\n +\t\t\t\t\t// Speed-up: Sizzle("#ID")\n +\t\t\t\t\t} else if ( match && match[3] ) {\n +\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n +\n +\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n +\t\t\t\t\t\t// nodes that are no longer in the document #6963\n +\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n +\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n +\t\t\t\t\t\t\t// by name instead of ID\n +\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n +\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n +\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\treturn makeArray( [], extra );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n +\t\t\t\t\t} catch(qsaError) {}\n +\n +\t\t\t\t// qSA works strangely on Element-rooted queries\n +\t\t\t\t// We can work around this by specifying an extra ID on the root\n +\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n +\t\t\t\t// IE 8 doesn\'t work on object elements\n +\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {\n +\t\t\t\t\tvar oldContext = context,\n +\t\t\t\t\t\told = context.getAttribute( "id" ),\n +\t\t\t\t\t\tnid = old || id,\n +\t\t\t\t\t\thasParent = context.parentNode,\n +\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n +\n +\t\t\t\t\tif ( !old ) {\n +\t\t\t\t\t\tcontext.setAttribute( "id", nid );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tnid = nid.replace( /\'/g, "\\\\$&" );\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n +\t\t\t\t\t\tcontext = context.parentNode;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n +\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( "[id=\'" + nid + "\'] " + query ), extra );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} catch(pseudoError) {\n +\t\t\t\t\t} finally {\n +\t\t\t\t\t\tif ( !old ) {\n +\t\t\t\t\t\t\toldContext.removeAttribute( "id" );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn oldSizzle(query, context, extra, seed);\n +\t\t};\n +\n +\t\tfor ( var prop in oldSizzle ) {\n +\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n +\t\t}\n +\n +\t\t// release memory in IE\n +\t\tdiv = null;\n +\t})();\n +}\n +\n +(function(){\n +\tvar html = document.documentElement,\n +\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n +\n +\tif ( matches ) {\n +\t\t// Check to see if it\'s possible to do matchesSelector\n +\t\t// on a disconnected node (IE 9 fails this)\n +\t\tvar disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),\n +\t\t\tpseudoWorks = false;\n +\n +\t\ttry {\n +\t\t\t// This should fail with an exception\n +\t\t\t// Gecko does not error, returns false instead\n +\t\t\tmatches.call( document.documentElement, "[test!=\'\']:sizzle" );\n +\n +\t\t} catch( pseudoError ) {\n +\t\t\tpseudoWorks = true;\n +\t\t}\n +\n +\t\tSizzle.matchesSelector = function( node, expr ) {\n +\t\t\t// Make sure that attribute selectors are quoted\n +\t\t\texpr = expr.replace(/\\=\\s*([^\'"\\]]*)\\s*\\]/g, "=\'$1\']");\n +\n +\t\t\tif ( !Sizzle.isXML( node ) ) {\n +\t\t\t\ttry {\n +\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n +\t\t\t\t\t\tvar ret = matches.call( node, expr );\n +\n +\t\t\t\t\t\t// IE 9\'s matchesSelector returns false on disconnected nodes\n +\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n +\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n +\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n +\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n +\t\t\t\t\t\t\treturn ret;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n +\t\t};\n +\t}\n +})();\n +\n +(function(){\n +\tvar div = document.createElement("div");\n +\n +\tdiv.innerHTML = "<div class=\'test e\'></div><div class=\'test\'></div>";\n +\n +\t// Opera can\'t find a second classname (in 9.6)\n +\t// Also, make sure that getElementsByClassName actually exists\n +\tif ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {\n +\t\treturn;\n +\t}\n +\n +\t// Safari caches class attributes, doesn\'t catch changes (in 3.2)\n +\tdiv.lastChild.className = "e";\n +\n +\tif ( div.getElementsByClassName("e").length === 1 ) {\n +\t\treturn;\n +\t}\n +\n +\tExpr.order.splice(1, 0, "CLASS");\n +\tExpr.find.CLASS = function( match, context, isXML ) {\n +\t\tif ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {\n +\t\t\treturn context.getElementsByClassName(match[1]);\n +\t\t}\n +\t};\n +\n +\t// release memory in IE\n +\tdiv = null;\n +})();\n +\n +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n +\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n +\t\tvar elem = checkSet[i];\n +\n +\t\tif ( elem ) {\n +\t\t\tvar match = false;\n +\n +\t\t\telem = elem[dir];\n +\n +\t\t\twhile ( elem ) {\n +\t\t\t\tif ( elem[ expando ] === doneName ) {\n +\t\t\t\t\tmatch = checkSet[elem.sizset];\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n +\t\t\t\t\telem[ expando ] = doneName;\n +\t\t\t\t\telem.sizset = i;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n +\t\t\t\t\tmatch = elem;\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\telem = elem[dir];\n +\t\t\t}\n +\n +\t\t\tcheckSet[i] = match;\n +\t\t}\n +\t}\n +}\n +\n +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n +\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n +\t\tvar elem = checkSet[i];\n +\n +\t\tif ( elem ) {\n +\t\t\tvar match = false;\n +\n +\t\t\telem = elem[dir];\n +\n +\t\t\twhile ( elem ) {\n +\t\t\t\tif ( elem[ expando ] === doneName ) {\n +\t\t\t\t\tmatch = checkSet[elem.sizset];\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\tif ( !isXML ) {\n +\t\t\t\t\t\telem[ expando ] = doneName;\n +\t\t\t\t\t\telem.sizset = i;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( typeof cur !== "string" ) {\n +\t\t\t\t\t\tif ( elem === cur ) {\n +\t\t\t\t\t\t\tmatch = true;\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n +\t\t\t\t\t\tmatch = elem;\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\telem = elem[dir];\n +\t\t\t}\n +\n +\t\t\tcheckSet[i] = match;\n +\t\t}\n +\t}\n +}\n +\n +if ( document.documentElement.contains ) {\n +\tSizzle.contains = function( a, b ) {\n +\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n +\t};\n +\n +} else if ( document.documentElement.compareDocumentPosition ) {\n +\tSizzle.contains = function( a, b ) {\n +\t\treturn !!(a.compareDocumentPosition(b) & 16);\n +\t};\n +\n +} else {\n +\tSizzle.contains = function() {\n +\t\treturn false;\n +\t};\n +}\n +\n +Sizzle.isXML = function( elem ) {\n +\t// documentElement is verified for cases where it doesn\'t yet exist\n +\t// (such as loading iframes in IE - #4833)\n +\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n +\n +\treturn documentElement ? documentElement.nodeName !== "HTML" : false;\n +};\n +\n +var posProcess = function( selector, context, seed ) {\n +\tvar match,\n +\t\ttmpSet = [],\n +\t\tlater = "",\n +\t\troot = context.nodeType ? [context] : context;\n +\n +\t// Position selectors must be done after the filter\n +\t// And so must :not(positional) so we move all PSEUDOs to the end\n +\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n +\t\tlater += match[0];\n +\t\tselector = selector.replace( Expr.match.PSEUDO, "" );\n +\t}\n +\n +\tselector = Expr.relative[selector] ? selector + "*" : selector;\n +\n +\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n +\t\tSizzle( selector, root[i], tmpSet, seed );\n +\t}\n +\n +\treturn Sizzle.filter( later, tmpSet );\n +};\n +\n +// EXPOSE\n +// Override sizzle attribute retrieval\n +Sizzle.attr = jQuery.attr;\n +Sizzle.selectors.attrMap = {};\n +jQuery.find = Sizzle;\n +jQuery.expr = Sizzle.selectors;\n +jQuery.expr[":"] = jQuery.expr.filters;\n +jQuery.unique = Sizzle.uniqueSort;\n +jQuery.text = Sizzle.getText;\n +jQuery.isXMLDoc = Sizzle.isXML;\n +jQuery.contains = Sizzle.contains;\n +\n +\n +})();\n +\n +\n +var runtil = /Until$/,\n +\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n +\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n +\trmultiselector = /,/,\n +\tisSimple = /^.[^:#\\[\\.,]*$/,\n +\tslice = Array.prototype.slice,\n +\tPOS = jQuery.expr.match.globalPOS,\n +\t// methods guaranteed to produce a unique set when starting from a unique set\n +\tguaranteedUnique = {\n +\t\tchildren: true,\n +\t\tcontents: true,\n +\t\tnext: true,\n +\t\tprev: true\n +\t};\n +\n +jQuery.fn.extend({\n +\tfind: function( selector ) {\n +\t\tvar self = this,\n +\t\t\ti, l;\n +\n +\t\tif ( typeof selector !== "string" ) {\n +\t\t\treturn jQuery( selector ).filter(function() {\n +\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n +\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n +\t\t\t\t\t\treturn true;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\tvar ret = this.pushStack( "", "find", selector ),\n +\t\t\tlength, n, r;\n +\n +\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\tlength = ret.length;\n +\t\t\tjQuery.find( selector, this[i], ret );\n +\n +\t\t\tif ( i > 0 ) {\n +\t\t\t\t// Make sure that the results are unique\n +\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n +\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n +\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n +\t\t\t\t\t\t\tret.splice(n--, 1);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\thas: function( target ) {\n +\t\tvar targets = jQuery( target );\n +\t\treturn this.filter(function() {\n +\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n +\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n +\t\t\t\t\treturn true;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tnot: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, false), "not", selector);\n +\t},\n +\n +\tfilter: function( selector ) {\n +\t\treturn this.pushStack( winnow(this, selector, true), "filter", selector );\n +\t},\n +\n +\tis: function( selector ) {\n +\t\treturn !!selector && (\n +\t\t\ttypeof selector === "string" ?\n +\t\t\t\t// If this is a positional selector, check membership in the returned set\n +\t\t\t\t// so $("p:first").is("p:last") won\'t return true for a doc with two "p".\n +\t\t\t\tPOS.test( selector ) ?\n +\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n +\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n +\t\t\t\tthis.filter( selector ).length > 0 );\n +\t},\n +\n +\tclosest: function( selectors, context ) {\n +\t\tvar ret = [], i, l, cur = this[0];\n +\n +\t\t// Array (deprecated as of jQuery 1.7)\n +\t\tif ( jQuery.isArray( selectors ) ) {\n +\t\t\tvar level = 1;\n +\n +\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n +\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n +\n +\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n +\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tcur = cur.parentNode;\n +\t\t\t\tlevel++;\n +\t\t\t}\n +\n +\t\t\treturn ret;\n +\t\t}\n +\n +\t\t// String\n +\t\tvar pos = POS.test( selectors ) || typeof selectors !== "string" ?\n +\t\t\t\tjQuery( selectors, context || this.context ) :\n +\t\t\t\t0;\n +\n +\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n +\t\t\tcur = this[i];\n +\n +\t\t\twhile ( cur ) {\n +\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n +\t\t\t\t\tret.push( cur );\n +\t\t\t\t\tbreak;\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tcur = cur.parentNode;\n +\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n +\n +\t\treturn this.pushStack( ret, "closest", selectors );\n +\t},\n +\n +\t// Determine the position of an element within\n +\t// the matched set of elements\n +\tindex: function( elem ) {\n +\n +\t\t// No argument, return index in parent\n +\t\tif ( !elem ) {\n +\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n +\t\t}\n +\n +\t\t// index in selector\n +\t\tif ( typeof elem === "string" ) {\n +\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n +\t\t}\n +\n +\t\t// Locate the position of the desired element\n +\t\treturn jQuery.inArray(\n +\t\t\t// If it receives a jQuery object, the first element is used\n +\t\t\telem.jquery ? elem[0] : elem, this );\n +\t},\n +\n +\tadd: function( selector, context ) {\n +\t\tvar set = typeof selector === "string" ?\n +\t\t\t\tjQuery( selector, context ) :\n +\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n +\t\t\tall = jQuery.merge( this.get(), set );\n +\n +\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n +\t\t\tall :\n +\t\t\tjQuery.unique( all ) );\n +\t},\n +\n +\tandSelf: function() {\n +\t\treturn this.add( this.prevObject );\n +\t}\n +});\n +\n +// A painfully simple check to see if an element is disconnected\n +// from a document (should be improved, where feasible).\n +function isDisconnected( node ) {\n +\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n +}\n +\n +jQuery.each({\n +\tparent: function( elem ) {\n +\t\tvar parent = elem.parentNode;\n +\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n +\t},\n +\tparents: function( elem ) {\n +\t\treturn jQuery.dir( elem, "parentNode" );\n +\t},\n +\tparentsUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "parentNode", until );\n +\t},\n +\tnext: function( elem ) {\n +\t\treturn jQuery.nth( elem, 2, "nextSibling" );\n +\t},\n +\tprev: function( elem ) {\n +\t\treturn jQuery.nth( elem, 2, "previousSibling" );\n +\t},\n +\tnextAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "nextSibling" );\n +\t},\n +\tprevAll: function( elem ) {\n +\t\treturn jQuery.dir( elem, "previousSibling" );\n +\t},\n +\tnextUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "nextSibling", until );\n +\t},\n +\tprevUntil: function( elem, i, until ) {\n +\t\treturn jQuery.dir( elem, "previousSibling", until );\n +\t},\n +\tsiblings: function( elem ) {\n +\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n +\t},\n +\tchildren: function( elem ) {\n +\t\treturn jQuery.sibling( elem.firstChild );\n +\t},\n +\tcontents: function( elem ) {\n +\t\treturn jQuery.nodeName( elem, "iframe" ) ?\n +\t\t\telem.contentDocument || elem.contentWindow.document :\n +\t\t\tjQuery.makeArray( elem.childNodes );\n +\t}\n +}, function( name, fn ) {\n +\tjQuery.fn[ name ] = function( until, selector ) {\n +\t\tvar ret = jQuery.map( this, fn, until );\n +\n +\t\tif ( !runtil.test( name ) ) {\n +\t\t\tselector = until;\n +\t\t}\n +\n +\t\tif ( selector && typeof selector === "string" ) {\n +\t\t\tret = jQuery.filter( selector, ret );\n +\t\t}\n +\n +\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n +\n +\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n +\t\t\tret = ret.reverse();\n +\t\t}\n +\n +\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(",") );\n +\t};\n +});\n +\n +jQuery.extend({\n +\tfilter: function( expr, elems, not ) {\n +\t\tif ( not ) {\n +\t\t\texpr = ":not(" + expr + ")";\n +\t\t}\n +\n +\t\treturn elems.length === 1 ?\n +\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n +\t\t\tjQuery.find.matches(expr, elems);\n +\t},\n +\n +\tdir: function( elem, dir, until ) {\n +\t\tvar matched = [],\n +\t\t\tcur = elem[ dir ];\n +\n +\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n +\t\t\tif ( cur.nodeType === 1 ) {\n +\t\t\t\tmatched.push( cur );\n +\t\t\t}\n +\t\t\tcur = cur[dir];\n +\t\t}\n +\t\treturn matched;\n +\t},\n +\n +\tnth: function( cur, result, dir, elem ) {\n +\t\tresult = result || 1;\n +\t\tvar num = 0;\n +\n +\t\tfor ( ; cur; cur = cur[dir] ) {\n +\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn cur;\n +\t},\n +\n +\tsibling: function( n, elem ) {\n +\t\tvar r = [];\n +\n +\t\tfor ( ; n; n = n.nextSibling ) {\n +\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n +\t\t\t\tr.push( n );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn r;\n +\t}\n +});\n +\n +// Implement the identical functionality for filter and not\n +function winnow( elements, qualifier, keep ) {\n +\n +\t// Can\'t pass null or undefined to indexOf in Firefox 4\n +\t// Set to 0 to skip string check\n +\tqualifier = qualifier || 0;\n +\n +\tif ( jQuery.isFunction( qualifier ) ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n +\t\t\treturn retVal === keep;\n +\t\t});\n +\n +\t} else if ( qualifier.nodeType ) {\n +\t\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\t\treturn ( elem === qualifier ) === keep;\n +\t\t});\n +\n +\t} else if ( typeof qualifier === "string" ) {\n +\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n +\t\t\treturn elem.nodeType === 1;\n +\t\t});\n +\n +\t\tif ( isSimple.test( qualifier ) ) {\n +\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n +\t\t} else {\n +\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n +\t\t}\n +\t}\n +\n +\treturn jQuery.grep(elements, function( elem, i ) {\n +\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n +\t});\n +}\n +\n +\n +\n +\n +function createSafeFragment( document ) {\n +\tvar list = nodeNames.split( "|" ),\n +\tsafeFrag = document.createDocumentFragment();\n +\n +\tif ( safeFrag.createElement ) {\n +\t\twhile ( list.length ) {\n +\t\t\tsafeFrag.createElement(\n +\t\t\t\tlist.pop()\n +\t\t\t);\n +\t\t}\n +\t}\n +\treturn safeFrag;\n +}\n +\n +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +\n +\t\t"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",\n +\trinlinejQuery = / jQuery\\d+="(?:\\d+|null)"/g,\n +\trleadingWhitespace = /^\\s+/,\n +\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n +\trtagName = /<([\\w:]+)/,\n +\trtbody = /<tbody/i,\n +\trhtml = /<|&#?\\w+;/,\n +\trnoInnerhtml = /<(?:script|style)/i,\n +\trnocache = /<(?:script|object|embed|option|style)/i,\n +\trnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\\\s/>]", "i"),\n +\t// checked="checked" or checked\n +\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n +\trscriptType = /\\/(java|ecma)script/i,\n +\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n +\twrapMap = {\n +\t\toption: [ 1, "<select multiple=\'multiple\'>", "</select>" ],\n +\t\tlegend: [ 1, "<fieldset>", "</fieldset>" ],\n +\t\tthead: [ 1, "<table>", "</table>" ],\n +\t\ttr: [ 2, "<table><tbody>", "</tbody></table>" ],\n +\t\ttd: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],\n +\t\tcol: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],\n +\t\tarea: [ 1, "<map>", "</map>" ],\n +\t\t_default: [ 0, "", "" ]\n +\t},\n +\tsafeFragment = createSafeFragment( document );\n +\n +wrapMap.optgroup = wrapMap.option;\n +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n +wrapMap.th = wrapMap.td;\n +\n +// IE can\'t serialize <link> and <script> tags normally\n +if ( !jQuery.support.htmlSerialize ) {\n +\twrapMap._default = [ 1, "div<div>", "</div>" ];\n +}\n +\n +jQuery.fn.extend({\n +\ttext: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\treturn value === undefined ?\n +\t\t\t\tjQuery.text( this ) :\n +\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\twrapAll: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\t// The elements to wrap the target around\n +\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n +\n +\t\t\tif ( this[0].parentNode ) {\n +\t\t\t\twrap.insertBefore( this[0] );\n +\t\t\t}\n +\n +\t\t\twrap.map(function() {\n +\t\t\t\tvar elem = this;\n +\n +\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n +\t\t\t\t\telem = elem.firstChild;\n +\t\t\t\t}\n +\n +\t\t\t\treturn elem;\n +\t\t\t}).append( this );\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\twrapInner: function( html ) {\n +\t\tif ( jQuery.isFunction( html ) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar self = jQuery( this ),\n +\t\t\t\tcontents = self.contents();\n +\n +\t\t\tif ( contents.length ) {\n +\t\t\t\tcontents.wrapAll( html );\n +\n +\t\t\t} else {\n +\t\t\t\tself.append( html );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\twrap: function( html ) {\n +\t\tvar isFunction = jQuery.isFunction( html );\n +\n +\t\treturn this.each(function(i) {\n +\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n +\t\t});\n +\t},\n +\n +\tunwrap: function() {\n +\t\treturn this.parent().each(function() {\n +\t\t\tif ( !jQuery.nodeName( this, "body" ) ) {\n +\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n +\t\t\t}\n +\t\t}).end();\n +\t},\n +\n +\tappend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 ) {\n +\t\t\t\tthis.appendChild( elem );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tprepend: function() {\n +\t\treturn this.domManip(arguments, true, function( elem ) {\n +\t\t\tif ( this.nodeType === 1 ) {\n +\t\t\t\tthis.insertBefore( elem, this.firstChild );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tbefore: function() {\n +\t\tif ( this[0] && this[0].parentNode ) {\n +\t\t\treturn this.domManip(arguments, false, function( elem ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this );\n +\t\t\t});\n +\t\t} else if ( arguments.length ) {\n +\t\t\tvar set = jQuery.clean( arguments );\n +\t\t\tset.push.apply( set, this.toArray() );\n +\t\t\treturn this.pushStack( set, "before", arguments );\n +\t\t}\n +\t},\n +\n +\tafter: function() {\n +\t\tif ( this[0] && this[0].parentNode ) {\n +\t\t\treturn this.domManip(arguments, false, function( elem ) {\n +\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n +\t\t\t});\n +\t\t} else if ( arguments.length ) {\n +\t\t\tvar set = this.pushStack( this, "after", arguments );\n +\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n +\t\t\treturn set;\n +\t\t}\n +\t},\n +\n +\t// keepData is for internal use only--do not document\n +\tremove: function( selector, keepData ) {\n +\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n +\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n +\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n +\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName("*") );\n +\t\t\t\t\tjQuery.cleanData( [ elem ] );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tempty: function() {\n +\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n +\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\tjQuery.cleanData( elem.getElementsByTagName("*") );\n +\t\t\t}\n +\n +\t\t\t// Remove any remaining nodes\n +\t\t\twhile ( elem.firstChild ) {\n +\t\t\t\telem.removeChild( elem.firstChild );\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tclone: function( dataAndEvents, deepDataAndEvents ) {\n +\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n +\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n +\n +\t\treturn this.map( function () {\n +\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n +\t\t});\n +\t},\n +\n +\thtml: function( value ) {\n +\t\treturn jQuery.access( this, function( value ) {\n +\t\t\tvar elem = this[0] || {},\n +\t\t\t\ti = 0,\n +\t\t\t\tl = this.length;\n +\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\treturn elem.nodeType === 1 ?\n +\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, "" ) :\n +\t\t\t\t\tnull;\n +\t\t\t}\n +\n +\n +\t\t\tif ( typeof value === "string" && !rnoInnerhtml.test( value ) &&\n +\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n +\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {\n +\n +\t\t\t\tvalue = value.replace( rxhtmlTag, "<$1></$2>" );\n +\n +\t\t\t\ttry {\n +\t\t\t\t\tfor (; i < l; i++ ) {\n +\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n +\t\t\t\t\t\telem = this[i] || {};\n +\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n +\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( "*" ) );\n +\t\t\t\t\t\t\telem.innerHTML = value;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = 0;\n +\n +\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t\tif ( elem ) {\n +\t\t\t\tthis.empty().append( value );\n +\t\t\t}\n +\t\t}, null, value, arguments.length );\n +\t},\n +\n +\treplaceWith: function( value ) {\n +\t\tif ( this[0] && this[0].parentNode ) {\n +\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n +\t\t\t// this can help fix replacing a parent with child elements\n +\t\t\tif ( jQuery.isFunction( value ) ) {\n +\t\t\t\treturn this.each(function(i) {\n +\t\t\t\t\tvar self = jQuery(this), old = self.html();\n +\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\tif ( typeof value !== "string" ) {\n +\t\t\t\tvalue = jQuery( value ).detach();\n +\t\t\t}\n +\n +\t\t\treturn this.each(function() {\n +\t\t\t\tvar next = this.nextSibling,\n +\t\t\t\t\tparent = this.parentNode;\n +\n +\t\t\t\tjQuery( this ).remove();\n +\n +\t\t\t\tif ( next ) {\n +\t\t\t\t\tjQuery(next).before( value );\n +\t\t\t\t} else {\n +\t\t\t\t\tjQuery(parent).append( value );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t} else {\n +\t\t\treturn this.length ?\n +\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :\n +\t\t\t\tthis;\n +\t\t}\n +\t},\n +\n +\tdetach: function( selector ) {\n +\t\treturn this.remove( selector, true );\n +\t},\n +\n +\tdomManip: function( args, table, callback ) {\n +\t\tvar results, first, fragment, parent,\n +\t\t\tvalue = args[0],\n +\t\t\tscripts = [];\n +\n +\t\t// We can\'t cloneNode fragments that contain checked, in WebKit\n +\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {\n +\t\t\treturn this.each(function() {\n +\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction(value) ) {\n +\t\t\treturn this.each(function(i) {\n +\t\t\t\tvar self = jQuery(this);\n +\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n +\t\t\t\tself.domManip( args, table, callback );\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this[0] ) {\n +\t\t\tparent = value && value.parentNode;\n +\n +\t\t\t// If we\'re in a fragment, just use that instead of building a new one\n +\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n +\t\t\t\tresults = { fragment: parent };\n +\n +\t\t\t} else {\n +\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n +\t\t\t}\n +\n +\t\t\tfragment = results.fragment;\n +\n +\t\t\tif ( fragment.childNodes.length === 1 ) {\n +\t\t\t\tfirst = fragment = fragment.firstChild;\n +\t\t\t} else {\n +\t\t\t\tfirst = fragment.firstChild;\n +\t\t\t}\n +\n +\t\t\tif ( first ) {\n +\t\t\t\ttable = table && jQuery.nodeName( first, "tr" );\n +\n +\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n +\t\t\t\t\tcallback.call(\n +\t\t\t\t\t\ttable ?\n +\t\t\t\t\t\t\troot(this[i], first) :\n +\t\t\t\t\t\t\tthis[i],\n +\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n +\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n +\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n +\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n +\t\t\t\t\t\t// in certain situations (Bug #8070).\n +\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n +\t\t\t\t\t\t// in place.\n +\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n +\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n +\t\t\t\t\t\t\tfragment\n +\t\t\t\t\t);\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( scripts.length ) {\n +\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n +\t\t\t\t\tif ( elem.src ) {\n +\t\t\t\t\t\tjQuery.ajax({\n +\t\t\t\t\t\t\ttype: "GET",\n +\t\t\t\t\t\t\tglobal: false,\n +\t\t\t\t\t\t\turl: elem.src,\n +\t\t\t\t\t\t\tasync: false,\n +\t\t\t\t\t\t\tdataType: "script"\n +\t\t\t\t\t\t});\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tif ( elem.parentNode ) {\n +\t\t\t\t\t\telem.parentNode.removeChild( elem );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\t}\n +});\n +\n +function root( elem, cur ) {\n +\treturn jQuery.nodeName(elem, "table") ?\n +\t\t(elem.getElementsByTagName("tbody")[0] ||\n +\t\telem.appendChild(elem.ownerDocument.createElement("tbody"))) :\n +\t\telem;\n +}\n +\n +function cloneCopyEvent( src, dest ) {\n +\n +\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n +\t\treturn;\n +\t}\n +\n +\tvar type, i, l,\n +\t\toldData = jQuery._data( src ),\n +\t\tcurData = jQuery._data( dest, oldData ),\n +\t\tevents = oldData.events;\n +\n +\tif ( events ) {\n +\t\tdelete curData.handle;\n +\t\tcurData.events = {};\n +\n +\t\tfor ( type in events ) {\n +\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n +\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// make the cloned public data object a copy from the original\n +\tif ( curData.data ) {\n +\t\tcurData.data = jQuery.extend( {}, curData.data );\n +\t}\n +}\n +\n +function cloneFixAttributes( src, dest ) {\n +\tvar nodeName;\n +\n +\t// We do not need to do anything for non-Elements\n +\tif ( dest.nodeType !== 1 ) {\n +\t\treturn;\n +\t}\n +\n +\t// clearAttributes removes the attributes, which we don\'t want,\n +\t// but also removes the attachEvent events, which we *do* want\n +\tif ( dest.clearAttributes ) {\n +\t\tdest.clearAttributes();\n +\t}\n +\n +\t// mergeAttributes, in contrast, only merges back on the\n +\t// original attributes, not the events\n +\tif ( dest.mergeAttributes ) {\n +\t\tdest.mergeAttributes( src );\n +\t}\n +\n +\tnodeName = dest.nodeName.toLowerCase();\n +\n +\t// IE6-8 fail to clone children inside object elements that use\n +\t// the proprietary classid attribute value (rather than the type\n +\t// attribute) to identify the type of content to display\n +\tif ( nodeName === "object" ) {\n +\t\tdest.outerHTML = src.outerHTML;\n +\n +\t} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {\n +\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n +\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n +\t\t// a checked appearance if the defaultChecked value isn\'t also set\n +\t\tif ( src.checked ) {\n +\t\t\tdest.defaultChecked = dest.checked = src.checked;\n +\t\t}\n +\n +\t\t// IE6-7 get confused and end up setting the value of a cloned\n +\t\t// checkbox/radio button to an empty string instead of "on"\n +\t\tif ( dest.value !== src.value ) {\n +\t\t\tdest.value = src.value;\n +\t\t}\n +\n +\t// IE6-8 fails to return the selected option to the default selected\n +\t// state when cloning options\n +\t} else if ( nodeName === "option" ) {\n +\t\tdest.selected = src.defaultSelected;\n +\n +\t// IE6-8 fails to set the defaultValue to the correct value when\n +\t// cloning other types of input fields\n +\t} else if ( nodeName === "input" || nodeName === "textarea" ) {\n +\t\tdest.defaultValue = src.defaultValue;\n +\n +\t// IE blanks contents when cloning scripts\n +\t} else if ( nodeName === "script" && dest.text !== src.text ) {\n +\t\tdest.text = src.text;\n +\t}\n +\n +\t// Event data gets referenced instead of copied if the expando\n +\t// gets copied too\n +\tdest.removeAttribute( jQuery.expando );\n +\n +\t// Clear flags for bubbling special change/submit events, they must\n +\t// be reattached when the newly cloned events are first activated\n +\tdest.removeAttribute( "_submit_attached" );\n +\tdest.removeAttribute( "_change_attached" );\n +}\n +\n +jQuery.buildFragment = function( args, nodes, scripts ) {\n +\tvar fragment, cacheable, cacheresults, doc,\n +\tfirst = args[ 0 ];\n +\n +\t// nodes may contain either an explicit document object,\n +\t// a jQuery collection or context object.\n +\t// If nodes[0] contains a valid object to assign to doc\n +\tif ( nodes && nodes[0] ) {\n +\t\tdoc = nodes[0].ownerDocument || nodes[0];\n +\t}\n +\n +\t// Ensure that an attr object doesn\'t incorrectly stand in as a document object\n +\t// Chrome and Firefox seem to allow this to occur and will throw exception\n +\t// Fixes #8950\n +\tif ( !doc.createDocumentFragment ) {\n +\t\tdoc = document;\n +\t}\n +\n +\t// Only cache "small" (1/2 KB) HTML strings that are associated with the main document\n +\t// Cloning options loses the selected state, so don\'t cache them\n +\t// IE 6 doesn\'t like it when you put <object> or <embed> elements in a fragment\n +\t// Also, WebKit does not clone \'checked\' attributes on cloneNode, so don\'t cache\n +\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n +\tif ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&\n +\t\tfirst.charAt(0) === "<" && !rnocache.test( first ) &&\n +\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n +\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n +\n +\t\tcacheable = true;\n +\n +\t\tcacheresults = jQuery.fragments[ first ];\n +\t\tif ( cacheresults && cacheresults !== 1 ) {\n +\t\t\tfragment = cacheresults;\n +\t\t}\n +\t}\n +\n +\tif ( !fragment ) {\n +\t\tfragment = doc.createDocumentFragment();\n +\t\tjQuery.clean( args, doc, fragment, scripts );\n +\t}\n +\n +\tif ( cacheable ) {\n +\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n +\t}\n +\n +\treturn { fragment: fragment, cacheable: cacheable };\n +};\n +\n +jQuery.fragments = {};\n +\n +jQuery.each({\n +\tappendTo: "append",\n +\tprependTo: "prepend",\n +\tinsertBefore: "before",\n +\tinsertAfter: "after",\n +\treplaceAll: "replaceWith"\n +}, function( name, original ) {\n +\tjQuery.fn[ name ] = function( selector ) {\n +\t\tvar ret = [],\n +\t\t\tinsert = jQuery( selector ),\n +\t\t\tparent = this.length === 1 && this[0].parentNode;\n +\n +\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n +\t\t\tinsert[ original ]( this[0] );\n +\t\t\treturn this;\n +\n +\t\t} else {\n +\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n +\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n +\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n +\t\t\t\tret = ret.concat( elems );\n +\t\t\t}\n +\n +\t\t\treturn this.pushStack( ret, name, insert.selector );\n +\t\t}\n +\t};\n +});\n +\n +function getAll( elem ) {\n +\tif ( typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\treturn elem.getElementsByTagName( "*" );\n +\n +\t} else if ( typeof elem.querySelectorAll !== "undefined" ) {\n +\t\treturn elem.querySelectorAll( "*" );\n +\n +\t} else {\n +\t\treturn [];\n +\t}\n +}\n +\n +// Used in clean, fixes the defaultChecked property\n +function fixDefaultChecked( elem ) {\n +\tif ( elem.type === "checkbox" || elem.type === "radio" ) {\n +\t\telem.defaultChecked = elem.checked;\n +\t}\n +}\n +// Finds all inputs and passes them to fixDefaultChecked\n +function findInputs( elem ) {\n +\tvar nodeName = ( elem.nodeName || "" ).toLowerCase();\n +\tif ( nodeName === "input" ) {\n +\t\tfixDefaultChecked( elem );\n +\t// Skip scripts, get other children\n +\t} else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {\n +\t\tjQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );\n +\t}\n +}\n +\n +// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\n +function shimCloneNode( elem ) {\n +\tvar div = document.createElement( "div" );\n +\tsafeFragment.appendChild( div );\n +\n +\tdiv.innerHTML = elem.outerHTML;\n +\treturn div.firstChild;\n +}\n +\n +jQuery.extend({\n +\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n +\t\tvar srcElements,\n +\t\t\tdestElements,\n +\t\t\ti,\n +\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n +\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ?\n +\t\t\t\telem.cloneNode( true ) :\n +\t\t\t\tshimCloneNode( elem );\n +\n +\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n +\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n +\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n +\t\t\t// Calling detachEvent on the clone will also remove the events\n +\t\t\t// from the original. In order to get around this, we use some\n +\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n +\t\t\t// guys for this hotness.\n +\n +\t\t\tcloneFixAttributes( elem, clone );\n +\n +\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n +\t\t\tsrcElements = getAll( elem );\n +\t\t\tdestElements = getAll( clone );\n +\n +\t\t\t// Weird iteration because IE will replace the length property\n +\t\t\t// with an element if you are cloning the body and one of the\n +\t\t\t// elements on the page has a name or id of "length"\n +\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n +\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n +\t\t\t\tif ( destElements[i] ) {\n +\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Copy the events from the original to the clone\n +\t\tif ( dataAndEvents ) {\n +\t\t\tcloneCopyEvent( elem, clone );\n +\n +\t\t\tif ( deepDataAndEvents ) {\n +\t\t\t\tsrcElements = getAll( elem );\n +\t\t\t\tdestElements = getAll( clone );\n +\n +\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n +\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tsrcElements = destElements = null;\n +\n +\t\t// Return the cloned set\n +\t\treturn clone;\n +\t},\n +\n +\tclean: function( elems, context, fragment, scripts ) {\n +\t\tvar checkScriptType, script, j,\n +\t\t\t\tret = [];\n +\n +\t\tcontext = context || document;\n +\n +\t\t// !context.createElement fails in IE with an error but returns typeof \'object\'\n +\t\tif ( typeof context.createElement === "undefined" ) {\n +\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n +\t\t}\n +\n +\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n +\t\t\tif ( typeof elem === "number" ) {\n +\t\t\t\telem += "";\n +\t\t\t}\n +\n +\t\t\tif ( !elem ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\t// Convert html string into DOM nodes\n +\t\t\tif ( typeof elem === "string" ) {\n +\t\t\t\tif ( !rhtml.test( elem ) ) {\n +\t\t\t\t\telem = context.createTextNode( elem );\n +\t\t\t\t} else {\n +\t\t\t\t\t// Fix "XHTML"-style tags in all browsers\n +\t\t\t\t\telem = elem.replace(rxhtmlTag, "<$1></$2>");\n +\n +\t\t\t\t\t// Trim whitespace, otherwise indexOf won\'t work as expected\n +\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),\n +\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n +\t\t\t\t\t\tdepth = wrap[0],\n +\t\t\t\t\t\tdiv = context.createElement("div"),\n +\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n +\t\t\t\t\t\tremove;\n +\n +\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n +\t\t\t\t\tif ( context === document ) {\n +\t\t\t\t\t\t// Use the fragment we\'ve already created for this document\n +\t\t\t\t\t\tsafeFragment.appendChild( div );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\t// Use a fragment created with the owner document\n +\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n +\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n +\n +\t\t\t\t\t// Move to the right depth\n +\t\t\t\t\twhile ( depth-- ) {\n +\t\t\t\t\t\tdiv = div.lastChild;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Remove IE\'s autoinserted <tbody> from table fragments\n +\t\t\t\t\tif ( !jQuery.support.tbody ) {\n +\n +\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n +\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n +\t\t\t\t\t\t\ttbody = tag === "table" && !hasBody ?\n +\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n +\n +\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n +\t\t\t\t\t\t\t\twrap[1] === "<table>" && !hasBody ?\n +\t\t\t\t\t\t\t\t\tdiv.childNodes :\n +\t\t\t\t\t\t\t\t\t[];\n +\n +\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n +\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {\n +\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n +\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n +\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\telem = div.childNodes;\n +\n +\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n +\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n +\t\t\t\t\tif ( div ) {\n +\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n +\n +\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n +\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n +\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n +\n +\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n +\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Resets defaultChecked for any radios and checkboxes\n +\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n +\t\t\tvar len;\n +\t\t\tif ( !jQuery.support.appendChecked ) {\n +\t\t\t\tif ( elem[0] && typeof (len = elem.length) === "number" ) {\n +\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n +\t\t\t\t\t\tfindInputs( elem[j] );\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\tfindInputs( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( elem.nodeType ) {\n +\t\t\t\tret.push( elem );\n +\t\t\t} else {\n +\t\t\t\tret = jQuery.merge( ret, elem );\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( fragment ) {\n +\t\t\tcheckScriptType = function( elem ) {\n +\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n +\t\t\t};\n +\t\t\tfor ( i = 0; ret[i]; i++ ) {\n +\t\t\t\tscript = ret[i];\n +\t\t\t\tif ( scripts && jQuery.nodeName( script, "script" ) && (!script.type || rscriptType.test( script.type )) ) {\n +\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tif ( script.nodeType === 1 ) {\n +\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( "script" ), checkScriptType );\n +\n +\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n +\t\t\t\t\t}\n +\t\t\t\t\tfragment.appendChild( script );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret;\n +\t},\n +\n +\tcleanData: function( elems ) {\n +\t\tvar data, id,\n +\t\t\tcache = jQuery.cache,\n +\t\t\tspecial = jQuery.event.special,\n +\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n +\n +\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n +\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tid = elem[ jQuery.expando ];\n +\n +\t\t\tif ( id ) {\n +\t\t\t\tdata = cache[ id ];\n +\n +\t\t\t\tif ( data && data.events ) {\n +\t\t\t\t\tfor ( var type in data.events ) {\n +\t\t\t\t\t\tif ( special[ type ] ) {\n +\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n +\n +\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove\'s overhead\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n +\t\t\t\t\tif ( data.handle ) {\n +\t\t\t\t\t\tdata.handle.elem = null;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\tif ( deleteExpando ) {\n +\t\t\t\t\tdelete elem[ jQuery.expando ];\n +\n +\t\t\t\t} else if ( elem.removeAttribute ) {\n +\t\t\t\t\telem.removeAttribute( jQuery.expando );\n +\t\t\t\t}\n +\n +\t\t\t\tdelete cache[ id ];\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +\n +\n +\n +var ralpha = /alpha\\([^)]*\\)/i,\n +\tropacity = /opacity=([^)]*)/,\n +\t// fixed for IE9, see #8346\n +\trupper = /([A-Z]|^ms)/g,\n +\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n +\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n +\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n +\trmargin = /^margin/,\n +\n +\tcssShow = { position: "absolute", visibility: "hidden", display: "block" },\n +\n +\t// order is important!\n +\tcssExpand = [ "Top", "Right", "Bottom", "Left" ],\n +\n +\tcurCSS,\n +\n +\tgetComputedStyle,\n +\tcurrentStyle;\n +\n +jQuery.fn.css = function( name, value ) {\n +\treturn jQuery.access( this, function( elem, name, value ) {\n +\t\treturn value !== undefined ?\n +\t\t\tjQuery.style( elem, name, value ) :\n +\t\t\tjQuery.css( elem, name );\n +\t}, name, value, arguments.length > 1 );\n +};\n +\n +jQuery.extend({\n +\t// Add in style property hooks for overriding the default\n +\t// behavior of getting and setting a style property\n +\tcssHooks: {\n +\t\topacity: {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\tif ( computed ) {\n +\t\t\t\t\t// We should always get a number back from opacity\n +\t\t\t\t\tvar ret = curCSS( elem, "opacity" );\n +\t\t\t\t\treturn ret === "" ? "1" : ret;\n +\n +\t\t\t\t} else {\n +\t\t\t\t\treturn elem.style.opacity;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// Exclude the following css properties to add px\n +\tcssNumber: {\n +\t\t"fillOpacity": true,\n +\t\t"fontWeight": true,\n +\t\t"lineHeight": true,\n +\t\t"opacity": true,\n +\t\t"orphans": true,\n +\t\t"widows": true,\n +\t\t"zIndex": true,\n +\t\t"zoom": true\n +\t},\n +\n +\t// Add in properties whose names you wish to fix before\n +\t// setting or getting the value\n +\tcssProps: {\n +\t\t// normalize float css property\n +\t\t"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"\n +\t},\n +\n +\t// Get and set the style property on a DOM Node\n +\tstyle: function( elem, name, value, extra ) {\n +\t\t// Don\'t set styles on text and comment nodes\n +\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tvar ret, type, origName = jQuery.camelCase( name ),\n +\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n +\n +\t\tname = jQuery.cssProps[ origName ] || origName;\n +\n +\t\t// Check if we\'re setting a value\n +\t\tif ( value !== undefined ) {\n +\t\t\ttype = typeof value;\n +\n +\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n +\t\t\tif ( type === "string" && (ret = rrelNum.exec( value )) ) {\n +\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n +\t\t\t\t// Fixes bug #9237\n +\t\t\t\ttype = "number";\n +\t\t\t}\n +\n +\t\t\t// Make sure that NaN and null values aren\'t set. See: #7116\n +\t\t\tif ( value == null || type === "number" && isNaN( value ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// If a number was passed in, add \'px\' to the (except for certain CSS properties)\n +\t\t\tif ( type === "number" && !jQuery.cssNumber[ origName ] ) {\n +\t\t\t\tvalue += "px";\n +\t\t\t}\n +\n +\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n +\t\t\tif ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n +\t\t\t\t// Wrapped to prevent IE from throwing errors when \'invalid\' values are provided\n +\t\t\t\t// Fixes bug #5509\n +\t\t\t\ttry {\n +\t\t\t\t\tstyle[ name ] = value;\n +\t\t\t\t} catch(e) {}\n +\t\t\t}\n +\n +\t\t} else {\n +\t\t\t// If a hook was provided get the non-computed value from there\n +\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n +\t\t\t\treturn ret;\n +\t\t\t}\n +\n +\t\t\t// Otherwise just get the value from the style object\n +\t\t\treturn style[ name ];\n +\t\t}\n +\t},\n +\n +\tcss: function( elem, name, extra ) {\n +\t\tvar ret, hooks;\n +\n +\t\t// Make sure that we\'re working with the right name\n +\t\tname = jQuery.camelCase( name );\n +\t\thooks = jQuery.cssHooks[ name ];\n +\t\tname = jQuery.cssProps[ name ] || name;\n +\n +\t\t// cssFloat needs a special treatment\n +\t\tif ( name === "cssFloat" ) {\n +\t\t\tname = "float";\n +\t\t}\n +\n +\t\t// If a hook was provided get the computed value from there\n +\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n +\t\t\treturn ret;\n +\n +\t\t// Otherwise, if a way to get the computed value exists, use that\n +\t\t} else if ( curCSS ) {\n +\t\t\treturn curCSS( elem, name );\n +\t\t}\n +\t},\n +\n +\t// A method for quickly swapping in/out CSS properties to get correct calculations\n +\tswap: function( elem, options, callback ) {\n +\t\tvar old = {},\n +\t\t\tret, name;\n +\n +\t\t// Remember the old values, and insert the new ones\n +\t\tfor ( name in options ) {\n +\t\t\told[ name ] = elem.style[ name ];\n +\t\t\telem.style[ name ] = options[ name ];\n +\t\t}\n +\n +\t\tret = callback.call( elem );\n +\n +\t\t// Revert the old values\n +\t\tfor ( name in options ) {\n +\t\t\telem.style[ name ] = old[ name ];\n +\t\t}\n +\n +\t\treturn ret;\n +\t}\n +});\n +\n +// DEPRECATED in 1.3, Use jQuery.css() instead\n +jQuery.curCSS = jQuery.css;\n +\n +if ( document.defaultView && document.defaultView.getComputedStyle ) {\n +\tgetComputedStyle = function( elem, name ) {\n +\t\tvar ret, defaultView, computedStyle, width,\n +\t\t\tstyle = elem.style;\n +\n +\t\tname = name.replace( rupper, "-$1" ).toLowerCase();\n +\n +\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n +\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n +\n +\t\t\tret = computedStyle.getPropertyValue( name );\n +\t\t\tif ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n +\t\t\t\tret = jQuery.style( elem, name );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// A tribute to the "awesome hack by Dean Edwards"\n +\t\t// WebKit uses "computed value (percentage if specified)" instead of "used value" for margins\n +\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n +\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n +\t\t\twidth = style.width;\n +\t\t\tstyle.width = ret;\n +\t\t\tret = computedStyle.width;\n +\t\t\tstyle.width = width;\n +\t\t}\n +\n +\t\treturn ret;\n +\t};\n +}\n +\n +if ( document.documentElement.currentStyle ) {\n +\tcurrentStyle = function( elem, name ) {\n +\t\tvar left, rsLeft, uncomputed,\n +\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n +\t\t\tstyle = elem.style;\n +\n +\t\t// Avoid setting ret to empty string here\n +\t\t// so we don\'t default to auto\n +\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n +\t\t\tret = uncomputed;\n +\t\t}\n +\n +\t\t// From the awesome hack by Dean Edwards\n +\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n +\n +\t\t// If we\'re not dealing with a regular pixel number\n +\t\t// but a number that has a weird ending, we need to convert it to pixels\n +\t\tif ( rnumnonpx.test( ret ) ) {\n +\n +\t\t\t// Remember the original values\n +\t\t\tleft = style.left;\n +\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n +\n +\t\t\t// Put in the new values to get a computed value out\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n +\t\t\t}\n +\t\t\tstyle.left = name === "fontSize" ? "1em" : ret;\n +\t\t\tret = style.pixelLeft + "px";\n +\n +\t\t\t// Revert the changed values\n +\t\t\tstyle.left = left;\n +\t\t\tif ( rsLeft ) {\n +\t\t\t\telem.runtimeStyle.left = rsLeft;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn ret === "" ? "auto" : ret;\n +\t};\n +}\n +\n +curCSS = getComputedStyle || currentStyle;\n +\n +function getWidthOrHeight( elem, name, extra ) {\n +\n +\t// Start with offset property\n +\tvar val = name === "width" ? elem.offsetWidth : elem.offsetHeight,\n +\t\ti = name === "width" ? 1 : 0,\n +\t\tlen = 4;\n +\n +\tif ( val > 0 ) {\n +\t\tif ( extra !== "border" ) {\n +\t\t\tfor ( ; i < len; i += 2 ) {\n +\t\t\t\tif ( !extra ) {\n +\t\t\t\t\tval -= parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;\n +\t\t\t\t}\n +\t\t\t\tif ( extra === "margin" ) {\n +\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n +\t\t\t\t} else {\n +\t\t\t\t\tval -= parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn val + "px";\n +\t}\n +\n +\t// Fall back to computed then uncomputed css if necessary\n +\tval = curCSS( elem, name );\n +\tif ( val < 0 || val == null ) {\n +\t\tval = elem.style[ name ];\n +\t}\n +\n +\t// Computed unit is not pixels. Stop here and return.\n +\tif ( rnumnonpx.test(val) ) {\n +\t\treturn val;\n +\t}\n +\n +\t// Normalize "", auto, and prepare for extra\n +\tval = parseFloat( val ) || 0;\n +\n +\t// Add padding, border, margin\n +\tif ( extra ) {\n +\t\tfor ( ; i < len; i += 2 ) {\n +\t\t\tval += parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;\n +\t\t\tif ( extra !== "padding" ) {\n +\t\t\t\tval += parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;\n +\t\t\t}\n +\t\t\tif ( extra === "margin" ) {\n +\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn val + "px";\n +}\n +\n +jQuery.each([ "height", "width" ], function( i, name ) {\n +\tjQuery.cssHooks[ name ] = {\n +\t\tget: function( elem, computed, extra ) {\n +\t\t\tif ( computed ) {\n +\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n +\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t} else {\n +\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n +\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\tset: function( elem, value ) {\n +\t\t\treturn rnum.test( value ) ?\n +\t\t\t\tvalue + "px" :\n +\t\t\t\tvalue;\n +\t\t}\n +\t};\n +});\n +\n +if ( !jQuery.support.opacity ) {\n +\tjQuery.cssHooks.opacity = {\n +\t\tget: function( elem, computed ) {\n +\t\t\t// IE uses filters for opacity\n +\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?\n +\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + "" :\n +\t\t\t\tcomputed ? "1" : "";\n +\t\t},\n +\n +\t\tset: function( elem, value ) {\n +\t\t\tvar style = elem.style,\n +\t\t\t\tcurrentStyle = elem.currentStyle,\n +\t\t\t\topacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",\n +\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || "";\n +\n +\t\t\t// IE has trouble with opacity if it does not have layout\n +\t\t\t// Force it by setting the zoom level\n +\t\t\tstyle.zoom = 1;\n +\n +\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n +\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {\n +\n +\t\t\t\t// Setting style.filter to null, "" & " " still leave "filter:" in the cssText\n +\t\t\t\t// if "filter:" is present at all, clearType is disabled, we want to avoid this\n +\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n +\t\t\t\tstyle.removeAttribute( "filter" );\n +\n +\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n +\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// otherwise, set new filter values\n +\t\t\tstyle.filter = ralpha.test( filter ) ?\n +\t\t\t\tfilter.replace( ralpha, opacity ) :\n +\t\t\t\tfilter + " " + opacity;\n +\t\t}\n +\t};\n +}\n +\n +jQuery(function() {\n +\t// This hook cannot be added until DOM ready because the support test\n +\t// for it is not run until after DOM ready\n +\tif ( !jQuery.support.reliableMarginRight ) {\n +\t\tjQuery.cssHooks.marginRight = {\n +\t\t\tget: function( elem, computed ) {\n +\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n +\t\t\t\t// Work around by temporarily setting element display to inline-block\n +\t\t\t\treturn jQuery.swap( elem, { "display": "inline-block" }, function() {\n +\t\t\t\t\tif ( computed ) {\n +\t\t\t\t\t\treturn curCSS( elem, "margin-right" );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\treturn elem.style.marginRight;\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t};\n +\t}\n +});\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.hidden = function( elem ) {\n +\t\tvar width = elem.offsetWidth,\n +\t\t\theight = elem.offsetHeight;\n +\n +\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");\n +\t};\n +\n +\tjQuery.expr.filters.visible = function( elem ) {\n +\t\treturn !jQuery.expr.filters.hidden( elem );\n +\t};\n +}\n +\n +// These hooks are used by animate to expand properties\n +jQuery.each({\n +\tmargin: "",\n +\tpadding: "",\n +\tborder: "Width"\n +}, function( prefix, suffix ) {\n +\n +\tjQuery.cssHooks[ prefix + suffix ] = {\n +\t\texpand: function( value ) {\n +\t\t\tvar i,\n +\n +\t\t\t\t// assumes a single number if not a string\n +\t\t\t\tparts = typeof value === "string" ? value.split(" ") : [ value ],\n +\t\t\t\texpanded = {};\n +\n +\t\t\tfor ( i = 0; i < 4; i++ ) {\n +\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n +\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n +\t\t\t}\n +\n +\t\t\treturn expanded;\n +\t\t}\n +\t};\n +});\n +\n +\n +\n +\n +var r20 = /%20/g,\n +\trbracket = /\\[\\]$/,\n +\trCRLF = /\\r?\\n/g,\n +\trhash = /#.*$/,\n +\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n +\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n +\t// #7653, #8125, #8152: local protocol detection\n +\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n +\trnoContent = /^(?:GET|HEAD)$/,\n +\trprotocol = /^\\/\\//,\n +\trquery = /\\?/,\n +\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n +\trselectTextarea = /^(?:select|textarea)/i,\n +\trspacesAjax = /\\s+/,\n +\trts = /([?&])_=[^&]*/,\n +\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(? + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +::(\\d+))?)?/,\n +\n +\t// Keep a copy of the old load method\n +\t_load = jQuery.fn.load,\n +\n +\t/* Prefilters\n +\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n +\t * 2) These are called:\n +\t * - BEFORE asking for a transport\n +\t * - AFTER param serialization (s.data is a string if s.processData is true)\n +\t * 3) key is the dataType\n +\t * 4) the catchall symbol "*" can be used\n +\t * 5) execution will start with transport dataType and THEN continue down to "*" if needed\n +\t */\n +\tprefilters = {},\n +\n +\t/* Transports bindings\n +\t * 1) key is the dataType\n +\t * 2) the catchall symbol "*" can be used\n +\t * 3) selection will start with transport dataType and THEN go to "*" if needed\n +\t */\n +\ttransports = {},\n +\n +\t// Document location\n +\tajaxLocation,\n +\n +\t// Document location segments\n +\tajaxLocParts,\n +\n +\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n +\tallTypes = ["*/"] + ["*"];\n +\n +// #8138, IE may throw an exception when accessing\n +// a field from window.location if document.domain has been set\n +try {\n +\tajaxLocation = location.href;\n +} catch( e ) {\n +\t// Use the href attribute of an A element\n +\t// since IE will modify it given document.location\n +\tajaxLocation = document.createElement( "a" );\n +\tajaxLocation.href = "";\n +\tajaxLocation = ajaxLocation.href;\n +}\n +\n +// Segment location into parts\n +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n +\n +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n +function addToPrefiltersOrTransports( structure ) {\n +\n +\t// dataTypeExpression is optional and defaults to "*"\n +\treturn function( dataTypeExpression, func ) {\n +\n +\t\tif ( typeof dataTypeExpression !== "string" ) {\n +\t\t\tfunc = dataTypeExpression;\n +\t\t\tdataTypeExpression = "*";\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction( func ) ) {\n +\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n +\t\t\t\ti = 0,\n +\t\t\t\tlength = dataTypes.length,\n +\t\t\t\tdataType,\n +\t\t\t\tlist,\n +\t\t\t\tplaceBefore;\n +\n +\t\t\t// For each dataType in the dataTypeExpression\n +\t\t\tfor ( ; i < length; i++ ) {\n +\t\t\t\tdataType = dataTypes[ i ];\n +\t\t\t\t// We control if we\'re asked to add before\n +\t\t\t\t// any existing element\n +\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n +\t\t\t\tif ( placeBefore ) {\n +\t\t\t\t\tdataType = dataType.substr( 1 ) || "*";\n +\t\t\t\t}\n +\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n +\t\t\t\t// then we add to the structure accordingly\n +\t\t\t\tlist[ placeBefore ? "unshift" : "push" ]( func );\n +\t\t\t}\n +\t\t}\n +\t};\n +}\n +\n +// Base inspection function for prefilters and transports\n +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n +\t\tdataType /* internal */, inspected /* internal */ ) {\n +\n +\tdataType = dataType || options.dataTypes[ 0 ];\n +\tinspected = inspected || {};\n +\n +\tinspected[ dataType ] = true;\n +\n +\tvar list = structure[ dataType ],\n +\t\ti = 0,\n +\t\tlength = list ? list.length : 0,\n +\t\texecuteOnly = ( structure === prefilters ),\n +\t\tselection;\n +\n +\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n +\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n +\t\t// If we got redirected to another dataType\n +\t\t// we try there if executing only and not done already\n +\t\tif ( typeof selection === "string" ) {\n +\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n +\t\t\t\tselection = undefined;\n +\t\t\t} else {\n +\t\t\t\toptions.dataTypes.unshift( selection );\n +\t\t\t\tselection = inspectPrefiltersOrTransports(\n +\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n +\t\t\t}\n +\t\t}\n +\t}\n +\t// If we\'re only executing or nothing was selected\n +\t// we try the catchall dataType if not done already\n +\tif ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {\n +\t\tselection = inspectPrefiltersOrTransports(\n +\t\t\t\tstructure, options, originalOptions, jqXHR, "*", inspected );\n +\t}\n +\t// unnecessary when only executing (prefilters)\n +\t// but it\'ll be ignored by the caller in that case\n +\treturn selection;\n +}\n +\n +// A special extend for ajax options\n +// that takes "flat" options (not to be deep extended)\n +// Fixes #9887\n +function ajaxExtend( target, src ) {\n +\tvar key, deep,\n +\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n +\tfor ( key in src ) {\n +\t\tif ( src[ key ] !== undefined ) {\n +\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n +\t\t}\n +\t}\n +\tif ( deep ) {\n +\t\tjQuery.extend( true, target, deep );\n +\t}\n +}\n +\n +jQuery.fn.extend({\n +\tload: function( url, params, callback ) {\n +\t\tif ( typeof url !== "string" && _load ) {\n +\t\t\treturn _load.apply( this, arguments );\n +\n +\t\t// Don\'t do a request if no elements are being requested\n +\t\t} else if ( !this.length ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tvar off = url.indexOf( " " );\n +\t\tif ( off >= 0 ) {\n +\t\t\tvar selector = url.slice( off, url.length );\n +\t\t\turl = url.slice( 0, off );\n +\t\t}\n +\n +\t\t// Default to a GET request\n +\t\tvar type = "GET";\n +\n +\t\t// If the second parameter was provided\n +\t\tif ( params ) {\n +\t\t\t// If it\'s a function\n +\t\t\tif ( jQuery.isFunction( params ) ) {\n +\t\t\t\t// We assume that it\'s the callback\n +\t\t\t\tcallback = params;\n +\t\t\t\tparams = undefined;\n +\n +\t\t\t// Otherwise, build a param string\n +\t\t\t} else if ( typeof params === "object" ) {\n +\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n +\t\t\t\ttype = "POST";\n +\t\t\t}\n +\t\t}\n +\n +\t\tvar self = this;\n +\n +\t\t// Request the remote document\n +\t\tjQuery.ajax({\n +\t\t\turl: url,\n +\t\t\ttype: type,\n +\t\t\tdataType: "html",\n +\t\t\tdata: params,\n +\t\t\t// Complete callback (responseText is used internally)\n +\t\t\tcomplete: function( jqXHR, status, responseText ) {\n +\t\t\t\t// Store the response as specified by the jqXHR object\n +\t\t\t\tresponseText = jqXHR.responseText;\n +\t\t\t\t// If successful, inject the HTML into all the matched elements\n +\t\t\t\tif ( jqXHR.isResolved() ) {\n +\t\t\t\t\t// #4825: Get the actual response in case\n +\t\t\t\t\t// a dataFilter is present in ajaxSettings\n +\t\t\t\t\tjqXHR.done(function( r ) {\n +\t\t\t\t\t\tresponseText = r;\n +\t\t\t\t\t});\n +\t\t\t\t\t// See if a selector was specified\n +\t\t\t\t\tself.html( selector ?\n +\t\t\t\t\t\t// Create a dummy div to hold the results\n +\t\t\t\t\t\tjQuery("<div>")\n +\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n +\t\t\t\t\t\t\t// to avoid any \'Permission Denied\' errors in IE\n +\t\t\t\t\t\t\t.append(responseText.replace(rscript, ""))\n +\n +\t\t\t\t\t\t\t// Locate the specified elements\n +\t\t\t\t\t\t\t.find(selector) :\n +\n +\t\t\t\t\t\t// If not, just inject the full result\n +\t\t\t\t\t\tresponseText );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( callback ) {\n +\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\n +\t\treturn this;\n +\t},\n +\n +\tserialize: function() {\n +\t\treturn jQuery.param( this.serializeArray() );\n +\t},\n +\n +\tserializeArray: function() {\n +\t\treturn this.map(function(){\n +\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n +\t\t})\n +\t\t.filter(function(){\n +\t\t\treturn this.name && !this.disabled &&\n +\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n +\t\t\t\t\trinput.test( this.type ) );\n +\t\t})\n +\t\t.map(function( i, elem ){\n +\t\t\tvar val = jQuery( this ).val();\n +\n +\t\t\treturn val == null ?\n +\t\t\t\tnull :\n +\t\t\t\tjQuery.isArray( val ) ?\n +\t\t\t\t\tjQuery.map( val, function( val, i ){\n +\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t\t\t\t}) :\n +\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n +\t\t}).get();\n +\t}\n +});\n +\n +// Attach a bunch of functions for handling common AJAX events\n +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){\n +\tjQuery.fn[ o ] = function( f ){\n +\t\treturn this.on( o, f );\n +\t};\n +});\n +\n +jQuery.each( [ "get", "post" ], function( i, method ) {\n +\tjQuery[ method ] = function( url, data, callback, type ) {\n +\t\t// shift arguments if data argument was omitted\n +\t\tif ( jQuery.isFunction( data ) ) {\n +\t\t\ttype = type || callback;\n +\t\t\tcallback = data;\n +\t\t\tdata = undefined;\n +\t\t}\n +\n +\t\treturn jQuery.ajax({\n +\t\t\ttype: method,\n +\t\t\turl: url,\n +\t\t\tdata: data,\n +\t\t\tsuccess: callback,\n +\t\t\tdataType: type\n +\t\t});\n +\t};\n +});\n +\n +jQuery.extend({\n +\n +\tgetScript: function( url, callback ) {\n +\t\treturn jQuery.get( url, undefined, callback, "script" );\n +\t},\n +\n +\tgetJSON: function( url, data, callback ) {\n +\t\treturn jQuery.get( url, data, callback, "json" );\n +\t},\n +\n +\t// Creates a full fledged settings object into target\n +\t// with both ajaxSettings and settings fields.\n +\t// If target is omitted, writes into ajaxSettings.\n +\tajaxSetup: function( target, settings ) {\n +\t\tif ( settings ) {\n +\t\t\t// Building a settings object\n +\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n +\t\t} else {\n +\t\t\t// Extending ajaxSettings\n +\t\t\tsettings = target;\n +\t\t\ttarget = jQuery.ajaxSettings;\n +\t\t}\n +\t\tajaxExtend( target, settings );\n +\t\treturn target;\n +\t},\n +\n +\tajaxSettings: {\n +\t\turl: ajaxLocation,\n +\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n +\t\tglobal: true,\n +\t\ttype: "GET",\n +\t\tcontentType: "application/x-www-form-urlencoded; charset=UTF-8",\n +\t\tprocessData: true,\n +\t\tasync: true,\n +\t\t/*\n +\t\ttimeout: 0,\n +\t\tdata: null,\n +\t\tdataType: null,\n +\t\tusername: null,\n +\t\tpassword: null,\n +\t\tcache: null,\n +\t\ttraditional: false,\n +\t\theaders: {},\n +\t\t*/\n +\n +\t\taccepts: {\n +\t\t\txml: "application/xml, text/xml",\n +\t\t\thtml: "text/html",\n +\t\t\ttext: "text/plain",\n +\t\t\tjson: "application/json, text/javascript",\n +\t\t\t"*": allTypes\n +\t\t},\n +\n +\t\tcontents: {\n +\t\t\txml: /xml/,\n +\t\t\thtml: /html/,\n +\t\t\tjson: /json/\n +\t\t},\n +\n +\t\tresponseFields: {\n +\t\t\txml: "responseXML",\n +\t\t\ttext: "responseText"\n +\t\t},\n +\n +\t\t// List of data converters\n +\t\t// 1) key format is "source_type destination_type" (a single space in-between)\n +\t\t// 2) the catchall symbol "*" can be used for source_type\n +\t\tconverters: {\n +\n +\t\t\t// Convert anything to text\n +\t\t\t"* text": window.String,\n +\n +\t\t\t// Text to html (true = no transformation)\n +\t\t\t"text html": true,\n +\n +\t\t\t// Evaluate text as a json expression\n +\t\t\t"text json": jQuery.parseJSON,\n +\n +\t\t\t// Parse text as xml\n +\t\t\t"text xml": jQuery.parseXML\n +\t\t},\n +\n +\t\t// For options that shouldn\'t be deep extended:\n +\t\t// you can add your own custom options here if\n +\t\t// and when you create one that shouldn\'t be\n +\t\t// deep extended (see ajaxExtend)\n +\t\tflatOptions: {\n +\t\t\tcontext: true,\n +\t\t\turl: true\n +\t\t}\n +\t},\n +\n +\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n +\tajaxTransport: addToPrefiltersOrTransports( transports ),\n +\n +\t// Main method\n +\tajax: function( url, options ) {\n +\n +\t\t// If url is an object, simulate pre-1.5 signature\n +\t\tif ( typeof url === "object" ) {\n +\t\t\toptions = url;\n +\t\t\turl = undefined;\n +\t\t}\n +\n +\t\t// Force options to be an object\n +\t\toptions = options || {};\n +\n +\t\tvar // Create the final options object\n +\t\t\ts = jQuery.ajaxSetup( {}, options ),\n +\t\t\t// Callbacks context\n +\t\t\tcallbackContext = s.context || s,\n +\t\t\t// Context for global events\n +\t\t\t// It\'s the callbackContext if one was provided in the options\n +\t\t\t// and if it\'s a DOM node or a jQuery collection\n +\t\t\tglobalEventContext = callbackContext !== s &&\n +\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n +\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n +\t\t\t// Deferreds\n +\t\t\tdeferred = jQuery.Deferred(),\n +\t\t\tcompleteDeferred = jQuery.Callbacks( "once memory" ),\n +\t\t\t// Status-dependent callbacks\n +\t\t\tstatusCode = s.statusCode || {},\n +\t\t\t// ifModified key\n +\t\t\tifModifiedKey,\n +\t\t\t// Headers (they are sent all at once)\n +\t\t\trequestHeaders = {},\n +\t\t\trequestHeadersNames = {},\n +\t\t\t// Response headers\n +\t\t\tresponseHeadersString,\n +\t\t\tresponseHeaders,\n +\t\t\t// transport\n +\t\t\ttransport,\n +\t\t\t// timeout handle\n +\t\t\ttimeoutTimer,\n +\t\t\t// Cross-domain detection vars\n +\t\t\tparts,\n +\t\t\t// The jqXHR state\n +\t\t\tstate = 0,\n +\t\t\t// To know if global events are to be dispatched\n +\t\t\tfireGlobals,\n +\t\t\t// Loop variable\n +\t\t\ti,\n +\t\t\t// Fake xhr\n +\t\t\tjqXHR = {\n +\n +\t\t\t\treadyState: 0,\n +\n +\t\t\t\t// Caches the header\n +\t\t\t\tsetRequestHeader: function( name, value ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\tvar lname = name.toLowerCase();\n +\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n +\t\t\t\t\t\trequestHeaders[ name ] = value;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Raw string\n +\t\t\t\tgetAllResponseHeaders: function() {\n +\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n +\t\t\t\t},\n +\n +\t\t\t\t// Builds headers hashtable if needed\n +\t\t\t\tgetResponseHeader: function( key ) {\n +\t\t\t\t\tvar match;\n +\t\t\t\t\tif ( state === 2 ) {\n +\t\t\t\t\t\tif ( !responseHeaders ) {\n +\t\t\t\t\t\t\tresponseHeaders = {};\n +\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n +\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n +\t\t\t\t\t}\n +\t\t\t\t\treturn match === undefined ? null : match;\n +\t\t\t\t},\n +\n +\t\t\t\t// Overrides response content-type header\n +\t\t\t\toverrideMimeType: function( type ) {\n +\t\t\t\t\tif ( !state ) {\n +\t\t\t\t\t\ts.mimeType = type;\n +\t\t\t\t\t}\n +\t\t\t\t\treturn this;\n +\t\t\t\t},\n +\n +\t\t\t\t// Cancel the request\n +\t\t\t\tabort: function( statusText ) {\n +\t\t\t\t\tstatusText = statusText || "abort";\n +\t\t\t\t\tif ( transport ) {\n +\t\t\t\t\t\ttransport.abort( statusText );\n +\t\t\t\t\t}\n +\t\t\t\t\tdone( 0, statusText );\n +\t\t\t\t\treturn this;\n +\t\t\t\t}\n +\t\t\t};\n +\n +\t\t// Callback for when everything is done\n +\t\t// It is defined here because jslint complains if it is declared\n +\t\t// at the end of the function (which would be more logical and readable)\n +\t\tfunction done( status, nativeStatusText, responses, headers ) {\n +\n +\t\t\t// Called once\n +\t\t\tif ( state === 2 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\t// State is "done" now\n +\t\t\tstate = 2;\n +\n +\t\t\t// Clear timeout if it exists\n +\t\t\tif ( timeoutTimer ) {\n +\t\t\t\tclearTimeout( timeoutTimer );\n +\t\t\t}\n +\n +\t\t\t// Dereference transport for early garbage collection\n +\t\t\t// (no matter how long the jqXHR object will be used)\n +\t\t\ttransport = undefined;\n +\n +\t\t\t// Cache response headers\n +\t\t\tresponseHeadersString = headers || "";\n +\n +\t\t\t// Set readyState\n +\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n +\n +\t\t\tvar isSuccess,\n +\t\t\t\tsuccess,\n +\t\t\t\terror,\n +\t\t\t\tstatusText = nativeStatusText,\n +\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n +\t\t\t\tlastModified,\n +\t\t\t\tetag;\n +\n +\t\t\t// If successful, handle type chaining\n +\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n +\n +\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\t\t\tif ( s.ifModified ) {\n +\n +\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {\n +\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {\n +\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// If not modified\n +\t\t\t\tif ( status === 304 ) {\n +\n +\t\t\t\t\tstatusText = "notmodified";\n +\t\t\t\t\tisSuccess = true;\n +\n +\t\t\t\t// If we have data\n +\t\t\t\t} else {\n +\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n +\t\t\t\t\t\tstatusText = "success";\n +\t\t\t\t\t\tisSuccess = true;\n +\t\t\t\t\t} catch(e) {\n +\t\t\t\t\t\t// We have a parsererror\n +\t\t\t\t\t\tstatusText = "parsererror";\n +\t\t\t\t\t\terror = e;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\t// We extract error from statusText\n +\t\t\t\t// then normalize statusText and status for non-aborts\n +\t\t\t\terror = statusText;\n +\t\t\t\tif ( !statusText || status ) {\n +\t\t\t\t\tstatusText = "error";\n +\t\t\t\t\tif ( status < 0 ) {\n +\t\t\t\t\t\tstatus = 0;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set data for the fake xhr object\n +\t\t\tjqXHR.status = status;\n +\t\t\tjqXHR.statusText = "" + ( nativeStatusText || statusText );\n +\n +\t\t\t// Success/Error\n +\t\t\tif ( isSuccess ) {\n +\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n +\t\t\t} else {\n +\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n +\t\t\t}\n +\n +\t\t\t// Status-dependent callbacks\n +\t\t\tjqXHR.statusCode( statusCode );\n +\t\t\tstatusCode = undefined;\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),\n +\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n +\t\t\t}\n +\n +\t\t\t// Complete\n +\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n +\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );\n +\t\t\t\t// Handle the global AJAX counter\n +\t\t\t\tif ( !( --jQuery.active ) ) {\n +\t\t\t\t\tjQuery.event.trigger( "ajaxStop" );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Attach deferreds\n +\t\tdeferred.promise( jqXHR );\n +\t\tjqXHR.success = jqXHR.done;\n +\t\tjqXHR.error = jqXHR.fail;\n +\t\tjqXHR.complete = completeDeferred.add;\n +\n +\t\t// Status-dependent callbacks\n +\t\tjqXHR.statusCode = function( map ) {\n +\t\t\tif ( map ) {\n +\t\t\t\tvar tmp;\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tfor ( tmp in map ) {\n +\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\ttmp = map[ jqXHR.status ];\n +\t\t\t\t\tjqXHR.then( tmp, tmp );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t};\n +\n +\t\t// Remove hash character (#7531: and string promotion)\n +\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n +\t\t// We also use the url parameter if available\n +\t\ts.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );\n +\n +\t\t// Extract dataTypes list\n +\t\ts.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );\n +\n +\t\t// Determine if a cross-domain request is in order\n +\t\tif ( s.crossDomain == null ) {\n +\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n +\t\t\ts.crossDomain = !!( parts &&\n +\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n +\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=\n +\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )\n +\t\t\t);\n +\t\t}\n +\n +\t\t// Convert data if not already a string\n +\t\tif ( s.data && s.processData && typeof s.data !== "string" ) {\n +\t\t\ts.data = jQuery.param( s.data, s.traditional );\n +\t\t}\n +\n +\t\t// Apply prefilters\n +\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n +\n +\t\t// If request was aborted inside a prefilter, stop there\n +\t\tif ( state === 2 ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t// We can fire global events as of now if asked to\n +\t\tfireGlobals = s.global;\n +\n +\t\t// Uppercase the type\n +\t\ts.type = s.type.toUpperCase();\n +\n +\t\t// Determine if request has content\n +\t\ts.hasContent = !rnoContent.test( s.type );\n +\n +\t\t// Watch for a new set of requests\n +\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n +\t\t\tjQuery.event.trigger( "ajaxStart" );\n +\t\t}\n +\n +\t\t// More options handling for requests with no content\n +\t\tif ( !s.hasContent ) {\n +\n +\t\t\t// If data is available, append data to url\n +\t\t\tif ( s.data ) {\n +\t\t\t\ts.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;\n +\t\t\t\t// #9682: remove data so that it\'s not used in an eventual retry\n +\t\t\t\tdelete s.data;\n +\t\t\t}\n +\n +\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n +\t\t\tifModifiedKey = s.url;\n +\n +\t\t\t// Add anti-cache in url if needed\n +\t\t\tif ( s.cache === false ) {\n +\n +\t\t\t\tvar ts = jQuery.now(),\n +\t\t\t\t\t// try replacing _= if it is there\n +\t\t\t\t\tret = s.url.replace( rts, "$1_=" + ts );\n +\n +\t\t\t\t// if nothing was replaced, add timestamp to the end\n +\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the correct header, if data is being sent\n +\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n +\t\t\tjqXHR.setRequestHeader( "Content-Type", s.contentType );\n +\t\t}\n +\n +\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n +\t\tif ( s.ifModified ) {\n +\t\t\tifModifiedKey = ifModifiedKey || s.url;\n +\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );\n +\t\t\t}\n +\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n +\t\t\t\tjqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Set the Accepts header for the server, depending on the dataType\n +\t\tjqXHR.setRequestHeader(\n +\t\t\t"Accept",\n +\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n +\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :\n +\t\t\t\ts.accepts[ "*" ]\n +\t\t);\n +\n +\t\t// Check for headers option\n +\t\tfor ( i in s.headers ) {\n +\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n +\t\t}\n +\n +\t\t// Allow custom headers/mimetypes and early abort\n +\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n +\t\t\t\t// Abort if not done already\n +\t\t\t\tjqXHR.abort();\n +\t\t\t\treturn false;\n +\n +\t\t}\n +\n +\t\t// Install callbacks on deferreds\n +\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n +\t\t\tjqXHR[ i ]( s[ i ] );\n +\t\t}\n +\n +\t\t// Get transport\n +\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n +\n +\t\t// If no transport, we auto-abort\n +\t\tif ( !transport ) {\n +\t\t\tdone( -1, "No Transport" );\n +\t\t} else {\n +\t\t\tjqXHR.readyState = 1;\n +\t\t\t// Send global event\n +\t\t\tif ( fireGlobals ) {\n +\t\t\t\tglobalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );\n +\t\t\t}\n +\t\t\t// Timeout\n +\t\t\tif ( s.async && s.timeout > 0 ) {\n +\t\t\t\ttimeoutTimer = setTimeout( function(){\n +\t\t\t\t\tjqXHR.abort( "timeout" );\n +\t\t\t\t}, s.timeout );\n +\t\t\t}\n +\n +\t\t\ttry {\n +\t\t\t\tstate = 1;\n +\t\t\t\ttransport.send( requestHeaders, done );\n +\t\t\t} catch (e) {\n +\t\t\t\t// Propagate exception as error if not done\n +\t\t\t\tif ( state < 2 ) {\n +\t\t\t\t\tdone( -1, e );\n +\t\t\t\t// Simply rethrow otherwise\n +\t\t\t\t} else {\n +\t\t\t\t\tthrow e;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn jqXHR;\n +\t},\n +\n +\t// Serialize an array of form elements or a set of\n +\t// key/values into a query string\n +\tparam: function( a, traditional ) {\n +\t\tvar s = [],\n +\t\t\tadd = function( key, value ) {\n +\t\t\t\t// If value is a function, invoke it and return its value\n +\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n +\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );\n +\t\t\t};\n +\n +\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n +\t\tif ( traditional === undefined ) {\n +\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n +\t\t}\n +\n +\t\t// If an array was passed in, assume that it is an array of form elements.\n +\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n +\t\t\t// Serialize the form elements\n +\t\t\tjQuery.each( a, function() {\n +\t\t\t\tadd( this.name, this.value );\n +\t\t\t});\n +\n +\t\t} else {\n +\t\t\t// If traditional, encode the "old" way (the way 1.3.2 or older\n +\t\t\t// did it), otherwise encode params recursively.\n +\t\t\tfor ( var prefix in a ) {\n +\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Return the resulting serialization\n +\t\treturn s.join( "&" ).replace( r20, "+" );\n +\t}\n +});\n +\n +function buildParams( prefix, obj, traditional, add ) {\n +\tif ( jQuery.isArray( obj ) ) {\n +\t\t// Serialize array item.\n +\t\tjQuery.each( obj, function( i, v ) {\n +\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n +\t\t\t\t// Treat each array item as a scalar.\n +\t\t\t\tadd( prefix, v );\n +\n +\t\t\t} else {\n +\t\t\t\t// If array item is non-scalar (array or object), encode its\n +\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n +\t\t\t\t// Note that rack (as of 1.0.0) can\'t currently deserialize\n +\t\t\t\t// nested arrays properly, and attempting to do so may cause\n +\t\t\t\t// a server error. Possible fixes are to modify rack\'s\n +\t\t\t\t// deserialization algorithm or to provide an option or flag\n +\t\t\t\t// to force array serialization to be shallow.\n +\t\t\t\tbuildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );\n +\t\t\t}\n +\t\t});\n +\n +\t} else if ( !traditional && jQuery.type( obj ) === "object" ) {\n +\t\t// Serialize object item.\n +\t\tfor ( var name in obj ) {\n +\t\t\tbuildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );\n +\t\t}\n +\n +\t} else {\n +\t\t// Serialize scalar item.\n +\t\tadd( prefix, obj );\n +\t}\n +}\n +\n +// This is still on the jQuery object... for now\n +// Want to move this to jQuery.ajax some day\n +jQuery.extend({\n +\n +\t// Counter for holding the number of active queries\n +\tactive: 0,\n +\n +\t// Last-Modified header cache for next request\n +\tlastModified: {},\n +\tetag: {}\n +\n +});\n +\n +/* Handles responses to an ajax request:\n + * - sets all responseXXX fields accordingly\n + * - finds the right dataType (mediates between content-type and expected dataType)\n + * - returns the corresponding response\n + */\n +function ajaxHandleResponses( s, jqXHR, responses ) {\n +\n +\tvar contents = s.contents,\n +\t\tdataTypes = s.dataTypes,\n +\t\tresponseFields = s.responseFields,\n +\t\tct,\n +\t\ttype,\n +\t\tfinalDataType,\n +\t\tfirstDataType;\n +\n +\t// Fill responseXXX fields\n +\tfor ( type in responseFields ) {\n +\t\tif ( type in responses ) {\n +\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n +\t\t}\n +\t}\n +\n +\t// Remove auto dataType and get content-type in the process\n +\twhile( dataTypes[ 0 ] === "*" ) {\n +\t\tdataTypes.shift();\n +\t\tif ( ct === undefined ) {\n +\t\t\tct = s.mimeType || jqXHR.getResponseHeader( "content-type" );\n +\t\t}\n +\t}\n +\n +\t// Check if we\'re dealing with a known content-type\n +\tif ( ct ) {\n +\t\tfor ( type in contents ) {\n +\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n +\t\t\t\tdataTypes.unshift( type );\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\t// Check to see if we have a response for the expected dataType\n +\tif ( dataTypes[ 0 ] in responses ) {\n +\t\tfinalDataType = dataTypes[ 0 ];\n +\t} else {\n +\t\t// Try convertible dataTypes\n +\t\tfor ( type in responses ) {\n +\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {\n +\t\t\t\tfinalDataType = type;\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t\tif ( !firstDataType ) {\n +\t\t\t\tfirstDataType = type;\n +\t\t\t}\n +\t\t}\n +\t\t// Or just use first one\n +\t\tfinalDataType = finalDataType || firstDataType;\n +\t}\n +\n +\t// If we found a dataType\n +\t// We add the dataType to the list if needed\n +\t// and return the corresponding response\n +\tif ( finalDataType ) {\n +\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n +\t\t\tdataTypes.unshift( finalDataType );\n +\t\t}\n +\t\treturn responses[ finalDataType ];\n +\t}\n +}\n +\n +// Chain conversions given the request and the original response\n +function ajaxConvert( s, response ) {\n +\n +\t// Apply the dataFilter if provided\n +\tif ( s.dataFilter ) {\n +\t\tresponse = s.dataFilter( response, s.dataType );\n +\t}\n +\n +\tvar dataTypes = s.dataTypes,\n +\t\tconverters = {},\n +\t\ti,\n +\t\tkey,\n +\t\tlength = dataTypes.length,\n +\t\ttmp,\n +\t\t// Current and previous dataTypes\n +\t\tcurrent = dataTypes[ 0 ],\n +\t\tprev,\n +\t\t// Conversion expression\n +\t\tconversion,\n +\t\t// Conversion function\n +\t\tconv,\n +\t\t// Conversion functions (transitive conversion)\n +\t\tconv1,\n +\t\tconv2;\n +\n +\t// For each dataType in the chain\n +\tfor ( i = 1; i < length; i++ ) {\n +\n +\t\t// Create converters map\n +\t\t// with lowercased keys\n +\t\tif ( i === 1 ) {\n +\t\t\tfor ( key in s.converters ) {\n +\t\t\t\tif ( typeof key === "string" ) {\n +\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Get the dataTypes\n +\t\tprev = current;\n +\t\tcurrent = dataTypes[ i ];\n +\n +\t\t// If current is auto dataType, update it to prev\n +\t\tif ( current === "*" ) {\n +\t\t\tcurrent = prev;\n +\t\t// If no auto and dataTypes are actually different\n +\t\t} else if ( prev !== "*" && prev !== current ) {\n +\n +\t\t\t// Get the converter\n +\t\t\tconversion = prev + " " + current;\n +\t\t\tconv = converters[ conversion ] || converters[ "* " + current ];\n +\n +\t\t\t// If there is no direct converter, search transitively\n +\t\t\tif ( !conv ) {\n +\t\t\t\tconv2 = undefined;\n +\t\t\t\tfor ( conv1 in converters ) {\n +\t\t\t\t\ttmp = conv1.split( " " );\n +\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {\n +\t\t\t\t\t\tconv2 = converters[ tmp[1] + " " + current ];\n +\t\t\t\t\t\tif ( conv2 ) {\n +\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n +\t\t\t\t\t\t\tif ( conv1 === true ) {\n +\t\t\t\t\t\t\t\tconv = conv2;\n +\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n +\t\t\t\t\t\t\t\tconv = conv1;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\t// If we found no converter, dispatch an error\n +\t\t\tif ( !( conv || conv2 ) ) {\n +\t\t\t\tjQuery.error( "No conversion from " + conversion.replace(" "," to ") );\n +\t\t\t}\n +\t\t\t// If found converter is not an equivalence\n +\t\t\tif ( conv !== true ) {\n +\t\t\t\t// Convert with 1 or 2 converters accordingly\n +\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn response;\n +}\n +\n +\n +\n +\n +var jsc = jQuery.now(),\n +\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n +\n +// Default jsonp settings\n +jQuery.ajaxSetup({\n +\tjsonp: "callback",\n +\tjsonpCallback: function() {\n +\t\treturn jQuery.expando + "_" + ( jsc++ );\n +\t}\n +});\n +\n +// Detect, normalize options and install callbacks for jsonp requests\n +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {\n +\n +\tvar inspectData = ( typeof s.data === "string" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n +\n +\tif ( s.dataTypes[ 0 ] === "jsonp" ||\n +\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n +\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n +\n +\t\tvar responseContainer,\n +\t\t\tjsonpCallback = s.jsonpCallback =\n +\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n +\t\t\tprevious = window[ jsonpCallback ],\n +\t\t\turl = s.url,\n +\t\t\tdata = s.data,\n +\t\t\treplace = "$1" + jsonpCallback + "$2";\n +\n +\t\tif ( s.jsonp !== false ) {\n +\t\t\turl = url.replace( jsre, replace );\n +\t\t\tif ( s.url === url ) {\n +\t\t\t\tif ( inspectData ) {\n +\t\t\t\t\tdata = data.replace( jsre, replace );\n +\t\t\t\t}\n +\t\t\t\tif ( s.data === data ) {\n +\t\t\t\t\t// Add callback manually\n +\t\t\t\t\turl += (/\\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\ts.url = url;\n +\t\ts.data = data;\n +\n +\t\t// Install callback\n +\t\twindow[ jsonpCallback ] = function( response ) {\n +\t\t\tresponseContainer = [ response ];\n +\t\t};\n +\n +\t\t// Clean-up function\n +\t\tjqXHR.always(function() {\n +\t\t\t// Set callback back to previous value\n +\t\t\twindow[ jsonpCallback ] = previous;\n +\t\t\t// Call if it was a function and we have a response\n +\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n +\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n +\t\t\t}\n +\t\t});\n +\n +\t\t// Use data converter to retrieve json after script execution\n +\t\ts.converters["script json"] = function() {\n +\t\t\tif ( !responseContainer ) {\n +\t\t\t\tjQuery.error( jsonpCallback + " was not called" );\n +\t\t\t}\n +\t\t\treturn responseContainer[ 0 ];\n +\t\t};\n +\n +\t\t// force json dataType\n +\t\ts.dataTypes[ 0 ] = "json";\n +\n +\t\t// Delegate to script\n +\t\treturn "script";\n +\t}\n +});\n +\n +\n +\n +\n +// Install script dataType\n +jQuery.ajaxSetup({\n +\taccepts: {\n +\t\tscript: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"\n +\t},\n +\tcontents: {\n +\t\tscript: /javascript|ecmascript/\n +\t},\n +\tconverters: {\n +\t\t"text script": function( text ) {\n +\t\t\tjQuery.globalEval( text );\n +\t\t\treturn text;\n +\t\t}\n +\t}\n +});\n +\n +// Handle cache\'s special case and global\n +jQuery.ajaxPrefilter( "script", function( s ) {\n +\tif ( s.cache === undefined ) {\n +\t\ts.cache = false;\n +\t}\n +\tif ( s.crossDomain ) {\n +\t\ts.type = "GET";\n +\t\ts.global = false;\n +\t}\n +});\n +\n +// Bind script tag hack transport\n +jQuery.ajaxTransport( "script", function(s) {\n +\n +\t// This transport only deals with cross domain requests\n +\tif ( s.crossDomain ) {\n +\n +\t\tvar script,\n +\t\t\thead = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;\n +\n +\t\treturn {\n +\n +\t\t\tsend: function( _, callback ) {\n +\n +\t\t\t\tscript = document.createElement( "script" );\n +\n +\t\t\t\tscript.async = "async";\n +\n +\t\t\t\tif ( s.scriptCharset ) {\n +\t\t\t\t\tscript.charset = s.scriptCharset;\n +\t\t\t\t}\n +\n +\t\t\t\tscript.src = s.url;\n +\n +\t\t\t\t// Attach handlers for all browsers\n +\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n +\n +\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n +\n +\t\t\t\t\t\t// Handle memory leak in IE\n +\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n +\n +\t\t\t\t\t\t// Remove the script\n +\t\t\t\t\t\tif ( head && script.parentNode ) {\n +\t\t\t\t\t\t\thead.removeChild( script );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Dereference the script\n +\t\t\t\t\t\tscript = undefined;\n +\n +\t\t\t\t\t\t// Callback if not abort\n +\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\tcallback( 200, "success" );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n +\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n +\t\t\t\thead.insertBefore( script, head.firstChild );\n +\t\t\t},\n +\n +\t\t\tabort: function() {\n +\t\t\t\tif ( script ) {\n +\t\t\t\t\tscript.onload( 0, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\t}\n +});\n +\n +\n +\n +\n +var // #5280: Internet Explorer will keep connections alive if we don\'t abort on unload\n +\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n +\t\t// Abort all pending requests\n +\t\tfor ( var key in xhrCallbacks ) {\n +\t\t\txhrCallbacks[ key ]( 0, 1 );\n +\t\t}\n +\t} : false,\n +\txhrId = 0,\n +\txhrCallbacks;\n +\n +// Functions to create xhrs\n +function createStandardXHR() {\n +\ttry {\n +\t\treturn new window.XMLHttpRequest();\n +\t} catch( e ) {}\n +}\n +\n +function createActiveXHR() {\n +\ttry {\n +\t\treturn new window.ActiveXObject( "Microsoft.XMLHTTP" );\n +\t} catch( e ) {}\n +}\n +\n +// Create the request object\n +// (This is still attached to ajaxSettings for backward compatibility)\n +jQuery.ajaxSettings.xhr = window.ActiveXObject ?\n +\t/* Microsoft failed to properly\n +\t * implement the XMLHttpRequest in IE7 (can\'t request local files),\n +\t * so we use the ActiveXObject when it is available\n +\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n +\t * we need a fallback.\n +\t */\n +\tfunction() {\n +\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n +\t} :\n +\t// For all other browsers, use the standard XMLHttpRequest object\n +\tcreateStandardXHR;\n +\n +// Determine support properties\n +(function( xhr ) {\n +\tjQuery.extend( jQuery.support, {\n +\t\tajax: !!xhr,\n +\t\tcors: !!xhr && ( "withCredentials" in xhr )\n +\t});\n +})( jQuery.ajaxSettings.xhr() );\n +\n +// Create transport if the browser can provide an xhr\n +if ( jQuery.support.ajax ) {\n +\n +\tjQuery.ajaxTransport(function( s ) {\n +\t\t// Cross domain only allowed if supported through XMLHttpRequest\n +\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n +\n +\t\t\tvar callback;\n +\n +\t\t\treturn {\n +\t\t\t\tsend: function( headers, complete ) {\n +\n +\t\t\t\t\t// Get a new xhr\n +\t\t\t\t\tvar xhr = s.xhr(),\n +\t\t\t\t\t\thandle,\n +\t\t\t\t\t\ti;\n +\n +\t\t\t\t\t// Open the socket\n +\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n +\t\t\t\t\tif ( s.username ) {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Apply custom fields if provided\n +\t\t\t\t\tif ( s.xhrFields ) {\n +\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n +\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Override mime type if needed\n +\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n +\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// X-Requested-With header\n +\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n +\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n +\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n +\t\t\t\t\t// For same-domain requests, won\'t change header if already provided.\n +\t\t\t\t\tif ( !s.crossDomain && !headers["X-Requested-With"] ) {\n +\t\t\t\t\t\theaders[ "X-Requested-With" ] = "XMLHttpRequest";\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\tfor ( i in headers ) {\n +\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} catch( _ ) {}\n +\n +\t\t\t\t\t// Do send the request\n +\t\t\t\t\t// This may raise an exception which is actually\n +\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n +\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n +\n +\t\t\t\t\t// Listener\n +\t\t\t\t\tcallback = function( _, isAbort ) {\n +\n +\t\t\t\t\t\tvar status,\n +\t\t\t\t\t\t\tstatusText,\n +\t\t\t\t\t\t\tresponseHeaders,\n +\t\t\t\t\t\t\tresponses,\n +\t\t\t\t\t\t\txml;\n +\n +\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n +\t\t\t\t\t\t// of an xhr when a network error occured\n +\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n +\t\t\t\t\t\ttry {\n +\n +\t\t\t\t\t\t\t// Was never called and is aborted or complete\n +\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n +\n +\t\t\t\t\t\t\t\t// Only called once\n +\t\t\t\t\t\t\t\tcallback = undefined;\n +\n +\t\t\t\t\t\t\t\t// Do not keep as active anymore\n +\t\t\t\t\t\t\t\tif ( handle ) {\n +\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n +\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t// If it\'s an abort\n +\t\t\t\t\t\t\t\tif ( isAbort ) {\n +\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n +\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n +\t\t\t\t\t\t\t\t\t\txhr.abort();\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n +\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n +\t\t\t\t\t\t\t\t\tresponses = {};\n +\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n +\n +\t\t\t\t\t\t\t\t\t// Construct response list\n +\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n +\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n +\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n +\t\t\t\t\t\t\t\t\t} catch( _ ) {\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n +\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n +\t\t\t\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n +\t\t\t\t\t\t\t\t\t} catch( e ) {\n +\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n +\t\t\t\t\t\t\t\t\t\tstatusText = "";\n +\t\t\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n +\n +\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n +\t\t\t\t\t\t\t\t\t// (success with no data won\'t get notified, that\'s the best we\n +\t\t\t\t\t\t\t\t\t// can do given current implementations)\n +\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n +\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n +\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n +\t\t\t\t\t\t\t\t\t\tstatus = 204;\n +\t\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t} catch( firefoxAccessException ) {\n +\t\t\t\t\t\t\tif ( !isAbort ) {\n +\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// Call complete if needed\n +\t\t\t\t\t\tif ( responses ) {\n +\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t};\n +\n +\t\t\t\t\t// if we\'re in sync mode or it\'s in cache\n +\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n +\t\t\t\t\t// we need to manually fire the callback\n +\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n +\t\t\t\t\t\tcallback();\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\thandle = ++xhrId;\n +\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n +\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n +\t\t\t\t\t\t\t// and attach the unload handler\n +\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n +\t\t\t\t\t\t\t\txhrCallbacks = {};\n +\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n +\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\txhr.onreadystatechange = callback;\n +\t\t\t\t\t}\n +\t\t\t\t},\n +\n +\t\t\t\tabort: function() {\n +\t\t\t\t\tif ( callback ) {\n +\t\t\t\t\t\tcallback(0,1);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\t});\n +}\n +\n +\n +\n +\n +var elemdisplay = {},\n +\tiframe, iframeDoc,\n +\trfxtypes = /^(?:toggle|show|hide)$/,\n +\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n +\ttimerId,\n +\tfxAttrs = [\n +\t\t// height animations\n +\t\t[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],\n +\t\t// width animations\n +\t\t[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],\n +\t\t// opacity animations\n +\t\t[ "opacity" ]\n +\t],\n +\tfxNow;\n +\n +jQuery.fn.extend({\n +\tshow: function( speed, easing, callback ) {\n +\t\tvar elem, display;\n +\n +\t\tif ( speed || speed === 0 ) {\n +\t\t\treturn this.animate( genFx("show", 3), speed, easing, callback );\n +\n +\t\t} else {\n +\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.style ) {\n +\t\t\t\t\tdisplay = elem.style.display;\n +\n +\t\t\t\t\t// Reset the inline display of this element to learn if it is\n +\t\t\t\t\t// being hidden by cascaded rules or not\n +\t\t\t\t\tif ( !jQuery._data(elem, "olddisplay") && display === "none" ) {\n +\t\t\t\t\t\tdisplay = elem.style.display = "";\n +\t\t\t\t\t}\n +\n +\t\t\t\t\t// Set elements which have been overridden with display: none\n +\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n +\t\t\t\t\t// for such an element\n +\t\t\t\t\tif ( (display === "" && jQuery.css(elem, "display") === "none") ||\n +\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n +\t\t\t\t\t\tjQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set the display of most of the elements in a second loop\n +\t\t\t// to avoid the constant reflow\n +\t\t\tfor ( i = 0; i < j; i++ ) {\n +\t\t\t\telem = this[ i ];\n +\n +\t\t\t\tif ( elem.style ) {\n +\t\t\t\t\tdisplay = elem.style.display;\n +\n +\t\t\t\t\tif ( display === "" || display === "none" ) {\n +\t\t\t\t\t\telem.style.display = jQuery._data( elem, "olddisplay" ) || "";\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn this;\n +\t\t}\n +\t},\n +\n +\thide: function( speed, easing, callback ) {\n +\t\tif ( speed || speed === 0 ) {\n +\t\t\treturn this.animate( genFx("hide", 3), speed, easing, callback);\n +\n +\t\t} else {\n +\t\t\tvar elem, display,\n +\t\t\t\ti = 0,\n +\t\t\t\tj = this.length;\n +\n +\t\t\tfor ( ; i < j; i++ ) {\n +\t\t\t\telem = this[i];\n +\t\t\t\tif ( elem.style ) {\n +\t\t\t\t\tdisplay = jQuery.css( elem, "display" );\n +\n +\t\t\t\t\tif ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {\n +\t\t\t\t\t\tjQuery._data( elem, "olddisplay", display );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// Set the display of the elements in a second loop\n +\t\t\t// to avoid the constant reflow\n +\t\t\tfor ( i = 0; i < j; i++ ) {\n +\t\t\t\tif ( this[i].style ) {\n +\t\t\t\t\tthis[i].style.display = "none";\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn this;\n +\t\t}\n +\t},\n +\n +\t// Save the old toggle function\n +\t_toggle: jQuery.fn.toggle,\n +\n +\ttoggle: function( fn, fn2, callback ) {\n +\t\tvar bool = typeof fn === "boolean";\n +\n +\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n +\t\t\tthis._toggle.apply( this, arguments );\n +\n +\t\t} else if ( fn == null || bool ) {\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar state = bool ? fn : jQuery(this).is(":hidden");\n +\t\t\t\tjQuery(this)[ state ? "show" : "hide" ]();\n +\t\t\t});\n +\n +\t\t} else {\n +\t\t\tthis.animate(genFx("toggle", 3), fn, fn2, callback);\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tfadeTo: function( speed, to, easing, callback ) {\n +\t\treturn this.filter(":hidden").css("opacity", 0).show().end()\n +\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n +\t},\n +\n +\tanimate: function( prop, speed, easing, callback ) {\n +\t\tvar optall = jQuery.speed( speed, easing, callback );\n +\n +\t\tif ( jQuery.isEmptyObject( prop ) ) {\n +\t\t\treturn this.each( optall.complete, [ false ] );\n +\t\t}\n +\n +\t\t// Do not change referenced properties as per-property easing will be lost\n +\t\tprop = jQuery.extend( {}, prop );\n +\n +\t\tfunction doAnimation() {\n +\t\t\t// XXX \'this\' does not always have a nodeName when running the\n +\t\t\t// test suite\n +\n +\t\t\tif ( optall.queue === false ) {\n +\t\t\t\tjQuery._mark( this );\n +\t\t\t}\n +\n +\t\t\tvar opt = jQuery.extend( {}, optall ),\n +\t\t\t\tisElement = this.nodeType === 1,\n +\t\t\t\thidden = isElement && jQuery(this).is(":hidden"),\n +\t\t\t\tname, val, p, e, hooks, replace,\n +\t\t\t\tparts, start, end, unit,\n +\t\t\t\tmethod;\n +\n +\t\t\t// will store per property easing and be used to determine when an animation is complete\n +\t\t\topt.animatedProperties = {};\n +\n +\t\t\t// first pass over propertys to expand / normalize\n +\t\t\tfor ( p in prop ) {\n +\t\t\t\tname = jQuery.camelCase( p );\n +\t\t\t\tif ( p !== name ) {\n +\t\t\t\t\tprop[ name ] = prop[ p ];\n +\t\t\t\t\tdelete prop[ p ];\n +\t\t\t\t}\n +\n +\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && "expand" in hooks ) {\n +\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n +\t\t\t\t\tdelete prop[ name ];\n +\n +\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n +\t\t\t\t\t// also - reusing \'p\' from above because we have the correct "name"\n +\t\t\t\t\tfor ( p in replace ) {\n +\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n +\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tfor ( name in prop ) {\n +\t\t\t\tval = prop[ name ];\n +\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > \'swing\' (default)\n +\t\t\t\tif ( jQuery.isArray( val ) ) {\n +\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n +\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n +\t\t\t\t} else {\n +\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || \'swing\';\n +\t\t\t\t}\n +\n +\t\t\t\tif ( val === "hide" && hidden || val === "show" && !hidden ) {\n +\t\t\t\t\treturn opt.complete.call( this );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( isElement && ( name === "height" || name === "width" ) ) {\n +\t\t\t\t\t// Make sure that nothing sneaks out\n +\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n +\t\t\t\t\t// change the overflow attribute when overflowX and\n +\t\t\t\t\t// overflowY are set to the same value\n +\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n +\n +\t\t\t\t\t// Set display property to inline-block for height/width\n +\t\t\t\t\t// animations on inline elements that are having width/height animated\n +\t\t\t\t\tif ( jQuery.css( this, "display" ) === "inline" &&\n +\t\t\t\t\t\t\tjQuery.css( this, "float" ) === "none" ) {\n +\n +\t\t\t\t\t\t// inline-level elements accept inline-block;\n +\t\t\t\t\t\t// block-level elements need to be inline with layout\n +\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {\n +\t\t\t\t\t\t\tthis.style.display = "inline-block";\n +\n +\t\t\t\t\t\t} else {\n +\t\t\t\t\t\t\tthis.style.zoom = 1;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( opt.overflow != null ) {\n +\t\t\t\tthis.style.overflow = "hidden";\n +\t\t\t}\n +\n +\t\t\tfor ( p in prop ) {\n +\t\t\t\te = new jQuery.fx( this, opt, p );\n +\t\t\t\tval = prop[ p ];\n +\n +\t\t\t\tif ( rfxtypes.test( val ) ) {\n +\n +\t\t\t\t\t// Tracks whether to show or hide based on private\n +\t\t\t\t\t// data attached to the element\n +\t\t\t\t\tmethod = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );\n +\t\t\t\t\tif ( method ) {\n +\t\t\t\t\t\tjQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );\n +\t\t\t\t\t\te[ method ]();\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\te[ val ]();\n +\t\t\t\t\t}\n +\n +\t\t\t\t} else {\n +\t\t\t\t\tparts = rfxnum.exec( val );\n +\t\t\t\t\tstart = e.cur();\n +\n +\t\t\t\t\tif ( parts ) {\n +\t\t\t\t\t\tend = parseFloat( parts[2] );\n +\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );\n +\n +\t\t\t\t\t\t// We need to compute starting value\n +\t\t\t\t\t\tif ( unit !== "px" ) {\n +\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n +\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n +\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// If a +=/-= token was provided, we\'re doing a relative animation\n +\t\t\t\t\t\tif ( parts[1] ) {\n +\t\t\t\t\t\t\tend = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\te.custom( start, end, unit );\n +\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\te.custom( start, val, "" );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// For JS strict compliance\n +\t\t\treturn true;\n +\t\t}\n +\n +\t\treturn optall.queue === false ?\n +\t\t\tthis.each( doAnimation ) :\n +\t\t\tthis.queue( optall.queue, doAnimation );\n +\t},\n +\n +\tstop: function( type, clearQueue, gotoEnd ) {\n +\t\tif ( typeof type !== "string" ) {\n +\t\t\tgotoEnd = clearQueue;\n +\t\t\tclearQueue = type;\n +\t\t\ttype = undefined;\n +\t\t}\n +\t\tif ( clearQueue && type !== false ) {\n +\t\t\tthis.queue( type || "fx", [] );\n +\t\t}\n +\n +\t\treturn this.each(function() {\n +\t\t\tvar index,\n +\t\t\t\thadTimers = false,\n +\t\t\t\ttimers = jQuery.timers,\n +\t\t\t\tdata = jQuery._data( this );\n +\n +\t\t\t// clear marker counters if we know they won\'t be\n +\t\t\tif ( !gotoEnd ) {\n +\t\t\t\tjQuery._unmark( true, this );\n +\t\t\t}\n +\n +\t\t\tfunction stopQueue( elem, data, index ) {\n +\t\t\t\tvar hooks = data[ index ];\n +\t\t\t\tjQuery.removeData( elem, index, true );\n +\t\t\t\thooks.stop( gotoEnd );\n +\t\t\t}\n +\n +\t\t\tif ( type == null ) {\n +\t\t\t\tfor ( index in data ) {\n +\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {\n +\t\t\t\t\t\tstopQueue( this, data, index );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t} else if ( data[ index = type + ".run" ] && data[ index ].stop ){\n +\t\t\t\tstopQueue( this, data, index );\n +\t\t\t}\n +\n +\t\t\tfor ( index = timers.length; index--; ) {\n +\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n +\t\t\t\t\tif ( gotoEnd ) {\n +\n +\t\t\t\t\t\t// force the next step to be the last\n +\t\t\t\t\t\ttimers[ index ]( true );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\ttimers[ index ].saveState();\n +\t\t\t\t\t}\n +\t\t\t\t\thadTimers = true;\n +\t\t\t\t\ttimers.splice( index, 1 );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// start the next in the queue if the last step wasn\'t forced\n +\t\t\t// timers currently will call their complete callbacks, which will dequeue\n +\t\t\t// but only if they were gotoEnd\n +\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n +\t\t\t\tjQuery.dequeue( this, type );\n +\t\t\t}\n +\t\t});\n +\t}\n +\n +});\n +\n +// Animations created synchronously will run synchronously\n +function createFxNow() {\n +\tsetTimeout( clearFxNow, 0 );\n +\treturn ( fxNow = jQuery.now() );\n +}\n +\n +function clearFxNow() {\n +\tfxNow = undefined;\n +}\n +\n +// Generate parameters to create a standard animation\n +function genFx( type, num ) {\n +\tvar obj = {};\n +\n +\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n +\t\tobj[ this ] = type;\n +\t});\n +\n +\treturn obj;\n +}\n +\n +// Generate shortcuts for custom animations\n +jQuery.each({\n +\tslideDown: genFx( "show", 1 ),\n +\tslideUp: genFx( "hide", 1 ),\n +\tslideToggle: genFx( "toggle", 1 ),\n +\tfadeIn: { opacity: "show" },\n +\tfadeOut: { opacity: "hide" },\n +\tfadeToggle: { opacity: "toggle" }\n +}, function( name, props ) {\n +\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n +\t\treturn this.animate( props, speed, easing, callback );\n +\t};\n +});\n +\n +jQuery.extend({\n +\tspeed: function( speed, easing, fn ) {\n +\t\tvar opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {\n +\t\t\tcomplete: fn || !fn && easing ||\n +\t\t\t\tjQuery.isFunction( speed ) && speed,\n +\t\t\tduration: speed,\n +\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n +\t\t};\n +\n +\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :\n +\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n +\n +\t\t// normalize opt.queue - true/undefined/null -> "fx"\n +\t\tif ( opt.queue == null || opt.queue === true ) {\n +\t\t\topt.queue = "fx";\n +\t\t}\n +\n +\t\t// Queueing\n +\t\topt.old = opt.complete;\n +\n +\t\topt.complete = function( noUnmark ) {\n +\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n +\t\t\t\topt.old.call( this );\n +\t\t\t}\n +\n +\t\t\tif ( opt.queue ) {\n +\t\t\t\tjQuery.dequeue( this, opt.queue );\n +\t\t\t} else if ( noUnmark !== false ) {\n +\t\t\t\tjQuery._unmark( this );\n +\t\t\t}\n +\t\t};\n +\n +\t\treturn opt;\n +\t},\n +\n +\teasing: {\n +\t\tlinear: function( p ) {\n +\t\t\treturn p;\n +\t\t},\n +\t\tswing: function( p ) {\n +\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n +\t\t}\n +\t},\n +\n +\ttimers: [],\n +\n +\tfx: function( elem, options, prop ) {\n +\t\tthis.options = options;\n +\t\tthis.elem = elem;\n +\t\tthis.prop = prop;\n +\n +\t\toptions.orig = options.orig || {};\n +\t}\n +\n +});\n +\n +jQuery.fx.prototype = {\n +\t// Simple function for setting a style value\n +\tupdate: function() {\n +\t\tif ( this.options.step ) {\n +\t\t\tthis.options.step.call( this.elem, this.now, this );\n +\t\t}\n +\n +\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n +\t},\n +\n +\t// Get the current size\n +\tcur: function() {\n +\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n +\t\t\treturn this.elem[ this.prop ];\n +\t\t}\n +\n +\t\tvar parsed,\n +\t\t\tr = jQuery.css( this.elem, this.prop );\n +\t\t// Empty strings, null, undefined and "auto" are converted to 0,\n +\t\t// complex values such as "rotate(1rad)" are returned as is,\n +\t\t// simple values such as "10px" are parsed to Float.\n +\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;\n +\t},\n +\n +\t// Start an animation from one number to another\n +\tcustom: function( from, to, unit ) {\n +\t\tvar self = this,\n +\t\t\tfx = jQuery.fx;\n +\n +\t\tthis.startTime = fxNow || createFxNow();\n +\t\tthis.end = to;\n +\t\tthis.now = this.start = from;\n +\t\tthis.pos = this.state = 0;\n +\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );\n +\n +\t\tfunction t( gotoEnd ) {\n +\t\t\treturn self.step( gotoEnd );\n +\t\t}\n +\n +\t\tt.queue = this.options.queue;\n +\t\tt.elem = this.elem;\n +\t\tt.saveState = function() {\n +\t\t\tif ( jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {\n +\t\t\t\tif ( self.options.hide ) {\n +\t\t\t\t\tjQuery._data( self.elem, "fxshow" + self.prop, self.start );\n +\t\t\t\t} else if ( self.options.show ) {\n +\t\t\t\t\tjQuery._data( self.elem, "fxshow" + self.prop, self.end );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t};\n +\n +\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n +\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n +\t\t}\n +\t},\n +\n +\t// Simple \'show\' function\n +\tshow: function() {\n +\t\tvar dataShow = jQuery._data( this.elem, "fxshow" + this.prop );\n +\n +\t\t// Remember where we started, so that we can go back to it later\n +\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n +\t\tthis.options.show = true;\n +\n +\t\t// Begin the animation\n +\t\t// Make sure that we start at a small width/height to avoid any flash of content\n +\t\tif ( dataShow !== undefined ) {\n +\t\t\t// This show is picking up where a previous hide or show left off\n +\t\t\tthis.custom( this.cur(), dataShow );\n +\t\t} else {\n +\t\t\tthis.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );\n +\t\t}\n +\n +\t\t// Start by showing the element\n +\t\tjQuery( this.elem ).show();\n +\t},\n +\n +\t// Simple \'hide\' function\n +\thide: function() {\n +\t\t// Remember where we started, so that we can go back to it later\n +\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );\n +\t\tthis.options.hide = true;\n +\n +\t\t// Begin the animation\n +\t\tthis.custom( this.cur(), 0 );\n +\t},\n +\n +\t// Each step of an animation\n +\tstep: function( gotoEnd ) {\n +\t\tvar p, n, complete,\n +\t\t\tt = fxNow || createFxNow(),\n +\t\t\tdone = true,\n +\t\t\telem = this.elem,\n +\t\t\toptions = this.options;\n +\n +\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n +\t\t\tthis.now = this.end;\n +\t\t\tthis.pos = this.state = 1;\n +\t\t\tthis.update();\n +\n +\t\t\toptions.animatedProperties[ this.prop ] = true;\n +\n +\t\t\tfor ( p in options.animatedProperties ) {\n +\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n +\t\t\t\t\tdone = false;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif ( done ) {\n +\t\t\t\t// Reset the overflow\n +\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n +\n +\t\t\t\t\tjQuery.each( [ "", "X", "Y" ], function( index, value ) {\n +\t\t\t\t\t\telem.style[ "overflow" + value ] = options.overflow[ index ];\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\n +\t\t\t\t// Hide the element if the "hide" operation was done\n +\t\t\t\tif ( options.hide ) {\n +\t\t\t\t\tjQuery( elem ).hide();\n +\t\t\t\t}\n +\n +\t\t\t\t// Reset the properties, if the item has been hidden or shown\n +\t\t\t\tif ( options.hide || options.show ) {\n +\t\t\t\t\tfor ( p in options.animatedProperties ) {\n +\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n +\t\t\t\t\t\tjQuery.removeData( elem, "fxshow" + p, true );\n +\t\t\t\t\t\t// Toggle data is no longer needed\n +\t\t\t\t\t\tjQuery.removeData( elem, "toggle" + p, true );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// Execute the complete function\n +\t\t\t\t// in the event that the complete function throws an exception\n +\t\t\t\t// we must ensure it won\'t be called twice. #5684\n +\n +\t\t\t\tcomplete = options.complete;\n +\t\t\t\tif ( complete ) {\n +\n +\t\t\t\t\toptions.complete = false;\n +\t\t\t\t\tcomplete.call( elem );\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn false;\n +\n +\t\t} else {\n +\t\t\t// classical easing cannot be used with an Infinity duration\n +\t\t\tif ( options.duration == Infinity ) {\n +\t\t\t\tthis.now = t;\n +\t\t\t} else {\n +\t\t\t\tn = t - this.startTime;\n +\t\t\t\tthis.state = n / options.duration;\n +\n +\t\t\t\t// Perform the easing function, defaults to swing\n +\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n +\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n +\t\t\t}\n +\t\t\t// Perform the next step of the animation\n +\t\t\tthis.update();\n +\t\t}\n +\n +\t\treturn true;\n +\t}\n +};\n +\n +jQuery.extend( jQuery.fx, {\n +\ttick: function() {\n +\t\tvar timer,\n +\t\t\ttimers = jQuery.timers,\n +\t\t\ti = 0;\n +\n +\t\tfor ( ; i < timers.length; i++ ) {\n +\t\t\ttimer = timers[ i ];\n +\t\t\t// Checks the timer has not already been removed\n +\t\t\tif ( !timer() && timers[ i ] === timer ) {\n +\t\t\t\ttimers.splice( i--, 1 );\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( !timers.length ) {\n +\t\t\tjQuery.fx.stop();\n +\t\t}\n +\t},\n +\n +\tinterval: 13,\n +\n +\tstop: function() {\n +\t\tclearInterval( timerId );\n +\t\ttimerId = null;\n +\t},\n +\n +\tspeeds: {\n +\t\tslow: 600,\n +\t\tfast: 200,\n +\t\t// Default speed\n +\t\t_default: 400\n +\t},\n +\n +\tstep: {\n +\t\topacity: function( fx ) {\n +\t\t\tjQuery.style( fx.elem, "opacity", fx.now );\n +\t\t},\n +\n +\t\t_default: function( fx ) {\n +\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n +\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n +\t\t\t} else {\n +\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n +\t\t\t}\n +\t\t}\n +\t}\n +});\n +\n +// Ensure props that can\'t be negative don\'t go there on undershoot easing\n +jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n +\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n +\tif ( prop.indexOf( "margin" ) ) {\n +\t\tjQuery.fx.step[ prop ] = function( fx ) {\n +\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n +\t\t};\n +\t}\n +});\n +\n +if ( jQuery.expr && jQuery.expr.filters ) {\n +\tjQuery.expr.filters.animated = function( elem ) {\n +\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n +\t\t\treturn elem === fn.elem;\n +\t\t}).length;\n +\t};\n +}\n +\n +// Try to restore the default display value of an element\n +function defaultDisplay( nodeName ) {\n +\n +\tif ( !elemdisplay[ nodeName ] ) {\n +\n +\t\tvar body = document.body,\n +\t\t\telem = jQuery( "<" + nodeName + ">" ).appendTo( body ),\n +\t\t\tdisplay = elem.css( "display" );\n +\t\telem.remove();\n +\n +\t\t// If the simple way fails,\n +\t\t// get element\'s real default display by attaching it to a temp iframe\n +\t\tif ( display === "none" || display === "" ) {\n +\t\t\t// No iframe to use yet, so create it\n +\t\t\tif ( !iframe ) {\n +\t\t\t\tiframe = document.createElement( "iframe" );\n +\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n +\t\t\t}\n +\n +\t\t\tbody.appendChild( iframe );\n +\n +\t\t\t// Create a cacheable copy of the iframe document on first call.\n +\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n +\t\t\t// document to it; WebKit & Firefox won\'t allow reusing the iframe document.\n +\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n +\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n +\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? "<!doctype html>" : "" ) + "<html><body>" );\n +\t\t\t\tiframeDoc.close();\n +\t\t\t}\n +\n +\t\t\telem = iframeDoc.createElement( nodeName );\n +\n +\t\t\tiframeDoc.body.appendChild( elem );\n +\n +\t\t\tdisplay = jQuery.css( elem, "display" );\n +\t\t\tbody.removeChild( iframe );\n +\t\t}\n +\n +\t\t// Store the correct default display\n +\t\telemdisplay[ nodeName ] = display;\n +\t}\n +\n +\treturn elemdisplay[ nodeName ];\n +}\n +\n +\n +\n +\n +var getOffset,\n +\trtable = /^t(?:able|d|h)$/i,\n +\trroot = /^(?:body|html)$/i;\n +\n +if ( "getBoundingClientRect" in document.documentElement ) {\n +\tgetOffset = function( elem, doc, docElem, box ) {\n +\t\ttry {\n +\t\t\tbox = elem.getBoundingClientRect();\n +\t\t} catch(e) {}\n +\n +\t\t// Make sure we\'re not dealing with a disconnected DOM node\n +\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n +\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n +\t\t}\n +\n +\t\tvar body = doc.body,\n +\t\t\twin = getWindow( doc ),\n +\t\t\tclientTop = docElem.clientTop || body.clientTop || 0,\n +\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n +\t\t\tscrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,\n +\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n +\t\t\ttop = box.top + scrollTop - clientTop,\n +\t\t\tleft = box.left + scrollLeft - clientLeft;\n +\n +\t\treturn { top: top, left: left };\n +\t};\n +\n +} else {\n +\tgetOffset = function( elem, doc, docElem ) {\n +\t\tvar computedStyle,\n +\t\t\toffsetParent = elem.offsetParent,\n +\t\t\tprevOffsetParent = elem,\n +\t\t\tbody = doc.body,\n +\t\t\tdefaultView = doc.defaultView,\n +\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n +\t\t\ttop = elem.offsetTop,\n +\t\t\tleft = elem.offsetLeft;\n +\n +\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n +\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {\n +\t\t\t\tbreak;\n +\t\t\t}\n +\n +\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n +\t\t\ttop -= elem.scrollTop;\n +\t\t\tleft -= elem.scrollLeft;\n +\n +\t\t\tif ( elem === offsetParent ) {\n +\t\t\t\ttop += elem.offsetTop;\n +\t\t\t\tleft += elem.offsetLeft;\n +\n +\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n +\t\t\t\t\ttop += parseFloat( computedStyle.borderTopWidth ) || 0;\n +\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n +\t\t\t\t}\n +\n +\t\t\t\tprevOffsetParent = offsetParent;\n +\t\t\t\toffsetParent = elem.offsetParent;\n +\t\t\t}\n +\n +\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {\n +\t\t\t\ttop += parseFloat( computedStyle.borderTopWidth ) || 0;\n +\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n +\t\t\t}\n +\n +\t\t\tprevComputedStyle = computedStyle;\n +\t\t}\n +\n +\t\tif ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {\n +\t\t\ttop += body.offsetTop;\n +\t\t\tleft += body.offsetLeft;\n +\t\t}\n +\n +\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {\n +\t\t\ttop += Math.max( docElem.scrollTop, body.scrollTop );\n +\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n +\t\t}\n +\n +\t\treturn { top: top, left: left };\n +\t};\n +}\n +\n +jQuery.fn.offset = function( options ) {\n +\tif ( arguments.length ) {\n +\t\treturn options === undefined ?\n +\t\t\tthis :\n +\t\t\tthis.each(function( i ) {\n +\t\t\t\tjQuery.offset.setOffset( this, options, i );\n +\t\t\t});\n +\t}\n +\n +\tvar elem = this[0],\n +\t\tdoc = elem && elem.ownerDocument;\n +\n +\tif ( !doc ) {\n +\t\treturn null;\n +\t}\n +\n +\tif ( elem === doc.body ) {\n +\t\treturn jQuery.offset.bodyOffset( elem );\n +\t}\n +\n +\treturn getOffset( elem, doc, doc.documentElement );\n +};\n +\n +jQuery.offset = {\n +\n +\tbodyOffset: function( body ) {\n +\t\tvar top = body.offsetTop,\n +\t\t\tleft = body.offsetLeft;\n +\n +\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n +\t\t\ttop += parseFloat( jQuery.css(body, "marginTop") ) || 0;\n +\t\t\tleft += parseFloat( jQuery.css(body, "marginLeft") ) || 0;\n +\t\t}\n +\n +\t\treturn { top: top, left: left };\n +\t},\n +\n +\tsetOffset: function( elem, options, i ) {\n +\t\tvar position = jQuery.css( elem, "position" );\n +\n +\t\t// set position first, in-case top/left are set even on static elem\n +\t\tif ( position === "static" ) {\n +\t\t\telem.style.position = "relative";\n +\t\t}\n +\n +\t\tvar curElem = jQuery( elem ),\n +\t\t\tcurOffset = curElem.offset(),\n +\t\t\tcurCSSTop = jQuery.css( elem, "top" ),\n +\t\t\tcurCSSLeft = jQuery.css( elem, "left" ),\n +\t\t\tcalculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,\n +\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n +\n +\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n +\t\tif ( calculatePosition ) {\n +\t\t\tcurPosition = curElem.position();\n +\t\t\tcurTop = curPosition.top;\n +\t\t\tcurLeft = curPosition.left;\n +\t\t} else {\n +\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n +\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n +\t\t}\n +\n +\t\tif ( jQuery.isFunction( options ) ) {\n +\t\t\toptions = options.call( elem, i, curOffset );\n +\t\t}\n +\n +\t\tif ( options.top != null ) {\n +\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n +\t\t}\n +\t\tif ( options.left != null ) {\n +\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n +\t\t}\n +\n +\t\tif ( "using" in options ) {\n +\t\t\toptions.using.call( elem, props );\n +\t\t} else {\n +\t\t\tcurElem.css( props );\n +\t\t}\n +\t}\n +};\n +\n +\n +jQuery.fn.extend({\n +\n +\tposition: function() {\n +\t\tif ( !this[0] ) {\n +\t\t\treturn null;\n +\t\t}\n +\n +\t\tvar elem = this[0],\n +\n +\t\t// Get *real* offsetParent\n +\t\toffsetParent = this.offsetParent(),\n +\n +\t\t// Get correct offsets\n +\t\toffset = this.offset(),\n +\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n +\n +\t\t// Subtract element margins\n +\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n +\t\t// are the same in Safari causing offset.left to incorrectly be 0\n +\t\toffset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;\n +\t\toffset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;\n +\n +\t\t// Add offsetParent borders\n +\t\tparentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;\n +\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;\n +\n +\t\t// Subtract the two offsets\n +\t\treturn {\n +\t\t\ttop: offset.top - parentOffset.top,\n +\t\t\tleft: offset.left - parentOffset.left\n +\t\t};\n +\t},\n +\n +\toffsetParent: function() {\n +\t\treturn this.map(function() {\n +\t\t\tvar offsetParent = this.offsetParent || document.body;\n +\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {\n +\t\t\t\toffsetParent = offsetParent.offsetParent;\n +\t\t\t}\n +\t\t\treturn offsetParent;\n +\t\t});\n +\t}\n +});\n +\n +\n +// Create scrollLeft and scrollTop methods\n +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {\n +\tvar top = /Y/.test( prop );\n +\n +\tjQuery.fn[ method ] = function( val ) {\n +\t\treturn jQuery.access( this, function( elem, method, val ) {\n +\t\t\tvar win = getWindow( elem );\n +\n +\t\t\tif ( val === undefined ) {\n +\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n +\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n +\t\t\t\t\t\twin.document.body[ method ] :\n +\t\t\t\t\telem[ method ];\n +\t\t\t}\n +\n +\t\t\tif ( win ) {\n +\t\t\t\twin.scrollTo(\n +\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n +\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n +\t\t\t\t);\n +\n +\t\t\t} else {\n +\t\t\t\telem[ method ] = val;\n +\t\t\t}\n +\t\t}, method, val, arguments.length, null );\n +\t};\n +});\n +\n +function getWindow( elem ) {\n +\treturn jQuery.isWindow( elem ) ?\n +\t\telem :\n +\t\telem.nodeType === 9 ?\n +\t\t\telem.defaultView || elem.parentWindow :\n +\t\t\tfalse;\n +}\n +\n +\n +\n +\n +// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\n +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {\n +\tvar clientProp = "client" + name,\n +\t\tscrollProp = "scroll" + name,\n +\t\toffsetProp = "offset" + name;\n +\n +\t// innerHeight and innerWidth\n +\tjQuery.fn[ "inner" + name ] = function() {\n +\t\tvar elem = this[0];\n +\t\treturn elem ?\n +\t\t\telem.style ?\n +\t\t\tparseFloat( jQuery.css( elem, type, "padding" ) ) :\n +\t\t\tthis[ type ]() :\n +\t\t\tnull;\n +\t};\n +\n +\t// outerHeight and outerWidth\n +\tjQuery.fn[ "outer" + name ] = function( margin ) {\n +\t\tvar elem = this[0];\n +\t\treturn elem ?\n +\t\t\telem.style ?\n +\t\t\tparseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :\n +\t\t\tthis[ type ]() :\n +\t\t\tnull;\n +\t};\n +\n +\tjQuery.fn[ type ] = function( value ) {\n +\t\treturn jQuery.access( this, function( elem, type, value ) {\n +\t\t\tvar doc, docElemProp, orig, ret;\n +\n +\t\t\tif ( jQuery.isWindow( elem ) ) {\n +\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n +\t\t\t\tdoc = elem.document;\n +\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n +\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n +\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n +\t\t\t}\n +\n +\t\t\t// Get document width or height\n +\t\t\tif ( elem.nodeType === 9 ) {\n +\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n +\t\t\t\tdoc = elem.documentElement;\n +\n +\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n +\t\t\t\t// so we can\'t use max, as it\'ll choose the incorrect offset[Width/Height]\n +\t\t\t\t// instead we use the correct client[Width/Height]\n +\t\t\t\t// support:IE6\n +\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n +\t\t\t\t\treturn doc[ clientProp ];\n +\t\t\t\t}\n +\n +\t\t\t\treturn Math.max(\n +\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n +\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n +\t\t\t\t);\n +\t\t\t}\n +\n +\t\t\t// Get width or height on the element\n +\t\t\tif ( value === undefined ) {\n +\t\t\t\torig = jQuery.css( elem, type );\n +\t\t\t\tret = parseFloat( orig );\n +\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n +\t\t\t}\n +\n +\t\t\t// Set the width or height on the element\n +\t\t\tjQuery( elem ).css( type, value );\n +\t\t}, type, value, arguments.length, null );\n +\t};\n +});\n +\n +\n +\n +\n +// Expose jQuery to the global object\n +window.jQuery = window.$ = jQuery;\n +\n +// Expose jQuery as an AMD module, but only for AMD loaders that\n +// understand the issues with loading multiple versions of jQuery\n +// in a page that all might call define(). The loader will indicate\n +// they have special allowances for multiple jQuery versions by\n +// specifying define.amd.jQuery = true. Register as a named module,\n +// since jQuery can be concatenated with other files that may use define,\n +// but not use a proper concatenation script that understands anonymous\n +// AMD modules. A named AMD is safest and most robust way to register.\n +// Lowercase jquery is used because AMD module names are derived from\n +// file names, and jQuery is normally delivered in a lowercase file name.\n +// Do this after creating the global so that if an AMD module wants to call\n +// noConflict to hide this version of jQuery, it will work.\n +if ( typeof define === "function" && define.amd && define.amd.jQuery ) {\n +\tdefine( "jquery", [], function () { return jQuery; } );\n +}\n +\n +\n +\n +})( window );\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> </dictionary> </pickle> </record> diff --git a/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.min.js.xml b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..e78571123fe71fbe4306461fbd4234b063c929ac --- /dev/null +++ b/bt5/erp5_jquery/PathTemplateItem/portal_skins/erp5_jquery/jquery/core/jquery.min.js.xml @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58329308.83</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>94840</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-1.7.2.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery v1.7.2 jquery.com | jquery.org/license */\n +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:["\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test("Â ")&&(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href=\'/a\' style=\'top:1px;float:left;opacity:.55;\'>a</a><input type=\'checkbox\'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style=\'"+r+t+"5px solid #000;",q="<div "+n+"display:block;\'><div style=\'"+t+"0;display:block;overflow:hidden;\'></div></div>"+"<table "+n+"\' cellpadding=\'0\' cellspacing=\'0\'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style=\'"+t+"0;display:none\'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style=\'width:5px;\'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can\'t be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(\n +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\\\s)"+b[3]+"(?:\\\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\\\.)"+l.split(".").sort().join("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\\\.)"+i.join("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement 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){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.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){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.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|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\\t\\n\\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,"");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name=\'"+d+"\'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href=\'#\'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class=\'TEST\'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/\'/g,"\\\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id=\'"+n+"\'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!=\'\']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class=\'test e\'></div><div class=\'test\'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\\d+="(?:\\d+|null)"/g,X=/^\\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,Z=/<([\\w:]+)/,$=/<tbody/i,_=/<|&#?\\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\\\s/>]","i"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,"<select multiple=\'multiple\'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f\n +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\\([^)]*\\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\\-+]?(?:\\d*\\.)?\\d+$/i,bt=/^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,bu=/^([\\-+])=([\\-+.\\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\\?/,bM=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\\r\\n")}}):{name:b.name,value:c.replace(bE,"\\r\\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(&|$)|\\?\\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); + +]]></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery/bt/change_log b/bt5/erp5_jquery/bt/change_log index 8814f2f370b3e71b7d70e721436d8a18efd9925d..a9ddf4c1a1e86cf541e7f80f0377e5306b355e2c 100644 --- a/bt5/erp5_jquery/bt/change_log +++ b/bt5/erp5_jquery/bt/change_log @@ -1,3 +1,6 @@ +2013-01-15 Kazuhiko +* add jquery-1.8.js as jquery core 1.8.3 and jquery-1.9.js as jquery core 1.9.0, still keeping jquery.js as jquery-1.7.2.js for compatibility. + 2012-07-30 Kazuhiko * jQuery Core 1.7.2. diff --git a/bt5/erp5_jquery/bt/copyright_list b/bt5/erp5_jquery/bt/copyright_list index fe948b9fb7c242ba7403410bb05d78ca4343c414..a914e3a5684e4b2da191b625ce9d7037a5677082 100644 --- a/bt5/erp5_jquery/bt/copyright_list +++ b/bt5/erp5_jquery/bt/copyright_list @@ -1 +1 @@ -Copyright (c) 2010 Nexedi SA \ No newline at end of file +Copyright © 2010-2013 Nexedi SA \ No newline at end of file diff --git a/bt5/erp5_jquery/bt/description b/bt5/erp5_jquery/bt/description index 90c5fdad3652d8abf231f4bf30a063caa200365b..fe20e87651ecc742d828846a50974519026bafc9 100644 --- a/bt5/erp5_jquery/bt/description +++ b/bt5/erp5_jquery/bt/description @@ -1,2 +1,2 @@ This Business Template contains jQuery Core. -Current version is jQuery 1.7.2. \ No newline at end of file +Current version contains jQuery 1.7.2, 1.8.3 and 1.9.0. \ No newline at end of file diff --git a/bt5/erp5_jquery/bt/license b/bt5/erp5_jquery/bt/license index 3a3e12bcad97e4b3bdd6a8bb499fd23a4bcb0819..8ab70c0254878ca8a5a15e98c7d32b4f7c5710c9 100644 --- a/bt5/erp5_jquery/bt/license +++ b/bt5/erp5_jquery/bt/license @@ -1 +1 @@ -GPL \ No newline at end of file +MIT \ No newline at end of file diff --git a/bt5/erp5_jquery/bt/revision b/bt5/erp5_jquery/bt/revision index 3f10ffe7a4c473619c926cfb1e8d95e726e5a0ec..19c7bdba7b1e9bfe80365a50420a6d538ca503c3 100644 --- a/bt5/erp5_jquery/bt/revision +++ b/bt5/erp5_jquery/bt/revision @@ -1 +1 @@ -15 \ No newline at end of file +16 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jcarousel/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jcarousel/jquery.jcarousel.js.xml b/bt5/erp5_jquery_plugin_jcarousel/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jcarousel/jquery.jcarousel.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc8b9577f42bad807566ab223c0f80c357246e60 --- /dev/null +++ b/bt5/erp5_jquery_plugin_jcarousel/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jcarousel/jquery.jcarousel.js.xml @@ -0,0 +1,1101 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55933350.5</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery.jcarousel.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*!\n + * jCarousel - Riding carousels with jQuery\n + * http://sorgalla.com/jcarousel/\n + *\n + * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)\n + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n + *\n + * Built on top of the jQuery library\n + * http://jquery.com\n + *\n + * Inspired by the "Carousel Component" by Bill Scott\n + * http://billwscott.com/carousel/\n + */\n +\n +/*global window, jQuery */\n +(function($) {\n + // Default configuration properties.\n + var defaults = {\n + vertical: false,\n + rtl: false,\n + start: 1,\n + offset: 1,\n + size: null,\n + scroll: 3,\n + visible: null,\n + animation: \'normal\',\n + easing: \'swing\',\n + auto: 0,\n + wrap: null,\n + initCallback: null,\n + setupCallback: null,\n + reloadCallback: null,\n + itemLoadCallback: null,\n + itemFirstInCallback: null,\n + itemFirstOutCallback: null,\n + itemLastInCallback: null,\n + itemLastOutCallback: null,\n + itemVisibleInCallback: null,\n + itemVisibleOutCallback: null,\n + animationStepCallback: null,\n + buttonNextHTML: \'<div></div>\',\n + buttonPrevHTML: \'<div></div>\',\n + buttonNextEvent: \'click\',\n + buttonPrevEvent: \'click\',\n + buttonNextCallback: null,\n + buttonPrevCallback: null,\n + itemFallbackDimension: null\n + }, windowLoaded = false;\n +\n + $(window).bind(\'load.jcarousel\', function() { windowLoaded = true; });\n +\n + /**\n + * The jCarousel object.\n + *\n + * @constructor\n + * @class jcarousel\n + * @param e {HTMLElement} The element to create the carousel for.\n + * @param o {Object} A set of key/value pairs to set as configuration properties.\n + * @cat Plugins/jCarousel\n + */\n + $.jcarousel = function(e, o) {\n + this.options = $.extend({}, defaults, o || {});\n +\n + this.locked = false;\n + this.autoStopped = false;\n +\n + this.container = null;\n + this.clip = null;\n + this.list = null;\n + this.buttonNext = null;\n + this.buttonPrev = null;\n + this.buttonNextState = null;\n + this.buttonPrevState = null;\n +\n + // Only set if not explicitly passed as option\n + if (!o || o.rtl === undefined) {\n + this.options.rtl = ($(e).attr(\'dir\') || $(\'html\').attr(\'dir\') || \'\').toLowerCase() == \'rtl\';\n + }\n +\n + this.wh = !this.options.vertical ? \'width\' : \'height\';\n + this.lt = !this.options.vertical ? (this.options.rtl ? \'right\' : \'left\') : \'top\';\n +\n + // Extract skin class\n + var skin = \'\', split = e.className.split(\' \');\n +\n + for (var i = 0; i < split.length; i++) {\n + if (split[i].indexOf(\'jcarousel-skin\') != -1) {\n + $(e).removeClass(split[i]);\n + skin = split[i];\n + break;\n + }\n + }\n +\n + if (e.nodeName.toUpperCase() == \'UL\' || e.nodeName.toUpperCase() == \'OL\') {\n + this.list = $(e);\n + this.clip = this.list.parents(\'.jcarousel-clip\');\n + this.container = this.list.parents(\'.jcarousel-container\');\n + } else {\n + this.container = $(e);\n + this.list = this.container.find(\'ul,ol\').eq(0);\n + this.clip = this.container.find(\'.jcarousel-clip\');\n + }\n +\n + if (this.clip.size() === 0) {\n + this.clip = this.list.wrap(\'<div></div>\').parent();\n + }\n +\n + if (this.container.size() === 0) {\n + this.container = this.clip.wrap(\'<div></div>\').parent();\n + }\n +\n + if (skin !== \'\' && this.container.parent()[0].className.indexOf(\'jcarousel-skin\') == -1) {\n + this.container.wrap(\'<div class=" \'+ skin + \'"></div>\');\n + }\n +\n + this.buttonPrev = $(\'.jcarousel-prev\', this.container);\n +\n + if (this.buttonPrev.size() === 0 && this.options.buttonPrevHTML !== null) {\n + this.buttonPrev = $(this.options.buttonPrevHTML).appendTo(this.container);\n + }\n +\n + this.buttonPrev.addClass(this.className(\'jcarousel-prev\'));\n +\n + this.buttonNext = $(\'.jcarousel-next\', this.container);\n +\n + if (this.buttonNext.size() === 0 && this.options.buttonNextHTML !== null) {\n + this.buttonNext = $(this.options.buttonNextHTML).appendTo(this.container);\n + }\n +\n + this.buttonNext.addClass(this.className(\'jcarousel-next\'));\n +\n + this.clip.addClass(this.className(\'jcarousel-clip\')).css({\n + position: \'relative\'\n + });\n +\n + this.list.addClass(this.className(\'jcarousel-list\')).css({\n + overflow: \'hidden\',\n + position: \'relative\',\n + top: 0,\n + margin: 0,\n + padding: 0\n + }).css((this.options.rtl ? \'right\' : \'left\'), 0);\n +\n + this.container.addClass(this.className(\'jcarousel-container\')).css({\n + position: \'relative\'\n + });\n +\n + if (!this.options.vertical && this.options.rtl) {\n + this.container.addClass(\'jcarousel-direction-rtl\').attr(\'dir\', \'rtl\');\n + }\n +\n + var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null;\n + var li = this.list.children(\'li\');\n +\n + var self = this;\n +\n + if (li.size() > 0) {\n + var wh = 0, j = this.options.offset;\n + li.each(function() {\n + self.format(this, j++);\n + wh += self.dimension(this, di);\n + });\n +\n + this.list.css(this.wh, (wh + 100) + \'px\');\n +\n + // Only set if not explicitly passed as option\n + if (!o || o.size === undefined) {\n + this.options.size = li.size();\n + }\n + }\n +\n + // For whatever reason, .show() does not work in Safari...\n + this.container.css(\'display\', \'block\');\n + this.buttonNext.css(\'display\', \'block\');\n + this.buttonPrev.css(\'display\', \'block\');\n +\n + this.funcNext = function() { self.next(); };\n + this.funcPrev = function() { self.prev(); };\n + this.funcResize = function() { \n + if (self.resizeTimer) {\n + clearTimeout(self.resizeTimer);\n + }\n +\n + self.resizeTimer = setTimeout(function() {\n + self.reload();\n + }, 100);\n + };\n +\n + if (this.options.initCallback !== null) {\n + this.options.initCallback(this, \'init\');\n + }\n +\n + if (!windowLoaded && $.browser.safari) {\n + this.buttons(false, false);\n + $(window).bind(\'load.jcarousel\', function() { self.setup(); });\n + } else {\n + this.setup();\n + }\n + };\n +\n + // Create shortcut for internal use\n + var $jc = $.jcarousel;\n +\n + $jc.fn = $jc.prototype = {\n + jcarousel: \'0.2.8\'\n + };\n +\n + $jc.fn.extend = $jc.extend = $.extend;\n +\n + $jc.fn.extend({\n + /**\n + * Setups the carousel.\n + *\n + * @method setup\n + * @return undefined\n + */\n + setup: function() {\n + this.first = null;\n + this.last = null;\n + this.prevFirst = null;\n + this.prevLast = null;\n + this.animating = false;\n + this.timer = null;\n + this.resizeTimer = null;\n + this.tail = null;\n + this.inTail = false;\n +\n + if (this.locked) {\n + return;\n + }\n +\n + this.list.css(this.lt, this.pos(this.options.offset) + \'px\');\n + var p = this.pos(this.options.start, true);\n + this.prevFirst = this.prevLast = null;\n + this.animate(p, false);\n +\n + $(window).unbind(\'resize.jcarousel\', this.funcResize).bind(\'resize.jcarousel\', this.funcResize);\n +\n + if (this.options.setupCallback !== null) {\n + this.options.setupCallback(this);\n + }\n + },\n +\n + /**\n + * Clears the list and resets the carousel.\n + *\n + * @method reset\n + * @return undefined\n + */\n + reset: function() {\n + this.list.empty();\n +\n + this.list.css(this.lt, \'0px\');\n + this.list.css(this.wh, \'10px\');\n +\n + if (this.options.initCallback !== null) {\n + this.options.initCallback(this, \'reset\');\n + }\n +\n + this.setup();\n + },\n +\n + /**\n + * Reloads the carousel and adjusts positions.\n + *\n + * @method reload\n + * @return undefined\n + */\n + reload: function() {\n + if (this.tail !== null && this.inTail) {\n + this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);\n + }\n +\n + this.tail = null;\n + this.inTail = false;\n +\n + if (this.options.reloadCallback !== null) {\n + this.options.reloadCallback(this);\n + }\n +\n + if (this.options.visible !== null) {\n + var self = this;\n + var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;\n + this.list.children(\'li\').each(function(i) {\n + wh += self.dimension(this, di);\n + if (i + 1 < self.first) {\n + lt = wh;\n + }\n + });\n +\n + this.list.css(this.wh, wh + \'px\');\n + this.list.css(this.lt, -lt + \'px\');\n + }\n +\n + this.scroll(this.first, false);\n + },\n +\n + /**\n + * Locks the carousel.\n + *\n + * @method lock\n + * @return undefined\n + */\n + lock: function() {\n + this.locked = true;\n + this.buttons();\n + },\n +\n + /**\n + * Unlocks the carousel.\n + *\n + * @method unlock\n + * @return undefined\n + */\n + unlock: function() {\n + this.locked = false;\n + this.buttons();\n + },\n +\n + /**\n + * Sets the size of the carousel.\n + *\n + * @method size\n + * @return undefined\n + * @param s {Number} The size of the carousel.\n + */\n + size: function(s) {\n + if (s !== undefined) {\n + this.options.size = s;\n + if (!this.locked) {\n + this.buttons();\n + }\n + }\n +\n + return this.options.size;\n + },\n +\n + /**\n + * Checks whether a list element exists for the given index (or index range).\n + *\n + * @method get\n + * @return bool\n + * @param i {Number} The index of the (first) element.\n + * @param i2 {Number} The index of the last element.\n + */\n + has: function(i, i2) {\n + if (i2 === undefined || !i2) {\n + i2 = i;\n + }\n +\n + if (this.options.size !== null && i2 > this.options.size) {\n + i2 = this.options.size;\n + }\n +\n + for (var j = i; j <= i2; j++) {\n + var e = this.get(j);\n + if (!e.length || e.hasClass(\'jcarousel-item-placeholder\')) {\n + return false;\n + }\n + }\n +\n + return true;\n + },\n +\n + /**\n + * Returns a jQuery object with list element for the given index.\n + *\n + * @method get\n + * @return jQuery\n + * @param i {Number} The index of the element.\n + */\n + get: function(i) {\n + return $(\'>.jcarousel-item-\' + i, this.list);\n + },\n +\n + /**\n + * Adds an element for the given index to the list.\n + * If the element already exists, it updates the inner html.\n + * Returns the created element as jQuery object.\n + *\n + * @method add\n + * @return jQuery\n + * @param i {Number} The index of the element.\n + * @param s {String} The innerHTML of the element.\n + */\n + add: function(i, s) {\n + var e = this.get(i), old = 0, n = $(s);\n +\n + if (e.length === 0) {\n + var c, j = $jc.intval(i);\n + e = this.create(i);\n + while (true) {\n + c = this.get(--j);\n + if (j <= 0 || c.length) {\n + if (j <= 0) {\n + this.list.prepend(e);\n + } else {\n + c.after(e);\n + }\n + break;\n + }\n + }\n + } else {\n + old = this.dimension(e);\n + }\n +\n + if (n.get(0).nodeName.toUpperCase() == \'LI\') {\n + e.replaceWith(n);\n + e = n;\n + } else {\n + e.empty().append(s);\n + }\n +\n + this.format(e.removeClass(this.className(\'jcarousel-item-placeholder\')), i);\n +\n + var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null;\n + var wh = this.dimension(e, di) - old;\n +\n + if (i > 0 && i < this.first) {\n + this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + \'px\');\n + }\n +\n + this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + \'px\');\n +\n + return e;\n + },\n +\n + /**\n + * Removes an element for the given index from the list.\n + *\n + * @method remove\n + * @return undefined\n + * @param i {Number} The index of the element.\n + */\n + remove: function(i) {\n + var e = this.get(i);\n +\n + // Check if item exists and is not currently visible\n + if (!e.length || (i >= this.first && i <= this.last)) {\n + return;\n + }\n +\n + var d = this.dimension(e);\n +\n + if (i < this.first) {\n + this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + \'px\');\n + }\n +\n + e.remove();\n +\n + this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + \'px\');\n + },\n +\n + /**\n + * Moves the carousel forwards.\n + *\n + * @method next\n + * @return undefined\n + */\n + next: function() {\n + if (this.tail !== null && !this.inTail) {\n + this.scrollTail(false);\n + } else {\n + this.scroll(((this.options.wrap == \'both\' || this.options.wrap == \'last\') && this.options.size !== null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);\n + }\n + },\n +\n + /**\n + * Moves the carousel backwards.\n + *\n + * @method prev\n + * @return undefined\n + */\n + prev: function() {\n + if (this.tail !== null && this.inTail) {\n + this.scrollTail(true);\n + } else {\n + this.scroll(((this.options.wrap == \'both\' || this.options.wrap == \'first\') && this.options.size !== null && this.first == 1) ? this.options.size : this.first - this.options.scroll);\n + }\n + },\n +\n + /**\n + * Scrolls the tail of the carousel.\n + *\n + * @method scrollTail\n + * @return undefined\n + * @param b {Boolean} Whether scroll the tail back or forward.\n + */\n + scrollTail: function(b) {\n + if (this.locked || this.animating || !this.tail) {\n + return;\n + }\n +\n + this.pauseAuto();\n +\n + var pos = $jc.intval(this.list.css(this.lt));\n +\n + pos = !b ? pos - this.tail : pos + this.tail;\n + this.inTail = !b;\n +\n + // Save for callbacks\n + this.prevFirst = this.first;\n + this.prevLast = this.last;\n +\n + this.animate(pos);\n + },\n +\n + /**\n + * Scrolls the carousel to a certain position.\n + *\n + * @method scroll\n + * @return undefined\n + * @param i {Number} The index of the element to scoll to.\n + * @param a {Boolean} Flag indicating whether to perform animation.\n + */\n + scroll: function(i, a) {\n + if (this.locked || this.animating) {\n + return;\n + }\n +\n + this.pauseAuto();\n + this.animate(this.pos(i), a);\n + },\n +\n + /**\n + * Prepares the carousel and return the position for a certian index.\n + *\n + * @method pos\n + * @return {Number}\n + * @param i {Number} The index of the element to scoll to.\n + * @param fv {Boolean} Whether to force last item to be visible.\n + */\n + pos: function(i, fv) {\n + var pos = $jc.intval(this.list.css(this.lt));\n +\n + if (this.locked || this.animating) {\n + return pos;\n + }\n +\n + if (this.options.wrap != \'circular\') {\n + i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);\n + }\n +\n + var back = this.first > i;\n +\n + // Create placeholders, new list width/height\n + // and new list position\n + var f = this.options.wrap != \'circular\' && this.first <= 1 ? 1 : this.first;\n + var c = back ? this.get(f) : this.get(this.last);\n + var j = back ? f : f - 1;\n + var e = null, l = 0, p = false, d = 0, g;\n +\n + while (back ? --j >= i : ++j < i) {\n + e = this.get(j);\n + p = !e.length;\n + if (e.length === 0) {\n + e = this.create(j).addClass(this.className(\'jcarousel-item-placeholder\'));\n + c[back ? \'before\' : \'after\' ](e);\n +\n + if (this.first !== null && this.options.wrap == \'circular\' && this.options.size !== null && (j <= 0 || j > this.options.size)) {\n + g = this.get(this.index(j));\n + if (g.length) {\n + e = this.add(j, g.clone(true));\n + }\n + }\n + }\n +\n + c = e;\n + d = this.dimension(e);\n +\n + if (p) {\n + l += d;\n + }\n +\n + if (this.first !== null && (this.options.wrap == \'circular\' || (j >= 1 && (this.options.size === null || j <= this.options.size)))) {\n + pos = back ? pos + d : pos - d;\n + }\n + }\n +\n + // Calculate visible items\n + var clipping = this.clipping(), cache = [], visible = 0, v = 0;\n + c = this.get(i - 1);\n + j = i;\n +\n + while (++visible) {\n + e = this.get(j);\n + p = !e.length;\n + if (e.length === 0) {\n + e = this.create(j).addClass(this.className(\'jcarousel-item-placeholder\'));\n + // This should only happen on a next scroll\n + if (c.length === 0) {\n + this.list.prepend(e);\n + } else {\n + c[back ? \'before\' : \'after\' ](e);\n + }\n +\n + if (this.first !== null && this.options.wrap == \'circular\' && this.options.size !== null && (j <= 0 || j > this.options.size)) {\n + g = this.get(this.index(j));\n + if (g.length) {\n + e = this.add(j, g.clone(true));\n + }\n + }\n + }\n +\n + c = e;\n + d = this.dimension(e);\n + if (d === 0) {\n + throw new Error(\'jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...\');\n + }\n +\n + if (this.options.wrap != \'circular\' && this.options.size !== null && j > this.options.size) {\n + cache.push(e);\n + } else if (p) {\n + l += d;\n + }\n +\n + v += d;\n +\n + if (v >= clipping) {\n + break;\n + }\n +\n + j++;\n + }\n +\n + // Remove out-of-range placeholders\n + for (var x = 0; x < cache.length; x++) {\n + cache[x].remove();\n + }\n +\n + // Resize list\n + if (l > 0) {\n + this.list.css(this.wh, this.dimension(this.list) + l + \'px\');\n +\n + if (back) {\n + pos -= l;\n + this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + \'px\');\n + }\n + }\n +\n + // Calculate first and last item\n + var last = i + visible - 1;\n + if (this.options.wrap != \'circular\' && this.options.size && last > this.options.size) {\n + last = this.options.size;\n + }\n +\n + if (j > last) {\n + visible = 0;\n + j = last;\n + v = 0;\n + while (++visible) {\n + e = this.get(j--);\n + if (!e.length) {\n + break;\n + }\n + v += this.dimension(e);\n + if (v >= clipping) {\n + break;\n + }\n + }\n + }\n +\n + var first = last - visible + 1;\n + if (this.options.wrap != \'circular\' && first < 1) {\n + first = 1;\n + }\n +\n + if (this.inTail && back) {\n + pos += this.tail;\n + this.inTail = false;\n + }\n +\n + this.tail = null;\n + if (this.options.wrap != \'circular\' && last == this.options.size && (last - visible + 1) >= 1) {\n + var m = $jc.intval(this.get(last).css(!this.options.vertical ? \'marginRight\' : \'marginBottom\'));\n + if ((v - m) > clipping) {\n + this.tail = v - clipping - m;\n + }\n + }\n +\n + if (fv && i === this.options.size && this.tail) {\n + pos -= this.tail;\n + this.inTail = true;\n + }\n +\n + // Adjust position\n + while (i-- > first) {\n + pos += this.dimension(this.get(i));\n + }\n +\n + // Save visible item range\n + this.prevFirst = this.first;\n + this.prevLast = this.last;\n + this.first = first;\n + this.last = last;\n +\n + return pos;\n + },\n +\n + /**\n + * Animates the carousel to a certain position.\n + *\n + * @method animate\n + * @return undefined\n + * @param p {Number} Position to scroll to.\n + * @param a {Boolean} Flag indicating whether to perform animation.\n + */\n + animate: function(p, a) {\n + if (this.locked || this.animating) {\n + return;\n + }\n +\n + this.animating = true;\n +\n + var self = this;\n + var scrolled = function() {\n + self.animating = false;\n +\n + if (p === 0) {\n + self.list.css(self.lt, 0);\n + }\n +\n + if (!self.autoStopped && (self.options.wrap == \'circular\' || self.options.wrap == \'both\' || self.options.wrap == \'last\' || self.options.size === null || self.last < self.options.size || (self.last == self.options.size && self.tail !== null && !self.inTail))) {\n + self.startAuto();\n + }\n +\n + self.buttons();\n + self.notify(\'onAfterAnimation\');\n +\n + // This function removes items which are appended automatically for circulation.\n + // This prevents the list from growing infinitely.\n + if (self.options.wrap == \'circular\' && self.options.size !== null) {\n + for (var i = self.prevFirst; i <= self.prevLast; i++) {\n + if (i !== null && !(i >= self.first && i <= self.last) && (i < 1 || i > self.options.size)) {\n + self.remove(i);\n + }\n + }\n + }\n + };\n +\n + this.notify(\'onBeforeAnimation\');\n +\n + // Animate\n + if (!this.options.animation || a === false) {\n + this.list.css(this.lt, p + \'px\');\n + scrolled();\n + } else {\n + var o = !this.options.vertical ? (this.options.rtl ? {\'right\': p} : {\'left\': p}) : {\'top\': p};\n + // Define animation settings.\n + var settings = {\n + duration: this.options.animation,\n + easing: this.options.easing,\n + complete: scrolled\n + };\n + // If we have a step callback, specify it as well.\n + if ($.isFunction(this.options.animationStepCallback)) {\n + settings.step = this.options.animationStepCallback;\n + }\n + // Start the animation.\n + this.list.animate(o, settings);\n + }\n + },\n +\n + /**\n + * Starts autoscrolling.\n + *\n + * @method auto\n + * @return undefined\n + * @param s {Number} Seconds to periodically autoscroll the content.\n + */\n + startAuto: function(s) {\n + if (s !== undefined) {\n + this.options.auto = s;\n + }\n +\n + if (this.options.auto === 0) {\n + return this.stopAuto();\n + }\n +\n + if (this.timer !== null) {\n + return;\n + }\n +\n + this.autoStopped = false;\n +\n + var self = this;\n + this.timer = window.setTimeout(function() { self.next(); }, this.options.auto * 1000);\n + },\n +\n + /**\n + * Stops autoscrolling.\n + *\n + * @method stopAuto\n + * @return undefined\n + */\n + stopAuto: function() {\n + this.pauseAuto();\n + this.autoStopped = true;\n + },\n +\n + /**\n + * Pauses autoscrolling.\n + *\n + * @method pauseAuto\n + * @return undefined\n + */\n + pauseAuto: function() {\n + if (this.timer === null) {\n + return;\n + }\n +\n + window.clearTimeout(this.timer);\n + this.timer = null;\n + },\n +\n + /**\n + * Sets the states of the prev/next buttons.\n + *\n + * @method buttons\n + * @return undefined\n + */\n + buttons: function(n, p) {\n + if (n == null) {\n + n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != \'first\') || this.options.size === null || this.last < this.options.size);\n + if (!this.locked && (!this.options.wrap || this.options.wrap == \'first\') && this.options.size !== null && this.last >= this.options.size) {\n + n = this.tail !== null && !this.inTail;\n + }\n + }\n +\n + if (p == null) {\n + p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != \'last\') || this.first > 1);\n + if (!this.locked && (!this.options.wrap || this.options.wrap == \'last\') && this.options.size !== null && this.first == 1) {\n + p = this.tail !== null && this.inTail;\n + }\n + }\n +\n + var self = this;\n +\n + if (this.buttonNext.size() > 0) {\n + this.buttonNext.unbind(this.options.buttonNextEvent + \'.jcarousel\', this.funcNext);\n +\n + if (n) {\n + this.buttonNext.bind(this.options.buttonNextEvent + \'.jcarousel\', this.funcNext);\n + }\n +\n + this.buttonNext[n ? \'removeClass\' : \'addClass\'](this.className(\'jcarousel-next-disabled\')).attr(\'disabled\', n ? false : true);\n +\n + if (this.options.buttonNextCallback !== null && this.buttonNext.data(\'jcarouselstate\') != n) {\n + this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); }).data(\'jcarouselstate\', n);\n + }\n + } else {\n + if (this.options.buttonNextCallback !== null && this.buttonNextState != n) {\n + this.options.buttonNextCallback(self, null, n);\n + }\n + }\n +\n + if (this.buttonPrev.size() > 0) {\n + this.buttonPrev.unbind(this.options.buttonPrevEvent + \'.jcarousel\', this.funcPrev);\n +\n + if (p) {\n + this.buttonPrev.bind(this.options.buttonPrevEvent + \'.jcarousel\', this.funcPrev);\n + }\n +\n + this.buttonPrev[p ? \'removeClass\' : \'addClass\'](this.className(\'jcarousel-prev-disabled\')).attr(\'disabled\', p ? false : true);\n +\n + if (this.options.buttonPrevCallback !== null && this.buttonPrev.data(\'jcarouselstate\') != p) {\n + this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); }).data(\'jcarouselstate\', p);\n + }\n + } else {\n + if (this.options.buttonPrevCallback !== null && this.buttonPrevState != p) {\n + this.options.buttonPrevCallback(self, null, p);\n + }\n + }\n +\n + this.buttonNextState = n;\n + this.buttonPrevState = p;\n + },\n +\n + /**\n + * Notify callback of a specified event.\n + *\n + * @method notify\n + * @return undefined\n + * @param evt {String} The event name\n + */\n + notify: function(evt) {\n + var state = this.prevFirst === null ? \'init\' : (this.prevFirst < this.first ? \'next\' : \'prev\');\n +\n + // Load items\n + this.callback(\'itemLoadCallback\', evt, state);\n +\n + if (this.prevFirst !== this.first) {\n + this.callback(\'itemFirstInCallback\', evt, state, this.first);\n + this.callback(\'itemFirstOutCallback\', evt, state, this.prevFirst);\n + }\n +\n + if (this.prevLast !== this.last) {\n + this.callback(\'itemLastInCallback\', evt, state, this.last);\n + this.callback(\'itemLastOutCallback\', evt, state, this.prevLast);\n + }\n +\n + this.callback(\'itemVisibleInCallback\', evt, state, this.first, this.last, this.prevFirst, this.prevLast);\n + this.callback(\'itemVisibleOutCallback\', evt, state, this.prevFirst, this.prevLast, this.first, this.last);\n + },\n +\n + callback: function(cb, evt, state, i1, i2, i3, i4) {\n + if (this.options[cb] == null || (typeof this.options[cb] != \'object\' && evt != \'onAfterAnimation\')) {\n + return;\n + }\n +\n + var callback = typeof this.options[cb] == \'object\' ? this.options[cb][evt] : this.options[cb];\n +\n + if (!$.isFunction(callback)) {\n + return;\n + }\n +\n + var self = this;\n +\n + if (i1 === undefined) {\n + callback(self, state, evt);\n + } else if (i2 === undefined) {\n + this.get(i1).each(function() { callback(self, this, i1, state, evt); });\n + } else {\n + var call = function(i) {\n + self.get(i).each(function() { callback(self, this, i, state, evt); });\n + };\n + for (var i = i1; i <= i2; i++) {\n + if (i !== null && !(i >= i3 && i <= i4)) {\n + call(i);\n + }\n + }\n + }\n + },\n +\n + create: function(i) {\n + return this.format(\'<li></li>\', i);\n + },\n +\n + format: function(e, i) {\n + e = $(e);\n + var split = e.get(0).className.split(\' \');\n + for (var j = 0; j < split.length; j++) {\n + if (split[j].indexOf(\'jcarousel-\') != -1) {\n + e.removeClass(split[j]);\n + }\n + }\n + e.addClass(this.className(\'jcarousel-item\')).addClass(this.className(\'jcarousel-item-\' + i)).css({\n + \'float\': (this.options.rtl ? \'right\' : \'left\'),\n + \'list-style\': \'none\'\n + }).attr(\'jcarouselindex\', i);\n + return e;\n + },\n +\n + className: function(c) {\n + return c + \' \' + c + (!this.options.vertical ? \'-horizontal\' : \'-vertical\');\n + },\n +\n + dimension: function(e, d) {\n + var el = $(e);\n +\n + if (d == null) {\n + return !this.options.vertical ?\n + (el.outerWidth(true) || $jc.intval(this.options.itemFallbackDimension)) :\n + (el.outerHeight(true) || $jc.intval(this.options.itemFallbackDimension));\n + } else {\n + var w = !this.options.vertical ?\n + d - $jc.intval(el.css(\'marginLeft\')) - $jc.intval(el.css(\'marginRight\')) :\n + d - $jc.intval(el.css(\'marginTop\')) - $jc.intval(el.css(\'marginBottom\'));\n +\n + $(el).css(this.wh, w + \'px\');\n +\n + return this.dimension(el);\n + }\n + },\n +\n + clipping: function() {\n + return !this.options.vertical ?\n + this.clip[0].offsetWidth - $jc.intval(this.clip.css(\'borderLeftWidth\')) - $jc.intval(this.clip.css(\'borderRightWidth\')) :\n + this.clip[0].offsetHeight - $jc.intval(this.clip.css(\'borderTopWidth\')) - $jc.intval(this.clip.css(\'borderBottomWidth\'));\n + },\n +\n + index: function(i, s) {\n + if (s == null) {\n + s = this.options.size;\n + }\n +\n + return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;\n + }\n + });\n +\n + $jc.extend({\n + /**\n + * Gets/Sets the global default configuration properties.\n + *\n + * @method defaults\n + * @return {Object}\n + * @param d {Object} A set of key/value pairs to set as configuration properties.\n + */\n + defaults: function(d) {\n + return $.extend(defaults, d || {});\n + },\n +\n + intval: function(v) {\n + v = parseInt(v, 10);\n + return isNaN(v) ? 0 : v;\n + },\n +\n + windowLoaded: function() {\n + windowLoaded = true;\n + }\n + });\n +\n + /**\n + * Creates a carousel for all matched elements.\n + *\n + * @example $("#mycarousel").jcarousel();\n + * @before <ul id="mycarousel" class="jcarousel-skin-name"><li>First item</li><li>Second item</li></ul>\n + * @result\n + *\n + * <div class="jcarousel-skin-name">\n + * <div class="jcarousel-container">\n + * <div class="jcarousel-clip">\n + * <ul class="jcarousel-list">\n + * <li class="jcarousel-item-1">First item</li>\n + * <li class="jcarousel-item-2">Second item</li>\n + * </ul>\n + * </div>\n + * <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>\n + * <div class="jcarousel-next"></div>\n + * </div>\n + * </div>\n + *\n + * @method jcarousel\n + * @return jQuery\n + * @param o {Hash|String} A set of key/value pairs to set as configuration properties or a method name to call on a formerly created instance.\n + */\n + $.fn.jcarousel = function(o) {\n + if (typeof o == \'string\') {\n + var instance = $(this).data(\'jcarousel\'), args = Array.prototype.slice.call(arguments, 1);\n + return instance[o].apply(instance, args);\n + } else {\n + return this.each(function() {\n + var instance = $(this).data(\'jcarousel\');\n + if (instance) {\n + if (o) {\n + $.extend(instance.options, o);\n + }\n + instance.reload();\n + } else {\n + $(this).data(\'jcarousel\', new $jc(this, o));\n + }\n + });\n + }\n + };\n +\n +})(jQuery);\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>35203</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery.jcarousel.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_jcarousel/bt/description b/bt5/erp5_jquery_plugin_jcarousel/bt/description index d9ec6a2a550b7e03a53f4bc52cdbf1df060a5f1a..57b767bf49c17947ba62013af03e6e96acb188a9 100644 --- a/bt5/erp5_jquery_plugin_jcarousel/bt/description +++ b/bt5/erp5_jquery_plugin_jcarousel/bt/description @@ -1 +1,2 @@ -This Business Template contains only static files of jCarousel jQuery library. \ No newline at end of file +This Business Template contains only static files of jCarousel jQuery library 0.2.8. +http://sorgalla.com/jcarousel/ \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jcarousel/bt/license b/bt5/erp5_jquery_plugin_jcarousel/bt/license index 3a3e12bcad97e4b3bdd6a8bb499fd23a4bcb0819..e6816b9c6b675e710f6fada261827c20bde2fc18 100644 --- a/bt5/erp5_jquery_plugin_jcarousel/bt/license +++ b/bt5/erp5_jquery_plugin_jcarousel/bt/license @@ -1 +1 @@ -GPL \ No newline at end of file +MIT/GPL \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jcarousel/bt/revision b/bt5/erp5_jquery_plugin_jcarousel/bt/revision index 56a6051ca2b02b04ef92d5150c9ef600403cb1de..d8263ee9860594d2806b0dfd1bfd17528b0ba2a4 100644 --- a/bt5/erp5_jquery_plugin_jcarousel/bt/revision +++ b/bt5/erp5_jquery_plugin_jcarousel/bt/revision @@ -1 +1 @@ -1 \ No newline at end of file +2 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n.xml b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n.xml new file mode 100644 index 0000000000000000000000000000000000000000..2b378c76de3dc2598cd6f34823ccf9b1591302ae --- /dev/null +++ b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>i18n</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/grid.locale-en.js.xml b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n/grid.locale-en.js.xml similarity index 60% rename from bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/grid.locale-en.js.xml rename to bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n/grid.locale-en.js.xml index e0349efc0199a448d4d02ac63c816b8c9bc239b6..e94eca3ae3f657cdf358e7c6047a94561e94e38d 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/grid.locale-en.js.xml +++ b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n/grid.locale-en.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts30690458.97</string> </value> + <value> <string>ts58176408.54</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -35,7 +35,8 @@ * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl.html\r\n **/\r\n -$.jgrid = {\r\n +$.jgrid = $.jgrid || {};\r\n +$.extend($.jgrid,{\r\n \tdefaults : {\r\n \t\trecordtext: "View {0} - {1} of {2}",\r\n \t\temptyrecords: "No records to view",\r\n @@ -115,9 +116,9 @@ $.jgrid = {\r\n \t\tmodel : "Length of colNames <> colModel!"\r\n \t},\r\n \tformatter : {\r\n -\t\tinteger : {thousandsSeparator: " ", defaultValue: \'0\'},\r\n -\t\tnumber : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: \'0.00\'},\r\n -\t\tcurrency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: \'0.00\'},\r\n +\t\tinteger : {thousandsSeparator: ",", defaultValue: \'0\'},\r\n +\t\tnumber : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: \'0.00\'},\r\n +\t\tcurrency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: \'0.00\'},\r\n \t\tdate : {\r\n \t\t\tdayNames: [\r\n \t\t\t\t"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat",\r\n @@ -128,21 +129,61 @@ $.jgrid = {\r\n \t\t\t\t"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"\r\n \t\t\t],\r\n \t\t\tAmPm : ["am","pm","AM","PM"],\r\n -\t\t\tS: function (j) {return j < 11 || j > 13 ? [\'st\', \'nd\', \'rd\', \'th\'][Math.min((j - 1) % 10, 3)] : \'th\'},\r\n +\t\t\tS: function (j) {return j < 11 || j > 13 ? [\'st\', \'nd\', \'rd\', \'th\'][Math.min((j - 1) % 10, 3)] : \'th\';},\r\n \t\t\tsrcformat: \'Y-m-d\',\r\n -\t\t\tnewformat: \'d/m/Y\',\r\n +\t\t\tnewformat: \'n/j/Y\',\r\n \t\t\tmasks : {\r\n +\t\t\t\t// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid\r\n +\t\t\t\t// and see http://docs.jquery.com/UI/Datepicker/formatDate\r\n +\t\t\t\t// and https://github.com/jquery/globalize#dates for alternative formats used frequently\r\n +\t\t\t\t// one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many\r\n +\t\t\t\t// information about date, time, numbers and currency formats used in different countries\r\n +\t\t\t\t// one should just convert the information in PHP format\r\n \t\t\t\tISO8601Long:"Y-m-d H:i:s",\r\n \t\t\t\tISO8601Short:"Y-m-d",\r\n -\t\t\t\tShortDate: "n/j/Y",\r\n -\t\t\t\tLongDate: "l, F d, Y",\r\n -\t\t\t\tFullDateTime: "l, F d, Y g:i:s A",\r\n -\t\t\t\tMonthDay: "F d",\r\n -\t\t\t\tShortTime: "g:i A",\r\n -\t\t\t\tLongTime: "g:i:s A",\r\n +\t\t\t\t// short date:\r\n +\t\t\t\t// n - Numeric representation of a month, without leading zeros\r\n +\t\t\t\t// j - Day of the month without leading zeros\r\n +\t\t\t\t// Y - A full numeric representation of a year, 4 digits\r\n +\t\t\t\t// example: 3/1/2012 which means 1 March 2012\r\n +\t\t\t\tShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy"\r\n +\t\t\t\t// long date:\r\n +\t\t\t\t// l - A full textual representation of the day of the week\r\n +\t\t\t\t// F - A full textual representation of a month\r\n +\t\t\t\t// d - Day of the month, 2 digits with leading zeros\r\n +\t\t\t\t// Y - A full numeric representation of a year, 4 digits\r\n +\t\t\t\tLongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy"\r\n +\t\t\t\t// long date with long time:\r\n +\t\t\t\t// l - A full textual representation of the day of the week\r\n +\t\t\t\t// F - A full textual representation of a month\r\n +\t\t\t\t// d - Day of the month, 2 digits with leading zeros\r\n +\t\t\t\t// Y - A full numeric representation of a year, 4 digits\r\n +\t\t\t\t// g - 12-hour format of an hour without leading zeros\r\n +\t\t\t\t// i - Minutes with leading zeros\r\n +\t\t\t\t// s - Seconds, with leading zeros\r\n +\t\t\t\t// A - Uppercase Ante meridiem and Post meridiem (AM or PM)\r\n +\t\t\t\tFullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt"\r\n +\t\t\t\t// month day:\r\n +\t\t\t\t// F - A full textual representation of a month\r\n +\t\t\t\t// d - Day of the month, 2 digits with leading zeros\r\n +\t\t\t\tMonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd"\r\n +\t\t\t\t// short time (without seconds)\r\n +\t\t\t\t// g - 12-hour format of an hour without leading zeros\r\n +\t\t\t\t// i - Minutes with leading zeros\r\n +\t\t\t\t// A - Uppercase Ante meridiem and Post meridiem (AM or PM)\r\n +\t\t\t\tShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt"\r\n +\t\t\t\t// long time (with seconds)\r\n +\t\t\t\t// g - 12-hour format of an hour without leading zeros\r\n +\t\t\t\t// i - Minutes with leading zeros\r\n +\t\t\t\t// s - Seconds, with leading zeros\r\n +\t\t\t\t// A - Uppercase Ante meridiem and Post meridiem (AM or PM)\r\n +\t\t\t\tLongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt"\r\n \t\t\t\tSortableDateTime: "Y-m-d\\\\TH:i:s",\r\n \t\t\t\tUniversalSortableDateTime: "Y-m-d H:i:sO",\r\n -\t\t\t\tYearMonth: "F, Y"\r\n +\t\t\t\t// month with year\r\n +\t\t\t\t// Y - A full numeric representation of a year, 4 digits\r\n +\t\t\t\t// F - A full textual representation of a month\r\n +\t\t\t\tYearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"\r\n \t\t\t},\r\n \t\t\treformatAfterEdit : false\r\n \t\t},\r\n @@ -152,7 +193,7 @@ $.jgrid = {\r\n \t\tcheckbox : {disabled:true},\r\n \t\tidName : \'id\'\r\n \t}\r\n -};\r\n +});\r\n })(jQuery);\r\n @@ -164,7 +205,7 @@ $.jgrid = {\r\n </item> <item> <key> <string>size</string> </key> - <value> <int>3927</int> </value> + <value> <int>6531</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/grid.locale-fr.js.xml b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n/grid.locale-fr.js.xml similarity index 97% rename from bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/grid.locale-fr.js.xml rename to bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n/grid.locale-fr.js.xml index d2502f08190c69e6fad8248f876476c6d07b6aa9..33b241ceed53c180e9221b46ea8ab3c904f6ef70 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/grid.locale-fr.js.xml +++ b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/i18n/grid.locale-fr.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts34648236.68</string> </value> + <value> <string>ts58176414.84</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -46,9 +46,9 @@ $.extend($.jgrid,{\r\n \tsearch : {\r\n \t\tcaption: "Recherche...",\r\n \t\tFind: "Chercher",\r\n -\t\tReset: "Annuler",\r\n +\t\tReset: "Réinitialiser",\r\n \t\todata : [\'égal\', \'différent\', \'inférieur\', \'inférieur ou égal\',\'supérieur\',\'supérieur ou égal\', \'commence par\',\'ne commence pas par\',\'est dans\',"n\'est pas dans",\'finit par\',\'ne finit pas par\',\'contient\',\'ne contient pas\'],\r\n -\t\tgroupOps: [\t{ op: "AND", text: "tous" },\t{ op: "OR", text: "aucun" }\t],\r\n +\t\tgroupOps: [\t{ op: "AND", text: "tous" },\t{ op: "OR", text: "au moins un" }\t],\r\n \t\tmatchText: " correspondance",\r\n \t\trulesText: " règles"\r\n \t},\r\n @@ -163,7 +163,7 @@ $.extend($.jgrid,{\r\n </item> <item> <key> <string>size</string> </key> - <value> <int>4273</int> </value> + <value> <int>4286</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.min.js.xml b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..6055a773077754b11c879edc40d3379b5e963869 --- /dev/null +++ b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.min.js.xml @@ -0,0 +1,631 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58176220.64</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery.jqGrid.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>260854</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery.jqGrid.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string>/* \n +* jqGrid 4.4.1 - jQuery Grid \n +* Copyright (c) 2008, Tony Tomov, tony@trirand.com \n +* Dual licensed under the MIT and GPL licenses \n +* http://www.opensource.org/licenses/mit-license.php \n +* http://www.gnu.org/licenses/gpl-2.0.html \n +* Date:2012-08-28 \n +* Modules: grid.base.js; jquery.fmatter.js; grid.custom.js; grid.common.js; grid.formedit.js; grid.filter.js; grid.inlinedit.js; grid.celledit.js; jqModal.js; jqDnR.js; grid.subgrid.js; grid.grouping.js; grid.treegrid.js; grid.import.js; JsonXml.js; grid.tbltogrid.js; grid.jqueryui.js; \n +*/\n +(function(b){b.jgrid=b.jgrid||{};b.extend(b.jgrid,{version:"4.4.1",htmlDecode:function(b){return b\046\046("\046nbsp;"==b||"\046#160;"==b||1===b.length\046\046160===b.charCodeAt(0))?"":!b?b:(""+b).replace(/\046gt;/g,"\076").replace(/\046lt;/g,"\074").replace(/\046quot;/g,\'"\').replace(/\046amp;/g,"\046")},htmlEncode:function(b){return!b?b:(""+b).replace(/\046/g,"\046amp;").replace(/\\"/g,"\046quot;").replace(/\074/g,"\046lt;").replace(/\076/g,"\046gt;")},format:function(f){var e=b.makeArray(arguments).slice(1);void 0===f\046\046(f="");return f.replace(/\\{(\\d+)\\}/g,\n +function(b,d){return e[d]})},getCellIndex:function(f){f=b(f);if(f.is("tr"))return-1;f=(!f.is("td")\046\046!f.is("th")?f.closest("td,th"):f)[0];return b.browser.msie?b.inArray(f,f.parentNode.cells):f.cellIndex},stripHtml:function(b){var b=b+"",e=/\074("[^"]*"|\'[^\']*\'|[^\'"\076])*\076/gi;return b?(b=b.replace(e,""))\046\046"\046nbsp;"!==b\046\046"\046#160;"!==b?b.replace(/\\"/g,"\'"):"":b},stripPref:function(f,e){var c=b.type(f);if("string"==c||"number"==c)f=""+f,e=""!==f?(""+e).replace(""+f,""):e;return e},stringToDoc:function(b){var e;\n +if("string"!==typeof b)return b;try{e=(new DOMParser).parseFromString(b,"text/xml")}catch(c){e=new ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.loadXML(b)}return e\046\046e.documentElement\046\046"parsererror"!=e.documentElement.tagName?e:null},parse:function(f){"while(1);"==f.substr(0,9)\046\046(f=f.substr(9));"/*"==f.substr(0,2)\046\046(f=f.substr(2,f.length-4));f||(f="{}");return!0===b.jgrid.useJSON\046\046"object"===typeof JSON\046\046"function"===typeof JSON.parse?JSON.parse(f):eval("("+f+")")},parseDate:function(f,e){var c=\n +{m:1,d:1,y:1970,h:0,i:0,s:0,u:0},d,a,g;d=/[\\\\\\/:_;.,\\t\\T\\s-]/;if(e\046\046null!==e\046\046void 0!==e){e=b.trim(e);e=e.split(d);void 0!==b.jgrid.formatter.date.masks[f]\046\046(f=b.jgrid.formatter.date.masks[f]);var f=f.split(d),h=b.jgrid.formatter.date.monthNames,i=b.jgrid.formatter.date.AmPm,j=function(a,b){0===a?12===b\046\046(b=0):12!==b\046\046(b+=12);return b};d=0;for(a=f.length;d\074a;d++)"M"==f[d]\046\046(g=b.inArray(e[d],h),-1!==g\046\04612\076g\046\046(e[d]=g+1,c.m=e[d])),"F"==f[d]\046\046(g=b.inArray(e[d],h),-1!==g\046\04611\074g\046\046(e[d]=g+1-12,c.m=e[d])),\n +"a"==f[d]\046\046(g=b.inArray(e[d],i),-1!==g\046\046(2\076g\046\046e[d]==i[g])\046\046(e[d]=g,c.h=j(e[d],c.h))),"A"==f[d]\046\046(g=b.inArray(e[d],i),-1!==g\046\046(1\074g\046\046e[d]==i[g])\046\046(e[d]=g-2,c.h=j(e[d],c.h))),"g"===f[d]\046\046(c.h=parseInt(e[d],10)),void 0!==e[d]\046\046(c[f[d].toLowerCase()]=parseInt(e[d],10));c.m=parseInt(c.m,10)-1;d=c.y;70\074=d\046\04699\076=d?c.y=1900+c.y:0\074=d\046\04669\076=d\046\046(c.y=2E3+c.y);void 0!==c.j\046\046(c.d=c.j);void 0!==c.n\046\046(c.m=parseInt(c.n,10)-1)}return new Date(c.y,c.m,c.d,c.h,c.i,c.s,c.u)},jqID:function(b){return(""+b).replace(/[!"#$%\046\'()*+,.\\/:;\074=\076?@\\[\\\\\\]\\^`{|}~]/g,\n +"\\\\$\046")},guid:1,uidPref:"jqg",randId:function(f){return(f?f:b.jgrid.uidPref)+b.jgrid.guid++},getAccessor:function(b,e){var c,d,a=[],g;if("function"===typeof e)return e(b);c=b[e];if(void 0===c)try{if("string"===typeof e\046\046(a=e.split(".")),g=a.length)for(c=b;c\046\046g--;)d=a.shift(),c=c[d]}catch(h){}return c},getXmlData:function(f,e,c){var d="string"===typeof e?e.match(/^(.*)\\[(\\w+)\\]$/):null;if("function"===typeof e)return e(f);if(d\046\046d[2])return d[1]?b(d[1],f).attr(d[2]):b(f).attr(d[2]);f=b(e,f);return c?\n +f:0\074f.length?b(f).text():void 0},cellWidth:function(){var f=b("\074div class=\'ui-jqgrid\' style=\'left:10000px\'\076\074table class=\'ui-jqgrid-btable\' style=\'width:5px;\'\076\074tr class=\'jqgrow\'\076\074td style=\'width:5px;\'\076\074/td\076\074/tr\076\074/table\076\074/div\076"),e=f.appendTo("body").find("td").width();f.remove();return 5!==e},ajaxOptions:{},from:function(f){return new function(e,c){"string"==typeof e\046\046(e=b.data(e));var d=this,a=e,g=!0,f=!1,i=c,j=/[\\$,%]/g,l=null,k=null,m=0,o=!1,p="",v=[],u=!0;if("object"==typeof e\046\046e.push)0\074e.length\046\046\n +(u="object"!=typeof e[0]?!1:!0);else throw"data provides is not an array";this._hasData=function(){return null===a?!1:0===a.length?!1:!0};this._getStr=function(a){var b=[];f\046\046b.push("jQuery.trim(");b.push("String("+a+")");f\046\046b.push(")");g||b.push(".toLowerCase()");return b.join("")};this._strComp=function(a){return"string"==typeof a?".toString()":""};this._group=function(a,b){return{field:a.toString(),unique:b,items:[]}};this._toStr=function(a){f\046\046(a=b.trim(a));a=a.toString().replace(/\\\\/g,"\\\\\\\\").replace(/\\"/g,\n +\'\\\\"\');return g?a:a.toLowerCase()};this._funcLoop=function(d){var c=[];b.each(a,function(a,b){c.push(d(b))});return c};this._append=function(a){var b;i=null===i?"":i+(""===p?" \046\046 ":p);for(b=0;b\074m;b++)i+="(";o\046\046(i+="!");i+="("+a+")";o=!1;p="";m=0};this._setCommand=function(a,b){l=a;k=b};this._resetNegate=function(){o=!1};this._repeatCommand=function(a,b){return null===l?d:null!==a\046\046null!==b?l(a,b):null===k||!u?l(a):l(k,a)};this._equals=function(a,b){return 0===d._compare(a,b,1)};this._compare=function(a,\n +b,d){var c=Object.prototype.toString;void 0===d\046\046(d=1);void 0===a\046\046(a=null);void 0===b\046\046(b=null);if(null===a\046\046null===b)return 0;if(null===a\046\046null!==b)return 1;if(null!==a\046\046null===b)return-1;if("[object Date]"===c.call(a)\046\046"[object Date]"===c.call(b))return a\074b?-d:a\076b?d:0;!g\046\046("number"!==typeof a\046\046"number"!==typeof b)\046\046(a=(""+a).toLowerCase(),b=(""+b).toLowerCase());return a\074b?-d:a\076b?d:0};this._performSort=function(){0!==v.length\046\046(a=d._doSort(a,0))};this._doSort=function(a,b){var c=v[b].by,f=v[b].dir,\n +g=v[b].type,e=v[b].datefmt;if(b==v.length-1)return d._getOrder(a,c,f,g,e);b++;c=d._getGroup(a,c,f,g,e);f=[];for(g=0;g\074c.length;g++)for(var e=d._doSort(c[g].items,b),h=0;h\074e.length;h++)f.push(e[h]);return f};this._getOrder=function(a,c,f,g,e){var h=[],i=[],l="a"==f?1:-1,k,m;void 0===g\046\046(g="text");m="float"==g||"number"==g||"currency"==g||"numeric"==g?function(a){a=parseFloat((""+a).replace(j,""));return isNaN(a)?0:a}:"int"==g||"integer"==g?function(a){return a?parseFloat((""+a).replace(j,"")):0}:"date"==\n +g||"datetime"==g?function(a){return b.jgrid.parseDate(e,a).getTime()}:b.isFunction(g)?g:function(a){a||(a="");return b.trim((""+a).toUpperCase())};b.each(a,function(a,d){k=""!==c?b.jgrid.getAccessor(d,c):d;void 0===k\046\046(k="");k=m(k,d);i.push({vSort:k,index:a})});i.sort(function(a,b){a=a.vSort;b=b.vSort;return d._compare(a,b,l)});for(var g=0,o=a.length;g\074o;)f=i[g].index,h.push(a[f]),g++;return h};this._getGroup=function(a,c,g,f,e){var h=[],i=null,j=null,k;b.each(d._getOrder(a,c,g,f,e),function(a,g){k=\n +b.jgrid.getAccessor(g,c);void 0===k\046\046(k="");d._equals(j,k)||(j=k,null!==i\046\046h.push(i),i=d._group(c,k));i.items.push(g)});null!==i\046\046h.push(i);return h};this.ignoreCase=function(){g=!1;return d};this.useCase=function(){g=!0;return d};this.trim=function(){f=!0;return d};this.noTrim=function(){f=!1;return d};this.execute=function(){var c=i,g=[];if(null===c)return d;b.each(a,function(){eval(c)\046\046g.push(this)});a=g;return d};this.data=function(){return a};this.select=function(c){d._performSort();if(!d._hasData())return[];\n +d.execute();if(b.isFunction(c)){var g=[];b.each(a,function(a,b){g.push(c(b))});return g}return a};this.hasMatch=function(){if(!d._hasData())return!1;d.execute();return 0\074a.length};this.andNot=function(a,b,c){o=!o;return d.and(a,b,c)};this.orNot=function(a,b,c){o=!o;return d.or(a,b,c)};this.not=function(a,b,c){return d.andNot(a,b,c)};this.and=function(a,b,c){p=" \046\046 ";return void 0===a?d:d._repeatCommand(a,b,c)};this.or=function(a,b,c){p=" || ";return void 0===a?d:d._repeatCommand(a,b,c)};this.orBegin=\n +function(){m++;return d};this.orEnd=function(){null!==i\046\046(i+=")");return d};this.isNot=function(a){o=!o;return d.is(a)};this.is=function(a){d._append("this."+a);d._resetNegate();return d};this._compareValues=function(a,c,g,f,e){var h;h=u?"jQuery.jgrid.getAccessor(this,\'"+c+"\')":"this";void 0===g\046\046(g=null);var i=g,k=void 0===e.stype?"text":e.stype;if(null!==g)switch(k){case "int":case "integer":i=isNaN(Number(i))||""===i?"0":i;h="parseInt("+h+",10)";i="parseInt("+i+",10)";break;case "float":case "number":case "numeric":i=\n +(""+i).replace(j,"");i=isNaN(Number(i))||""===i?"0":i;h="parseFloat("+h+")";i="parseFloat("+i+")";break;case "date":case "datetime":i=""+b.jgrid.parseDate(e.newfmt||"Y-m-d",i).getTime();h=\'jQuery.jgrid.parseDate("\'+e.srcfmt+\'",\'+h+").getTime()";break;default:h=d._getStr(h),i=d._getStr(\'"\'+d._toStr(i)+\'"\')}d._append(h+" "+f+" "+i);d._setCommand(a,c);d._resetNegate();return d};this.equals=function(a,b,c){return d._compareValues(d.equals,a,b,"==",c)};this.notEquals=function(a,b,c){return d._compareValues(d.equals,\n +a,b,"!==",c)};this.isNull=function(a,b,c){return d._compareValues(d.equals,a,null,"===",c)};this.greater=function(a,b,c){return d._compareValues(d.greater,a,b,"\076",c)};this.less=function(a,b,c){return d._compareValues(d.less,a,b,"\074",c)};this.greaterOrEquals=function(a,b,c){return d._compareValues(d.greaterOrEquals,a,b,"\076=",c)};this.lessOrEquals=function(a,b,c){return d._compareValues(d.lessOrEquals,a,b,"\074=",c)};this.startsWith=function(a,c){var g=void 0===c||null===c?a:c,g=f?b.trim(g.toString()).length:\n +g.toString().length;u?d._append(d._getStr("jQuery.jgrid.getAccessor(this,\'"+a+"\')")+".substr(0,"+g+") == "+d._getStr(\'"\'+d._toStr(c)+\'"\')):(g=f?b.trim(c.toString()).length:c.toString().length,d._append(d._getStr("this")+".substr(0,"+g+") == "+d._getStr(\'"\'+d._toStr(a)+\'"\')));d._setCommand(d.startsWith,a);d._resetNegate();return d};this.endsWith=function(a,c){var g=void 0===c||null===c?a:c,g=f?b.trim(g.toString()).length:g.toString().length;u?d._append(d._getStr("jQuery.jgrid.getAccessor(this,\'"+a+\n +"\')")+".substr("+d._getStr("jQuery.jgrid.getAccessor(this,\'"+a+"\')")+".length-"+g+","+g+\') == "\'+d._toStr(c)+\'"\'):d._append(d._getStr("this")+".substr("+d._getStr("this")+\'.length-"\'+d._toStr(a)+\'".length,"\'+d._toStr(a)+\'".length) == "\'+d._toStr(a)+\'"\');d._setCommand(d.endsWith,a);d._resetNegate();return d};this.contains=function(a,b){u?d._append(d._getStr("jQuery.jgrid.getAccessor(this,\'"+a+"\')")+\'.indexOf("\'+d._toStr(b)+\'",0) \076 -1\'):d._append(d._getStr("this")+\'.indexOf("\'+d._toStr(a)+\'",0) \076 -1\');\n +d._setCommand(d.contains,a);d._resetNegate();return d};this.groupBy=function(b,c,g,f){return!d._hasData()?null:d._getGroup(a,b,c,g,f)};this.orderBy=function(a,c,g,f){c=void 0===c||null===c?"a":b.trim(c.toString().toLowerCase());if(null===g||void 0===g)g="text";if(null===f||void 0===f)f="Y-m-d";if("desc"==c||"descending"==c)c="d";if("asc"==c||"ascending"==c)c="a";v.push({by:a,dir:c,type:g,datefmt:f});return d};return d}(f,null)},extend:function(f){b.extend(b.fn.jqGrid,f);this.no_legacy_api||b.fn.extend(f)}});\n +b.fn.jqGrid=function(f){if("string"==typeof f){var e=b.jgrid.getAccessor(b.fn.jqGrid,f);if(!e)throw"jqGrid - No such method: "+f;var c=b.makeArray(arguments).slice(1);return e.apply(this,c)}return this.each(function(){if(!this.grid){var d=b.extend(!0,{url:"",height:150,page:1,rowNum:20,rowTotal:null,records:0,pager:"",pgbuttons:!0,pginput:!0,colModel:[],rowList:[],colNames:[],sortorder:"asc",sortname:"",datatype:"xml",mtype:"GET",altRows:!1,selarrrow:[],savedRow:[],shrinkToFit:!0,xmlReader:{},jsonReader:{},\n +subGrid:!1,subGridModel:[],reccount:0,lastpage:0,lastsort:0,selrow:null,beforeSelectRow:null,onSelectRow:null,onSortCol:null,ondblClickRow:null,onRightClickRow:null,onPaging:null,onSelectAll:null,loadComplete:null,gridComplete:null,loadError:null,loadBeforeSend:null,afterInsertRow:null,beforeRequest:null,beforeProcessing:null,onHeaderClick:null,viewrecords:!1,loadonce:!1,multiselect:!1,multikey:!1,editurl:null,search:!1,caption:"",hidegrid:!0,hiddengrid:!1,postData:{},userData:{},treeGrid:!1,treeGridModel:"nested",\n +treeReader:{},treeANode:-1,ExpandColumn:null,tree_root_level:0,prmNames:{page:"page",rows:"rows",sort:"sidx",order:"sord",search:"_search",nd:"nd",id:"id",oper:"oper",editoper:"edit",addoper:"add",deloper:"del",subgridid:"id",npage:null,totalrows:"totalrows"},forceFit:!1,gridstate:"visible",cellEdit:!1,cellsubmit:"remote",nv:0,loadui:"enable",toolbar:[!1,""],scroll:!1,multiboxonly:!1,deselectAfterSort:!0,scrollrows:!1,autowidth:!1,scrollOffset:18,cellLayout:5,subGridWidth:20,multiselectWidth:20,gridview:!1,\n +rownumWidth:25,rownumbers:!1,pagerpos:"center",recordpos:"right",footerrow:!1,userDataOnFooter:!1,hoverrows:!0,altclass:"ui-priority-secondary",viewsortcols:[!1,"vertical",!0],resizeclass:"",autoencode:!1,remapColumns:[],ajaxGridOptions:{},direction:"ltr",toppager:!1,headertitles:!1,scrollTimeout:40,data:[],_index:{},grouping:!1,groupingView:{groupField:[],groupOrder:[],groupText:[],groupColumnShow:[],groupSummary:[],showSummaryOnHide:!1,sortitems:[],sortnames:[],summary:[],summaryval:[],plusicon:"ui-icon-circlesmall-plus",\n +minusicon:"ui-icon-circlesmall-minus"},ignoreCase:!1,cmTemplate:{},idPrefix:""},b.jgrid.defaults,f||{}),a=this,c={headers:[],cols:[],footers:[],dragStart:function(c,e,f){this.resizing={idx:c,startX:e.clientX,sOL:f[0]};this.hDiv.style.cursor="col-resize";this.curGbox=b("#rs_m"+b.jgrid.jqID(d.id),"#gbox_"+b.jgrid.jqID(d.id));this.curGbox.css({display:"block",left:f[0],top:f[1],height:f[2]});b(a).triggerHandler("jqGridResizeStart",[e,c]);b.isFunction(d.resizeStart)\046\046d.resizeStart.call(this,e,c);document.onselectstart=\n +function(){return!1}},dragMove:function(a){if(this.resizing){var b=a.clientX-this.resizing.startX,a=this.headers[this.resizing.idx],c="ltr"===d.direction?a.width+b:a.width-b,e;33\074c\046\046(this.curGbox.css({left:this.resizing.sOL+b}),!0===d.forceFit?(e=this.headers[this.resizing.idx+d.nv],b="ltr"===d.direction?e.width-b:e.width+b,33\074b\046\046(a.newWidth=c,e.newWidth=b)):(this.newWidth="ltr"===d.direction?d.tblwidth+b:d.tblwidth-b,a.newWidth=c))}},dragEnd:function(){this.hDiv.style.cursor="default";if(this.resizing){var c=\n +this.resizing.idx,e=this.headers[c].newWidth||this.headers[c].width,e=parseInt(e,10);this.resizing=!1;b("#rs_m"+b.jgrid.jqID(d.id)).css("display","none");d.colModel[c].width=e;this.headers[c].width=e;this.headers[c].el.style.width=e+"px";this.cols[c].style.width=e+"px";0\074this.footers.length\046\046(this.footers[c].style.width=e+"px");!0===d.forceFit?(e=this.headers[c+d.nv].newWidth||this.headers[c+d.nv].width,this.headers[c+d.nv].width=e,this.headers[c+d.nv].el.style.width=e+"px",this.cols[c+d.nv].style.width=\n +e+"px",0\074this.footers.length\046\046(this.footers[c+d.nv].style.width=e+"px"),d.colModel[c+d.nv].width=e):(d.tblwidth=this.newWidth||d.tblwidth,b("table:first",this.bDiv).css("width",d.tblwidth+"px"),b("table:first",this.hDiv).css("width",d.tblwidth+"px"),this.hDiv.scrollLeft=this.bDiv.scrollLeft,d.footerrow\046\046(b("table:first",this.sDiv).css("width",d.tblwidth+"px"),this.sDiv.scrollLeft=this.bDiv.scrollLeft));b(a).triggerHandler("jqGridResizeStop",[e,c]);b.isFunction(d.resizeStop)\046\046d.resizeStop.call(this,\n +e,c)}this.curGbox=null;document.onselectstart=function(){return!0}},populateVisible:function(){c.timer\046\046clearTimeout(c.timer);c.timer=null;var a=b(c.bDiv).height();if(a){var e=b("table:first",c.bDiv),f,I;if(e[0].rows.length)try{I=(f=e[0].rows[1])?b(f).outerHeight()||c.prevRowHeight:c.prevRowHeight}catch(h){I=c.prevRowHeight}if(I){c.prevRowHeight=I;var i=d.rowNum;f=c.scrollTop=c.bDiv.scrollTop;var j=Math.round(e.position().top)-f,k=j+e.height();I*=i;var y,z,B;if(k\074a\046\0460\076=j\046\046(void 0===d.lastpage||parseInt((k+\n +f+I-1)/I,10)\074=d.lastpage))z=parseInt((a-k+I-1)/I,10),0\074=k||2\076z||!0===d.scroll?(y=Math.round((k+f)/I)+1,j=-1):j=1;0\074j\046\046(y=parseInt(f/I,10)+1,z=parseInt((f+a)/I,10)+2-y,B=!0);if(z\046\046!(d.lastpage\046\046y\076d.lastpage||1==d.lastpage||y===d.page\046\046y===d.lastpage))c.hDiv.loading?c.timer=setTimeout(c.populateVisible,d.scrollTimeout):(d.page=y,B\046\046(c.selectionPreserver(e[0]),c.emptyRows.call(e[0],!1,!1)),c.populate(z))}}},scrollGrid:function(a){if(d.scroll){var b=c.bDiv.scrollTop;void 0===c.scrollTop\046\046(c.scrollTop=\n +0);b!=c.scrollTop\046\046(c.scrollTop=b,c.timer\046\046clearTimeout(c.timer),c.timer=setTimeout(c.populateVisible,d.scrollTimeout))}c.hDiv.scrollLeft=c.bDiv.scrollLeft;d.footerrow\046\046(c.sDiv.scrollLeft=c.bDiv.scrollLeft);a\046\046a.stopPropagation()},selectionPreserver:function(a){var c=a.p,d=c.selrow,e=c.selarrrow?b.makeArray(c.selarrrow):null,f=a.grid.bDiv.scrollLeft,g=function(){var h;c.selrow=null;c.selarrrow=[];if(c.multiselect\046\046e\046\0460\074e.length)for(h=0;h\074e.length;h++)e[h]!=d\046\046b(a).jqGrid("setSelection",e[h],!1,null);\n +d\046\046b(a).jqGrid("setSelection",d,!1,null);a.grid.bDiv.scrollLeft=f;b(a).unbind(".selectionPreserver",g)};b(a).bind("jqGridGridComplete.selectionPreserver",g)}};if("TABLE"!=this.tagName.toUpperCase())alert("Element is not a table");else if(void 0!==document.documentMode\046\0465\076=document.documentMode)alert("Grid can not be used in this (\'quirks\') mode!");else{b(this).empty().attr("tabindex","1");this.p=d;this.p.useProp=!!b.fn.prop;var e,i;if(0===this.p.colNames.length)for(e=0;e\074this.p.colModel.length;e++)this.p.colNames[e]=\n +this.p.colModel[e].label||this.p.colModel[e].name;if(this.p.colNames.length!==this.p.colModel.length)alert(b.jgrid.errors.model);else{var j=b("\074div class=\'ui-jqgrid-view\'\076\074/div\076"),l,k=b.browser.msie?!0:!1;a.p.direction=b.trim(a.p.direction.toLowerCase());-1==b.inArray(a.p.direction,["ltr","rtl"])\046\046(a.p.direction="ltr");i=a.p.direction;b(j).insertBefore(this);b(this).appendTo(j).removeClass("scroll");var m=b("\074div class=\'ui-jqgrid ui-widget ui-widget-content ui-corner-all\'\076\074/div\076");b(m).insertBefore(j).attr({id:"gbox_"+\n +this.id,dir:i});b(j).appendTo(m).attr("id","gview_"+this.id);l=k\046\0466\076=b.browser.version?\'\074iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\\\'0\\\');" src="javascript:false;"\076\074/iframe\076\':"";b("\074div class=\'ui-widget-overlay jqgrid-overlay\' id=\'lui_"+this.id+"\'\076\074/div\076").append(l).insertBefore(j);b("\074div class=\'loading ui-state-default ui-state-active\' id=\'load_"+this.id+"\'\076"+this.p.loadtext+"\074/div\076").insertBefore(j);b(this).attr({cellspacing:"0",cellpadding:"0",border:"0",role:"grid",\n +"aria-multiselectable":!!this.p.multiselect,"aria-labelledby":"gbox_"+this.id});var o=function(a,b){a=parseInt(a,10);return isNaN(a)?b?b:0:a},p=function(d,e,f,h,i,j){var k=a.p.colModel[d],l=k.align,y=\'style="\',z=k.classes,B=k.name,r=[];l\046\046(y=y+("text-align:"+l+";"));k.hidden===true\046\046(y=y+"display:none;");if(e===0)y=y+("width: "+c.headers[d].width+"px;");else if(k.cellattr\046\046b.isFunction(k.cellattr))if((d=k.cellattr.call(a,i,f,h,k,j))\046\046typeof d==="string"){d=d.replace(/style/i,"style").replace(/title/i,\n +"title");if(d.indexOf("title")\076-1)k.title=false;d.indexOf("class")\076-1\046\046(z=void 0);r=d.split("style");if(r.length===2){r[1]=b.trim(r[1].replace("=",""));if(r[1].indexOf("\'")===0||r[1].indexOf(\'"\')===0)r[1]=r[1].substring(1);y=y+r[1].replace(/\'/gi,\'"\')}else y=y+\'"\'}if(!r.length){r[0]="";y=y+\'"\'}y=y+((z!==void 0?\' class="\'+z+\'"\':"")+(k.title\046\046f?\' title="\'+b.jgrid.stripHtml(f)+\'"\':""));y=y+(\' aria-describedby="\'+a.p.id+"_"+B+\'"\');return y+r[0]},v=function(c){return c===void 0||c===null||c===""?"\046#160;":\n +a.p.autoencode?b.jgrid.htmlEncode(c):c+""},u=function(c,d,e,f,g){var h=a.p.colModel[e];if(typeof h.formatter!=="undefined"){c={rowId:c,colModel:h,gid:a.p.id,pos:e};d=b.isFunction(h.formatter)?h.formatter.call(a,d,c,f,g):b.fmatter?b.fn.fmatter.call(a,h.formatter,d,c,f,g):v(d)}else d=v(d);return d},L=function(a,b,c,d,e){b=u(a,b,c,e,"add");return\'\074td role="gridcell" \'+p(c,d,b,e,a,true)+"\076"+b+"\074/td\076"},E=function(b,c,d,e){e=\'\074input role="checkbox" type="checkbox" id="jqg_\'+a.p.id+"_"+b+\'" class="cbox" name="jqg_\'+\n +a.p.id+"_"+b+\'"\'+(e?\'checked="checked"\':"")+"/\076";return\'\074td role="gridcell" \'+p(c,d,"",null,b,true)+"\076"+e+"\074/td\076"},Y=function(a,b,c,d){c=(parseInt(c,10)-1)*parseInt(d,10)+1+b;return\'\074td role="gridcell" class="ui-state-default jqgrid-rownum" \'+p(a,b,c,null,b,true)+"\076"+c+"\074/td\076"},T=function(b){var c,d=[],e=0,f;for(f=0;f\074a.p.colModel.length;f++){c=a.p.colModel[f];if(c.name!=="cb"\046\046c.name!=="subgrid"\046\046c.name!=="rn"){d[e]=b=="local"?c.name:b=="xml"||b==="xmlstring"?c.xmlmap||c.name:c.jsonmap||c.name;e++}}return d},\n +U=function(c){var d=a.p.remapColumns;if(!d||!d.length)d=b.map(a.p.colModel,function(a,b){return b});c\046\046(d=b.map(d,function(a){return a\074c?null:a-c}));return d},M=function(a,c){var d;if(this.p.deepempty)b(this.rows).slice(1).remove();else{d=this.rows.length\0760?this.rows[0]:null;b(this.firstChild).empty().append(d)}if(a\046\046this.p.scroll){b(this.grid.bDiv.firstChild).css({height:"auto"});b(this.grid.bDiv.firstChild.firstChild).css({height:0,display:"none"});if(this.grid.bDiv.scrollTop!==0)this.grid.bDiv.scrollTop=\n +0}if(c===true\046\046this.p.treeGrid){this.p.data=[];this.p._index={}}},Q=function(){var c=a.p.data.length,d,e,f;d=a.p.rownumbers===true?1:0;e=a.p.multiselect===true?1:0;f=a.p.subGrid===true?1:0;d=a.p.keyIndex===false||a.p.loadonce===true?a.p.localReader.id:a.p.colModel[a.p.keyIndex+e+f+d].name;for(e=0;e\074c;e++){f=b.jgrid.getAccessor(a.p.data[e],d);a.p._index[f]=e}},N=function(c,d,e,f,g,h){var i="-1",j="",k,d=d?"display:none;":"",e="ui-widget-content jqgrow ui-row-"+a.p.direction+e+(h?" ui-state-highlight":\n +""),f=b.isFunction(a.p.rowattr)?a.p.rowattr.call(a,f,g):{};if(!b.isEmptyObject(f)){if(f.hasOwnProperty("id")){c=f.id;delete f.id}if(f.hasOwnProperty("tabindex")){i=f.tabindex;delete f.tabindex}if(f.hasOwnProperty("style")){d=d+f.style;delete f.style}if(f.hasOwnProperty("class")){e=e+(" "+f["class"]);delete f["class"]}try{delete f.role}catch(z){}for(k in f)f.hasOwnProperty(k)\046\046(j=j+(" "+k+"="+f[k]))}return\'\074tr role="row" id="\'+c+\'" tabindex="\'+i+\'" class="\'+e+\'"\'+(d===""?"":\' style="\'+d+\'"\')+j+"\076"},\n +Z=function(c,d,e,f,g){var h=new Date,i=a.p.datatype!="local"\046\046a.p.loadonce||a.p.datatype=="xmlstring",j=a.p.xmlReader,k=a.p.datatype=="local"?"local":"xml";if(i){a.p.data=[];a.p._index={};a.p.localReader.id="_id_"}a.p.reccount=0;if(b.isXMLDoc(c)){if(a.p.treeANode===-1\046\046!a.p.scroll){M.call(a,false,true);e=1}else e=e\0761?e:1;var z,B,r=0,l,s=a.p.multiselect===true?1:0,O=a.p.subGrid===true?1:0,m=a.p.rownumbers===true?1:0,o,p=[],u,n={},q,w,C=[],v=a.p.altRows===true?" "+a.p.altclass:"",A;j.repeatitems||(p=\n +T(k));o=a.p.keyIndex===false?b.isFunction(j.id)?j.id.call(a,c):j.id:a.p.keyIndex;if(p.length\0760\046\046!isNaN(o)){a.p.remapColumns\046\046a.p.remapColumns.length\046\046(o=b.inArray(o,a.p.remapColumns));o=p[o]}k=(o+"").indexOf("[")===-1?p.length?function(a,c){return b(o,a).text()||c}:function(a,c){return b(j.cell,a).eq(o).text()||c}:function(a,b){return a.getAttribute(o.replace(/[\\[\\]]/g,""))||b};a.p.userData={};a.p.page=b.jgrid.getXmlData(c,j.page)||a.p.page||0;a.p.lastpage=b.jgrid.getXmlData(c,j.total);if(a.p.lastpage===\n +void 0)a.p.lastpage=1;a.p.records=b.jgrid.getXmlData(c,j.records)||0;b.isFunction(j.userdata)?a.p.userData=j.userdata.call(a,c)||{}:b.jgrid.getXmlData(c,j.userdata,true).each(function(){a.p.userData[this.getAttribute("name")]=b(this).text()});c=b.jgrid.getXmlData(c,j.root,true);(c=b.jgrid.getXmlData(c,j.row,true))||(c=[]);var t=c.length,F=0,R=[],x=parseInt(a.p.rowNum,10);if(t\0760\046\046a.p.page\074=0)a.p.page=1;if(c\046\046t){var D=a.p.scroll?b.jgrid.randId():1;g\046\046(x=x*(g+1));for(var g=b.isFunction(a.p.afterInsertRow),\n +H=a.p.grouping\046\046a.p.groupingView.groupCollapse===true;F\074t;){q=c[F];w=k(q,D+F);w=a.p.idPrefix+w;z=e===0?0:e+1;A=(z+F)%2==1?v:"";var G=C.length;C.push("");m\046\046C.push(Y(0,F,a.p.page,a.p.rowNum));s\046\046C.push(E(w,m,F,false));O\046\046C.push(b(a).jqGrid("addSubGridCell",s+m,F+e));if(j.repeatitems){u||(u=U(s+O+m));var J=b.jgrid.getXmlData(q,j.cell,true);b.each(u,function(b){var c=J[this];if(!c)return false;l=c.textContent||c.text;n[a.p.colModel[b+s+O+m].name]=l;C.push(L(w,l,b+s+O+m,F+e,q))})}else for(z=0;z\074p.length;z++){l=\n +b.jgrid.getXmlData(q,p[z]);n[a.p.colModel[z+s+O+m].name]=l;C.push(L(w,l,z+s+O+m,F+e,q))}C[G]=N(w,H,A,n,q,false);C.push("\074/tr\076");if(a.p.grouping){R=b(a).jqGrid("groupingPrepare",C,R,n,F);C=[]}if(i||a.p.treeGrid===true){n._id_=w;a.p.data.push(n);a.p._index[w]=a.p.data.length-1}if(a.p.gridview===false){b("tbody:first",d).append(C.join(""));b(a).triggerHandler("jqGridAfterInsertRow",[w,n,q]);g\046\046a.p.afterInsertRow.call(a,w,n,q);C=[]}n={};r++;F++;if(r==x)break}}if(a.p.gridview===true){B=a.p.treeANode\076-1?\n +a.p.treeANode:0;if(a.p.grouping){b(a).jqGrid("groupingRender",R,a.p.colModel.length);R=null}else a.p.treeGrid===true\046\046B\0760?b(a.rows[B]).after(C.join("")):b("tbody:first",d).append(C.join(""))}if(a.p.subGrid===true)try{b(a).jqGrid("addSubGrid",s+m)}catch(P){}a.p.totaltime=new Date-h;if(r\0760\046\046a.p.records===0)a.p.records=t;C=null;if(a.p.treeGrid===true)try{b(a).jqGrid("setTreeNode",B+1,r+B+1)}catch(Q){}if(!a.p.treeGrid\046\046!a.p.scroll)a.grid.bDiv.scrollTop=0;a.p.reccount=r;a.p.treeANode=-1;a.p.userDataOnFooter\046\046\n +b(a).jqGrid("footerData","set",a.p.userData,true);if(i){a.p.records=t;a.p.lastpage=Math.ceil(t/x)}f||a.updatepager(false,true);if(i)for(;r\074t;){q=c[r];w=k(q,r+D);w=a.p.idPrefix+w;if(j.repeatitems){u||(u=U(s+O+m));var K=b.jgrid.getXmlData(q,j.cell,true);b.each(u,function(b){var c=K[this];if(!c)return false;l=c.textContent||c.text;n[a.p.colModel[b+s+O+m].name]=l})}else for(z=0;z\074p.length;z++){l=b.jgrid.getXmlData(q,p[z]);n[a.p.colModel[z+s+O+m].name]=l}n._id_=w;a.p.data.push(n);a.p._index[w]=a.p.data.length-\n +1;n={};r++}}},$=function(c,d,e,f,g){d=new Date;if(c){if(a.p.treeANode===-1\046\046!a.p.scroll){M.call(a,false,true);e=1}else e=e\0761?e:1;var h,i,j=a.p.datatype!="local"\046\046a.p.loadonce||a.p.datatype=="jsonstring";if(j){a.p.data=[];a.p._index={};a.p.localReader.id="_id_"}a.p.reccount=0;if(a.p.datatype=="local"){h=a.p.localReader;i="local"}else{h=a.p.jsonReader;i="json"}var k=0,l,B,r=[],m,s=a.p.multiselect?1:0,o=a.p.subGrid?1:0,p=a.p.rownumbers===true?1:0,n,u,t={},v,q,w=[],C=a.p.altRows===true?" "+a.p.altclass:\n +"",A;a.p.page=b.jgrid.getAccessor(c,h.page)||a.p.page||0;n=b.jgrid.getAccessor(c,h.total);a.p.lastpage=n===void 0?1:n;a.p.records=b.jgrid.getAccessor(c,h.records)||0;a.p.userData=b.jgrid.getAccessor(c,h.userdata)||{};h.repeatitems||(m=r=T(i));i=a.p.keyIndex===false?b.isFunction(h.id)?h.id.call(a,c):h.id:a.p.keyIndex;if(r.length\0760\046\046!isNaN(i)){a.p.remapColumns\046\046a.p.remapColumns.length\046\046(i=b.inArray(i,a.p.remapColumns));i=r[i]}(u=b.jgrid.getAccessor(c,h.root))||(u=[]);n=u.length;c=0;if(n\0760\046\046a.p.page\074=\n +0)a.p.page=1;var x=parseInt(a.p.rowNum,10),D=a.p.scroll?b.jgrid.randId():1,F=false,R;g\046\046(x=x*(g+1));a.p.datatype==="local"\046\046!a.p.deselectAfterSort\046\046(F=true);for(var H=b.isFunction(a.p.afterInsertRow),G=[],J=a.p.grouping\046\046a.p.groupingView.groupCollapse===true;c\074n;){g=u[c];q=b.jgrid.getAccessor(g,i);if(q===void 0){q=D+c;if(r.length===0\046\046h.cell){l=b.jgrid.getAccessor(g,h.cell);q=l!==void 0?l[i]||q:q}}q=a.p.idPrefix+q;l=e===1?0:e;A=(l+c)%2==1?C:"";F\046\046(R=a.p.multiselect?b.inArray(q,a.p.selarrrow)!==-1:\n +q===a.p.selrow);var K=w.length;w.push("");p\046\046w.push(Y(0,c,a.p.page,a.p.rowNum));s\046\046w.push(E(q,p,c,R));o\046\046w.push(b(a).jqGrid("addSubGridCell",s+p,c+e));if(h.repeatitems){h.cell\046\046(g=b.jgrid.getAccessor(g,h.cell));m||(m=U(s+o+p))}for(B=0;B\074m.length;B++){l=b.jgrid.getAccessor(g,m[B]);w.push(L(q,l,B+s+o+p,c+e,g));t[a.p.colModel[B+s+o+p].name]=l}w[K]=N(q,J,A,t,g,R);w.push("\074/tr\076");if(a.p.grouping){G=b(a).jqGrid("groupingPrepare",w,G,t,c);w=[]}if(j||a.p.treeGrid===true){t._id_=q;a.p.data.push(t);a.p._index[q]=\n +a.p.data.length-1}if(a.p.gridview===false){b("#"+b.jgrid.jqID(a.p.id)+" tbody:first").append(w.join(""));b(a).triggerHandler("jqGridAfterInsertRow",[q,t,g]);H\046\046a.p.afterInsertRow.call(a,q,t,g);w=[]}t={};k++;c++;if(k==x)break}if(a.p.gridview===true){v=a.p.treeANode\076-1?a.p.treeANode:0;a.p.grouping?b(a).jqGrid("groupingRender",G,a.p.colModel.length):a.p.treeGrid===true\046\046v\0760?b(a.rows[v]).after(w.join("")):b("#"+b.jgrid.jqID(a.p.id)+" tbody:first").append(w.join(""))}if(a.p.subGrid===true)try{b(a).jqGrid("addSubGrid",\n +s+p)}catch(P){}a.p.totaltime=new Date-d;if(k\0760\046\046a.p.records===0)a.p.records=n;if(a.p.treeGrid===true)try{b(a).jqGrid("setTreeNode",v+1,k+v+1)}catch(Q){}if(!a.p.treeGrid\046\046!a.p.scroll)a.grid.bDiv.scrollTop=0;a.p.reccount=k;a.p.treeANode=-1;a.p.userDataOnFooter\046\046b(a).jqGrid("footerData","set",a.p.userData,true);if(j){a.p.records=n;a.p.lastpage=Math.ceil(n/x)}f||a.updatepager(false,true);if(j)for(;k\074n\046\046u[k];){g=u[k];q=b.jgrid.getAccessor(g,i);if(q===void 0){q=D+k;r.length===0\046\046h.cell\046\046(q=b.jgrid.getAccessor(g,\n +h.cell)[i]||q)}if(g){q=a.p.idPrefix+q;if(h.repeatitems){h.cell\046\046(g=b.jgrid.getAccessor(g,h.cell));m||(m=U(s+o+p))}for(B=0;B\074m.length;B++){l=b.jgrid.getAccessor(g,m[B]);t[a.p.colModel[B+s+o+p].name]=l}t._id_=q;a.p.data.push(t);a.p._index[q]=a.p.data.length-1;t={}}k++}}},la=function(){function c(d){var e=0,g,h,i,j,S;if(d.groups!==void 0){(h=d.groups.length\046\046d.groupOp.toString().toUpperCase()==="OR")\046\046s.orBegin();for(g=0;g\074d.groups.length;g++){e\0760\046\046h\046\046s.or();try{c(d.groups[g])}catch(k){alert(k)}e++}h\046\046\n +s.orEnd()}if(d.rules!==void 0){if(e\0760){h=s.select();s=b.jgrid.from(h);a.p.ignoreCase\046\046(s=s.ignoreCase())}try{(i=d.rules.length\046\046d.groupOp.toString().toUpperCase()==="OR")\046\046s.orBegin();for(g=0;g\074d.rules.length;g++){S=d.rules[g];j=d.groupOp.toString().toUpperCase();if(o[S.op]\046\046S.field){e\0760\046\046(j\046\046j==="OR")\046\046(s=s.or());s=o[S.op](s,j)(S.field,S.data,f[S.field])}e++}i\046\046s.orEnd()}catch(ma){alert(ma)}}}var d,e=false,f={},g=[],h=[],i,j,k;if(b.isArray(a.p.data)){var l=a.p.grouping?a.p.groupingView:false,m,r;\n +b.each(a.p.colModel,function(){j=this.sorttype||"text";if(j=="date"||j=="datetime"){if(this.formatter\046\046typeof this.formatter==="string"\046\046this.formatter=="date"){i=this.formatoptions\046\046this.formatoptions.srcformat?this.formatoptions.srcformat:b.jgrid.formatter.date.srcformat;k=this.formatoptions\046\046this.formatoptions.newformat?this.formatoptions.newformat:b.jgrid.formatter.date.newformat}else i=k=this.datefmt||"Y-m-d";f[this.name]={stype:j,srcfmt:i,newfmt:k}}else f[this.name]={stype:j,srcfmt:"",newfmt:""};\n +if(a.p.grouping){r=0;for(m=l.groupField.length;r\074m;r++)if(this.name==l.groupField[r]){var c=this.name;if(typeof this.index!="undefined")c=this.index;g[r]=f[c];h[r]=c}}if(!e\046\046(this.index==a.p.sortname||this.name==a.p.sortname)){d=this.name;e=true}});if(a.p.treeGrid)b(a).jqGrid("SortTree",d,a.p.sortorder,f[d].stype,f[d].srcfmt);else{var o={eq:function(a){return a.equals},ne:function(a){return a.notEquals},lt:function(a){return a.less},le:function(a){return a.lessOrEquals},gt:function(a){return a.greater},\n +ge:function(a){return a.greaterOrEquals},cn:function(a){return a.contains},nc:function(a,b){return b==="OR"?a.orNot().contains:a.andNot().contains},bw:function(a){return a.startsWith},bn:function(a,b){return b==="OR"?a.orNot().startsWith:a.andNot().startsWith},en:function(a,b){return b==="OR"?a.orNot().endsWith:a.andNot().endsWith},ew:function(a){return a.endsWith},ni:function(a,b){return b==="OR"?a.orNot().equals:a.andNot().equals},"in":function(a){return a.equals},nu:function(a){return a.isNull},\n +nn:function(a,b){return b==="OR"?a.orNot().isNull:a.andNot().isNull}},s=b.jgrid.from(a.p.data);a.p.ignoreCase\046\046(s=s.ignoreCase());if(a.p.search===true){var n=a.p.postData.filters;if(n){typeof n=="string"\046\046(n=b.jgrid.parse(n));c(n)}else try{s=o[a.p.postData.searchOper](s)(a.p.postData.searchField,a.p.postData.searchString,f[a.p.postData.searchField])}catch(p){}}if(a.p.grouping)for(r=0;r\074m;r++)s.orderBy(h[r],l.groupOrder[r],g[r].stype,g[r].srcfmt);d\046\046(a.p.sortorder\046\046e)\046\046(a.p.sortorder.toUpperCase()==\n +"DESC"?s.orderBy(a.p.sortname,"d",f[d].stype,f[d].srcfmt):s.orderBy(a.p.sortname,"a",f[d].stype,f[d].srcfmt));var n=s.select(),u=parseInt(a.p.rowNum,10),t=n.length,v=parseInt(a.p.page,10),x=Math.ceil(t/u),q={},n=n.slice((v-1)*u,v*u),f=s=null;q[a.p.localReader.total]=x;q[a.p.localReader.page]=v;q[a.p.localReader.records]=t;q[a.p.localReader.root]=n;q[a.p.localReader.userdata]=a.p.userData;n=null;return q}}},ba=function(){a.grid.hDiv.loading=true;if(!a.p.hiddengrid)switch(a.p.loadui){case "enable":b("#load_"+\n +b.jgrid.jqID(a.p.id)).show();break;case "block":b("#lui_"+b.jgrid.jqID(a.p.id)).show();b("#load_"+b.jgrid.jqID(a.p.id)).show()}},K=function(){a.grid.hDiv.loading=false;switch(a.p.loadui){case "enable":b("#load_"+b.jgrid.jqID(a.p.id)).hide();break;case "block":b("#lui_"+b.jgrid.jqID(a.p.id)).hide();b("#load_"+b.jgrid.jqID(a.p.id)).hide()}},G=function(c){if(!a.grid.hDiv.loading){var d=a.p.scroll\046\046c===false,e={},f,g=a.p.prmNames;if(a.p.page\074=0)a.p.page=1;if(g.search!==null)e[g.search]=a.p.search;g.nd!==\n +null\046\046(e[g.nd]=(new Date).getTime());if(g.rows!==null)e[g.rows]=a.p.rowNum;if(g.page!==null)e[g.page]=a.p.page;if(g.sort!==null)e[g.sort]=a.p.sortname;if(g.order!==null)e[g.order]=a.p.sortorder;if(a.p.rowTotal!==null\046\046g.totalrows!==null)e[g.totalrows]=a.p.rowTotal;var h=b.isFunction(a.p.loadComplete),i=h?a.p.loadComplete:null,j=0,c=c||1;if(c\0761)if(g.npage!==null){e[g.npage]=c;j=c-1;c=1}else i=function(b){a.p.page++;a.grid.hDiv.loading=false;h\046\046a.p.loadComplete.call(a,b);G(c-1)};else g.npage!==null\046\046\n +delete a.p.postData[g.npage];if(a.p.grouping){b(a).jqGrid("groupingSetup");var k=a.p.groupingView,l,m="";for(l=0;l\074k.groupField.length;l++){var r=k.groupField[l];b.each(a.p.colModel,function(a,b){if(b.name==r\046\046b.index)r=b.index});m=m+(r+" "+k.groupOrder[l]+", ")}e[g.sort]=m+e[g.sort]}b.extend(a.p.postData,e);var n=!a.p.scroll?1:a.rows.length-1,e=b(a).triggerHandler("jqGridBeforeRequest");if(!(e===false||e==="stop"))if(b.isFunction(a.p.datatype))a.p.datatype.call(a,a.p.postData,"load_"+a.p.id);else{if(b.isFunction(a.p.beforeRequest)){e=\n +a.p.beforeRequest.call(a);e===void 0\046\046(e=true);if(e===false)return}f=a.p.datatype.toLowerCase();switch(f){case "json":case "jsonp":case "xml":case "script":b.ajax(b.extend({url:a.p.url,type:a.p.mtype,dataType:f,data:b.isFunction(a.p.serializeGridData)?a.p.serializeGridData.call(a,a.p.postData):a.p.postData,success:function(e,g,h){if(b.isFunction(a.p.beforeProcessing)\046\046a.p.beforeProcessing.call(a,e,g,h)===false)K();else{f==="xml"?Z(e,a.grid.bDiv,n,c\0761,j):$(e,a.grid.bDiv,n,c\0761,j);b(a).triggerHandler("jqGridLoadComplete",\n +[e]);i\046\046i.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);d\046\046a.grid.populateVisible();if(a.p.loadonce||a.p.treeGrid)a.p.datatype="local";c===1\046\046K()}},error:function(d,e,f){b.isFunction(a.p.loadError)\046\046a.p.loadError.call(a,d,e,f);c===1\046\046K()},beforeSend:function(c,d){var e=true;b.isFunction(a.p.loadBeforeSend)\046\046(e=a.p.loadBeforeSend.call(a,c,d));e===void 0\046\046(e=true);if(e===false)return false;ba()}},b.jgrid.ajaxOptions,a.p.ajaxGridOptions));break;case "xmlstring":ba();e=b.jgrid.stringToDoc(a.p.datastr);\n +Z(e,a.grid.bDiv);b(a).triggerHandler("jqGridLoadComplete",[e]);h\046\046a.p.loadComplete.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);a.p.datatype="local";a.p.datastr=null;K();break;case "jsonstring":ba();e=typeof a.p.datastr=="string"?b.jgrid.parse(a.p.datastr):a.p.datastr;$(e,a.grid.bDiv);b(a).triggerHandler("jqGridLoadComplete",[e]);h\046\046a.p.loadComplete.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);a.p.datatype="local";a.p.datastr=null;K();break;case "local":case "clientside":ba();\n +a.p.datatype="local";e=la();$(e,a.grid.bDiv,n,c\0761,j);b(a).triggerHandler("jqGridLoadComplete",[e]);i\046\046i.call(a,e);b(a).triggerHandler("jqGridAfterLoadComplete",[e]);d\046\046a.grid.populateVisible();K()}}}},ca=function(c){b("#cb_"+b.jgrid.jqID(a.p.id),a.grid.hDiv)[a.p.useProp?"prop":"attr"]("checked",c);if(a.p.frozenColumns\046\046a.p.id+"_frozen")b("#cb_"+b.jgrid.jqID(a.p.id),a.grid.fhDiv)[a.p.useProp?"prop":"attr"]("checked",c)};l=function(c,e){var d="",f="\074table cellspacing=\'0\' cellpadding=\'0\' border=\'0\' style=\'table-layout:auto;\' class=\'ui-pg-table\'\076\074tbody\076\074tr\076",\n +g="",h,j,k,l,m=function(c){var e;b.isFunction(a.p.onPaging)\046\046(e=a.p.onPaging.call(a,c));a.p.selrow=null;if(a.p.multiselect){a.p.selarrrow=[];ca(false)}a.p.savedRow=[];return e=="stop"?false:true},c=c.substr(1),e=e+("_"+c);h="pg_"+c;j=c+"_left";k=c+"_center";l=c+"_right";b("#"+b.jgrid.jqID(c)).append("\074div id=\'"+h+"\' class=\'ui-pager-control\' role=\'group\'\076\074table cellspacing=\'0\' cellpadding=\'0\' border=\'0\' class=\'ui-pg-table\' style=\'width:100%;table-layout:fixed;height:100%;\' role=\'row\'\076\074tbody\076\074tr\076\074td id=\'"+\n +j+"\' align=\'left\'\076\074/td\076\074td id=\'"+k+"\' align=\'center\' style=\'white-space:pre;\'\076\074/td\076\074td id=\'"+l+"\' align=\'right\'\076\074/td\076\074/tr\076\074/tbody\076\074/table\076\074/div\076").attr("dir","ltr");if(a.p.rowList.length\0760){g="\074td dir=\'"+i+"\'\076";g=g+"\074select class=\'ui-pg-selbox\' role=\'listbox\'\076";for(j=0;j\074a.p.rowList.length;j++)g=g+(\'\074option role="option" value="\'+a.p.rowList[j]+\'"\'+(a.p.rowNum==a.p.rowList[j]?\' selected="selected"\':"")+"\076"+a.p.rowList[j]+"\074/option\076");g=g+"\074/select\076\074/td\076"}i=="rtl"\046\046(f=f+g);a.p.pginput===true\046\046(d="\074td dir=\'"+\n +i+"\'\076"+b.jgrid.format(a.p.pgtext||"","\074input class=\'ui-pg-input\' type=\'text\' size=\'2\' maxlength=\'7\' value=\'0\' role=\'textbox\'/\076","\074span id=\'sp_1_"+b.jgrid.jqID(c)+"\'\076\074/span\076")+"\074/td\076");if(a.p.pgbuttons===true){j=["first"+e,"prev"+e,"next"+e,"last"+e];i=="rtl"\046\046j.reverse();f=f+("\074td id=\'"+j[0]+"\' class=\'ui-pg-button ui-corner-all\'\076\074span class=\'ui-icon ui-icon-seek-first\'\076\074/span\076\074/td\076");f=f+("\074td id=\'"+j[1]+"\' class=\'ui-pg-button ui-corner-all\'\076\074span class=\'ui-icon ui-icon-seek-prev\'\076\074/span\076\074/td\076");\n +f=f+(d!==""?"\074td class=\'ui-pg-button ui-state-disabled\' style=\'width:4px;\'\076\074span class=\'ui-separator\'\076\074/span\076\074/td\076"+d+"\074td class=\'ui-pg-button ui-state-disabled\' style=\'width:4px;\'\076\074span class=\'ui-separator\'\076\074/span\076\074/td\076":"")+("\074td id=\'"+j[2]+"\' class=\'ui-pg-button ui-corner-all\'\076\074span class=\'ui-icon ui-icon-seek-next\'\076\074/span\076\074/td\076");f=f+("\074td id=\'"+j[3]+"\' class=\'ui-pg-button ui-corner-all\'\076\074span class=\'ui-icon ui-icon-seek-end\'\076\074/span\076\074/td\076")}else d!==""\046\046(f=f+d);i=="ltr"\046\046(f=f+g);f=f+"\074/tr\076\074/tbody\076\074/table\076";\n +a.p.viewrecords===true\046\046b("td#"+c+"_"+a.p.recordpos,"#"+h).append("\074div dir=\'"+i+"\' style=\'text-align:"+a.p.recordpos+"\' class=\'ui-paging-info\'\076\074/div\076");b("td#"+c+"_"+a.p.pagerpos,"#"+h).append(f);g=b(".ui-jqgrid").css("font-size")||"11px";b(document.body).append("\074div id=\'testpg\' class=\'ui-jqgrid ui-widget ui-widget-content\' style=\'font-size:"+g+";visibility:hidden;\' \076\074/div\076");f=b(f).clone().appendTo("#testpg").width();b("#testpg").remove();if(f\0760){d!==""\046\046(f=f+50);b("td#"+c+"_"+a.p.pagerpos,"#"+\n +h).width(f)}a.p._nvtd=[];a.p._nvtd[0]=f?Math.floor((a.p.width-f)/2):Math.floor(a.p.width/3);a.p._nvtd[1]=0;f=null;b(".ui-pg-selbox","#"+h).bind("change",function(){a.p.page=Math.round(a.p.rowNum*(a.p.page-1)/this.value-0.5)+1;a.p.rowNum=this.value;a.p.pager\046\046b(".ui-pg-selbox",a.p.pager).val(this.value);a.p.toppager\046\046b(".ui-pg-selbox",a.p.toppager).val(this.value);if(!m("records"))return false;G();return false});if(a.p.pgbuttons===true){b(".ui-pg-button","#"+h).hover(function(){if(b(this).hasClass("ui-state-disabled"))this.style.cursor=\n +"default";else{b(this).addClass("ui-state-hover");this.style.cursor="pointer"}},function(){if(!b(this).hasClass("ui-state-disabled")){b(this).removeClass("ui-state-hover");this.style.cursor="default"}});b("#first"+b.jgrid.jqID(e)+", #prev"+b.jgrid.jqID(e)+", #next"+b.jgrid.jqID(e)+", #last"+b.jgrid.jqID(e)).click(function(){var b=o(a.p.page,1),c=o(a.p.lastpage,1),d=false,f=true,g=true,h=true,i=true;if(c===0||c===1)i=h=g=f=false;else if(c\0761\046\046b\076=1)if(b===1)g=f=false;else{if(b===c)i=h=false}else if(c\076\n +1\046\046b===0){i=h=false;b=c-1}if(this.id==="first"+e\046\046f){a.p.page=1;d=true}if(this.id==="prev"+e\046\046g){a.p.page=b-1;d=true}if(this.id==="next"+e\046\046h){a.p.page=b+1;d=true}if(this.id==="last"+e\046\046i){a.p.page=c;d=true}if(d){if(!m(this.id))return false;G()}return false})}a.p.pginput===true\046\046b("input.ui-pg-input","#"+h).keypress(function(c){if((c.charCode?c.charCode:c.keyCode?c.keyCode:0)==13){a.p.page=b(this).val()\0760?b(this).val():a.p.page;if(!m("user"))return false;G();return false}return this})};var ia=function(c,\n +e,d,f){if(a.p.colModel[e].sortable\046\046!(a.p.savedRow.length\0760)){if(!d){if(a.p.lastsort==e)if(a.p.sortorder=="asc")a.p.sortorder="desc";else{if(a.p.sortorder=="desc")a.p.sortorder="asc"}else a.p.sortorder=a.p.colModel[e].firstsortorder||"asc";a.p.page=1}if(f){if(a.p.lastsort==e\046\046a.p.sortorder==f\046\046!d)return;a.p.sortorder=f}d=a.grid.headers[a.p.lastsort].el;f=a.grid.headers[e].el;b("span.ui-grid-ico-sort",d).addClass("ui-state-disabled");b(d).attr("aria-selected","false");b("span.ui-icon-"+a.p.sortorder,\n +f).removeClass("ui-state-disabled");b(f).attr("aria-selected","true");if(!a.p.viewsortcols[0]\046\046a.p.lastsort!=e){b("span.s-ico",d).hide();b("span.s-ico",f).show()}c=c.substring(5+a.p.id.length+1);a.p.sortname=a.p.colModel[e].index||c;d=a.p.sortorder;if(b(a).triggerHandler("jqGridSortCol",[c,e,d])==="stop")a.p.lastsort=e;else if(b.isFunction(a.p.onSortCol)\046\046a.p.onSortCol.call(a,c,e,d)=="stop")a.p.lastsort=e;else{if(a.p.datatype=="local")a.p.deselectAfterSort\046\046b(a).jqGrid("resetSelection");else{a.p.selrow=\n +null;a.p.multiselect\046\046ca(false);a.p.selarrrow=[];a.p.savedRow=[]}if(a.p.scroll){d=a.grid.bDiv.scrollLeft;M.call(a,true,false);a.grid.hDiv.scrollLeft=d}a.p.subGrid\046\046a.p.datatype=="local"\046\046b("td.sgexpanded","#"+b.jgrid.jqID(a.p.id)).each(function(){b(this).trigger("click")});G();a.p.lastsort=e;if(a.p.sortname!=c\046\046e)a.p.lastsort=e}}},na=function(c){var e,d={},f=b.jgrid.cellWidth()?0:a.p.cellLayout;for(e=d[0]=d[1]=d[2]=0;e\074=c;e++)a.p.colModel[e].hidden===false\046\046(d[0]=d[0]+(a.p.colModel[e].width+f));a.p.direction==\n +"rtl"\046\046(d[0]=a.p.width-d[0]);d[0]=d[0]-a.grid.bDiv.scrollLeft;b(a.grid.cDiv).is(":visible")\046\046(d[1]=d[1]+(b(a.grid.cDiv).height()+parseInt(b(a.grid.cDiv).css("padding-top"),10)+parseInt(b(a.grid.cDiv).css("padding-bottom"),10)));if(a.p.toolbar[0]===true\046\046(a.p.toolbar[1]=="top"||a.p.toolbar[1]=="both"))d[1]=d[1]+(b(a.grid.uDiv).height()+parseInt(b(a.grid.uDiv).css("border-top-width"),10)+parseInt(b(a.grid.uDiv).css("border-bottom-width"),10));a.p.toppager\046\046(d[1]=d[1]+(b(a.grid.topDiv).height()+parseInt(b(a.grid.topDiv).css("border-bottom-width"),\n +10)));d[2]=d[2]+(b(a.grid.bDiv).height()+b(a.grid.hDiv).height());return d},ja=function(c){var d,e=a.grid.headers,f=b.jgrid.getCellIndex(c);for(d=0;d\074e.length;d++)if(c===e[d].el){f=d;break}return f};this.p.id=this.id;-1==b.inArray(a.p.multikey,["shiftKey","altKey","ctrlKey"])\046\046(a.p.multikey=!1);a.p.keyIndex=!1;for(e=0;e\074a.p.colModel.length;e++)a.p.colModel[e]=b.extend(!0,{},a.p.cmTemplate,a.p.colModel[e].template||{},a.p.colModel[e]),!1===a.p.keyIndex\046\046!0===a.p.colModel[e].key\046\046(a.p.keyIndex=e);a.p.sortorder=\n +a.p.sortorder.toLowerCase();!0===a.p.grouping\046\046(a.p.scroll=!1,a.p.rownumbers=!1,a.p.treeGrid=!1,a.p.gridview=!0);if(!0===this.p.treeGrid){try{b(this).jqGrid("setTreeGrid")}catch(pa){}"local"!=a.p.datatype\046\046(a.p.localReader={id:"_id_"})}if(this.p.subGrid)try{b(a).jqGrid("setSubGrid")}catch(qa){}this.p.multiselect\046\046(this.p.colNames.unshift("\074input role=\'checkbox\' id=\'cb_"+this.p.id+"\' class=\'cbox\' type=\'checkbox\'/\076"),this.p.colModel.unshift({name:"cb",width:b.jgrid.cellWidth()?a.p.multiselectWidth+\n +a.p.cellLayout:a.p.multiselectWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0}));this.p.rownumbers\046\046(this.p.colNames.unshift(""),this.p.colModel.unshift({name:"rn",width:a.p.rownumWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,align:"center",fixed:!0}));a.p.xmlReader=b.extend(!0,{root:"rows",row:"row",page:"rows\076page",total:"rows\076total",records:"rows\076records",repeatitems:!0,cell:"cell",id:"[id]",userdata:"userdata",subgrid:{root:"rows",row:"row",repeatitems:!0,cell:"cell"}},\n +a.p.xmlReader);a.p.jsonReader=b.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!0,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},a.p.jsonReader);a.p.localReader=b.extend(!0,{root:"rows",page:"page",total:"total",records:"records",repeatitems:!1,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:!0,cell:"cell"}},a.p.localReader);a.p.scroll\046\046(a.p.pgbuttons=!1,a.p.pginput=!1,a.p.rowList=[]);a.p.data.length\046\046\n +Q();var x="\074thead\076\074tr class=\'ui-jqgrid-labels\' role=\'rowheader\'\076",ka,J,da,aa,ea,A,n,V;J=V="";if(!0===a.p.shrinkToFit\046\046!0===a.p.forceFit)for(e=a.p.colModel.length-1;0\074=e;e--)if(!a.p.colModel[e].hidden){a.p.colModel[e].resizable=!1;break}"horizontal"==a.p.viewsortcols[1]\046\046(V=" ui-i-asc",J=" ui-i-desc");ka=k?"class=\'ui-th-div-ie\'":"";V="\074span class=\'s-ico\' style=\'display:none\'\076\074span sort=\'asc\' class=\'ui-grid-ico-sort ui-icon-asc"+V+" ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-"+i+"\'\076\074/span\076"+\n +("\074span sort=\'desc\' class=\'ui-grid-ico-sort ui-icon-desc"+J+" ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-"+i+"\'\076\074/span\076\074/span\076");for(e=0;e\074this.p.colNames.length;e++)J=a.p.headertitles?\' title="\'+b.jgrid.stripHtml(a.p.colNames[e])+\'"\':"",x+="\074th id=\'"+a.p.id+"_"+a.p.colModel[e].name+"\' role=\'columnheader\' class=\'ui-state-default ui-th-column ui-th-"+i+"\'"+J+"\076",J=a.p.colModel[e].index||a.p.colModel[e].name,x+="\074div id=\'jqgh_"+a.p.id+"_"+a.p.colModel[e].name+"\' "+ka+"\076"+a.p.colNames[e],\n +a.p.colModel[e].width=a.p.colModel[e].width?parseInt(a.p.colModel[e].width,10):150,"boolean"!==typeof a.p.colModel[e].title\046\046(a.p.colModel[e].title=!0),J==a.p.sortname\046\046(a.p.lastsort=e),x+=V+"\074/div\076\074/th\076";V=null;b(this).append(x+"\074/tr\076\074/thead\076");b("thead tr:first th",this).hover(function(){b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")});if(this.p.multiselect){var fa=[],W;b("#cb_"+b.jgrid.jqID(a.p.id),this).bind("click",function(){a.p.selarrrow=[];var c=a.p.frozenColumns===\n +true?a.p.id+"_frozen":"";if(this.checked){b(a.rows).each(function(d){if(d\0760\046\046!b(this).hasClass("ui-subgrid")\046\046!b(this).hasClass("jqgroup")\046\046!b(this).hasClass("ui-state-disabled")){b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id))[a.p.useProp?"prop":"attr"]("checked",true);b(this).addClass("ui-state-highlight").attr("aria-selected","true");a.p.selarrrow.push(this.id);a.p.selrow=this.id;if(c){b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id),a.grid.fbDiv)[a.p.useProp?"prop":"attr"]("checked",\n +true);b("#"+b.jgrid.jqID(this.id),a.grid.fbDiv).addClass("ui-state-highlight")}}});W=true;fa=[]}else{b(a.rows).each(function(d){if(d\0760\046\046!b(this).hasClass("ui-subgrid")\046\046!b(this).hasClass("ui-state-disabled")){b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id))[a.p.useProp?"prop":"attr"]("checked",false);b(this).removeClass("ui-state-highlight").attr("aria-selected","false");fa.push(this.id);if(c){b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(this.id),a.grid.fbDiv)[a.p.useProp?"prop":"attr"]("checked",\n +false);b("#"+b.jgrid.jqID(this.id),a.grid.fbDiv).removeClass("ui-state-highlight")}}});a.p.selrow=null;W=false}b(a).triggerHandler("jqGridSelectAll",[W?a.p.selarrrow:fa,W]);b.isFunction(a.p.onSelectAll)\046\046a.p.onSelectAll.call(a,W?a.p.selarrrow:fa,W)})}!0===a.p.autowidth\046\046(x=b(m).innerWidth(),a.p.width=0\074x?x:"nw");(function(){var d=0,e=b.jgrid.cellWidth()?0:o(a.p.cellLayout,0),f=0,h,i=o(a.p.scrollOffset,0),j,k=false,l,m=0,n=0,p;b.each(a.p.colModel,function(){if(typeof this.hidden==="undefined")this.hidden=\n +false;this.widthOrg=j=o(this.width,0);if(this.hidden===false){d=d+(j+e);this.fixed?m=m+(j+e):f++;n++}});if(isNaN(a.p.width))a.p.width=d+(a.p.shrinkToFit===false\046\046!isNaN(a.p.height)?i:0);c.width=a.p.width;a.p.tblwidth=d;if(a.p.shrinkToFit===false\046\046a.p.forceFit===true)a.p.forceFit=false;if(a.p.shrinkToFit===true\046\046f\0760){l=c.width-e*f-m;if(!isNaN(a.p.height)){l=l-i;k=true}d=0;b.each(a.p.colModel,function(b){if(this.hidden===false\046\046!this.fixed){this.width=j=Math.round(l*this.width/(a.p.tblwidth-e*f-m));\n +d=d+j;h=b}});p=0;k?c.width-m-(d+e*f)!==i\046\046(p=c.width-m-(d+e*f)-i):!k\046\046Math.abs(c.width-m-(d+e*f))!==1\046\046(p=c.width-m-(d+e*f));a.p.colModel[h].width=a.p.colModel[h].width+p;a.p.tblwidth=d+p+e*f+m;if(a.p.tblwidth\076a.p.width){a.p.colModel[h].width=a.p.colModel[h].width-(a.p.tblwidth-parseInt(a.p.width,10));a.p.tblwidth=a.p.width}}})();b(m).css("width",c.width+"px").append("\074div class=\'ui-jqgrid-resize-mark\' id=\'rs_m"+a.p.id+"\'\076\046#160;\074/div\076");b(j).css("width",c.width+"px");var x=b("thead:first",a).get(0),\n +P="";a.p.footerrow\046\046(P+="\074table role=\'grid\' style=\'width:"+a.p.tblwidth+"px\' class=\'ui-jqgrid-ftable\' cellspacing=\'0\' cellpadding=\'0\' border=\'0\'\076\074tbody\076\074tr role=\'row\' class=\'ui-widget-content footrow footrow-"+i+"\'\076");var j=b("tr:first",x),X="\074tr class=\'jqgfirstrow\' role=\'row\' style=\'height:auto\'\076";a.p.disableClick=!1;b("th",j).each(function(d){da=a.p.colModel[d].width;if(typeof a.p.colModel[d].resizable==="undefined")a.p.colModel[d].resizable=true;if(a.p.colModel[d].resizable){aa=document.createElement("span");\n +b(aa).html("\046#160;").addClass("ui-jqgrid-resize ui-jqgrid-resize-"+i);b.browser.opera||b(aa).css("cursor","col-resize");b(this).addClass(a.p.resizeclass)}else aa="";b(this).css("width",da+"px").prepend(aa);var e="";if(a.p.colModel[d].hidden){b(this).css("display","none");e="display:none;"}X=X+("\074td role=\'gridcell\' style=\'height:0px;width:"+da+"px;"+e+"\'\076\074/td\076");c.headers[d]={width:da,el:this};ea=a.p.colModel[d].sortable;if(typeof ea!=="boolean")ea=a.p.colModel[d].sortable=true;e=a.p.colModel[d].name;\n +e=="cb"||(e=="subgrid"||e=="rn")||a.p.viewsortcols[2]\046\046b("\076div",this).addClass("ui-jqgrid-sortable");if(ea)if(a.p.viewsortcols[0]){b("div span.s-ico",this).show();d==a.p.lastsort\046\046b("div span.ui-icon-"+a.p.sortorder,this).removeClass("ui-state-disabled")}else if(d==a.p.lastsort){b("div span.s-ico",this).show();b("div span.ui-icon-"+a.p.sortorder,this).removeClass("ui-state-disabled")}a.p.footerrow\046\046(P=P+("\074td role=\'gridcell\' "+p(d,0,"",null,"",false)+"\076\046#160;\074/td\076"))}).mousedown(function(d){if(b(d.target).closest("th\076span.ui-jqgrid-resize").length==\n +1){var e=ja(this);if(a.p.forceFit===true){var f=a.p,h=e,i;for(i=e+1;i\074a.p.colModel.length;i++)if(a.p.colModel[i].hidden!==true){h=i;break}f.nv=h-e}c.dragStart(e,d,na(e));return false}}).click(function(c){if(a.p.disableClick)return a.p.disableClick=false;var d="th\076div.ui-jqgrid-sortable",e,f;a.p.viewsortcols[2]||(d="th\076div\076span\076span.ui-grid-ico-sort");c=b(c.target).closest(d);if(c.length==1){d=ja(this);if(!a.p.viewsortcols[2]){e=true;f=c.attr("sort")}ia(b("div",this)[0].id,d,e,f);return false}});if(a.p.sortable\046\046\n +b.fn.sortable)try{b(a).jqGrid("sortableColumns",j)}catch(ra){}a.p.footerrow\046\046(P+="\074/tr\076\074/tbody\076\074/table\076");X+="\074/tr\076";this.appendChild(document.createElement("tbody"));b(this).addClass("ui-jqgrid-btable").append(X);var X=null,j=b("\074table class=\'ui-jqgrid-htable\' style=\'width:"+a.p.tblwidth+"px\' role=\'grid\' aria-labelledby=\'gbox_"+this.id+"\' cellspacing=\'0\' cellpadding=\'0\' border=\'0\'\076\074/table\076").append(x),D=a.p.caption\046\046!0===a.p.hiddengrid?!0:!1;e=b("\074div class=\'ui-jqgrid-hbox"+("rtl"==i?"-rtl":"")+\n +"\'\076\074/div\076");x=null;c.hDiv=document.createElement("div");b(c.hDiv).css({width:c.width+"px"}).addClass("ui-state-default ui-jqgrid-hdiv").append(e);b(e).append(j);j=null;D\046\046b(c.hDiv).hide();a.p.pager\046\046("string"==typeof a.p.pager?"#"!=a.p.pager.substr(0,1)\046\046(a.p.pager="#"+a.p.pager):a.p.pager="#"+b(a.p.pager).attr("id"),b(a.p.pager).css({width:c.width+"px"}).appendTo(m).addClass("ui-state-default ui-jqgrid-pager ui-corner-bottom"),D\046\046b(a.p.pager).hide(),l(a.p.pager,""));!1===a.p.cellEdit\046\046!0===a.p.hoverrows\046\046\n +b(a).bind("mouseover",function(a){n=b(a.target).closest("tr.jqgrow");b(n).attr("class")!=="ui-subgrid"\046\046b(n).addClass("ui-state-hover")}).bind("mouseout",function(a){n=b(a.target).closest("tr.jqgrow");b(n).removeClass("ui-state-hover")});var t,H,ga;b(a).before(c.hDiv).click(function(c){A=c.target;n=b(A,a.rows).closest("tr.jqgrow");if(b(n).length===0||n[0].className.indexOf("ui-state-disabled")\076-1||(b(A,a).closest("table.ui-jqgrid-btable").attr("id")||"").replace("_frozen","")!==a.id)return this;var d=\n +b(A).hasClass("cbox"),e=b(a).triggerHandler("jqGridBeforeSelectRow",[n[0].id,c]);(e=e===false||e==="stop"?false:true)\046\046b.isFunction(a.p.beforeSelectRow)\046\046(e=a.p.beforeSelectRow.call(a,n[0].id,c));if(!(A.tagName=="A"||(A.tagName=="INPUT"||A.tagName=="TEXTAREA"||A.tagName=="OPTION"||A.tagName=="SELECT")\046\046!d)\046\046e===true){t=n[0].id;H=b.jgrid.getCellIndex(A);ga=b(A).closest("td,th").html();b(a).triggerHandler("jqGridCellSelect",[t,H,ga,c]);b.isFunction(a.p.onCellSelect)\046\046a.p.onCellSelect.call(a,t,H,ga,\n +c);if(a.p.cellEdit===true)if(a.p.multiselect\046\046d)b(a).jqGrid("setSelection",t,true,c);else{t=n[0].rowIndex;try{b(a).jqGrid("editCell",t,H,true)}catch(f){}}else if(a.p.multikey)if(c[a.p.multikey])b(a).jqGrid("setSelection",t,true,c);else{if(a.p.multiselect\046\046d){d=b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+t).is(":checked");b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+t)[a.p.useProp?"prop":"attr"]("checked",d)}}else{if(a.p.multiselect\046\046a.p.multiboxonly\046\046!d){var g=a.p.frozenColumns?a.p.id+"_frozen":"";b(a.p.selarrrow).each(function(c,\n +d){var e=a.rows.namedItem(d);b(e).removeClass("ui-state-highlight");b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(d))[a.p.useProp?"prop":"attr"]("checked",false);if(g){b("#"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(g)).removeClass("ui-state-highlight");b("#jqg_"+b.jgrid.jqID(a.p.id)+"_"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(g))[a.p.useProp?"prop":"attr"]("checked",false)}});a.p.selarrrow=[]}b(a).jqGrid("setSelection",t,true,c)}}}).bind("reloadGrid",function(c,d){if(a.p.treeGrid===true)a.p.datatype=a.p.treedatatype;\n +d\046\046d.current\046\046a.grid.selectionPreserver(a);if(a.p.datatype=="local"){b(a).jqGrid("resetSelection");a.p.data.length\046\046Q()}else if(!a.p.treeGrid){a.p.selrow=null;if(a.p.multiselect){a.p.selarrrow=[];ca(false)}a.p.savedRow=[]}a.p.scroll\046\046M.call(a,true,false);if(d\046\046d.page){var e=d.page;if(e\076a.p.lastpage)e=a.p.lastpage;e\0741\046\046(e=1);a.p.page=e;a.grid.bDiv.scrollTop=a.grid.prevRowHeight?(e-1)*a.grid.prevRowHeight*a.p.rowNum:0}if(a.grid.prevRowHeight\046\046a.p.scroll){delete a.p.lastpage;a.grid.populateVisible()}else a.grid.populate();\n +a.p._inlinenav===true\046\046b(a).jqGrid("showAddEditButtons");return false}).dblclick(function(c){A=c.target;n=b(A,a.rows).closest("tr.jqgrow");if(b(n).length!==0){t=n[0].rowIndex;H=b.jgrid.getCellIndex(A);b(a).triggerHandler("jqGridDblClickRow",[b(n).attr("id"),t,H,c]);b.isFunction(this.p.ondblClickRow)\046\046a.p.ondblClickRow.call(a,b(n).attr("id"),t,H,c)}}).bind("contextmenu",function(c){A=c.target;n=b(A,a.rows).closest("tr.jqgrow");if(b(n).length!==0){a.p.multiselect||b(a).jqGrid("setSelection",n[0].id,\n +true,c);t=n[0].rowIndex;H=b.jgrid.getCellIndex(A);b(a).triggerHandler("jqGridRightClickRow",[b(n).attr("id"),t,H,c]);b.isFunction(this.p.onRightClickRow)\046\046a.p.onRightClickRow.call(a,b(n).attr("id"),t,H,c)}});c.bDiv=document.createElement("div");k\046\046"auto"===(""+a.p.height).toLowerCase()\046\046(a.p.height="100%");b(c.bDiv).append(b(\'\074div style="position:relative;\'+(k\046\0468\076b.browser.version?"height:0.01%;":"")+\'"\076\074/div\076\').append("\074div\076\074/div\076").append(this)).addClass("ui-jqgrid-bdiv").css({height:a.p.height+\n +(isNaN(a.p.height)?"":"px"),width:c.width+"px"}).scroll(c.scrollGrid);b("table:first",c.bDiv).css({width:a.p.tblwidth+"px"});k?(2==b("tbody",this).length\046\046b("tbody:gt(0)",this).remove(),a.p.multikey\046\046b(c.bDiv).bind("selectstart",function(){return false})):a.p.multikey\046\046b(c.bDiv).bind("mousedown",function(){return false});D\046\046b(c.bDiv).hide();c.cDiv=document.createElement("div");var ha=!0===a.p.hidegrid?b("\074a role=\'link\' href=\'javascript:void(0)\'/\076").addClass("ui-jqgrid-titlebar-close HeaderButton").hover(function(){ha.addClass("ui-state-hover")},\n +function(){ha.removeClass("ui-state-hover")}).append("\074span class=\'ui-icon ui-icon-circle-triangle-n\'\076\074/span\076").css("rtl"==i?"left":"right","0px"):"";b(c.cDiv).append(ha).append("\074span class=\'ui-jqgrid-title"+("rtl"==i?"-rtl":"")+"\'\076"+a.p.caption+"\074/span\076").addClass("ui-jqgrid-titlebar ui-widget-header ui-corner-top ui-helper-clearfix");b(c.cDiv).insertBefore(c.hDiv);a.p.toolbar[0]\046\046(c.uDiv=document.createElement("div"),"top"==a.p.toolbar[1]?b(c.uDiv).insertBefore(c.hDiv):"bottom"==a.p.toolbar[1]\046\046\n +b(c.uDiv).insertAfter(c.hDiv),"both"==a.p.toolbar[1]?(c.ubDiv=document.createElement("div"),b(c.uDiv).insertBefore(c.hDiv).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id),b(c.ubDiv).insertAfter(c.hDiv).addClass("ui-userdata ui-state-default").attr("id","tb_"+this.id),D\046\046b(c.ubDiv).hide()):b(c.uDiv).width(c.width).addClass("ui-userdata ui-state-default").attr("id","t_"+this.id),D\046\046b(c.uDiv).hide());a.p.toppager\046\046(a.p.toppager=b.jgrid.jqID(a.p.id)+"_toppager",c.topDiv=b("\074div id=\'"+\n +a.p.toppager+"\'\076\074/div\076")[0],a.p.toppager="#"+a.p.toppager,b(c.topDiv).insertBefore(c.hDiv).addClass("ui-state-default ui-jqgrid-toppager").width(c.width),l(a.p.toppager,"_t"));a.p.footerrow\046\046(c.sDiv=b("\074div class=\'ui-jqgrid-sdiv\'\076\074/div\076")[0],e=b("\074div class=\'ui-jqgrid-hbox"+("rtl"==i?"-rtl":"")+"\'\076\074/div\076"),b(c.sDiv).append(e).insertAfter(c.hDiv).width(c.width),b(e).append(P),c.footers=b(".ui-jqgrid-ftable",c.sDiv)[0].rows[0].cells,a.p.rownumbers\046\046(c.footers[0].className="ui-state-default jqgrid-rownum"),\n +D\046\046b(c.sDiv).hide());e=null;if(a.p.caption){var oa=a.p.datatype;!0===a.p.hidegrid\046\046(b(".ui-jqgrid-titlebar-close",c.cDiv).click(function(d){var e=b.isFunction(a.p.onHeaderClick),f=".ui-jqgrid-bdiv, .ui-jqgrid-hdiv, .ui-jqgrid-pager, .ui-jqgrid-sdiv",h,i=this;if(a.p.toolbar[0]===true){a.p.toolbar[1]=="both"\046\046(f=f+(", #"+b(c.ubDiv).attr("id")));f=f+(", #"+b(c.uDiv).attr("id"))}h=b(f,"#gview_"+b.jgrid.jqID(a.p.id)).length;a.p.gridstate=="visible"?b(f,"#gbox_"+b.jgrid.jqID(a.p.id)).slideUp("fast",function(){h--;\n +if(h===0){b("span",i).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");a.p.gridstate="hidden";b("#gbox_"+b.jgrid.jqID(a.p.id)).hasClass("ui-resizable")\046\046b(".ui-resizable-handle","#gbox_"+b.jgrid.jqID(a.p.id)).hide();b(a).triggerHandler("jqGridHeaderClick",[a.p.gridstate,d]);e\046\046(D||a.p.onHeaderClick.call(a,a.p.gridstate,d))}}):a.p.gridstate=="hidden"\046\046b(f,"#gbox_"+b.jgrid.jqID(a.p.id)).slideDown("fast",function(){h--;if(h===0){b("span",i).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");\n +if(D){a.p.datatype=oa;G();D=false}a.p.gridstate="visible";b("#gbox_"+b.jgrid.jqID(a.p.id)).hasClass("ui-resizable")\046\046b(".ui-resizable-handle","#gbox_"+b.jgrid.jqID(a.p.id)).show();b(a).triggerHandler("jqGridHeaderClick",[a.p.gridstate,d]);e\046\046(D||a.p.onHeaderClick.call(a,a.p.gridstate,d))}});return false}),D\046\046(a.p.datatype="local",b(".ui-jqgrid-titlebar-close",c.cDiv).trigger("click")))}else b(c.cDiv).hide();b(c.hDiv).after(c.bDiv).mousemove(function(a){if(c.resizing){c.dragMove(a);return false}});\n +b(".ui-jqgrid-labels",c.hDiv).bind("selectstart",function(){return false});b(document).mouseup(function(){if(c.resizing){c.dragEnd();return false}return true});a.formatCol=p;a.sortData=ia;a.updatepager=function(c,d){var e,f,g,h,i,j,k,l="",m=a.p.pager?"_"+b.jgrid.jqID(a.p.pager.substr(1)):"",n=a.p.toppager?"_"+a.p.toppager.substr(1):"";g=parseInt(a.p.page,10)-1;g\0740\046\046(g=0);g=g*parseInt(a.p.rowNum,10);i=g+a.p.reccount;if(a.p.scroll){e=b("tbody:first \076 tr:gt(0)",a.grid.bDiv);g=i-e.length;a.p.reccount=\n +e.length;if(f=e.outerHeight()||a.grid.prevRowHeight){e=g*f;f=parseInt(a.p.records,10)*f;b("\076div:first",a.grid.bDiv).css({height:f}).children("div:first").css({height:e,display:e?"":"none"})}a.grid.bDiv.scrollLeft=a.grid.hDiv.scrollLeft}l=a.p.pager?a.p.pager:"";if(l=l+(a.p.toppager?l?","+a.p.toppager:a.p.toppager:"")){k=b.jgrid.formatter.integer||{};e=o(a.p.page);f=o(a.p.lastpage);b(".selbox",l)[this.p.useProp?"prop":"attr"]("disabled",false);if(a.p.pginput===true){b(".ui-pg-input",l).val(a.p.page);\n +h=a.p.toppager?"#sp_1"+m+",#sp_1"+n:"#sp_1"+m;b(h).html(b.fmatter?b.fmatter.util.NumberFormat(a.p.lastpage,k):a.p.lastpage)}if(a.p.viewrecords)if(a.p.reccount===0)b(".ui-paging-info",l).html(a.p.emptyrecords);else{h=g+1;j=a.p.records;if(b.fmatter){h=b.fmatter.util.NumberFormat(h,k);i=b.fmatter.util.NumberFormat(i,k);j=b.fmatter.util.NumberFormat(j,k)}b(".ui-paging-info",l).html(b.jgrid.format(a.p.recordtext,h,i,j))}if(a.p.pgbuttons===true){e\074=0\046\046(e=f=0);if(e==1||e===0){b("#first"+m+", #prev"+m).addClass("ui-state-disabled").removeClass("ui-state-hover");\n +a.p.toppager\046\046b("#first_t"+n+", #prev_t"+n).addClass("ui-state-disabled").removeClass("ui-state-hover")}else{b("#first"+m+", #prev"+m).removeClass("ui-state-disabled");a.p.toppager\046\046b("#first_t"+n+", #prev_t"+n).removeClass("ui-state-disabled")}if(e==f||e===0){b("#next"+m+", #last"+m).addClass("ui-state-disabled").removeClass("ui-state-hover");a.p.toppager\046\046b("#next_t"+n+", #last_t"+n).addClass("ui-state-disabled").removeClass("ui-state-hover")}else{b("#next"+m+", #last"+m).removeClass("ui-state-disabled");\n +a.p.toppager\046\046b("#next_t"+n+", #last_t"+n).removeClass("ui-state-disabled")}}}c===true\046\046a.p.rownumbers===true\046\046b("td.jqgrid-rownum",a.rows).each(function(a){b(this).html(g+1+a)});d\046\046a.p.jqgdnd\046\046b(a).jqGrid("gridDnD","updateDnD");b(a).triggerHandler("jqGridGridComplete");b.isFunction(a.p.gridComplete)\046\046a.p.gridComplete.call(a);b(a).triggerHandler("jqGridAfterGridComplete")};a.refreshIndex=Q;a.setHeadCheckBox=ca;a.constructTr=N;a.formatter=function(a,b,c,d,e){return u(a,b,c,d,e)};b.extend(c,{populate:G,\n +emptyRows:M});this.grid=c;a.addXmlData=function(b){Z(b,a.grid.bDiv)};a.addJSONData=function(b){$(b,a.grid.bDiv)};this.grid.cols=this.rows[0].cells;G();a.p.hiddengrid=!1}}}})};b.jgrid.extend({getGridParam:function(b){var e=this[0];if(e\046\046e.grid)return b?"undefined"!=typeof e.p[b]?e.p[b]:null:e.p},setGridParam:function(f){return this.each(function(){this.grid\046\046"object"===typeof f\046\046b.extend(!0,this.p,f)})},getDataIDs:function(){var f=[],e=0,c,d=0;this.each(function(){if((c=this.rows.length)\046\0460\074c)for(;e\074\n +c;)b(this.rows[e]).hasClass("jqgrow")\046\046(f[d]=this.rows[e].id,d++),e++});return f},setSelection:function(f,e,c){return this.each(function(){var d,a,g,h,i,j;if(void 0!==f\046\046(e=!1===e?!1:!0,(a=this.rows.namedItem(f+""))\046\046a.className\046\046!(-1\074a.className.indexOf("ui-state-disabled"))))(!0===this.p.scrollrows\046\046(g=this.rows.namedItem(f).rowIndex,0\074=g\046\046(d=b(this.grid.bDiv)[0].clientHeight,h=b(this.grid.bDiv)[0].scrollTop,i=b(this.rows[g]).position().top,g=this.rows[g].clientHeight,i+g\076=d+h?b(this.grid.bDiv)[0].scrollTop=\n +i-(d+h)+g+h:i\074d+h\046\046i\074h\046\046(b(this.grid.bDiv)[0].scrollTop=i))),!0===this.p.frozenColumns\046\046(j=this.p.id+"_frozen"),this.p.multiselect)?(this.setHeadCheckBox(!1),this.p.selrow=a.id,h=b.inArray(this.p.selrow,this.p.selarrrow),-1===h?("ui-subgrid"!==a.className\046\046b(a).addClass("ui-state-highlight").attr("aria-selected","true"),d=!0,this.p.selarrrow.push(this.p.selrow)):("ui-subgrid"!==a.className\046\046b(a).removeClass("ui-state-highlight").attr("aria-selected","false"),d=!1,this.p.selarrrow.splice(h,1),i=this.p.selarrrow[0],\n +this.p.selrow=void 0===i?null:i),b("#jqg_"+b.jgrid.jqID(this.p.id)+"_"+b.jgrid.jqID(a.id))[this.p.useProp?"prop":"attr"]("checked",d),j\046\046(-1===h?b("#"+b.jgrid.jqID(f),"#"+b.jgrid.jqID(j)).addClass("ui-state-highlight"):b("#"+b.jgrid.jqID(f),"#"+b.jgrid.jqID(j)).removeClass("ui-state-highlight"),b("#jqg_"+b.jgrid.jqID(this.p.id)+"_"+b.jgrid.jqID(f),"#"+b.jgrid.jqID(j))[this.p.useProp?"prop":"attr"]("checked",d)),b(this).triggerHandler("jqGridSelectRow",[a.id,d,c]),this.p.onSelectRow\046\046e\046\046this.p.onSelectRow.call(this,\n +a.id,d,c)):"ui-subgrid"!==a.className\046\046(this.p.selrow!=a.id?(b(this.rows.namedItem(this.p.selrow)).removeClass("ui-state-highlight").attr({"aria-selected":"false",tabindex:"-1"}),b(a).addClass("ui-state-highlight").attr({"aria-selected":"true",tabindex:"0"}),j\046\046(b("#"+b.jgrid.jqID(this.p.selrow),"#"+b.jgrid.jqID(j)).removeClass("ui-state-highlight"),b("#"+b.jgrid.jqID(f),"#"+b.jgrid.jqID(j)).addClass("ui-state-highlight")),d=!0):d=!1,this.p.selrow=a.id,b(this).triggerHandler("jqGridSelectRow",[a.id,\n +d,c]),this.p.onSelectRow\046\046e\046\046this.p.onSelectRow.call(this,a.id,d,c))})},resetSelection:function(f){return this.each(function(){var e=this,c,d,a;!0===e.p.frozenColumns\046\046(a=e.p.id+"_frozen");if("undefined"!==typeof f){d=f===e.p.selrow?e.p.selrow:f;b("#"+b.jgrid.jqID(e.p.id)+" tbody:first tr#"+b.jgrid.jqID(d)).removeClass("ui-state-highlight").attr("aria-selected","false");a\046\046b("#"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(a)).removeClass("ui-state-highlight");if(e.p.multiselect){b("#jqg_"+b.jgrid.jqID(e.p.id)+\n +"_"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(e.p.id))[e.p.useProp?"prop":"attr"]("checked",!1);if(a)b("#jqg_"+b.jgrid.jqID(e.p.id)+"_"+b.jgrid.jqID(d),"#"+b.jgrid.jqID(a))[e.p.useProp?"prop":"attr"]("checked",!1);e.setHeadCheckBox(!1)}d=null}else e.p.multiselect?(b(e.p.selarrrow).each(function(d,f){c=e.rows.namedItem(f);b(c).removeClass("ui-state-highlight").attr("aria-selected","false");b("#jqg_"+b.jgrid.jqID(e.p.id)+"_"+b.jgrid.jqID(f))[e.p.useProp?"prop":"attr"]("checked",!1);a\046\046(b("#"+b.jgrid.jqID(f),\n +"#"+b.jgrid.jqID(a)).removeClass("ui-state-highlight"),b("#jqg_"+b.jgrid.jqID(e.p.id)+"_"+b.jgrid.jqID(f),"#"+b.jgrid.jqID(a))[e.p.useProp?"prop":"attr"]("checked",!1))}),e.setHeadCheckBox(!1),e.p.selarrrow=[]):e.p.selrow\046\046(b("#"+b.jgrid.jqID(e.p.id)+" tbody:first tr#"+b.jgrid.jqID(e.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false"),a\046\046b("#"+b.jgrid.jqID(e.p.selrow),"#"+b.jgrid.jqID(a)).removeClass("ui-state-highlight"),e.p.selrow=null);!0===e.p.cellEdit\046\046(0\074=parseInt(e.p.iCol,\n +10)\046\0460\074=parseInt(e.p.iRow,10))\046\046(b("td:eq("+e.p.iCol+")",e.rows[e.p.iRow]).removeClass("edit-cell ui-state-highlight"),b(e.rows[e.p.iRow]).removeClass("selected-row ui-state-hover"));e.p.savedRow=[]})},getRowData:function(f){var e={},c,d=!1,a,g=0;this.each(function(){var h=this,i,j;if("undefined"==typeof f)d=!0,c=[],a=h.rows.length;else{j=h.rows.namedItem(f);if(!j)return e;a=2}for(;g\074a;)d\046\046(j=h.rows[g]),b(j).hasClass("jqgrow")\046\046(b(\'td[role="gridcell"]\',j).each(function(a){i=h.p.colModel[a].name;if("cb"!==\n +i\046\046"subgrid"!==i\046\046"rn"!==i)if(!0===h.p.treeGrid\046\046i==h.p.ExpandColumn)e[i]=b.jgrid.htmlDecode(b("span:first",this).html());else try{e[i]=b.unformat.call(h,this,{rowId:j.id,colModel:h.p.colModel[a]},a)}catch(c){e[i]=b.jgrid.htmlDecode(b(this).html())}}),d\046\046(c.push(e),e={})),g++});return c?c:e},delRowData:function(f){var e=!1,c,d;this.each(function(){if(c=this.rows.namedItem(f)){if(b(c).remove(),this.p.records--,this.p.reccount--,this.updatepager(!0,!1),e=!0,this.p.multiselect\046\046(d=b.inArray(f,this.p.selarrrow),\n +-1!=d\046\046this.p.selarrrow.splice(d,1)),f==this.p.selrow)this.p.selrow=null}else return!1;if("local"==this.p.datatype){var a=this.p._index[b.jgrid.stripPref(this.p.idPrefix,f)];"undefined"!=typeof a\046\046(this.p.data.splice(a,1),this.refreshIndex())}if(!0===this.p.altRows\046\046e){var g=this.p.altclass;b(this.rows).each(function(a){1==a%2?b(this).addClass(g):b(this).removeClass(g)})}});return e},setRowData:function(f,e,c){var d,a=!0,g;this.each(function(){if(!this.grid)return!1;var h=this,i,j,l=typeof c,k={};\n +j=h.rows.namedItem(f);if(!j)return!1;if(e)try{if(b(this.p.colModel).each(function(a){d=this.name;void 0!==e[d]\046\046(k[d]=this.formatter\046\046"string"===typeof this.formatter\046\046"date"==this.formatter?b.unformat.date.call(h,e[d],this):e[d],i=h.formatter(f,e[d],a,e,"edit"),g=this.title?{title:b.jgrid.stripHtml(i)}:{},!0===h.p.treeGrid\046\046d==h.p.ExpandColumn?b("td:eq("+a+") \076 span:first",j).html(i).attr(g):b("td:eq("+a+")",j).html(i).attr(g))}),"local"==h.p.datatype){var m=b.jgrid.stripPref(h.p.idPrefix,f),o=h.p._index[m];\n +if(h.p.treeGrid)for(var p in h.p.treeReader)k.hasOwnProperty(h.p.treeReader[p])\046\046delete k[h.p.treeReader[p]];"undefined"!=typeof o\046\046(h.p.data[o]=b.extend(!0,h.p.data[o],k));k=null}}catch(v){a=!1}a\046\046("string"===l?b(j).addClass(c):"object"===l\046\046b(j).css(c),b(h).triggerHandler("jqGridAfterGridComplete"))});return a},addRowData:function(f,e,c,d){c||(c="last");var a=!1,g,h,i,j,l,k,m,o,p="",v,u,L,E,Y,T;e\046\046(b.isArray(e)?(v=!0,c="last",u=f):(e=[e],v=!1),this.each(function(){var U=e.length;l=this.p.rownumbers===\n +true?1:0;i=this.p.multiselect===true?1:0;j=this.p.subGrid===true?1:0;if(!v)if(typeof f!="undefined")f=f+"";else{f=b.jgrid.randId();if(this.p.keyIndex!==false){u=this.p.colModel[this.p.keyIndex+i+j+l].name;typeof e[0][u]!="undefined"\046\046(f=e[0][u])}}L=this.p.altclass;for(var M=0,Q="",N={},Z=b.isFunction(this.p.afterInsertRow)?true:false;M\074U;){E=e[M];h=[];if(v){try{f=E[u]}catch($){f=b.jgrid.randId()}Q=this.p.altRows===true?(this.rows.length-1)%2===0?L:"":""}T=f;f=this.p.idPrefix+f;if(l){p=this.formatCol(0,\n +1,"",null,f,true);h[h.length]=\'\074td role="gridcell" class="ui-state-default jqgrid-rownum" \'+p+"\0760\074/td\076"}if(i){o=\'\074input role="checkbox" type="checkbox" id="jqg_\'+this.p.id+"_"+f+\'" class="cbox"/\076\';p=this.formatCol(l,1,"",null,f,true);h[h.length]=\'\074td role="gridcell" \'+p+"\076"+o+"\074/td\076"}j\046\046(h[h.length]=b(this).jqGrid("addSubGridCell",i+l,1));for(m=i+j+l;m\074this.p.colModel.length;m++){Y=this.p.colModel[m];g=Y.name;N[g]=E[g];o=this.formatter(f,b.jgrid.getAccessor(E,g),m,E);p=this.formatCol(m,1,o,E,f,true);\n +h[h.length]=\'\074td role="gridcell" \'+p+"\076"+o+"\074/td\076"}h.unshift(this.constructTr(f,false,Q,N,E,false));h[h.length]="\074/tr\076";if(this.rows.length===0)b("table:first",this.grid.bDiv).append(h.join(""));else switch(c){case "last":b(this.rows[this.rows.length-1]).after(h.join(""));k=this.rows.length-1;break;case "first":b(this.rows[0]).after(h.join(""));k=1;break;case "after":(k=this.rows.namedItem(d))\046\046(b(this.rows[k.rowIndex+1]).hasClass("ui-subgrid")?b(this.rows[k.rowIndex+1]).after(h):b(k).after(h.join("")));\n +k++;break;case "before":if(k=this.rows.namedItem(d)){b(k).before(h.join(""));k=k.rowIndex}k--}this.p.subGrid===true\046\046b(this).jqGrid("addSubGrid",i+l,k);this.p.records++;this.p.reccount++;b(this).triggerHandler("jqGridAfterInsertRow",[f,E,E]);Z\046\046this.p.afterInsertRow.call(this,f,E,E);M++;if(this.p.datatype=="local"){N[this.p.localReader.id]=T;this.p._index[T]=this.p.data.length;this.p.data.push(N);N={}}}this.p.altRows===true\046\046!v\046\046(c=="last"?(this.rows.length-1)%2==1\046\046b(this.rows[this.rows.length-1]).addClass(L):\n +b(this.rows).each(function(a){a%2==1?b(this).addClass(L):b(this).removeClass(L)}));this.updatepager(true,true);a=true}));return a},footerData:function(f,e,c){function d(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var a,g=!1,h={},i;"undefined"==typeof f\046\046(f="get");"boolean"!=typeof c\046\046(c=!0);f=f.toLowerCase();this.each(function(){var j=this,l;if(!j.grid||!j.p.footerrow||"set"==f\046\046d(e))return!1;g=!0;b(this.p.colModel).each(function(d){a=this.name;"set"==f?void 0!==e[a]\046\046(l=c?j.formatter("",\n +e[a],d,e,"edit"):e[a],i=this.title?{title:b.jgrid.stripHtml(l)}:{},b("tr.footrow td:eq("+d+")",j.grid.sDiv).html(l).attr(i),g=!0):"get"==f\046\046(h[a]=b("tr.footrow td:eq("+d+")",j.grid.sDiv).html())})});return"get"==f?h:g},showHideCol:function(f,e){return this.each(function(){var c=this,d=!1,a=b.jgrid.cellWidth()?0:c.p.cellLayout,g;if(c.grid){"string"===typeof f\046\046(f=[f]);e="none"!=e?"":"none";var h=""===e?!0:!1,i=c.p.groupHeader\046\046("object"===typeof c.p.groupHeader||b.isFunction(c.p.groupHeader));i\046\046b(c).jqGrid("destroyGroupHeader",\n +!1);b(this.p.colModel).each(function(i){if(-1!==b.inArray(this.name,f)\046\046this.hidden===h){if(!0===c.p.frozenColumns\046\046!0===this.frozen)return!0;b("tr",c.grid.hDiv).each(function(){b(this.cells[i]).css("display",e)});b(c.rows).each(function(){b(this).hasClass("jqgroup")||b(this.cells[i]).css("display",e)});c.p.footerrow\046\046b("tr.footrow td:eq("+i+")",c.grid.sDiv).css("display",e);g=parseInt(this.width,10);c.p.tblwidth="none"===e?c.p.tblwidth-(g+a):c.p.tblwidth+(g+a);this.hidden=!h;d=!0;b(c).triggerHandler("jqGridShowHideCol",\n +[h,this.name,i])}});!0===d\046\046(!0===c.p.shrinkToFit\046\046!isNaN(c.p.height)\046\046(c.p.tblwidth+=parseInt(c.p.scrollOffset,10)),b(c).jqGrid("setGridWidth",!0===c.p.shrinkToFit?c.p.tblwidth:c.p.width));i\046\046b(c).jqGrid("setGroupHeaders",c.p.groupHeader)}})},hideCol:function(f){return this.each(function(){b(this).jqGrid("showHideCol",f,"none")})},showCol:function(f){return this.each(function(){b(this).jqGrid("showHideCol",f,"")})},remapColumns:function(f,e,c){function d(a){var c;c=a.length?b.makeArray(a):b.extend({},\n +a);b.each(f,function(b){a[b]=c[this]})}function a(a,c){b("\076tr"+(c||""),a).each(function(){var a=this,c=b.makeArray(a.cells);b.each(f,function(){var b=c[this];b\046\046a.appendChild(b)})})}var g=this.get(0);d(g.p.colModel);d(g.p.colNames);d(g.grid.headers);a(b("thead:first",g.grid.hDiv),c\046\046":not(.ui-jqgrid-labels)");e\046\046a(b("#"+b.jgrid.jqID(g.p.id)+" tbody:first"),".jqgfirstrow, tr.jqgrow, tr.jqfoot");g.p.footerrow\046\046a(b("tbody:first",g.grid.sDiv));g.p.remapColumns\046\046(g.p.remapColumns.length?d(g.p.remapColumns):\n +g.p.remapColumns=b.makeArray(f));g.p.lastsort=b.inArray(g.p.lastsort,f);g.p.treeGrid\046\046(g.p.expColInd=b.inArray(g.p.expColInd,f));b(g).triggerHandler("jqGridRemapColumns",[f,e,c])},setGridWidth:function(f,e){return this.each(function(){if(this.grid){var c=this,d,a=0,g=b.jgrid.cellWidth()?0:c.p.cellLayout,h,i=0,j=!1,l=c.p.scrollOffset,k,m=0,o=0,p;"boolean"!=typeof e\046\046(e=c.p.shrinkToFit);if(!isNaN(f)){f=parseInt(f,10);c.grid.width=c.p.width=f;b("#gbox_"+b.jgrid.jqID(c.p.id)).css("width",f+"px");b("#gview_"+\n +b.jgrid.jqID(c.p.id)).css("width",f+"px");b(c.grid.bDiv).css("width",f+"px");b(c.grid.hDiv).css("width",f+"px");c.p.pager\046\046b(c.p.pager).css("width",f+"px");c.p.toppager\046\046b(c.p.toppager).css("width",f+"px");!0===c.p.toolbar[0]\046\046(b(c.grid.uDiv).css("width",f+"px"),"both"==c.p.toolbar[1]\046\046b(c.grid.ubDiv).css("width",f+"px"));c.p.footerrow\046\046b(c.grid.sDiv).css("width",f+"px");!1===e\046\046!0===c.p.forceFit\046\046(c.p.forceFit=!1);if(!0===e){b.each(c.p.colModel,function(){if(this.hidden===false){d=this.widthOrg;\n +a=a+(d+g);this.fixed?m=m+(d+g):i++;o++}});if(0===i)return;c.p.tblwidth=a;k=f-g*i-m;if(!isNaN(c.p.height)\046\046(b(c.grid.bDiv)[0].clientHeight\074b(c.grid.bDiv)[0].scrollHeight||1===c.rows.length))j=!0,k-=l;var a=0,v=0\074c.grid.cols.length;b.each(c.p.colModel,function(b){if(this.hidden===false\046\046!this.fixed){d=this.widthOrg;d=Math.round(k*d/(c.p.tblwidth-g*i-m));if(!(d\0740)){this.width=d;a=a+d;c.grid.headers[b].width=d;c.grid.headers[b].el.style.width=d+"px";if(c.p.footerrow)c.grid.footers[b].style.width=d+"px";\n +if(v)c.grid.cols[b].style.width=d+"px";h=b}}});if(!h)return;p=0;j?f-m-(a+g*i)!==l\046\046(p=f-m-(a+g*i)-l):1!==Math.abs(f-m-(a+g*i))\046\046(p=f-m-(a+g*i));c.p.colModel[h].width+=p;c.p.tblwidth=a+p+g*i+m;c.p.tblwidth\076f?(j=c.p.tblwidth-parseInt(f,10),c.p.tblwidth=f,d=c.p.colModel[h].width-=j):d=c.p.colModel[h].width;c.grid.headers[h].width=d;c.grid.headers[h].el.style.width=d+"px";v\046\046(c.grid.cols[h].style.width=d+"px");c.p.footerrow\046\046(c.grid.footers[h].style.width=d+"px")}c.p.tblwidth\046\046(b("table:first",c.grid.bDiv).css("width",\n +c.p.tblwidth+"px"),b("table:first",c.grid.hDiv).css("width",c.p.tblwidth+"px"),c.grid.hDiv.scrollLeft=c.grid.bDiv.scrollLeft,c.p.footerrow\046\046b("table:first",c.grid.sDiv).css("width",c.p.tblwidth+"px"))}}})},setGridHeight:function(f){return this.each(function(){if(this.grid){var e=b(this.grid.bDiv);e.css({height:f+(isNaN(f)?"":"px")});!0===this.p.frozenColumns\046\046b("#"+b.jgrid.jqID(this.p.id)+"_frozen").parent().height(e.height()-16);this.p.height=f;this.p.scroll\046\046this.grid.populateVisible()}})},setCaption:function(f){return this.each(function(){this.p.caption=\n +f;b("span.ui-jqgrid-title, span.ui-jqgrid-title-rtl",this.grid.cDiv).html(f);b(this.grid.cDiv).show()})},setLabel:function(f,e,c,d){return this.each(function(){var a=-1;if(this.grid\046\046"undefined"!=typeof f\046\046(b(this.p.colModel).each(function(b){if(this.name==f)return a=b,!1}),0\074=a)){var g=b("tr.ui-jqgrid-labels th:eq("+a+")",this.grid.hDiv);if(e){var h=b(".s-ico",g);b("[id^=jqgh_]",g).empty().html(e).append(h);this.p.colNames[a]=e}c\046\046("string"===typeof c?b(g).addClass(c):b(g).css(c));"object"===typeof d\046\046\n +b(g).attr(d)}})},setCell:function(f,e,c,d,a,g){return this.each(function(){var h=-1,i,j;if(this.grid\046\046(isNaN(e)?b(this.p.colModel).each(function(a){if(this.name==e)return h=a,!1}):h=parseInt(e,10),0\074=h\046\046(i=this.rows.namedItem(f)))){var l=b("td:eq("+h+")",i);if(""!==c||!0===g)i=this.formatter(f,c,h,i,"edit"),j=this.p.colModel[h].title?{title:b.jgrid.stripHtml(i)}:{},this.p.treeGrid\046\0460\074b(".tree-wrap",b(l)).length?b("span",b(l)).html(i).attr(j):b(l).html(i).attr(j),"local"==this.p.datatype\046\046(i=this.p.colModel[h],\n +c=i.formatter\046\046"string"===typeof i.formatter\046\046"date"==i.formatter?b.unformat.date.call(this,c,i):c,j=this.p._index[f],"undefined"!=typeof j\046\046(this.p.data[j][i.name]=c));"string"===typeof d?b(l).addClass(d):d\046\046b(l).css(d);"object"===typeof a\046\046b(l).attr(a)}})},getCell:function(f,e){var c=!1;this.each(function(){var d=-1;if(this.grid\046\046(isNaN(e)?b(this.p.colModel).each(function(a){if(this.name===e)return d=a,!1}):d=parseInt(e,10),0\074=d)){var a=this.rows.namedItem(f);if(a)try{c=b.unformat.call(this,b("td:eq("+\n +d+")",a),{rowId:a.id,colModel:this.p.colModel[d]},d)}catch(g){c=b.jgrid.htmlDecode(b("td:eq("+d+")",a).html())}}});return c},getCol:function(f,e,c){var d=[],a,g=0,h,i,j,e="boolean"!=typeof e?!1:e;"undefined"==typeof c\046\046(c=!1);this.each(function(){var l=-1;if(this.grid\046\046(isNaN(f)?b(this.p.colModel).each(function(a){if(this.name===f)return l=a,!1}):l=parseInt(f,10),0\074=l)){var k=this.rows.length,m=0;if(k\046\0460\074k){for(;m\074k;){if(b(this.rows[m]).hasClass("jqgrow")){try{a=b.unformat.call(this,b(this.rows[m].cells[l]),\n +{rowId:this.rows[m].id,colModel:this.p.colModel[l]},l)}catch(o){a=b.jgrid.htmlDecode(this.rows[m].cells[l].innerHTML)}c?(j=parseFloat(a),g+=j,void 0===i\046\046(i=h=j),h=Math.min(h,j),i=Math.max(i,j)):e?d.push({id:this.rows[m].id,value:a}):d.push(a)}m++}if(c)switch(c.toLowerCase()){case "sum":d=g;break;case "avg":d=g/k;break;case "count":d=k;break;case "min":d=h;break;case "max":d=i}}}});return d},clearGridData:function(f){return this.each(function(){if(this.grid){"boolean"!=typeof f\046\046(f=!1);if(this.p.deepempty)b("#"+\n +b.jgrid.jqID(this.p.id)+" tbody:first tr:gt(0)").remove();else{var e=b("#"+b.jgrid.jqID(this.p.id)+" tbody:first tr:first")[0];b("#"+b.jgrid.jqID(this.p.id)+" tbody:first").empty().append(e)}this.p.footerrow\046\046f\046\046b(".ui-jqgrid-ftable td",this.grid.sDiv).html("\046#160;");this.p.selrow=null;this.p.selarrrow=[];this.p.savedRow=[];this.p.records=0;this.p.page=1;this.p.lastpage=0;this.p.reccount=0;this.p.data=[];this.p._index={};this.updatepager(!0,!1)}})},getInd:function(b,e){var c=!1,d;this.each(function(){(d=\n +this.rows.namedItem(b))\046\046(c=!0===e?d:d.rowIndex)});return c},bindKeys:function(f){var e=b.extend({onEnter:null,onSpace:null,onLeftKey:null,onRightKey:null,scrollingRows:!0},f||{});return this.each(function(){var c=this;b("body").is("[role]")||b("body").attr("role","application");c.p.scrollrows=e.scrollingRows;b(c).keydown(function(d){var a=b(c).find("tr[tabindex=0]")[0],f,h,i,j=c.p.treeReader.expanded_field;if(a)if(i=c.p._index[a.id],37===d.keyCode||38===d.keyCode||39===d.keyCode||40===d.keyCode){if(38===\n +d.keyCode){h=a.previousSibling;f="";if(h)if(b(h).is(":hidden"))for(;h;){if(h=h.previousSibling,!b(h).is(":hidden")\046\046b(h).hasClass("jqgrow")){f=h.id;break}}else f=h.id;b(c).jqGrid("setSelection",f,!0,d);d.preventDefault()}if(40===d.keyCode){h=a.nextSibling;f="";if(h)if(b(h).is(":hidden"))for(;h;){if(h=h.nextSibling,!b(h).is(":hidden")\046\046b(h).hasClass("jqgrow")){f=h.id;break}}else f=h.id;b(c).jqGrid("setSelection",f,!0,d);d.preventDefault()}37===d.keyCode\046\046(c.p.treeGrid\046\046c.p.data[i][j]\046\046b(a).find("div.treeclick").trigger("click"),\n +b(c).triggerHandler("jqGridKeyLeft",[c.p.selrow]),b.isFunction(e.onLeftKey)\046\046e.onLeftKey.call(c,c.p.selrow));39===d.keyCode\046\046(c.p.treeGrid\046\046!c.p.data[i][j]\046\046b(a).find("div.treeclick").trigger("click"),b(c).triggerHandler("jqGridKeyRight",[c.p.selrow]),b.isFunction(e.onRightKey)\046\046e.onRightKey.call(c,c.p.selrow))}else 13===d.keyCode?(b(c).triggerHandler("jqGridKeyEnter",[c.p.selrow]),b.isFunction(e.onEnter)\046\046e.onEnter.call(c,c.p.selrow)):32===d.keyCode\046\046(b(c).triggerHandler("jqGridKeySpace",[c.p.selrow]),\n +b.isFunction(e.onSpace)\046\046e.onSpace.call(c,c.p.selrow))})})},unbindKeys:function(){return this.each(function(){b(this).unbind("keydown")})},getLocalRow:function(b){var e=!1,c;this.each(function(){"undefined"!==typeof b\046\046(c=this.p._index[b],0\074=c\046\046(e=this.p.data[c]))});return e}})})(jQuery);\n +(function(c){c.fmatter={};c.extend(c.fmatter,{isBoolean:function(a){return"boolean"===typeof a},isObject:function(a){return a\046\046("object"===typeof a||c.isFunction(a))||!1},isString:function(a){return"string"===typeof a},isNumber:function(a){return"number"===typeof a\046\046isFinite(a)},isNull:function(a){return null===a},isUndefined:function(a){return"undefined"===typeof a},isValue:function(a){return this.isObject(a)||this.isString(a)||this.isNumber(a)||this.isBoolean(a)},isEmpty:function(a){if(!this.isString(a)\046\046\n +this.isValue(a))return!1;if(!this.isValue(a))return!0;a=c.trim(a).replace(/\\\046nbsp\\;/ig,"").replace(/\\\046#160\\;/ig,"");return""===a}});c.fn.fmatter=function(a,b,f,d,e){var g=b,f=c.extend({},c.jgrid.formatter,f);try{g=c.fn.fmatter[a].call(this,b,f,d,e)}catch(h){}return g};c.fmatter.util={NumberFormat:function(a,b){c.fmatter.isNumber(a)||(a*=1);if(c.fmatter.isNumber(a)){var f=0\076a,d=a+"",e=b.decimalSeparator?b.decimalSeparator:".",g;if(c.fmatter.isNumber(b.decimalPlaces)){var h=b.decimalPlaces,d=Math.pow(10,\n +h),d=Math.round(a*d)/d+"";g=d.lastIndexOf(".");if(0\074h){0\076g?(d+=e,g=d.length-1):"."!==e\046\046(d=d.replace(".",e));for(;d.length-1-g\074h;)d+="0"}}if(b.thousandsSeparator){h=b.thousandsSeparator;g=d.lastIndexOf(e);g=-1\074g?g:d.length;for(var e=d.substring(g),i=-1,j=g;0\074j;j--){i++;if(0===i%3\046\046j!==g\046\046(!f||1\074j))e=h+e;e=d.charAt(j-1)+e}d=e}d=b.prefix?b.prefix+d:d;return d=b.suffix?d+b.suffix:d}return a},DateFormat:function(a,b,f,d){var e=/^\\/Date\\((([-+])?[0-9]+)(([-+])([0-9]{2})([0-9]{2}))?\\)\\/$/,g="string"===\n +typeof b?b.match(e):null,e=function(a,b){a=""+a;for(b=parseInt(b,10)||2;a.length\074b;)a="0"+a;return a},h={m:1,d:1,y:1970,h:0,i:0,s:0,u:0},i=0,j,k=["i18n"];k.i18n={dayNames:d.dayNames,monthNames:d.monthNames};a in d.masks\046\046(a=d.masks[a]);if(!isNaN(b-0)\046\046"u"==(""+a).toLowerCase())i=new Date(1E3*parseFloat(b));else if(b.constructor===Date)i=b;else if(null!==g)i=new Date(parseInt(g[1],10)),g[3]\046\046(a=60*Number(g[5])+Number(g[6]),a*="-"==g[4]?1:-1,a-=i.getTimezoneOffset(),i.setTime(Number(Number(i)+6E4*a)));\n +else{b=(""+b).split(/[\\\\\\/:_;.,\\t\\T\\s-]/);a=a.split(/[\\\\\\/:_;.,\\t\\T\\s-]/);g=0;for(j=a.length;g\074j;g++)"M"==a[g]\046\046(i=c.inArray(b[g],k.i18n.monthNames),-1!==i\046\04612\076i\046\046(b[g]=i+1)),"F"==a[g]\046\046(i=c.inArray(b[g],k.i18n.monthNames),-1!==i\046\04611\074i\046\046(b[g]=i+1-12)),b[g]\046\046(h[a[g].toLowerCase()]=parseInt(b[g],10));h.f\046\046(h.m=h.f);if(0===h.m\046\0460===h.y\046\0460===h.d)return"\046#160;";h.m=parseInt(h.m,10)-1;i=h.y;70\074=i\046\04699\076=i?h.y=1900+h.y:0\074=i\046\04669\076=i\046\046(h.y=2E3+h.y);i=new Date(h.y,h.m,h.d,h.h,h.i,h.s,h.u)}f in d.masks?f=d.masks[f]:\n +f||(f="Y-m-d");a=i.getHours();b=i.getMinutes();h=i.getDate();g=i.getMonth()+1;j=i.getTimezoneOffset();var l=i.getSeconds(),r=i.getMilliseconds(),n=i.getDay(),m=i.getFullYear(),o=(n+6)%7+1,p=(new Date(m,g-1,h)-new Date(m,0,1))/864E5,q={d:e(h),D:k.i18n.dayNames[n],j:h,l:k.i18n.dayNames[n+7],N:o,S:d.S(h),w:n,z:p,W:5\076o?Math.floor((p+o-1)/7)+1:Math.floor((p+o-1)/7)||(4\076((new Date(m-1,0,1)).getDay()+6)%7?53:52),F:k.i18n.monthNames[g-1+12],m:e(g),M:k.i18n.monthNames[g-1],n:g,t:"?",L:"?",o:"?",Y:m,y:(""+\n +m).substring(2),a:12\076a?d.AmPm[0]:d.AmPm[1],A:12\076a?d.AmPm[2]:d.AmPm[3],B:"?",g:a%12||12,G:a,h:e(a%12||12),H:e(a),i:e(b),s:e(l),u:r,e:"?",I:"?",O:(0\074j?"-":"+")+e(100*Math.floor(Math.abs(j)/60)+Math.abs(j)%60,4),P:"?",T:((""+i).match(/\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g)||[""]).pop().replace(/[^-+\\dA-Z]/g,""),Z:"?",c:"?",r:"?",U:Math.floor(i/1E3)};return f.replace(/\\\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g,\n +function(a){return a in q?q[a]:a.substring(1)})}};c.fn.fmatter.defaultFormat=function(a,b){return c.fmatter.isValue(a)\046\046""!==a?a:b.defaultValue?b.defaultValue:"\046#160;"};c.fn.fmatter.email=function(a,b){return c.fmatter.isEmpty(a)?c.fn.fmatter.defaultFormat(a,b):\'\074a href="mailto:\'+a+\'"\076\'+a+"\074/a\076"};c.fn.fmatter.checkbox=function(a,b){var f=c.extend({},b.checkbox),d;void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));d=!0===f.disabled?\'disabled="disabled"\':\n +"";if(c.fmatter.isEmpty(a)||c.fmatter.isUndefined(a))a=c.fn.fmatter.defaultFormat(a,f);a=(a+"").toLowerCase();return\'\074input type="checkbox" \'+(0\076a.search(/(false|0|no|off)/i)?" checked=\'checked\' ":"")+\' value="\'+a+\'" offval="no" \'+d+"/\076"};c.fn.fmatter.link=function(a,b){var f={target:b.target},d="";void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));f.target\046\046(d="target="+f.target);return!c.fmatter.isEmpty(a)?"\074a "+d+\' href="\'+a+\'"\076\'+\n +a+"\074/a\076":c.fn.fmatter.defaultFormat(a,b)};c.fn.fmatter.showlink=function(a,b){var f={baseLinkUrl:b.baseLinkUrl,showAction:b.showAction,addParam:b.addParam||"",target:b.target,idName:b.idName},d="";void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));f.target\046\046(d="target="+f.target);f=f.baseLinkUrl+f.showAction+"?"+f.idName+"="+b.rowId+f.addParam;return c.fmatter.isString(a)||c.fmatter.isNumber(a)?"\074a "+d+\' href="\'+f+\'"\076\'+a+"\074/a\076":c.fn.fmatter.defaultFormat(a,\n +b)};c.fn.fmatter.integer=function(a,b){var f=c.extend({},b.integer);void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));return c.fmatter.isEmpty(a)?f.defaultValue:c.fmatter.util.NumberFormat(a,f)};c.fn.fmatter.number=function(a,b){var f=c.extend({},b.number);void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));return c.fmatter.isEmpty(a)?f.defaultValue:c.fmatter.util.NumberFormat(a,\n +f)};c.fn.fmatter.currency=function(a,b){var f=c.extend({},b.currency);void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));return c.fmatter.isEmpty(a)?f.defaultValue:c.fmatter.util.NumberFormat(a,f)};c.fn.fmatter.date=function(a,b,f,d){f=c.extend({},b.date);void 0!==b.colModel\046\046!c.fmatter.isUndefined(b.colModel.formatoptions)\046\046(f=c.extend({},f,b.colModel.formatoptions));return!f.reformatAfterEdit\046\046"edit"==d||c.fmatter.isEmpty(a)?c.fn.fmatter.defaultFormat(a,\n +b):c.fmatter.util.DateFormat(f.srcformat,a,f.newformat,f)};c.fn.fmatter.select=function(a,b){var a=a+"",f=!1,d=[],e,g;c.fmatter.isUndefined(b.colModel.formatoptions)?c.fmatter.isUndefined(b.colModel.editoptions)||(f=b.colModel.editoptions.value,e=void 0===b.colModel.editoptions.separator?":":b.colModel.editoptions.separator,g=void 0===b.colModel.editoptions.delimiter?";":b.colModel.editoptions.delimiter):(f=b.colModel.formatoptions.value,e=void 0===b.colModel.formatoptions.separator?":":b.colModel.formatoptions.separator,\n +g=void 0===b.colModel.formatoptions.delimiter?";":b.colModel.formatoptions.delimiter);if(f){var h=!0===b.colModel.editoptions.multiple?!0:!1,i=[];h\046\046(i=a.split(","),i=c.map(i,function(a){return c.trim(a)}));if(c.fmatter.isString(f))for(var j=f.split(g),k=0,l=0;l\074j.length;l++)if(g=j[l].split(e),2\074g.length\046\046(g[1]=c.map(g,function(a,b){if(b\0760)return a}).join(e)),h)-1\074c.inArray(g[0],i)\046\046(d[k]=g[1],k++);else{if(c.trim(g[0])==c.trim(a)){d[0]=g[1];break}}else c.fmatter.isObject(f)\046\046(h?d=c.map(i,function(a){return f[a]}):\n +d[0]=f[a]||"")}a=d.join(", ");return""===a?c.fn.fmatter.defaultFormat(a,b):a};c.fn.fmatter.rowactions=function(a,b,f,d){var e={keys:!1,onEdit:null,onSuccess:null,afterSave:null,onError:null,afterRestore:null,extraparam:{},url:null,restoreAfterError:!0,mtype:"POST",delOptions:{},editOptions:{}},a=c.jgrid.jqID(a),b=c.jgrid.jqID(b),d=c("#"+b)[0].p.colModel[d];c.fmatter.isUndefined(d.formatoptions)||(e=c.extend(e,d.formatoptions));c.fmatter.isUndefined(c("#"+b)[0].p.editOptions)||(e.editOptions=c("#"+\n +b)[0].p.editOptions);c.fmatter.isUndefined(c("#"+b)[0].p.delOptions)||(e.delOptions=c("#"+b)[0].p.delOptions);var g=c("#"+b)[0],d=function(d){c.isFunction(e.afterRestore)\046\046e.afterRestore.call(g,d);c("tr#"+a+" div.ui-inline-edit, tr#"+a+" div.ui-inline-del","#"+b+".ui-jqgrid-btable:first").show();c("tr#"+a+" div.ui-inline-save, tr#"+a+" div.ui-inline-cancel","#"+b+".ui-jqgrid-btable:first").hide()};if(c("#"+a,"#"+b).hasClass("jqgrid-new-row")){var h=g.p.prmNames;e.extraparam[h.oper]=h.addoper}h={keys:e.keys,\n +oneditfunc:e.onEdit,successfunc:e.onSuccess,url:e.url,extraparam:e.extraparam,aftersavefunc:function(d,f){c.isFunction(e.afterSave)\046\046e.afterSave.call(g,d,f);c("tr#"+a+" div.ui-inline-edit, tr#"+a+" div.ui-inline-del","#"+b+".ui-jqgrid-btable:first").show();c("tr#"+a+" div.ui-inline-save, tr#"+a+" div.ui-inline-cancel","#"+b+".ui-jqgrid-btable:first").hide()},errorfunc:e.onError,afterrestorefunc:d,restoreAfterError:e.restoreAfterError,mtype:e.mtype};switch(f){case "edit":c("#"+b).jqGrid("editRow",\n +a,h);c("tr#"+a+" div.ui-inline-edit, tr#"+a+" div.ui-inline-del","#"+b+".ui-jqgrid-btable:first").hide();c("tr#"+a+" div.ui-inline-save, tr#"+a+" div.ui-inline-cancel","#"+b+".ui-jqgrid-btable:first").show();c(g).triggerHandler("jqGridAfterGridComplete");break;case "save":c("#"+b).jqGrid("saveRow",a,h)\046\046(c("tr#"+a+" div.ui-inline-edit, tr#"+a+" div.ui-inline-del","#"+b+".ui-jqgrid-btable:first").show(),c("tr#"+a+" div.ui-inline-save, tr#"+a+" div.ui-inline-cancel","#"+b+".ui-jqgrid-btable:first").hide(),\n +c(g).triggerHandler("jqGridAfterGridComplete"));break;case "cancel":c("#"+b).jqGrid("restoreRow",a,d);c("tr#"+a+" div.ui-inline-edit, tr#"+a+" div.ui-inline-del","#"+b+".ui-jqgrid-btable:first").show();c("tr#"+a+" div.ui-inline-save, tr#"+a+" div.ui-inline-cancel","#"+b+".ui-jqgrid-btable:first").hide();c(g).triggerHandler("jqGridAfterGridComplete");break;case "del":c("#"+b).jqGrid("delGridRow",a,e.delOptions);break;case "formedit":c("#"+b).jqGrid("setSelection",a),c("#"+b).jqGrid("editGridRow",a,\n +e.editOptions)}};c.fn.fmatter.actions=function(a,b){var f={keys:!1,editbutton:!0,delbutton:!0,editformbutton:!1};c.fmatter.isUndefined(b.colModel.formatoptions)||(f=c.extend(f,b.colModel.formatoptions));var d=b.rowId,e="",g;if("undefined"==typeof d||c.fmatter.isEmpty(d))return"";f.editformbutton?(g="onclick=jQuery.fn.fmatter.rowactions(\'"+d+"\',\'"+b.gid+"\',\'formedit\',"+b.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\'); ",e=e+"\074div title=\'"+\n +c.jgrid.nav.edittitle+"\' style=\'float:left;cursor:pointer;\' class=\'ui-pg-div ui-inline-edit\' "+g+"\076\074span class=\'ui-icon ui-icon-pencil\'\076\074/span\076\074/div\076"):f.editbutton\046\046(g="onclick=jQuery.fn.fmatter.rowactions(\'"+d+"\',\'"+b.gid+"\',\'edit\',"+b.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\') ",e=e+"\074div title=\'"+c.jgrid.nav.edittitle+"\' style=\'float:left;cursor:pointer;\' class=\'ui-pg-div ui-inline-edit\' "+g+"\076\074span class=\'ui-icon ui-icon-pencil\'\076\074/span\076\074/div\076");\n +f.delbutton\046\046(g="onclick=jQuery.fn.fmatter.rowactions(\'"+d+"\',\'"+b.gid+"\',\'del\',"+b.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\'); ",e=e+"\074div title=\'"+c.jgrid.nav.deltitle+"\' style=\'float:left;margin-left:5px;\' class=\'ui-pg-div ui-inline-del\' "+g+"\076\074span class=\'ui-icon ui-icon-trash\'\076\074/span\076\074/div\076");g="onclick=jQuery.fn.fmatter.rowactions(\'"+d+"\',\'"+b.gid+"\',\'save\',"+b.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\'); ";\n +e=e+"\074div title=\'"+c.jgrid.edit.bSubmit+"\' style=\'float:left;display:none\' class=\'ui-pg-div ui-inline-save\' "+g+"\076\074span class=\'ui-icon ui-icon-disk\'\076\074/span\076\074/div\076";g="onclick=jQuery.fn.fmatter.rowactions(\'"+d+"\',\'"+b.gid+"\',\'cancel\',"+b.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\'); ";e=e+"\074div title=\'"+c.jgrid.edit.bCancel+"\' style=\'float:left;display:none;margin-left:5px;\' class=\'ui-pg-div ui-inline-cancel\' "+g+"\076\074span class=\'ui-icon ui-icon-cancel\'\076\074/span\076\074/div\076";\n +return"\074div style=\'margin-left:8px;\'\076"+e+"\074/div\076"};c.unformat=function(a,b,f,d){var e,g=b.colModel.formatter,h=b.colModel.formatoptions||{},i=/([\\.\\*\\_\\\'\\(\\)\\{\\}\\+\\?\\\\])/g,j=b.colModel.unformat||c.fn.fmatter[g]\046\046c.fn.fmatter[g].unformat;if("undefined"!==typeof j\046\046c.isFunction(j))e=j.call(this,c(a).text(),b,a);else if(!c.fmatter.isUndefined(g)\046\046c.fmatter.isString(g))switch(e=c.jgrid.formatter||{},g){case "integer":h=c.extend({},e.integer,h);b=h.thousandsSeparator.replace(i,"\\\\$1");b=RegExp(b,"g");\n +e=c(a).text().replace(b,"");break;case "number":h=c.extend({},e.number,h);b=h.thousandsSeparator.replace(i,"\\\\$1");b=RegExp(b,"g");e=c(a).text().replace(b,"").replace(h.decimalSeparator,".");break;case "currency":h=c.extend({},e.currency,h);b=h.thousandsSeparator.replace(i,"\\\\$1");b=RegExp(b,"g");e=c(a).text();h.prefix\046\046h.prefix.length\046\046(e=e.substr(h.prefix.length));h.suffix\046\046h.suffix.length\046\046(e=e.substr(0,e.length-h.suffix.length));e=e.replace(b,"").replace(h.decimalSeparator,".");break;case "checkbox":h=\n +b.colModel.editoptions?b.colModel.editoptions.value.split(":"):["Yes","No"];e=c("input",a).is(":checked")?h[0]:h[1];break;case "select":e=c.unformat.select(a,b,f,d);break;case "actions":return"";default:e=c(a).text()}return void 0!==e?e:!0===d?c(a).text():c.jgrid.htmlDecode(c(a).html())};c.unformat.select=function(a,b,f,d){f=[];a=c(a).text();if(!0===d)return a;var d=c.extend({},!c.fmatter.isUndefined(b.colModel.formatoptions)?b.colModel.formatoptions:b.colModel.editoptions),b=void 0===d.separator?\n +":":d.separator,e=void 0===d.delimiter?";":d.delimiter;if(d.value){var g=d.value,d=!0===d.multiple?!0:!1,h=[];d\046\046(h=a.split(","),h=c.map(h,function(a){return c.trim(a)}));if(c.fmatter.isString(g))for(var i=g.split(e),j=0,k=0;k\074i.length;k++)if(e=i[k].split(b),2\074e.length\046\046(e[1]=c.map(e,function(a,b){if(b\0760)return a}).join(b)),d)-1\074c.inArray(e[1],h)\046\046(f[j]=e[0],j++);else{if(c.trim(e[1])==c.trim(a)){f[0]=e[0];break}}else if(c.fmatter.isObject(g)||c.isArray(g))d||(h[0]=a),f=c.map(h,function(a){var b;c.each(g,\n +function(c,d){if(d==a){b=c;return false}});if(typeof b!="undefined")return b});return f.join(", ")}return a||""};c.unformat.date=function(a,b){var f=c.jgrid.formatter.date||{};c.fmatter.isUndefined(b.formatoptions)||(f=c.extend({},f,b.formatoptions));return!c.fmatter.isEmpty(a)?c.fmatter.util.DateFormat(f.newformat,a,f.srcformat,f):c.fn.fmatter.defaultFormat(a,b)}})(jQuery);\n +(function(a){a.jgrid.extend({getColProp:function(a){var d={},c=this[0];if(!c.grid)return!1;for(var c=c.p.colModel,e=0;e\074c.length;e++)if(c[e].name==a){d=c[e];break}return d},setColProp:function(b,d){return this.each(function(){if(this.grid\046\046d)for(var c=this.p.colModel,e=0;e\074c.length;e++)if(c[e].name==b){a.extend(this.p.colModel[e],d);break}})},sortGrid:function(a,d,c){return this.each(function(){var e=-1;if(this.grid){a||(a=this.p.sortname);for(var h=0;h\074this.p.colModel.length;h++)if(this.p.colModel[h].index==\n +a||this.p.colModel[h].name==a){e=h;break}-1!=e\046\046(h=this.p.colModel[e].sortable,"boolean"!==typeof h\046\046(h=!0),"boolean"!==typeof d\046\046(d=!1),h\046\046this.sortData("jqgh_"+this.p.id+"_"+a,e,d,c))}})},clearBeforeUnload:function(){return this.each(function(){var b=this.grid;b.emptyRows.call(this,!0,!0);a(b.hDiv).unbind("mousemove");a(this).unbind();b.dragEnd=null;b.dragMove=null;b.dragStart=null;b.emptyRows=null;b.populate=null;b.populateVisible=null;b.scrollGrid=null;b.selectionPreserver=null;b.bDiv=null;b.cDiv=\n +null;b.hDiv=null;b.cols=null;var d,c=b.headers.length;for(d=0;d\074c;d++)b.headers[d].el=null;this.addJSONData=this.addXmlData=this.formatter=this.constructTr=this.setHeadCheckBox=this.refreshIndex=this.updatepager=this.sortData=this.formatCol=null})},GridDestroy:function(){return this.each(function(){if(this.grid){this.p.pager\046\046a(this.p.pager).remove();try{a(this).jqGrid("clearBeforeUnload"),a("#gbox_"+a.jgrid.jqID(this.id)).remove()}catch(b){}}})},GridUnload:function(){return this.each(function(){if(this.grid){var b=\n +a(this).attr("id"),d=a(this).attr("class");this.p.pager\046\046a(this.p.pager).empty().removeClass("ui-state-default ui-jqgrid-pager corner-bottom");var c=document.createElement("table");a(c).attr({id:b});c.className=d;b=a.jgrid.jqID(this.id);a(c).removeClass("ui-jqgrid-btable");1===a(this.p.pager).parents("#gbox_"+b).length?(a(c).insertBefore("#gbox_"+b).show(),a(this.p.pager).insertBefore("#gbox_"+b)):a(c).insertBefore("#gbox_"+b).show();a(this).jqGrid("clearBeforeUnload");a("#gbox_"+b).remove()}})},\n +setGridState:function(b){return this.each(function(){this.grid\046\046("hidden"==b?(a(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+a.jgrid.jqID(this.p.id)).slideUp("fast"),this.p.pager\046\046a(this.p.pager).slideUp("fast"),this.p.toppager\046\046a(this.p.toppager).slideUp("fast"),!0===this.p.toolbar[0]\046\046("both"==this.p.toolbar[1]\046\046a(this.grid.ubDiv).slideUp("fast"),a(this.grid.uDiv).slideUp("fast")),this.p.footerrow\046\046a(".ui-jqgrid-sdiv","#gbox_"+a.jgrid.jqID(this.p.id)).slideUp("fast"),a(".ui-jqgrid-titlebar-close span",\n +this.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"),this.p.gridstate="hidden"):"visible"==b\046\046(a(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+a.jgrid.jqID(this.p.id)).slideDown("fast"),this.p.pager\046\046a(this.p.pager).slideDown("fast"),this.p.toppager\046\046a(this.p.toppager).slideDown("fast"),!0===this.p.toolbar[0]\046\046("both"==this.p.toolbar[1]\046\046a(this.grid.ubDiv).slideDown("fast"),a(this.grid.uDiv).slideDown("fast")),this.p.footerrow\046\046a(".ui-jqgrid-sdiv","#gbox_"+\n +a.jgrid.jqID(this.p.id)).slideDown("fast"),a(".ui-jqgrid-titlebar-close span",this.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n"),this.p.gridstate="visible"))})},filterToolbar:function(b){b=a.extend({autosearch:!0,searchOnEnter:!0,beforeSearch:null,afterSearch:null,beforeClear:null,afterClear:null,searchurl:"",stringResult:!1,groupOp:"AND",defaultSearch:"bw"},b||{});return this.each(function(){function d(b,c){var d=a(b);d[0]\046\046jQuery.each(c,function(){void 0!==\n +this.data?d.bind(this.type,this.data,this.fn):d.bind(this.type,this.fn)})}var c=this;if(!this.ftoolbar){var e=function(){var d={},j=0,g,f,h={},m;a.each(c.p.colModel,function(){f=this.index||this.name;m=this.searchoptions\046\046this.searchoptions.sopt?this.searchoptions.sopt[0]:"select"==this.stype?"eq":b.defaultSearch;if(g=a("#gs_"+a.jgrid.jqID(this.name),!0===this.frozen\046\046!0===c.p.frozenColumns?c.grid.fhDiv:c.grid.hDiv).val())d[f]=g,h[f]=m,j++;else try{delete c.p.postData[f]}catch(e){}});var e=0\074j?!0:\n +!1;if(!0===b.stringResult||"local"==c.p.datatype){var k=\'{"groupOp":"\'+b.groupOp+\'","rules":[\',l=0;a.each(d,function(a,b){0\074l\046\046(k+=",");k+=\'{"field":"\'+a+\'",\';k+=\'"op":"\'+h[a]+\'",\';k+=\'"data":"\'+(b+"").replace(/\\\\/g,"\\\\\\\\").replace(/\\"/g,\'\\\\"\')+\'"}\';l++});k+="]}";a.extend(c.p.postData,{filters:k});a.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)\046\046delete c.p.postData[b]})}else a.extend(c.p.postData,d);var p;c.p.searchurl\046\046(p=c.p.url,a(c).jqGrid("setGridParam",\n +{url:c.p.searchurl}));var r="stop"===a(c).triggerHandler("jqGridToolbarBeforeSearch")?!0:!1;!r\046\046a.isFunction(b.beforeSearch)\046\046(r=b.beforeSearch.call(c));r||a(c).jqGrid("setGridParam",{search:e}).trigger("reloadGrid",[{page:1}]);p\046\046a(c).jqGrid("setGridParam",{url:p});a(c).triggerHandler("jqGridToolbarAfterSearch");a.isFunction(b.afterSearch)\046\046b.afterSearch.call(c)},h=a("\074tr class=\'ui-search-toolbar\' role=\'rowheader\'\076\074/tr\076"),g;a.each(c.p.colModel,function(){var i=this,j,q,f,n;q=a("\074th role=\'columnheader\' class=\'ui-state-default ui-th-column ui-th-"+\n +c.p.direction+"\'\076\074/th\076");j=a("\074div style=\'width:100%;position:relative;height:100%;padding-right:0.3em;\'\076\074/div\076");!0===this.hidden\046\046a(q).css("display","none");this.search=!1===this.search?!1:!0;"undefined"==typeof this.stype\046\046(this.stype="text");f=a.extend({},this.searchoptions||{});if(this.search)switch(this.stype){case "select":if(n=this.surl||f.dataUrl)a.ajax(a.extend({url:n,dataType:"html",success:function(c){if(f.buildSelect!==void 0)(c=f.buildSelect(c))\046\046a(j).append(c);else a(j).append(c);f.defaultValue!==\n +void 0\046\046a("select",j).val(f.defaultValue);a("select",j).attr({name:i.index||i.name,id:"gs_"+i.name});f.attr\046\046a("select",j).attr(f.attr);a("select",j).css({width:"100%"});f.dataInit!==void 0\046\046f.dataInit(a("select",j)[0]);f.dataEvents!==void 0\046\046d(a("select",j)[0],f.dataEvents);b.autosearch===true\046\046a("select",j).change(function(){e();return false});c=null}},a.jgrid.ajaxOptions,c.p.ajaxSelectOptions||{}));else{var m,o,k;i.searchoptions?(m=void 0===i.searchoptions.value?"":i.searchoptions.value,o=void 0===\n +i.searchoptions.separator?":":i.searchoptions.separator,k=void 0===i.searchoptions.delimiter?";":i.searchoptions.delimiter):i.editoptions\046\046(m=void 0===i.editoptions.value?"":i.editoptions.value,o=void 0===i.editoptions.separator?":":i.editoptions.separator,k=void 0===i.editoptions.delimiter?";":i.editoptions.delimiter);if(m){n=document.createElement("select");n.style.width="100%";a(n).attr({name:i.index||i.name,id:"gs_"+i.name});var l;if("string"===typeof m){m=m.split(k);for(var p=0;p\074m.length;p++)l=\n +m[p].split(o),k=document.createElement("option"),k.value=l[0],k.innerHTML=l[1],n.appendChild(k)}else if("object"===typeof m)for(l in m)m.hasOwnProperty(l)\046\046(k=document.createElement("option"),k.value=l,k.innerHTML=m[l],n.appendChild(k));void 0!==f.defaultValue\046\046a(n).val(f.defaultValue);f.attr\046\046a(n).attr(f.attr);void 0!==f.dataInit\046\046f.dataInit(n);void 0!==f.dataEvents\046\046d(n,f.dataEvents);a(j).append(n);!0===b.autosearch\046\046a(n).change(function(){e();return false})}}break;case "text":o=void 0!==f.defaultValue?\n +f.defaultValue:"",a(j).append("\074input type=\'text\' style=\'width:95%;padding:0px;\' name=\'"+(i.index||i.name)+"\' id=\'gs_"+i.name+"\' value=\'"+o+"\'/\076"),f.attr\046\046a("input",j).attr(f.attr),void 0!==f.dataInit\046\046f.dataInit(a("input",j)[0]),void 0!==f.dataEvents\046\046d(a("input",j)[0],f.dataEvents),!0===b.autosearch\046\046(b.searchOnEnter?a("input",j).keypress(function(a){if((a.charCode?a.charCode:a.keyCode?a.keyCode:0)==13){e();return false}return this}):a("input",j).keydown(function(a){switch(a.which){case 13:return false;\n +case 9:case 16:case 37:case 38:case 39:case 40:case 27:break;default:g\046\046clearTimeout(g);g=setTimeout(function(){e()},500)}}))}a(q).append(j);a(h).append(q)});a("table thead",c.grid.hDiv).append(h);this.ftoolbar=!0;this.triggerToolbar=e;this.clearToolbar=function(d){var j={},g=0,f,d="boolean"!=typeof d?!0:d;a.each(c.p.colModel,function(){var b;this.searchoptions\046\046void 0!==this.searchoptions.defaultValue\046\046(b=this.searchoptions.defaultValue);f=this.index||this.name;switch(this.stype){case "select":a("#gs_"+\n +a.jgrid.jqID(this.name)+" option",!0===this.frozen\046\046!0===c.p.frozenColumns?c.grid.fhDiv:c.grid.hDiv).each(function(c){if(c===0)this.selected=true;if(a(this).val()==b){this.selected=true;return false}});if(void 0!==b)j[f]=b,g++;else try{delete c.p.postData[f]}catch(d){}break;case "text":if(a("#gs_"+a.jgrid.jqID(this.name),!0===this.frozen\046\046!0===c.p.frozenColumns?c.grid.fhDiv:c.grid.hDiv).val(b),void 0!==b)j[f]=b,g++;else try{delete c.p.postData[f]}catch(e){}}});var h=0\074g?!0:!1;if(!0===b.stringResult||\n +"local"==c.p.datatype){var e=\'{"groupOp":"\'+b.groupOp+\'","rules":[\',o=0;a.each(j,function(a,b){0\074o\046\046(e+=",");e+=\'{"field":"\'+a+\'",\';e+=\'"op":"eq",\';e+=\'"data":"\'+(b+"").replace(/\\\\/g,"\\\\\\\\").replace(/\\"/g,\'\\\\"\')+\'"}\';o++});e+="]}";a.extend(c.p.postData,{filters:e});a.each(["searchField","searchString","searchOper"],function(a,b){c.p.postData.hasOwnProperty(b)\046\046delete c.p.postData[b]})}else a.extend(c.p.postData,j);var k;c.p.searchurl\046\046(k=c.p.url,a(c).jqGrid("setGridParam",{url:c.p.searchurl}));var l=\n +"stop"===a(c).triggerHandler("jqGridToolbarBeforeClear")?!0:!1;!l\046\046a.isFunction(b.beforeClear)\046\046(l=b.beforeClear.call(c));l||d\046\046a(c).jqGrid("setGridParam",{search:h}).trigger("reloadGrid",[{page:1}]);k\046\046a(c).jqGrid("setGridParam",{url:k});a(c).triggerHandler("jqGridToolbarAfterClear");a.isFunction(b.afterClear)\046\046b.afterClear()};this.toggleToolbar=function(){var b=a("tr.ui-search-toolbar",c.grid.hDiv),d=!0===c.p.frozenColumns?a("tr.ui-search-toolbar",c.grid.fhDiv):!1;"none"==b.css("display")?(b.show(),\n +d\046\046d.show()):(b.hide(),d\046\046d.hide())}}})},destroyGroupHeader:function(b){"undefined"==typeof b\046\046(b=!0);return this.each(function(){var d,c,e,h,g,i;c=this.grid;var j=a("table.ui-jqgrid-htable thead",c.hDiv),q=this.p.colModel;if(c){a(this).unbind(".setGroupHeaders");d=a("\074tr\076",{role:"rowheader"}).addClass("ui-jqgrid-labels");h=c.headers;c=0;for(e=h.length;c\074e;c++){g=q[c].hidden?"none":"";g=a(h[c].el).width(h[c].width).css("display",g);try{g.removeAttr("rowSpan")}catch(f){g.attr("rowSpan",1)}d.append(g);\n +i=g.children("span.ui-jqgrid-resize");0\074i.length\046\046(i[0].style.height="");g.children("div")[0].style.top=""}a(j).children("tr.ui-jqgrid-labels").remove();a(j).prepend(d);!0===b\046\046a(this).jqGrid("setGridParam",{groupHeader:null})}})},setGroupHeaders:function(b){b=a.extend({useColSpanStyle:!1,groupHeaders:[]},b||{});return this.each(function(){this.p.groupHeader=b;var d,c,e=0,h,g,i,j,q,f=this.p.colModel,n=f.length,m=this.grid.headers,o=a("table.ui-jqgrid-htable",this.grid.hDiv),k=o.children("thead").children("tr.ui-jqgrid-labels:last").addClass("jqg-second-row-header");\n +h=o.children("thead");var l=o.find(".jqg-first-row-header");void 0===l[0]?l=a("\074tr\076",{role:"row","aria-hidden":"true"}).addClass("jqg-first-row-header").css("height","auto"):l.empty();var p,r=function(a,b){for(var c=0,d=b.length;c\074d;c++)if(b[c].startColumnName===a)return c;return-1};a(this).prepend(h);h=a("\074tr\076",{role:"rowheader"}).addClass("ui-jqgrid-labels jqg-third-row-header");for(d=0;d\074n;d++)if(i=m[d].el,j=a(i),c=f[d],g={height:"0px",width:m[d].width+"px",display:c.hidden?"none":""},a("\074th\076",\n +{role:"gridcell"}).css(g).addClass("ui-first-th-"+this.p.direction).appendTo(l),i.style.width="",g=r(c.name,b.groupHeaders),0\074=g){g=b.groupHeaders[g];e=g.numberOfColumns;q=g.titleText;for(g=c=0;g\074e\046\046d+g\074n;g++)f[d+g].hidden||c++;g=a("\074th\076").attr({role:"columnheader"}).addClass("ui-state-default ui-th-column-header ui-th-"+this.p.direction).css({height:"22px","border-top":"0px none"}).html(q);0\074c\046\046g.attr("colspan",""+c);this.p.headertitles\046\046g.attr("title",g.text());0===c\046\046g.hide();j.before(g);h.append(i);\n +e-=1}else 0===e?b.useColSpanStyle?j.attr("rowspan","2"):(a("\074th\076",{role:"columnheader"}).addClass("ui-state-default ui-th-column-header ui-th-"+this.p.direction).css({display:c.hidden?"none":"","border-top":"0px none"}).insertBefore(j),h.append(i)):(h.append(i),e--);f=a(this).children("thead");f.prepend(l);h.insertAfter(k);o.append(f);b.useColSpanStyle\046\046(o.find("span.ui-jqgrid-resize").each(function(){var b=a(this).parent();b.is(":visible")\046\046(this.style.cssText="height: "+b.height()+"px !important; cursor: col-resize;")}),\n +o.find("div.ui-jqgrid-sortable").each(function(){var b=a(this),c=b.parent();c.is(":visible")\046\046c.is(":has(span.ui-jqgrid-resize)")\046\046b.css("top",(c.height()-b.outerHeight())/2+"px")}));p=f.find("tr.jqg-first-row-header");a(this).bind("jqGridResizeStop.setGroupHeaders",function(a,b,c){p.find("th").eq(c).width(b)})})},setFrozenColumns:function(){return this.each(function(){if(this.grid){var b=this,d=b.p.colModel,c=0,e=d.length,h=-1,g=!1;if(!(!0===b.p.subGrid||!0===b.p.treeGrid||!0===b.p.cellEdit||b.p.sortable||\n +b.p.scroll||b.p.grouping)){b.p.rownumbers\046\046c++;for(b.p.multiselect\046\046c++;c\074e;){if(!0===d[c].frozen)g=!0,h=c;else break;c++}if(0\074=h\046\046g){d=b.p.caption?a(b.grid.cDiv).outerHeight():0;c=a(".ui-jqgrid-htable","#gview_"+a.jgrid.jqID(b.p.id)).height();b.p.toppager\046\046(d+=a(b.grid.topDiv).outerHeight());!0===b.p.toolbar[0]\046\046"bottom"!=b.p.toolbar[1]\046\046(d+=a(b.grid.uDiv).outerHeight());b.grid.fhDiv=a(\'\074div style="position:absolute;left:0px;top:\'+d+"px;height:"+c+\'px;" class="frozen-div ui-state-default ui-jqgrid-hdiv"\076\074/div\076\');\n +b.grid.fbDiv=a(\'\074div style="position:absolute;left:0px;top:\'+(parseInt(d,10)+parseInt(c,10)+1)+\'px;overflow-y:hidden" class="frozen-bdiv ui-jqgrid-bdiv"\076\074/div\076\');a("#gview_"+a.jgrid.jqID(b.p.id)).append(b.grid.fhDiv);d=a(".ui-jqgrid-htable","#gview_"+a.jgrid.jqID(b.p.id)).clone(!0);if(b.p.groupHeader){a("tr.jqg-first-row-header, tr.jqg-third-row-header",d).each(function(){a("th:gt("+h+")",this).remove()});var i=-1,j=-1;a("tr.jqg-second-row-header th",d).each(function(){var b=parseInt(a(this).attr("colspan"),\n +10);b\046\046(i+=b,j++);if(i===h)return!1});i!==h\046\046(j=h);a("tr.jqg-second-row-header",d).each(function(){a("th:gt("+j+")",this).remove()})}else a("tr",d).each(function(){a("th:gt("+h+")",this).remove()});a(d).width(1);a(b.grid.fhDiv).append(d).mousemove(function(a){if(b.grid.resizing)return b.grid.dragMove(a),!1});a(b).bind("jqGridResizeStop.setFrozenColumns",function(c,d,e){c=a(".ui-jqgrid-htable",b.grid.fhDiv);a("th:eq("+e+")",c).width(d);c=a(".ui-jqgrid-btable",b.grid.fbDiv);a("tr:first td:eq("+e+")",\n +c).width(d)});a(b).bind("jqGridOnSortCol.setFrozenColumns",function(c,d){var e=a("tr.ui-jqgrid-labels:last th:eq("+b.p.lastsort+")",b.grid.fhDiv),g=a("tr.ui-jqgrid-labels:last th:eq("+d+")",b.grid.fhDiv);a("span.ui-grid-ico-sort",e).addClass("ui-state-disabled");a(e).attr("aria-selected","false");a("span.ui-icon-"+b.p.sortorder,g).removeClass("ui-state-disabled");a(g).attr("aria-selected","true");!b.p.viewsortcols[0]\046\046b.p.lastsort!=d\046\046(a("span.s-ico",e).hide(),a("span.s-ico",g).show())});a("#gview_"+\n +a.jgrid.jqID(b.p.id)).append(b.grid.fbDiv);jQuery(b.grid.bDiv).scroll(function(){jQuery(b.grid.fbDiv).scrollTop(jQuery(this).scrollTop())});!0===b.p.hoverrows\046\046a("#"+a.jgrid.jqID(b.p.id)).unbind("mouseover").unbind("mouseout");a(b).bind("jqGridAfterGridComplete.setFrozenColumns",function(){a("#"+a.jgrid.jqID(b.p.id)+"_frozen").remove();jQuery(b.grid.fbDiv).height(jQuery(b.grid.bDiv).height()-16);var c=a("#"+a.jgrid.jqID(b.p.id)).clone(!0);a("tr",c).each(function(){a("td:gt("+h+")",this).remove()});\n +a(c).width(1).attr("id",b.p.id+"_frozen");a(b.grid.fbDiv).append(c);!0===b.p.hoverrows\046\046(a("tr.jqgrow",c).hover(function(){a(this).addClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)).removeClass("ui-state-hover")}),a("tr.jqgrow","#"+a.jgrid.jqID(b.p.id)).hover(function(){a(this).addClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)+\n +"_frozen").addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover");a("#"+a.jgrid.jqID(this.id),"#"+a.jgrid.jqID(b.p.id)+"_frozen").removeClass("ui-state-hover")}));c=null});b.p.frozenColumns=!0}}}})},destroyFrozenColumns:function(){return this.each(function(){if(this.grid\046\046!0===this.p.frozenColumns){a(this.grid.fhDiv).remove();a(this.grid.fbDiv).remove();this.grid.fhDiv=null;this.grid.fbDiv=null;a(this).unbind(".setFrozenColumns");if(!0===this.p.hoverrows){var b;a("#"+a.jgrid.jqID(this.p.id)).bind("mouseover",\n +function(d){b=a(d.target).closest("tr.jqgrow");"ui-subgrid"!==a(b).attr("class")\046\046a(b).addClass("ui-state-hover")}).bind("mouseout",function(d){b=a(d.target).closest("tr.jqgrow");a(b).removeClass("ui-state-hover")})}this.p.frozenColumns=!1}})}})})(jQuery);\n +(function(a){a.extend(a.jgrid,{showModal:function(a){a.w.show()},closeModal:function(a){a.w.hide().attr("aria-hidden","true");a.o\046\046a.o.remove()},hideModal:function(d,b){b=a.extend({jqm:!0,gb:""},b||{});if(b.onClose){var c=b.onClose(d);if("boolean"==typeof c\046\046!c)return}if(a.fn.jqm\046\046!0===b.jqm)a(d).attr("aria-hidden","true").jqmHide();else{if(""!==b.gb)try{a(".jqgrid-overlay:first",b.gb).hide()}catch(f){}a(d).hide().attr("aria-hidden","true")}},findPos:function(a){var b=0,c=0;if(a.offsetParent){do b+=\n +a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[b,c]},createModal:function(d,b,c,f,g,h,i){var c=a.extend(!0,a.jgrid.jqModal||{},c),e=document.createElement("div"),l,j=this,i=a.extend({},i||{});l="rtl"==a(c.gbox).attr("dir")?!0:!1;e.className="ui-widget ui-widget-content ui-corner-all ui-jqdialog";e.id=d.themodal;var k=document.createElement("div");k.className="ui-jqdialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix";k.id=d.modalhead;a(k).append("\074span class=\'ui-jqdialog-title\'\076"+\n +c.caption+"\074/span\076");var n=a("\074a href=\'javascript:void(0)\' class=\'ui-jqdialog-titlebar-close ui-corner-all\'\076\074/a\076").hover(function(){n.addClass("ui-state-hover")},function(){n.removeClass("ui-state-hover")}).append("\074span class=\'ui-icon ui-icon-closethick\'\076\074/span\076");a(k).append(n);l?(e.dir="rtl",a(".ui-jqdialog-title",k).css("float","right"),a(".ui-jqdialog-titlebar-close",k).css("left","0.3em")):(e.dir="ltr",a(".ui-jqdialog-title",k).css("float","left"),a(".ui-jqdialog-titlebar-close",k).css("right",\n +"0.3em"));var m=document.createElement("div");a(m).addClass("ui-jqdialog-content ui-widget-content").attr("id",d.modalcontent);a(m).append(b);e.appendChild(m);a(e).prepend(k);!0===h?a("body").append(e):"string"==typeof h?a(h).append(e):a(e).insertBefore(f);a(e).css(i);"undefined"===typeof c.jqModal\046\046(c.jqModal=!0);b={};if(a.fn.jqm\046\046!0===c.jqModal)0===c.left\046\046(0===c.top\046\046c.overlay)\046\046(i=[],i=a.jgrid.findPos(g),c.left=i[0]+4,c.top=i[1]+4),b.top=c.top+"px",b.left=c.left;else if(0!==c.left||0!==c.top)b.left=\n +c.left,b.top=c.top+"px";a("a.ui-jqdialog-titlebar-close",k).click(function(){var b=a("#"+a.jgrid.jqID(d.themodal)).data("onClose")||c.onClose,e=a("#"+a.jgrid.jqID(d.themodal)).data("gbox")||c.gbox;j.hideModal("#"+a.jgrid.jqID(d.themodal),{gb:e,jqm:c.jqModal,onClose:b});return false});if(0===c.width||!c.width)c.width=300;if(0===c.height||!c.height)c.height=200;c.zIndex||(f=a(f).parents("*[role=dialog]").filter(":first").css("z-index"),c.zIndex=f?parseInt(f,10)+2:950);f=0;l\046\046(b.left\046\046!h)\046\046(f=a(c.gbox).width()-\n +(!isNaN(c.width)?parseInt(c.width,10):0)-8,b.left=parseInt(b.left,10)+parseInt(f,10));b.left\046\046(b.left+="px");a(e).css(a.extend({width:isNaN(c.width)?"auto":c.width+"px",height:isNaN(c.height)?"auto":c.height+"px",zIndex:c.zIndex,overflow:"hidden"},b)).attr({tabIndex:"-1",role:"dialog","aria-labelledby":d.modalhead,"aria-hidden":"true"});"undefined"==typeof c.drag\046\046(c.drag=!0);"undefined"==typeof c.resize\046\046(c.resize=!0);if(c.drag)if(a(k).css("cursor","move"),a.fn.jqDrag)a(e).jqDrag(k);else try{a(e).draggable({handle:a("#"+\n +a.jgrid.jqID(k.id))})}catch(o){}if(c.resize)if(a.fn.jqResize)a(e).append("\074div class=\'jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se ui-icon-grip-diagonal-se\'\076\074/div\076"),a("#"+a.jgrid.jqID(d.themodal)).jqResize(".jqResize",d.scrollelm?"#"+a.jgrid.jqID(d.scrollelm):!1);else try{a(e).resizable({handles:"se, sw",alsoResize:d.scrollelm?"#"+a.jgrid.jqID(d.scrollelm):!1})}catch(p){}!0===c.closeOnEscape\046\046a(e).keydown(function(b){if(b.which==27){b=a("#"+a.jgrid.jqID(d.themodal)).data("onClose")||\n +c.onClose;j.hideModal(this,{gb:c.gbox,jqm:c.jqModal,onClose:b})}})},viewModal:function(d,b){b=a.extend({toTop:!0,overlay:10,modal:!1,overlayClass:"ui-widget-overlay",onShow:a.jgrid.showModal,onHide:a.jgrid.closeModal,gbox:"",jqm:!0,jqM:!0},b||{});if(a.fn.jqm\046\046!0===b.jqm)b.jqM?a(d).attr("aria-hidden","false").jqm(b).jqmShow():a(d).attr("aria-hidden","false").jqmShow();else{""!==b.gbox\046\046(a(".jqgrid-overlay:first",b.gbox).show(),a(d).data("gbox",b.gbox));a(d).show().attr("aria-hidden","false");try{a(":input:visible",\n +d)[0].focus()}catch(c){}}},info_dialog:function(d,b,c,f){var g={width:290,height:"auto",dataheight:"auto",drag:!0,resize:!1,caption:"\074b\076"+d+"\074/b\076",left:250,top:170,zIndex:1E3,jqModal:!0,modal:!1,closeOnEscape:!0,align:"center",buttonalign:"center",buttons:[]};a.extend(g,f||{});var h=g.jqModal,i=this;a.fn.jqm\046\046!h\046\046(h=!1);d="";if(0\074g.buttons.length)for(f=0;f\074g.buttons.length;f++)"undefined"==typeof g.buttons[f].id\046\046(g.buttons[f].id="info_button_"+f),d+="\074a href=\'javascript:void(0)\' id=\'"+g.buttons[f].id+\n +"\' class=\'fm-button ui-state-default ui-corner-all\'\076"+g.buttons[f].text+"\074/a\076";f=isNaN(g.dataheight)?g.dataheight:g.dataheight+"px";b="\074div id=\'info_id\'\076"+("\074div id=\'infocnt\' style=\'margin:0px;padding-bottom:1em;width:100%;overflow:auto;position:relative;height:"+f+";"+("text-align:"+g.align+";")+"\'\076"+b+"\074/div\076");b+=c?"\074div class=\'ui-widget-content ui-helper-clearfix\' style=\'text-align:"+g.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;\'\076\074a href=\'javascript:void(0)\' id=\'closedialog\' class=\'fm-button ui-state-default ui-corner-all\'\076"+\n +c+"\074/a\076"+d+"\074/div\076":""!==d?"\074div class=\'ui-widget-content ui-helper-clearfix\' style=\'text-align:"+g.buttonalign+";padding-bottom:0.8em;padding-top:0.5em;background-image: none;border-width: 1px 0 0 0;\'\076"+d+"\074/div\076":"";b+="\074/div\076";try{"false"==a("#info_dialog").attr("aria-hidden")\046\046a.jgrid.hideModal("#info_dialog",{jqm:h}),a("#info_dialog").remove()}catch(e){}a.jgrid.createModal({themodal:"info_dialog",modalhead:"info_head",modalcontent:"info_content",scrollelm:"infocnt"},b,g,"","",!0);d\046\046a.each(g.buttons,\n +function(b){a("#"+a.jgrid.jqID(this.id),"#info_id").bind("click",function(){g.buttons[b].onClick.call(a("#info_dialog"));return!1})});a("#closedialog","#info_id").click(function(){i.hideModal("#info_dialog",{jqm:h});return!1});a(".fm-button","#info_dialog").hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});a.isFunction(g.beforeOpen)\046\046g.beforeOpen();a.jgrid.viewModal("#info_dialog",{onHide:function(a){a.w.hide().remove();a.o\046\046a.o.remove()},modal:g.modal,\n +jqm:h});a.isFunction(g.afterOpen)\046\046g.afterOpen();try{a("#info_dialog").focus()}catch(l){}},createEl:function(d,b,c,f,g){function h(b,d){a.isFunction(d.dataInit)\046\046d.dataInit.call(l,b);d.dataEvents\046\046a.each(d.dataEvents,function(){void 0!==this.data?a(b).bind(this.type,this.data,this.fn):a(b).bind(this.type,this.fn)});return d}function i(b,d,c){var e="dataInit dataEvents dataUrl buildSelect sopt searchhidden defaultValue attr".split(" ");"undefined"!=typeof c\046\046a.isArray(c)\046\046a.merge(e,c);a.each(d,function(d,\n +c){-1===a.inArray(d,e)\046\046a(b).attr(d,c)});d.hasOwnProperty("id")||a(b).attr("id",a.jgrid.randId())}var e="",l=this;switch(d){case "textarea":e=document.createElement("textarea");f?b.cols||a(e).css({width:"98%"}):b.cols||(b.cols=20);b.rows||(b.rows=2);if("\046nbsp;"==c||"\046#160;"==c||1==c.length\046\046160==c.charCodeAt(0))c="";e.value=c;i(e,b);b=h(e,b);a(e).attr({role:"textbox",multiline:"true"});break;case "checkbox":e=document.createElement("input");e.type="checkbox";b.value?(d=b.value.split(":"),c===d[0]\046\046\n +(e.checked=!0,e.defaultChecked=!0),e.value=d[0],a(e).attr("offval",d[1])):(d=c.toLowerCase(),0\076d.search(/(false|0|no|off|undefined)/i)\046\046""!==d?(e.checked=!0,e.defaultChecked=!0,e.value=c):e.value="on",a(e).attr("offval","off"));i(e,b,["value"]);b=h(e,b);a(e).attr("role","checkbox");break;case "select":e=document.createElement("select");e.setAttribute("role","select");f=[];!0===b.multiple?(d=!0,e.multiple="multiple",a(e).attr("aria-multiselectable","true")):d=!1;if("undefined"!=typeof b.dataUrl)a.ajax(a.extend({url:b.dataUrl,\n +type:"GET",dataType:"html",context:{elem:e,options:b,vl:c},success:function(d){var b=[],c=this.elem,e=this.vl,f=a.extend({},this.options),g=f.multiple===true;a.isFunction(f.buildSelect)\046\046(d=f.buildSelect.call(l,d));if(d=a(d).html()){a(c).append(d);i(c,f);f=h(c,f);if(typeof f.size==="undefined")f.size=g?3:1;if(g){b=e.split(",");b=a.map(b,function(b){return a.trim(b)})}else b[0]=a.trim(e);setTimeout(function(){a("option",c).each(function(d){if(d===0\046\046c.multiple)this.selected=false;a(this).attr("role",\n +"option");if(a.inArray(a.trim(a(this).text()),b)\076-1||a.inArray(a.trim(a(this).val()),b)\076-1)this.selected="selected"})},0)}}},g||{}));else if(b.value){var j;"undefined"===typeof b.size\046\046(b.size=d?3:1);d\046\046(f=c.split(","),f=a.map(f,function(b){return a.trim(b)}));"function"===typeof b.value\046\046(b.value=b.value());var k,n,m=void 0===b.separator?":":b.separator,g=void 0===b.delimiter?";":b.delimiter;if("string"===typeof b.value){k=b.value.split(g);for(j=0;j\074k.length;j++){n=k[j].split(m);2\074n.length\046\046(n[1]=\n +a.map(n,function(a,b){if(b\0760)return a}).join(m));g=document.createElement("option");g.setAttribute("role","option");g.value=n[0];g.innerHTML=n[1];e.appendChild(g);if(!d\046\046(a.trim(n[0])==a.trim(c)||a.trim(n[1])==a.trim(c)))g.selected="selected";if(d\046\046(-1\074a.inArray(a.trim(n[1]),f)||-1\074a.inArray(a.trim(n[0]),f)))g.selected="selected"}}else if("object"===typeof b.value)for(j in m=b.value,m)if(m.hasOwnProperty(j)){g=document.createElement("option");g.setAttribute("role","option");g.value=j;g.innerHTML=\n +m[j];e.appendChild(g);if(!d\046\046(a.trim(j)==a.trim(c)||a.trim(m[j])==a.trim(c)))g.selected="selected";if(d\046\046(-1\074a.inArray(a.trim(m[j]),f)||-1\074a.inArray(a.trim(j),f)))g.selected="selected"}i(e,b,["value"]);b=h(e,b)}break;case "text":case "password":case "button":j="button"==d?"button":"textbox";e=document.createElement("input");e.type=d;e.value=c;i(e,b);b=h(e,b);"button"!=d\046\046(f?b.size||a(e).css({width:"98%"}):b.size||(b.size=20));a(e).attr("role",j);break;case "image":case "file":e=document.createElement("input");\n +e.type=d;i(e,b);b=h(e,b);break;case "custom":e=document.createElement("span");try{if(a.isFunction(b.custom_element))if(m=b.custom_element.call(l,c,b))m=a(m).addClass("customelement").attr({id:b.id,name:b.name}),a(e).empty().append(m);else throw"e2";else throw"e1";}catch(o){"e1"==o\046\046a.jgrid.info_dialog(a.jgrid.errors.errcap,"function \'custom_element\' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"==o?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function \'custom_element\' "+a.jgrid.edit.msg.novalue,\n +a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,"string"===typeof o?o:o.message,a.jgrid.edit.bClose)}}return e},checkDate:function(a,b){var c={},f,a=a.toLowerCase();f=-1!=a.indexOf("/")?"/":-1!=a.indexOf("-")?"-":-1!=a.indexOf(".")?".":"/";a=a.split(f);b=b.split(f);if(3!=b.length)return!1;f=-1;for(var g,h=-1,i=-1,e=0;e\074a.length;e++)g=isNaN(b[e])?0:parseInt(b[e],10),c[a[e]]=g,g=a[e],-1!=g.indexOf("y")\046\046(f=e),-1!=g.indexOf("m")\046\046(i=e),-1!=g.indexOf("d")\046\046(h=e);g="y"==a[f]||"yyyy"==a[f]?\n +4:"yy"==a[f]?2:-1;var e=function(a){for(var b=1;b\074=a;b++){this[b]=31;if(4==b||6==b||9==b||11==b)this[b]=30;2==b\046\046(this[b]=29)}return this}(12),l;if(-1===f)return!1;l=c[a[f]].toString();2==g\046\0461==l.length\046\046(g=1);if(l.length!=g||0===c[a[f]]\046\046"00"!=b[f]||-1===i)return!1;l=c[a[i]].toString();if(1\076l.length||(1\076c[a[i]]||12\074c[a[i]])||-1===h)return!1;l=c[a[h]].toString();return 1\076l.length||1\076c[a[h]]||31\074c[a[h]]||2==c[a[i]]\046\046c[a[h]]\076(0===c[a[f]]%4\046\046(0!==c[a[f]]%100||0===c[a[f]]%400)?29:28)||c[a[h]]\076e[c[a[i]]]?\n +!1:!0},isEmpty:function(a){return a.match(/^\\s+$/)||""===a?!0:!1},checkTime:function(d){var b=/^(\\d{1,2}):(\\d{2})([ap]m)?$/;if(!a.jgrid.isEmpty(d))if(d=d.match(b)){if(d[3]){if(1\076d[1]||12\074d[1])return!1}else if(23\074d[1])return!1;if(59\074d[2])return!1}else return!1;return!0},checkValues:function(d,b,c,f,g){var h,i;if("undefined"===typeof f)if("string"==typeof b){f=0;for(g=c.p.colModel.length;f\074g;f++)if(c.p.colModel[f].name==b){h=c.p.colModel[f].editrules;b=f;try{i=c.p.colModel[f].formoptions.label}catch(e){}break}}else 0\074=\n +b\046\046(h=c.p.colModel[b].editrules);else h=f,i=void 0===g?"_":g;if(h){i||(i=c.p.colNames[b]);if(!0===h.required\046\046a.jgrid.isEmpty(d))return[!1,i+": "+a.jgrid.edit.msg.required,""];f=!1===h.required?!1:!0;if(!0===h.number\046\046!(!1===f\046\046a.jgrid.isEmpty(d))\046\046isNaN(d))return[!1,i+": "+a.jgrid.edit.msg.number,""];if("undefined"!=typeof h.minValue\046\046!isNaN(h.minValue)\046\046parseFloat(d)\074parseFloat(h.minValue))return[!1,i+": "+a.jgrid.edit.msg.minValue+" "+h.minValue,""];if("undefined"!=typeof h.maxValue\046\046!isNaN(h.maxValue)\046\046\n +parseFloat(d)\076parseFloat(h.maxValue))return[!1,i+": "+a.jgrid.edit.msg.maxValue+" "+h.maxValue,""];if(!0===h.email\046\046!(!1===f\046\046a.jgrid.isEmpty(d))\046\046(g=/^((([a-z]|\\d|[!#\\$%\046\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%\046\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i,\n +!g.test(d)))return[!1,i+": "+a.jgrid.edit.msg.email,""];if(!0===h.integer\046\046!(!1===f\046\046a.jgrid.isEmpty(d))\046\046(isNaN(d)||0!==d%1||-1!=d.indexOf(".")))return[!1,i+": "+a.jgrid.edit.msg.integer,""];if(!0===h.date\046\046!(!1===f\046\046a.jgrid.isEmpty(d))\046\046(b=c.p.colModel[b].formatoptions\046\046c.p.colModel[b].formatoptions.newformat?c.p.colModel[b].formatoptions.newformat:c.p.colModel[b].datefmt||"Y-m-d",!a.jgrid.checkDate(b,d)))return[!1,i+": "+a.jgrid.edit.msg.date+" - "+b,""];if(!0===h.time\046\046!(!1===f\046\046a.jgrid.isEmpty(d))\046\046\n +!a.jgrid.checkTime(d))return[!1,i+": "+a.jgrid.edit.msg.date+" - hh:mm (am/pm)",""];if(!0===h.url\046\046!(!1===f\046\046a.jgrid.isEmpty(d))\046\046(g=/^(((https?)|(ftp)):\\/\\/([\\-\\w]+\\.)+\\w{2,3}(\\/[%\\-\\w]+(\\.\\w{2,})?)*(([\\w\\-\\.\\?\\\\\\/+@\046#;`~=%!]*)(\\.\\w{2,})?)*\\/?)/i,!g.test(d)))return[!1,i+": "+a.jgrid.edit.msg.url,""];if(!0===h.custom\046\046!(!1===f\046\046a.jgrid.isEmpty(d)))return a.isFunction(h.custom_func)?(d=h.custom_func.call(c,d,i),a.isArray(d)?d:[!1,a.jgrid.edit.msg.customarray,""]):[!1,a.jgrid.edit.msg.customfcheck,\n +""]}return[!0,"",""]}})})(jQuery);\n +(function(a){var c={};a.jgrid.extend({searchGrid:function(c){c=a.extend({recreateFilter:!1,drag:!0,sField:"searchField",sValue:"searchString",sOper:"searchOper",sFilter:"filters",loadDefaults:!0,beforeShowSearch:null,afterShowSearch:null,onInitializeSearch:null,afterRedraw:null,afterChange:null,closeAfterSearch:!1,closeAfterReset:!1,closeOnEscape:!1,searchOnEnter:!1,multipleSearch:!1,multipleGroup:!1,top:0,left:0,jqModal:!0,modal:!1,resize:!0,width:450,height:"auto",dataheight:"auto",showQuery:!1,\n +errorcheck:!0,sopt:null,stringResult:void 0,onClose:null,onSearch:null,onReset:null,toTop:!0,overlay:30,columns:[],tmplNames:null,tmplFilters:null,tmplLabel:" Template: ",showOnLoad:!1,layer:null},a.jgrid.search,c||{});return this.each(function(){function d(b){r=a(e).triggerHandler("jqGridFilterBeforeShow",[b]);"undefined"===typeof r\046\046(r=!0);r\046\046a.isFunction(c.beforeShowSearch)\046\046(r=c.beforeShowSearch.call(e,b));r\046\046(a.jgrid.viewModal("#"+a.jgrid.jqID(u.themodal),{gbox:"#gbox_"+a.jgrid.jqID(n),jqm:c.jqModal,\n +modal:c.modal,overlay:c.overlay,toTop:c.toTop}),a(e).triggerHandler("jqGridFilterAfterShow",[b]),a.isFunction(c.afterShowSearch)\046\046c.afterShowSearch.call(e,b))}var e=this;if(e.grid){var n="fbox_"+e.p.id,r=!0,u={themodal:"searchmod"+n,modalhead:"searchhd"+n,modalcontent:"searchcnt"+n,scrollelm:n},t=e.p.postData[c.sFilter];"string"===typeof t\046\046(t=a.jgrid.parse(t));!0===c.recreateFilter\046\046a("#"+a.jgrid.jqID(u.themodal)).remove();if(void 0!==a("#"+a.jgrid.jqID(u.themodal))[0])d(a("#fbox_"+a.jgrid.jqID(+e.p.id)));\n +else{var l=a("\074div\076\074div id=\'"+n+"\' class=\'searchFilter\' style=\'overflow:auto\'\076\074/div\076\074/div\076").insertBefore("#gview_"+a.jgrid.jqID(e.p.id)),g="left",f="";"rtl"==e.p.direction\046\046(g="right",f=" style=\'text-align:left\'",l.attr("dir","rtl"));var p=a.extend([],e.p.colModel),w="\074a href=\'javascript:void(0)\' id=\'"+n+"_search\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset\'\076\074span class=\'ui-icon ui-icon-search\'\076\074/span\076"+c.Find+"\074/a\076",b="\074a href=\'javascript:void(0)\' id=\'"+n+"_reset\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search\'\076\074span class=\'ui-icon ui-icon-arrowreturnthick-1-w\'\076\074/span\076"+\n +c.Reset+"\074/a\076",s="",h="",j,i=!1,q=-1;c.showQuery\046\046(s="\074a href=\'javascript:void(0)\' id=\'"+n+"_query\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-left\'\076\074span class=\'ui-icon ui-icon-comment\'\076\074/span\076Query\074/a\076");c.columns.length?p=c.columns:a.each(p,function(a,b){if(!b.label)b.label=e.p.colNames[a];if(!i){var c=typeof b.search==="undefined"?true:b.search,d=b.hidden===true;if(b.searchoptions\046\046b.searchoptions.searchhidden===true\046\046c||c\046\046!d){i=true;j=b.index||b.name;q=a}}});if(!t\046\046j||!1===\n +c.multipleSearch){var y="eq";0\074=q\046\046p[q].searchoptions\046\046p[q].searchoptions.sopt?y=p[q].searchoptions.sopt[0]:c.sopt\046\046c.sopt.length\046\046(y=c.sopt[0]);t={groupOp:"AND",rules:[{field:j,op:y,data:""}]}}i=!1;c.tmplNames\046\046c.tmplNames.length\046\046(i=!0,h=c.tmplLabel,h+="\074select class=\'ui-template\'\076",h+="\074option value=\'default\'\076Default\074/option\076",a.each(c.tmplNames,function(a,b){h=h+("\074option value=\'"+a+"\'\076"+b+"\074/option\076")}),h+="\074/select\076");g="\074table class=\'EditTable\' style=\'border:0px none;margin-top:5px\' id=\'"+\n +n+"_2\'\076\074tbody\076\074tr\076\074td colspan=\'2\'\076\074hr class=\'ui-widget-content\' style=\'margin:1px\'/\076\074/td\076\074/tr\076\074tr\076\074td class=\'EditButton\' style=\'text-align:"+g+"\'\076"+b+h+"\074/td\076\074td class=\'EditButton\' "+f+"\076"+s+w+"\074/td\076\074/tr\076\074/tbody\076\074/table\076";n=a.jgrid.jqID(n);a("#"+n).jqFilter({columns:p,filter:c.loadDefaults?t:null,showQuery:c.showQuery,errorcheck:c.errorcheck,sopt:c.sopt,groupButton:c.multipleGroup,ruleButtons:c.multipleSearch,afterRedraw:c.afterRedraw,_gridsopt:a.jgrid.search.odata,ajaxSelectOptions:e.p.ajaxSelectOptions,\n +groupOps:c.groupOps,onChange:function(){this.p.showQuery\046\046a(".query",this).html(this.toUserFriendlyString());a.isFunction(c.afterChange)\046\046c.afterChange.call(e,a("#"+n),c)},direction:e.p.direction});l.append(g);i\046\046(c.tmplFilters\046\046c.tmplFilters.length)\046\046a(".ui-template",l).bind("change",function(){var b=a(this).val();b=="default"?a("#"+n).jqFilter("addFilter",t):a("#"+n).jqFilter("addFilter",c.tmplFilters[parseInt(b,10)]);return false});!0===c.multipleGroup\046\046(c.multipleSearch=!0);a(e).triggerHandler("jqGridFilterInitialize",\n +[a("#"+n)]);a.isFunction(c.onInitializeSearch)\046\046c.onInitializeSearch.call(e,a("#"+n));c.gbox="#gbox_"+n;c.layer?a.jgrid.createModal(u,l,c,"#gview_"+a.jgrid.jqID(e.p.id),a("#gbox_"+a.jgrid.jqID(e.p.id))[0],"#"+a.jgrid.jqID(c.layer),{position:"relative"}):a.jgrid.createModal(u,l,c,"#gview_"+a.jgrid.jqID(e.p.id),a("#gbox_"+a.jgrid.jqID(e.p.id))[0]);(c.searchOnEnter||c.closeOnEscape)\046\046a("#"+a.jgrid.jqID(u.themodal)).keydown(function(b){var d=a(b.target);if(c.searchOnEnter\046\046b.which===13\046\046!d.hasClass("add-group")\046\046\n +!d.hasClass("add-rule")\046\046!d.hasClass("delete-group")\046\046!d.hasClass("delete-rule")\046\046(!d.hasClass("fm-button")||!d.is("[id$=_query]"))){a("#"+n+"_search").focus().click();return false}if(c.closeOnEscape\046\046b.which===27){a("#"+a.jgrid.jqID(u.modalhead)).find(".ui-j</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +qdialog-titlebar-close").focus().click();return false}});s&&a("#"+n+"_query").bind("click",function(){a(".queryresult",l).toggle();return false});void 0===c.stringResult&&(c.stringResult=c.multipleSearch);a("#"+n+"_search").bind("click",function(){var b=\n +a("#"+n),d={},h,f=b.jqFilter("filterData");if(c.errorcheck){b[0].hideError();c.showQuery||b.jqFilter("toSQLString");if(b[0].p.error){b[0].showError();return false}}if(c.stringResult){try{h=xmlJsonClass.toJson(f,"","",false)}catch(g){try{h=JSON.stringify(f)}catch(j){}}if(typeof h==="string"){d[c.sFilter]=h;a.each([c.sField,c.sValue,c.sOper],function(){d[this]=""})}}else if(c.multipleSearch){d[c.sFilter]=f;a.each([c.sField,c.sValue,c.sOper],function(){d[this]=""})}else{d[c.sField]=f.rules[0].field;\n +d[c.sValue]=f.rules[0].data;d[c.sOper]=f.rules[0].op;d[c.sFilter]=""}e.p.search=true;a.extend(e.p.postData,d);a(e).triggerHandler("jqGridFilterSearch");a.isFunction(c.onSearch)&&c.onSearch.call(e);a(e).trigger("reloadGrid",[{page:1}]);c.closeAfterSearch&&a.jgrid.hideModal("#"+a.jgrid.jqID(u.themodal),{gb:"#gbox_"+a.jgrid.jqID(e.p.id),jqm:c.jqModal,onClose:c.onClose});return false});a("#"+n+"_reset").bind("click",function(){var b={},d=a("#"+n);e.p.search=false;c.multipleSearch===false?b[c.sField]=\n +b[c.sValue]=b[c.sOper]="":b[c.sFilter]="";d[0].resetFilter();i&&a(".ui-template",l).val("default");a.extend(e.p.postData,b);a(e).triggerHandler("jqGridFilterReset");a.isFunction(c.onReset)&&c.onReset.call(e);a(e).trigger("reloadGrid",[{page:1}]);return false});d(a("#"+n));a(".fm-button:not(.ui-state-disabled)",l).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")})}}})},editGridRow:function(o,d){d=a.extend({top:0,left:0,width:300,height:"auto",dataheight:"auto",\n +modal:!1,overlay:30,drag:!0,resize:!0,url:null,mtype:"POST",clearAfterAdd:!0,closeAfterEdit:!1,reloadAfterSubmit:!0,onInitializeForm:null,beforeInitData:null,beforeShowForm:null,afterShowForm:null,beforeSubmit:null,afterSubmit:null,onclickSubmit:null,afterComplete:null,onclickPgButtons:null,afterclickPgButtons:null,editData:{},recreateForm:!1,jqModal:!0,closeOnEscape:!1,addedrow:"first",topinfo:"",bottominfo:"",saveicon:[],closeicon:[],savekey:[!1,13],navkeys:[!1,38,40],checkOnSubmit:!1,checkOnUpdate:!1,\n +_savedData:{},processing:!1,onClose:null,ajaxEditOptions:{},serializeEditData:null,viewPagerButtons:!0},a.jgrid.edit,d||{});c[a(this)[0].p.id]=d;return this.each(function(){function e(){a(i+" > tbody > tr > td > .FormElement").each(function(){var c=a(".customelement",this);if(c.length){var d=a(c[0]).attr("name");a.each(b.p.colModel,function(){if(this.name===d&&this.editoptions&&a.isFunction(this.editoptions.custom_value)){try{if(k[d]=this.editoptions.custom_value.call(b,a("#"+a.jgrid.jqID(d),i),"get"),\n +void 0===k[d])throw"e1";}catch(c){"e1"===c?a.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function \'custom_value\' "+a.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose):a.jgrid.info_dialog(jQuery.jgrid.errors.errcap,c.message,jQuery.jgrid.edit.bClose)}return!0}})}else{switch(a(this).get(0).type){case "checkbox":a(this).is(":checked")?k[this.name]=a(this).val():(c=a(this).attr("offval"),k[this.name]=c);break;case "select-one":k[this.name]=a("option:selected",this).val();B[this.name]=a("option:selected",\n +this).text();break;case "select-multiple":k[this.name]=a(this).val();k[this.name]=k[this.name]?k[this.name].join(","):"";var e=[];a("option:selected",this).each(function(b,c){e[b]=a(c).text()});B[this.name]=e.join(",");break;case "password":case "text":case "textarea":case "button":k[this.name]=a(this).val()}b.p.autoencode&&(k[this.name]=a.jgrid.htmlEncode(k[this.name]))}});return!0}function n(d,e,h,k){var f,g,m,j=0,i,q,l,n=[],v=!1,p="",o;for(o=1;o<=k;o++)p+="<td class=\'CaptionTD\'> </td><td class=\'DataTD\'> </td>";\n +"_empty"!=d&&(v=a(e).jqGrid("getInd",d));a(e.p.colModel).each(function(o){f=this.name;q=(g=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)?"style=\'display:none\'":"";if("cb"!==f&&"subgrid"!==f&&!0===this.editable&&"rn"!==f){if(!1===v)i="";else if(f==e.p.ExpandColumn&&!0===e.p.treeGrid)i=a("td:eq("+o+")",e.rows[v]).text();else{try{i=a.unformat.call(e,a("td:eq("+o+")",e.rows[v]),{rowId:d,colModel:this},o)}catch(s){i=this.edittype&&"textarea"==this.edittype?a("td:eq("+o+")",\n +e.rows[v]).text():a("td:eq("+o+")",e.rows[v]).html()}if(!i||" "==i||" "==i||1==i.length&&160==i.charCodeAt(0))i=""}var r=a.extend({},this.editoptions||{},{id:f,name:f}),t=a.extend({},{elmprefix:"",elmsuffix:"",rowabove:!1,rowcontent:""},this.formoptions||{}),u=parseInt(t.rowpos,10)||j+1,y=parseInt(2*(parseInt(t.colpos,10)||1),10);"_empty"==d&&r.defaultValue&&(i=a.isFunction(r.defaultValue)?r.defaultValue.call(b):r.defaultValue);this.edittype||(this.edittype="text");b.p.autoencode&&(i=a.jgrid.htmlDecode(i));\n +l=a.jgrid.createEl.call(b,this.edittype,r,i,!1,a.extend({},a.jgrid.ajaxOptions,e.p.ajaxSelectOptions||{}));""===i&&"checkbox"==this.edittype&&(i=a(l).attr("offval"));""===i&&"select"==this.edittype&&(i=a("option:eq(0)",l).text());if(c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate)c[b.p.id]._savedData[f]=i;a(l).addClass("FormElement");("text"==this.edittype||"textarea"==this.edittype)&&a(l).addClass("ui-widget-content ui-corner-all");m=a(h).find("tr[rowpos="+u+"]");t.rowabove&&(r=a("<tr><td class=\'contentinfo\' colspan=\'"+\n +2*k+"\'>"+t.rowcontent+"</td></tr>"),a(h).append(r),r[0].rp=u);0===m.length&&(m=a("<tr "+q+" rowpos=\'"+u+"\'></tr>").addClass("FormData").attr("id","tr_"+f),a(m).append(p),a(h).append(m),m[0].rp=u);a("td:eq("+(y-2)+")",m[0]).html("undefined"===typeof t.label?e.p.colNames[o]:t.label);a("td:eq("+(y-1)+")",m[0]).append(t.elmprefix).append(l).append(t.elmsuffix);n[j]=o;j++}});if(0<j&&(o=a("<tr class=\'FormData\' style=\'display:none\'><td class=\'CaptionTD\'></td><td colspan=\'"+(2*k-1)+"\' class=\'DataTD\'><input class=\'FormElement\' id=\'id_g\' type=\'text\' name=\'"+\n +e.p.id+"_id\' value=\'"+d+"\'/></td></tr>"),o[0].rp=j+999,a(h).append(o),c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate))c[b.p.id]._savedData[e.p.id+"_id"]=d;return n}function r(d,e,h){var f,k=0,g,m,j,q,l;if(c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate)c[b.p.id]._savedData={},c[b.p.id]._savedData[e.p.id+"_id"]=d;var o=e.p.colModel;if("_empty"==d)a(o).each(function(){f=this.name;j=a.extend({},this.editoptions||{});if((m=a("#"+a.jgrid.jqID(f),"#"+h))&&m.length&&null!==m[0])if(q="",j.defaultValue?\n +(q=a.isFunction(j.defaultValue)?j.defaultValue.call(b):j.defaultValue,"checkbox"==m[0].type?(l=q.toLowerCase(),0>l.search(/(false|0|no|off|undefined)/i)&&""!==l?(m[0].checked=!0,m[0].defaultChecked=!0,m[0].value=q):(m[0].checked=!1,m[0].defaultChecked=!1)):m.val(q)):"checkbox"==m[0].type?(m[0].checked=!1,m[0].defaultChecked=!1,q=a(m).attr("offval")):m[0].type&&"select"==m[0].type.substr(0,6)?m[0].selectedIndex=0:m.val(q),!0===c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate)c[b.p.id]._savedData[f]=\n +q}),a("#id_g","#"+h).val(d);else{var n=a(e).jqGrid("getInd",d,!0);n&&(a(\'td[role="gridcell"]\',n).each(function(m){f=o[m].name;if("cb"!==f&&"subgrid"!==f&&"rn"!==f&&!0===o[m].editable){if(f==e.p.ExpandColumn&&!0===e.p.treeGrid)g=a(this).text();else try{g=a.unformat.call(e,a(this),{rowId:d,colModel:o[m]},m)}catch(i){g="textarea"==o[m].edittype?a(this).text():a(this).html()}b.p.autoencode&&(g=a.jgrid.htmlDecode(g));if(!0===c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate)c[b.p.id]._savedData[f]=g;f=\n +a.jgrid.jqID(f);switch(o[m].edittype){case "password":case "text":case "button":case "image":case "textarea":if(" "==g||" "==g||1==g.length&&160==g.charCodeAt(0))g="";a("#"+f,"#"+h).val(g);break;case "select":var j=g.split(","),j=a.map(j,function(b){return a.trim(b)});a("#"+f+" option","#"+h).each(function(){this.selected=!o[m].editoptions.multiple&&(a.trim(g)==a.trim(a(this).text())||j[0]==a.trim(a(this).text())||j[0]==a.trim(a(this).val()))?!0:o[m].editoptions.multiple?-1<a.inArray(a.trim(a(this).text()),\n +j)||-1<a.inArray(a.trim(a(this).val()),j)?!0:!1:!1});break;case "checkbox":g+="";o[m].editoptions&&o[m].editoptions.value?o[m].editoptions.value.split(":")[0]==g?(a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("checked",!0),a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("defaultChecked",!0)):(a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("checked",!1),a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("defaultChecked",!1)):(g=g.toLowerCase(),0>g.search(/(false|0|no|off|undefined)/i)&&""!==g?(a("#"+f,"#"+h)[b.p.useProp?\n +"prop":"attr"]("checked",!0),a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("defaultChecked",!0)):(a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("checked",!1),a("#"+f,"#"+h)[b.p.useProp?"prop":"attr"]("defaultChecked",!1)));break;case "custom":try{if(o[m].editoptions&&a.isFunction(o[m].editoptions.custom_value))o[m].editoptions.custom_value.call(b,a("#"+f,"#"+h),"set",g);else throw"e1";}catch(q){"e1"==q?a.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function \'custom_value\' "+a.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose):\n +a.jgrid.info_dialog(jQuery.jgrid.errors.errcap,q.message,jQuery.jgrid.edit.bClose)}}k++}}),0<k&&a("#id_g",i).val(d))}}function u(){a.each(b.p.colModel,function(a,b){b.editoptions&&!0===b.editoptions.NullIfEmpty&&k.hasOwnProperty(b.name)&&""===k[b.name]&&(k[b.name]="null")})}function t(){var e,f=[!0,"",""],m={},g=b.p.prmNames,j,o,l,n,v,p=a(b).triggerHandler("jqGridAddEditBeforeCheckValues",[a("#"+h),z]);p&&"object"===typeof p&&(k=p);a.isFunction(c[b.p.id].beforeCheckValues)&&(p=c[b.p.id].beforeCheckValues.call(b,\n +k,a("#"+h),"_empty"==k[b.p.id+"_id"]?g.addoper:g.editoper))&&"object"===typeof p&&(k=p);for(l in k)if(k.hasOwnProperty(l)&&(f=a.jgrid.checkValues.call(b,k[l],l,b),!1===f[0]))break;u();f[0]&&(m=a(b).triggerHandler("jqGridAddEditClickSubmit",[c[b.p.id],k,z]),void 0===m&&a.isFunction(c[b.p.id].onclickSubmit)&&(m=c[b.p.id].onclickSubmit.call(b,c[b.p.id],k)||{}),f=a(b).triggerHandler("jqGridAddEditBeforeSubmit",[k,a("#"+h),z]),void 0===f&&(f=[!0,"",""]),f[0]&&a.isFunction(c[b.p.id].beforeSubmit)&&(f=c[b.p.id].beforeSubmit.call(b,\n +k,a("#"+h))));if(f[0]&&!c[b.p.id].processing){c[b.p.id].processing=!0;a("#sData",i+"_2").addClass("ui-state-active");o=g.oper;j=g.id;k[o]="_empty"==a.trim(k[b.p.id+"_id"])?g.addoper:g.editoper;k[o]!=g.addoper?k[j]=k[b.p.id+"_id"]:void 0===k[j]&&(k[j]=k[b.p.id+"_id"]);delete k[b.p.id+"_id"];k=a.extend(k,c[b.p.id].editData,m);if(!0===b.p.treeGrid)for(v in k[o]==g.addoper&&(n=a(b).jqGrid("getGridParam","selrow"),k["adjacency"==b.p.treeGridModel?b.p.treeReader.parent_id_field:"parent_id"]=n),b.p.treeReader)b.p.treeReader.hasOwnProperty(v)&&\n +(m=b.p.treeReader[v],k.hasOwnProperty(m)&&!(k[o]==g.addoper&&"parent_id_field"===v)&&delete k[m]);k[j]=a.jgrid.stripPref(b.p.idPrefix,k[j]);v=a.extend({url:c[b.p.id].url?c[b.p.id].url:a(b).jqGrid("getGridParam","editurl"),type:c[b.p.id].mtype,data:a.isFunction(c[b.p.id].serializeEditData)?c[b.p.id].serializeEditData.call(b,k):k,complete:function(m,l){k[j]=b.p.idPrefix+k[j];if(l!="success"){f[0]=false;f[1]=a(b).triggerHandler("jqGridAddEditErrorTextFormat",[m,z]);f[1]=a.isFunction(c[b.p.id].errorTextFormat)?\n +c[b.p.id].errorTextFormat.call(b,m):l+" Status: \'"+m.statusText+"\'. Error code: "+m.status}else{f=a(b).triggerHandler("jqGridAddEditAfterSubmit",[m,k,z]);f===void 0&&(f=[true,"",""]);f[0]&&a.isFunction(c[b.p.id].afterSubmit)&&(f=c[b.p.id].afterSubmit.call(b,m,k))}if(f[0]===false){a("#FormError>td",i).html(f[1]);a("#FormError",i).show()}else{a.each(b.p.colModel,function(){if(B[this.name]&&this.formatter&&this.formatter=="select")try{delete B[this.name]}catch(a){}});k=a.extend(k,B);b.p.autoencode&&\n +a.each(k,function(b,d){k[b]=a.jgrid.htmlDecode(d)});if(k[o]==g.addoper){f[2]||(f[2]=a.jgrid.randId());k[j]=f[2];if(c[b.p.id].closeAfterAdd){if(c[b.p.id].reloadAfterSubmit)a(b).trigger("reloadGrid");else if(b.p.treeGrid===true)a(b).jqGrid("addChildNode",f[2],n,k);else{a(b).jqGrid("addRowData",f[2],k,d.addedrow);a(b).jqGrid("setSelection",f[2])}a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose})}else if(c[b.p.id].clearAfterAdd){c[b.p.id].reloadAfterSubmit?\n +a(b).trigger("reloadGrid"):b.p.treeGrid===true?a(b).jqGrid("addChildNode",f[2],n,k):a(b).jqGrid("addRowData",f[2],k,d.addedrow);r("_empty",b,h)}else c[b.p.id].reloadAfterSubmit?a(b).trigger("reloadGrid"):b.p.treeGrid===true?a(b).jqGrid("addChildNode",f[2],n,k):a(b).jqGrid("addRowData",f[2],k,d.addedrow)}else{if(c[b.p.id].reloadAfterSubmit){a(b).trigger("reloadGrid");c[b.p.id].closeAfterEdit||setTimeout(function(){a(b).jqGrid("setSelection",k[j])},1E3)}else b.p.treeGrid===true?a(b).jqGrid("setTreeRow",\n +k[j],k):a(b).jqGrid("setRowData",k[j],k);c[b.p.id].closeAfterEdit&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose})}if(a.isFunction(c[b.p.id].afterComplete)){e=m;setTimeout(function(){a(b).triggerHandler("jqGridAddEditAfterComplete",[e,k,a("#"+h),z]);c[b.p.id].afterComplete.call(b,e,k,a("#"+h));e=null},500)}if(c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate){a("#"+h).data("disabled",false);if(c[b.p.id]._savedData[b.p.id+"_id"]!=\n +"_empty")for(var v in c[b.p.id]._savedData)k[v]&&(c[b.p.id]._savedData[v]=k[v])}}c[b.p.id].processing=false;a("#sData",i+"_2").removeClass("ui-state-active");try{a(":input:visible","#"+h)[0].focus()}catch(p){}}},a.jgrid.ajaxOptions,c[b.p.id].ajaxEditOptions);!v.url&&!c[b.p.id].useDataProxy&&(a.isFunction(b.p.dataProxy)?c[b.p.id].useDataProxy=!0:(f[0]=!1,f[1]+=" "+a.jgrid.errors.nourl));f[0]&&(c[b.p.id].useDataProxy?(m=b.p.dataProxy.call(b,v,"set_"+b.p.id),"undefined"==typeof m&&(m=[!0,""]),!1===m[0]?\n +(f[0]=!1,f[1]=m[1]||"Error deleting the selected row!"):(v.data.oper==g.addoper&&c[b.p.id].closeAfterAdd&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose}),v.data.oper==g.editoper&&c[b.p.id].closeAfterEdit&&a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose}))):a.ajax(v))}!1===f[0]&&(a("#FormError>td",i).html(f[1]),a("#FormError",i).show())}function l(a,b){var d=!1,\n +c;for(c in a)if(a[c]!=b[c]){d=!0;break}return d}function g(){var d=!0;a("#FormError",i).hide();if(c[b.p.id].checkOnUpdate&&(k={},B={},e(),F=a.extend({},k,B),M=l(F,c[b.p.id]._savedData)))a("#"+h).data("disabled",!0),a(".confirm","#"+q.themodal).show(),d=!1;return d}function f(){if("_empty"!==o&&"undefined"!==typeof b.p.savedRow&&0<b.p.savedRow.length&&a.isFunction(a.fn.jqGrid.restoreRow))for(var d=0;d<b.p.savedRow.length;d++)if(b.p.savedRow[d].id==o){a(b).jqGrid("restoreRow",o);break}}function p(b,\n +d){0===b?a("#pData",i+"_2").addClass("ui-state-disabled"):a("#pData",i+"_2").removeClass("ui-state-disabled");b==d?a("#nData",i+"_2").addClass("ui-state-disabled"):a("#nData",i+"_2").removeClass("ui-state-disabled")}function w(){var d=a(b).jqGrid("getDataIDs"),c=a("#id_g",i).val();return[a.inArray(c,d),d]}var b=this;if(b.grid&&o){var s=b.p.id,h="FrmGrid_"+s,j="TblGrid_"+s,i="#"+a.jgrid.jqID(j),q={themodal:"editmod"+s,modalhead:"edithd"+s,modalcontent:"editcnt"+s,scrollelm:h},y=a.isFunction(c[b.p.id].beforeShowForm)?\n +c[b.p.id].beforeShowForm:!1,A=a.isFunction(c[b.p.id].afterShowForm)?c[b.p.id].afterShowForm:!1,x=a.isFunction(c[b.p.id].beforeInitData)?c[b.p.id].beforeInitData:!1,m=a.isFunction(c[b.p.id].onInitializeForm)?c[b.p.id].onInitializeForm:!1,v=!0,E=1,H=0,k,B,F,M,z,h=a.jgrid.jqID(h);"new"===o?(o="_empty",z="add",d.caption=c[b.p.id].addCaption):(d.caption=c[b.p.id].editCaption,z="edit");!0===d.recreateForm&&void 0!==a("#"+a.jgrid.jqID(q.themodal))[0]&&a("#"+a.jgrid.jqID(q.themodal)).remove();var I=!0;d.checkOnUpdate&&\n +(d.jqModal&&!d.modal)&&(I=!1);if(void 0!==a("#"+a.jgrid.jqID(q.themodal))[0]){v=a(b).triggerHandler("jqGridAddEditBeforeInitData",[a("#"+a.jgrid.jqID(h)),z]);"undefined"==typeof v&&(v=!0);v&&x&&(v=x.call(b,a("#"+h)));if(!1===v)return;f();a(".ui-jqdialog-title","#"+a.jgrid.jqID(q.modalhead)).html(d.caption);a("#FormError",i).hide();c[b.p.id].topinfo?(a(".topinfo",i).html(c[b.p.id].topinfo),a(".tinfo",i).show()):a(".tinfo",i).hide();c[b.p.id].bottominfo?(a(".bottominfo",i+"_2").html(c[b.p.id].bottominfo),\n +a(".binfo",i+"_2").show()):a(".binfo",i+"_2").hide();r(o,b,h);"_empty"==o||!c[b.p.id].viewPagerButtons?a("#pData, #nData",i+"_2").hide():a("#pData, #nData",i+"_2").show();!0===c[b.p.id].processing&&(c[b.p.id].processing=!1,a("#sData",i+"_2").removeClass("ui-state-active"));!0===a("#"+h).data("disabled")&&(a(".confirm","#"+a.jgrid.jqID(q.themodal)).hide(),a("#"+h).data("disabled",!1));a(b).triggerHandler("jqGridAddEditBeforeShowForm",[a("#"+h),z]);y&&y.call(b,a("#"+h));a("#"+a.jgrid.jqID(q.themodal)).data("onClose",\n +c[b.p.id].onClose);a.jgrid.viewModal("#"+a.jgrid.jqID(q.themodal),{gbox:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,jqM:!1,overlay:d.overlay,modal:d.modal});I||a(".jqmOverlay").click(function(){if(!g())return false;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose});return false});a(b).triggerHandler("jqGridAddEditAfterShowForm",[a("#"+h),z]);A&&A.call(b,a("#"+h))}else{var G=isNaN(d.dataheight)?d.dataheight:d.dataheight+"px",G=a("<form name=\'FormPost\' id=\'"+\n +h+"\' class=\'FormGrid\' onSubmit=\'return false;\' style=\'width:100%;overflow:auto;position:relative;height:"+G+";\'></form>").data("disabled",!1),C=a("<table id=\'"+j+"\' class=\'EditTable\' cellspacing=\'0\' cellpadding=\'0\' border=\'0\'><tbody></tbody></table>"),v=a(b).triggerHandler("jqGridAddEditBeforeInitData",[a("#"+h),z]);"undefined"==typeof v&&(v=!0);v&&x&&(v=x.call(b,a("#"+h)));if(!1===v)return;f();a(b.p.colModel).each(function(){var a=this.formoptions;E=Math.max(E,a?a.colpos||0:0);H=Math.max(H,a?a.rowpos||\n +0:0)});a(G).append(C);x=a("<tr id=\'FormError\' style=\'display:none\'><td class=\'ui-state-error\' colspan=\'"+2*E+"\'></td></tr>");x[0].rp=0;a(C).append(x);x=a("<tr style=\'display:none\' class=\'tinfo\'><td class=\'topinfo\' colspan=\'"+2*E+"\'>"+c[b.p.id].topinfo+"</td></tr>");x[0].rp=0;a(C).append(x);var v=(x="rtl"==b.p.direction?!0:!1)?"nData":"pData",D=x?"pData":"nData";n(o,b,C,E);var v="<a href=\'javascript:void(0)\' id=\'"+v+"\' class=\'fm-button ui-state-default ui-corner-left\'><span class=\'ui-icon ui-icon-triangle-1-w\'></span></a>",\n +D="<a href=\'javascript:void(0)\' id=\'"+D+"\' class=\'fm-button ui-state-default ui-corner-right\'><span class=\'ui-icon ui-icon-triangle-1-e\'></span></a>",J="<a href=\'javascript:void(0)\' id=\'sData\' class=\'fm-button ui-state-default ui-corner-all\'>"+d.bSubmit+"</a>",K="<a href=\'javascript:void(0)\' id=\'cData\' class=\'fm-button ui-state-default ui-corner-all\'>"+d.bCancel+"</a>",j="<table border=\'0\' cellspacing=\'0\' cellpadding=\'0\' class=\'EditTable\' id=\'"+j+"_2\'><tbody><tr><td colspan=\'2\'><hr class=\'ui-widget-content\' style=\'margin:1px\'/></td></tr><tr id=\'Act_Buttons\'><td class=\'navButton\'>"+\n +(x?D+v:v+D)+"</td><td class=\'EditButton\'>"+J+K+"</td></tr>"+("<tr style=\'display:none\' class=\'binfo\'><td class=\'bottominfo\' colspan=\'2\'>"+c[b.p.id].bottominfo+"</td></tr>"),j=j+"</tbody></table>";if(0<H){var L=[];a.each(a(C)[0].rows,function(a,b){L[a]=b});L.sort(function(a,b){return a.rp>b.rp?1:a.rp<b.rp?-1:0});a.each(L,function(b,d){a("tbody",C).append(d)})}d.gbox="#gbox_"+a.jgrid.jqID(s);var N=!1;!0===d.closeOnEscape&&(d.closeOnEscape=!1,N=!0);j=a("<span></span>").append(G).append(j);a.jgrid.createModal(q,\n +j,d,"#gview_"+a.jgrid.jqID(b.p.id),a("#gbox_"+a.jgrid.jqID(b.p.id))[0]);x&&(a("#pData, #nData",i+"_2").css("float","right"),a(".EditButton",i+"_2").css("text-align","left"));c[b.p.id].topinfo&&a(".tinfo",i).show();c[b.p.id].bottominfo&&a(".binfo",i+"_2").show();j=j=null;a("#"+a.jgrid.jqID(q.themodal)).keydown(function(e){var f=e.target;if(a("#"+h).data("disabled")===true)return false;if(c[b.p.id].savekey[0]===true&&e.which==c[b.p.id].savekey[1]&&f.tagName!="TEXTAREA"){a("#sData",i+"_2").trigger("click");\n +return false}if(e.which===27){if(!g())return false;N&&a.jgrid.hideModal(this,{gb:d.gbox,jqm:d.jqModal,onClose:c[b.p.id].onClose});return false}if(c[b.p.id].navkeys[0]===true){if(a("#id_g",i).val()=="_empty")return true;if(e.which==c[b.p.id].navkeys[1]){a("#pData",i+"_2").trigger("click");return false}if(e.which==c[b.p.id].navkeys[2]){a("#nData",i+"_2").trigger("click");return false}}});d.checkOnUpdate&&(a("a.ui-jqdialog-titlebar-close span","#"+a.jgrid.jqID(q.themodal)).removeClass("jqmClose"),a("a.ui-jqdialog-titlebar-close",\n +"#"+a.jgrid.jqID(q.themodal)).unbind("click").click(function(){if(!g())return false;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose});return false}));d.saveicon=a.extend([!0,"left","ui-icon-disk"],d.saveicon);d.closeicon=a.extend([!0,"left","ui-icon-close"],d.closeicon);!0===d.saveicon[0]&&a("#sData",i+"_2").addClass("right"==d.saveicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class=\'ui-icon "+d.saveicon[2]+\n +"\'></span>");!0===d.closeicon[0]&&a("#cData",i+"_2").addClass("right"==d.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class=\'ui-icon "+d.closeicon[2]+"\'></span>");if(c[b.p.id].checkOnSubmit||c[b.p.id].checkOnUpdate)J="<a href=\'javascript:void(0)\' id=\'sNew\' class=\'fm-button ui-state-default ui-corner-all\' style=\'z-index:1002\'>"+d.bYes+"</a>",D="<a href=\'javascript:void(0)\' id=\'nNew\' class=\'fm-button ui-state-default ui-corner-all\' style=\'z-index:1002\'>"+d.bNo+"</a>",K="<a href=\'javascript:void(0)\' id=\'cNew\' class=\'fm-button ui-state-default ui-corner-all\' style=\'z-index:1002\'>"+\n +d.bExit+"</a>",j=d.zIndex||999,j++,a("<div class=\'ui-widget-overlay jqgrid-overlay confirm\' style=\'z-index:"+j+";display:none;\'> "+(a.browser.msie&&6==a.browser.version?\'<iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\\\'0\\\');" src="javascript:false;"></iframe>\':"")+"</div><div class=\'confirm ui-widget-content ui-jqconfirm\' style=\'z-index:"+(j+1)+"\'>"+d.saveData+"<br/><br/>"+J+D+K+"</div>").insertAfter("#"+h),a("#sNew","#"+a.jgrid.jqID(q.themodal)).click(function(){t();\n +a("#"+h).data("disabled",false);a(".confirm","#"+a.jgrid.jqID(q.themodal)).hide();return false}),a("#nNew","#"+a.jgrid.jqID(q.themodal)).click(function(){a(".confirm","#"+a.jgrid.jqID(q.themodal)).hide();a("#"+h).data("disabled",false);setTimeout(function(){a(":input","#"+h)[0].focus()},0);return false}),a("#cNew","#"+a.jgrid.jqID(q.themodal)).click(function(){a(".confirm","#"+a.jgrid.jqID(q.themodal)).hide();a("#"+h).data("disabled",false);a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+\n +a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose});return false});a(b).triggerHandler("jqGridAddEditInitializeForm",[a("#"+h),z]);m&&m.call(b,a("#"+h));"_empty"==o||!c[b.p.id].viewPagerButtons?a("#pData,#nData",i+"_2").hide():a("#pData,#nData",i+"_2").show();a(b).triggerHandler("jqGridAddEditBeforeShowForm",[a("#"+h),z]);y&&y.call(b,a("#"+h));a("#"+a.jgrid.jqID(q.themodal)).data("onClose",c[b.p.id].onClose);a.jgrid.viewModal("#"+a.jgrid.jqID(q.themodal),{gbox:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,\n +overlay:d.overlay,modal:d.modal});I||a(".jqmOverlay").click(function(){if(!g())return false;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose});return false});a(b).triggerHandler("jqGridAddEditAfterShowForm",[a("#"+h),z]);A&&A.call(b,a("#"+h));a(".fm-button","#"+a.jgrid.jqID(q.themodal)).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")});a("#sData",i+"_2").click(function(){k={};B=\n +{};a("#FormError",i).hide();e();if(k[b.p.id+"_id"]=="_empty")t();else if(d.checkOnSubmit===true){F=a.extend({},k,B);if(M=l(F,c[b.p.id]._savedData)){a("#"+h).data("disabled",true);a(".confirm","#"+a.jgrid.jqID(q.themodal)).show()}else t()}else t();return false});a("#cData",i+"_2").click(function(){if(!g())return false;a.jgrid.hideModal("#"+a.jgrid.jqID(q.themodal),{gb:"#gbox_"+a.jgrid.jqID(s),jqm:d.jqModal,onClose:c[b.p.id].onClose});return false});a("#nData",i+"_2").click(function(){if(!g())return false;\n +a("#FormError",i).hide();var c=w();c[0]=parseInt(c[0],10);if(c[0]!=-1&&c[1][c[0]+1]){a(b).triggerHandler("jqGridAddEditClickPgButtons",["next",a("#"+h),c[1][c[0]]]);var e=true;if(a.isFunction(d.onclickPgButtons)){e=d.onclickPgButtons.call(b,"next",a("#"+h),c[1][c[0]]);if(e!==void 0&&e===false)return false}if(a("#"+a.jgrid.jqID(c[1][c[0]+1])).hasClass("ui-state-disabled"))return false;r(c[1][c[0]+1],b,h);a(b).jqGrid("setSelection",c[1][c[0]+1]);a(b).triggerHandler("jqGridAddEditAfterClickPgButtons",\n +["next",a("#"+h),c[1][c[0]]]);a.isFunction(d.afterclickPgButtons)&&d.afterclickPgButtons.call(b,"next",a("#"+h),c[1][c[0]+1]);p(c[0]+1,c[1].length-1)}return false});a("#pData",i+"_2").click(function(){if(!g())return false;a("#FormError",i).hide();var c=w();if(c[0]!=-1&&c[1][c[0]-1]){a(b).triggerHandler("jqGridAddEditClickPgButtons",["prev",a("#"+h),c[1][c[0]]]);var e=true;if(a.isFunction(d.onclickPgButtons)){e=d.onclickPgButtons.call(b,"prev",a("#"+h),c[1][c[0]]);if(e!==void 0&&e===false)return false}if(a("#"+\n +a.jgrid.jqID(c[1][c[0]-1])).hasClass("ui-state-disabled"))return false;r(c[1][c[0]-1],b,h);a(b).jqGrid("setSelection",c[1][c[0]-1]);a(b).triggerHandler("jqGridAddEditAfterClickPgButtons",["prev",a("#"+h),c[1][c[0]]]);a.isFunction(d.afterclickPgButtons)&&d.afterclickPgButtons.call(b,"prev",a("#"+h),c[1][c[0]-1]);p(c[0]-1,c[1].length-1)}return false})}y=w();p(y[0],y[1].length-1)}})},viewGridRow:function(o,d){d=a.extend({top:0,left:0,width:0,height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,\n +resize:!0,jqModal:!0,closeOnEscape:!1,labelswidth:"30%",closeicon:[],navkeys:[!1,38,40],onClose:null,beforeShowForm:null,beforeInitData:null,viewPagerButtons:!0},a.jgrid.view,d||{});c[a(this)[0].p.id]=d;return this.each(function(){function e(){(!0===c[l.p.id].closeOnEscape||!0===c[l.p.id].navkeys[0])&&setTimeout(function(){a(".ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(s.modalhead)).focus()},0)}function n(b,c,e,f){for(var g,h,j,i=0,o,q,l=[],n=!1,p="<td class=\'CaptionTD form-view-label ui-widget-content\' width=\'"+\n +d.labelswidth+"\'> </td><td class=\'DataTD form-view-data ui-helper-reset ui-widget-content\'> </td>",r="",t=["integer","number","currency"],s=0,u=0,y,x,w,A=1;A<=f;A++)r+=1==A?p:"<td class=\'CaptionTD form-view-label ui-widget-content\'> </td><td class=\'DataTD form-view-data ui-widget-content\'> </td>";a(c.p.colModel).each(function(){h=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1;!h&&"right"===this.align&&(this.formatter&&-1!==a.inArray(this.formatter,t)?\n +s=Math.max(s,parseInt(this.width,10)):u=Math.max(u,parseInt(this.width,10)))});y=0!==s?s:0!==u?u:0;n=a(c).jqGrid("getInd",b);a(c.p.colModel).each(function(b){g=this.name;x=!1;q=(h=this.editrules&&!0===this.editrules.edithidden?!1:!0===this.hidden?!0:!1)?"style=\'display:none\'":"";w="boolean"!=typeof this.viewable?!0:this.viewable;if("cb"!==g&&"subgrid"!==g&&"rn"!==g&&w){o=!1===n?"":g==c.p.ExpandColumn&&!0===c.p.treeGrid?a("td:eq("+b+")",c.rows[n]).text():a("td:eq("+b+")",c.rows[n]).html();x="right"===\n +this.align&&0!==y?!0:!1;var d=a.extend({},{rowabove:!1,rowcontent:""},this.formoptions||{}),m=parseInt(d.rowpos,10)||i+1,p=parseInt(2*(parseInt(d.colpos,10)||1),10);if(d.rowabove){var s=a("<tr><td class=\'contentinfo\' colspan=\'"+2*f+"\'>"+d.rowcontent+"</td></tr>");a(e).append(s);s[0].rp=m}j=a(e).find("tr[rowpos="+m+"]");0===j.length&&(j=a("<tr "+q+" rowpos=\'"+m+"\'></tr>").addClass("FormData").attr("id","trv_"+g),a(j).append(r),a(e).append(j),j[0].rp=m);a("td:eq("+(p-2)+")",j[0]).html("<b>"+("undefined"===\n +typeof d.label?c.p.colNames[b]:d.label)+"</b>");a("td:eq("+(p-1)+")",j[0]).append("<span>"+o+"</span>").attr("id","v_"+g);x&&a("td:eq("+(p-1)+") span",j[0]).css({"text-align":"right",width:y+"px"});l[i]=b;i++}});0<i&&(b=a("<tr class=\'FormData\' style=\'display:none\'><td class=\'CaptionTD\'></td><td colspan=\'"+(2*f-1)+"\' class=\'DataTD\'><input class=\'FormElement\' id=\'id_g\' type=\'text\' name=\'id\' value=\'"+b+"\'/></td></tr>"),b[0].rp=i+99,a(e).append(b));return l}function r(b,c){var d,e,f=0,g,h;if(h=a(c).jqGrid("getInd",\n +b,!0))a("td",h).each(function(b){d=c.p.colModel[b].name;e=c.p.colModel[b].editrules&&!0===c.p.colModel[b].editrules.edithidden?!1:!0===c.p.colModel[b].hidden?!0:!1;"cb"!==d&&("subgrid"!==d&&"rn"!==d)&&(g=d==c.p.ExpandColumn&&!0===c.p.treeGrid?a(this).text():a(this).html(),a.extend({},c.p.colModel[b].editoptions||{}),d=a.jgrid.jqID("v_"+d),a("#"+d+" span","#"+p).html(g),e&&a("#"+d,"#"+p).parents("tr:first").hide(),f++)}),0<f&&a("#id_g","#"+p).val(b)}function u(b,c){0===b?a("#pData","#"+p+"_2").addClass("ui-state-disabled"):\n +a("#pData","#"+p+"_2").removeClass("ui-state-disabled");b==c?a("#nData","#"+p+"_2").addClass("ui-state-disabled"):a("#nData","#"+p+"_2").removeClass("ui-state-disabled")}function t(){var b=a(l).jqGrid("getDataIDs"),c=a("#id_g","#"+p).val();return[a.inArray(c,b),b]}var l=this;if(l.grid&&o){var g=l.p.id,f="ViewGrid_"+a.jgrid.jqID(g),p="ViewTbl_"+a.jgrid.jqID(g),w="ViewGrid_"+g,b="ViewTbl_"+g,s={themodal:"viewmod"+g,modalhead:"viewhd"+g,modalcontent:"viewcnt"+g,scrollelm:f},h=a.isFunction(c[l.p.id].beforeInitData)?\n +c[l.p.id].beforeInitData:!1,j=!0,i=1,q=0;if(void 0!==a("#"+a.jgrid.jqID(s.themodal))[0]){h&&(j=h.call(l,a("#"+f)),"undefined"==typeof j&&(j=!0));if(!1===j)return;a(".ui-jqdialog-title","#"+a.jgrid.jqID(s.modalhead)).html(d.caption);a("#FormError","#"+p).hide();r(o,l);a.isFunction(c[l.p.id].beforeShowForm)&&c[l.p.id].beforeShowForm.call(l,a("#"+f));a.jgrid.viewModal("#"+a.jgrid.jqID(s.themodal),{gbox:"#gbox_"+a.jgrid.jqID(g),jqm:d.jqModal,jqM:!1,overlay:d.overlay,modal:d.modal});e()}else{var y=isNaN(d.dataheight)?\n +d.dataheight:d.dataheight+"px",w=a("<form name=\'FormPost\' id=\'"+w+"\' class=\'FormGrid\' style=\'width:100%;overflow:auto;position:relative;height:"+y+";\'></form>"),A=a("<table id=\'"+b+"\' class=\'EditTable\' cellspacing=\'1\' cellpadding=\'2\' border=\'0\' style=\'table-layout:fixed\'><tbody></tbody></table>");h&&(j=h.call(l,a("#"+f)),"undefined"==typeof j&&(j=!0));if(!1===j)return;a(l.p.colModel).each(function(){var a=this.formoptions;i=Math.max(i,a?a.colpos||0:0);q=Math.max(q,a?a.rowpos||0:0)});a(w).append(A);\n +n(o,l,A,i);b="rtl"==l.p.direction?!0:!1;h="<a href=\'javascript:void(0)\' id=\'"+(b?"nData":"pData")+"\' class=\'fm-button ui-state-default ui-corner-left\'><span class=\'ui-icon ui-icon-triangle-1-w\'></span></a>";j="<a href=\'javascript:void(0)\' id=\'"+(b?"pData":"nData")+"\' class=\'fm-button ui-state-default ui-corner-right\'><span class=\'ui-icon ui-icon-triangle-1-e\'></span></a>";y="<a href=\'javascript:void(0)\' id=\'cData\' class=\'fm-button ui-state-default ui-corner-all\'>"+d.bClose+"</a>";if(0<q){var x=[];\n +a.each(a(A)[0].rows,function(a,b){x[a]=b});x.sort(function(a,b){return a.rp>b.rp?1:a.rp<b.rp?-1:0});a.each(x,function(b,c){a("tbody",A).append(c)})}d.gbox="#gbox_"+a.jgrid.jqID(g);w=a("<span></span>").append(w).append("<table border=\'0\' class=\'EditTable\' id=\'"+p+"_2\'><tbody><tr id=\'Act_Buttons\'><td class=\'navButton\' width=\'"+d.labelswidth+"\'>"+(b?j+h:h+j)+"</td><td class=\'EditButton\'>"+y+"</td></tr></tbody></table>");a.jgrid.createModal(s,w,d,"#gview_"+a.jgrid.jqID(l.p.id),a("#gview_"+a.jgrid.jqID(l.p.id))[0]);\n +b&&(a("#pData, #nData","#"+p+"_2").css("float","right"),a(".EditButton","#"+p+"_2").css("text-align","left"));d.viewPagerButtons||a("#pData, #nData","#"+p+"_2").hide();w=null;a("#"+s.themodal).keydown(function(b){if(b.which===27){c[l.p.id].closeOnEscape&&a.jgrid.hideModal(this,{gb:d.gbox,jqm:d.jqModal,onClose:d.onClose});return false}if(d.navkeys[0]===true){if(b.which===d.navkeys[1]){a("#pData","#"+p+"_2").trigger("click");return false}if(b.which===d.navkeys[2]){a("#nData","#"+p+"_2").trigger("click");\n +return false}}});d.closeicon=a.extend([!0,"left","ui-icon-close"],d.closeicon);!0===d.closeicon[0]&&a("#cData","#"+p+"_2").addClass("right"==d.closeicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class=\'ui-icon "+d.closeicon[2]+"\'></span>");a.isFunction(d.beforeShowForm)&&d.beforeShowForm.call(l,a("#"+f));a.jgrid.viewModal("#"+a.jgrid.jqID(s.themodal),{gbox:"#gbox_"+a.jgrid.jqID(g),jqm:d.jqModal,modal:d.modal});a(".fm-button:not(.ui-state-disabled)","#"+p+"_2").hover(function(){a(this).addClass("ui-state-hover")},\n +function(){a(this).removeClass("ui-state-hover")});e();a("#cData","#"+p+"_2").click(function(){a.jgrid.hideModal("#"+a.jgrid.jqID(s.themodal),{gb:"#gbox_"+a.jgrid.jqID(g),jqm:d.jqModal,onClose:d.onClose});return false});a("#nData","#"+p+"_2").click(function(){a("#FormError","#"+p).hide();var b=t();b[0]=parseInt(b[0],10);if(b[0]!=-1&&b[1][b[0]+1]){a.isFunction(d.onclickPgButtons)&&d.onclickPgButtons.call(l,"next",a("#"+f),b[1][b[0]]);r(b[1][b[0]+1],l);a(l).jqGrid("setSelection",b[1][b[0]+1]);a.isFunction(d.afterclickPgButtons)&&\n +d.afterclickPgButtons.call(l,"next",a("#"+f),b[1][b[0]+1]);u(b[0]+1,b[1].length-1)}e();return false});a("#pData","#"+p+"_2").click(function(){a("#FormError","#"+p).hide();var b=t();if(b[0]!=-1&&b[1][b[0]-1]){a.isFunction(d.onclickPgButtons)&&d.onclickPgButtons.call(l,"prev",a("#"+f),b[1][b[0]]);r(b[1][b[0]-1],l);a(l).jqGrid("setSelection",b[1][b[0]-1]);a.isFunction(d.afterclickPgButtons)&&d.afterclickPgButtons.call(l,"prev",a("#"+f),b[1][b[0]-1]);u(b[0]-1,b[1].length-1)}e();return false})}w=t();u(w[0],\n +w[1].length-1)}})},delGridRow:function(o,d){d=a.extend({top:0,left:0,width:240,height:"auto",dataheight:"auto",modal:!1,overlay:30,drag:!0,resize:!0,url:"",mtype:"POST",reloadAfterSubmit:!0,beforeShowForm:null,beforeInitData:null,afterShowForm:null,beforeSubmit:null,onclickSubmit:null,afterSubmit:null,jqModal:!0,closeOnEscape:!1,delData:{},delicon:[],cancelicon:[],onClose:null,ajaxDelOptions:{},processing:!1,serializeDelData:null,useDataProxy:!1},a.jgrid.del,d||{});c[a(this)[0].p.id]=d;return this.each(function(){var e=\n +this;if(e.grid&&o){var n=a.isFunction(c[e.p.id].beforeShowForm),r=a.isFunction(c[e.p.id].afterShowForm),u=a.isFunction(c[e.p.id].beforeInitData)?c[e.p.id].beforeInitData:!1,t=e.p.id,l={},g=!0,f="DelTbl_"+a.jgrid.jqID(t),p,w,b,s,h="DelTbl_"+t,j={themodal:"delmod"+t,modalhead:"delhd"+t,modalcontent:"delcnt"+t,scrollelm:f};jQuery.isArray(o)&&(o=o.join());if(void 0!==a("#"+a.jgrid.jqID(j.themodal))[0]){u&&(g=u.call(e,a("#"+f)),"undefined"==typeof g&&(g=!0));if(!1===g)return;a("#DelData>td","#"+f).text(o);\n +a("#DelError","#"+f).hide();!0===c[e.p.id].processing&&(c[e.p.id].processing=!1,a("#dData","#"+f).removeClass("ui-state-active"));n&&c[e.p.id].beforeShowForm.call(e,a("#"+f));a.jgrid.viewModal("#"+a.jgrid.jqID(j.themodal),{gbox:"#gbox_"+a.jgrid.jqID(t),jqm:c[e.p.id].jqModal,jqM:!1,overlay:c[e.p.id].overlay,modal:c[e.p.id].modal})}else{var i=isNaN(c[e.p.id].dataheight)?c[e.p.id].dataheight:c[e.p.id].dataheight+"px",h="<div id=\'"+h+"\' class=\'formdata\' style=\'width:100%;overflow:auto;position:relative;height:"+\n +i+";\'><table class=\'DelTable\'><tbody><tr id=\'DelError\' style=\'display:none\'><td class=\'ui-state-error\'></td></tr>"+("<tr id=\'DelData\' style=\'display:none\'><td >"+o+"</td></tr>"),h=h+(\'<tr><td class="delmsg" style="white-space:pre;">\'+c[e.p.id].msg+"</td></tr><tr><td > </td></tr>"),h=h+"</tbody></table></div>"+("<table cellspacing=\'0\' cellpadding=\'0\' border=\'0\' class=\'EditTable\' id=\'"+f+"_2\'><tbody><tr><td><hr class=\'ui-widget-content\' style=\'margin:1px\'/></td></tr><tr><td class=\'DelButton EditButton\'>"+\n +("<a href=\'javascript:void(0)\' id=\'dData\' class=\'fm-button ui-state-default ui-corner-all\'>"+d.bSubmit+"</a>")+" "+("<a href=\'javascript:void(0)\' id=\'eData\' class=\'fm-button ui-state-default ui-corner-all\'>"+d.bCancel+"</a>")+"</td></tr></tbody></table>");d.gbox="#gbox_"+a.jgrid.jqID(t);a.jgrid.createModal(j,h,d,"#gview_"+a.jgrid.jqID(e.p.id),a("#gview_"+a.jgrid.jqID(e.p.id))[0]);u&&(g=u.call(e,a("#"+f)),"undefined"==typeof g&&(g=!0));if(!1===g)return;a(".fm-button","#"+f+"_2").hover(function(){a(this).addClass("ui-state-hover")},\n +function(){a(this).removeClass("ui-state-hover")});d.delicon=a.extend([!0,"left","ui-icon-scissors"],c[e.p.id].delicon);d.cancelicon=a.extend([!0,"left","ui-icon-cancel"],c[e.p.id].cancelicon);!0===d.delicon[0]&&a("#dData","#"+f+"_2").addClass("right"==d.delicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class=\'ui-icon "+d.delicon[2]+"\'></span>");!0===d.cancelicon[0]&&a("#eData","#"+f+"_2").addClass("right"==d.cancelicon[1]?"fm-button-icon-right":"fm-button-icon-left").append("<span class=\'ui-icon "+\n +d.cancelicon[2]+"\'></span>");a("#dData","#"+f+"_2").click(function(){var g=[true,""];l={};var h=a("#DelData>td","#"+f).text();a.isFunction(c[e.p.id].onclickSubmit)&&(l=c[e.p.id].onclickSubmit.call(e,c[e.p.id],h)||{});a.isFunction(c[e.p.id].beforeSubmit)&&(g=c[e.p.id].beforeSubmit.call(e,h));if(g[0]&&!c[e.p.id].processing){c[e.p.id].processing=true;b=e.p.prmNames;p=a.extend({},c[e.p.id].delData,l);s=b.oper;p[s]=b.deloper;w=b.id;h=(""+h).split(",");if(!h.length)return false;for(var i in h)h.hasOwnProperty(i)&&\n +(h[i]=a.jgrid.stripPref(e.p.idPrefix,h[i]));p[w]=h.join();a(this).addClass("ui-state-active");i=a.extend({url:c[e.p.id].url?c[e.p.id].url:a(e).jqGrid("getGridParam","editurl"),type:c[e.p.id].mtype,data:a.isFunction(c[e.p.id].serializeDelData)?c[e.p.id].serializeDelData.call(e,p):p,complete:function(b,i){if(i!="success"){g[0]=false;g[1]=a.isFunction(c[e.p.id].errorTextFormat)?c[e.p.id].errorTextFormat.call(e,b):i+" Status: \'"+b.statusText+"\'. Error code: "+b.status}else a.isFunction(c[e.p.id].afterSubmit)&&\n +(g=c[e.p.id].afterSubmit.call(e,b,p));if(g[0]===false){a("#DelError>td","#"+f).html(g[1]);a("#DelError","#"+f).show()}else{if(c[e.p.id].reloadAfterSubmit&&e.p.datatype!="local")a(e).trigger("reloadGrid");else{if(e.p.treeGrid===true)try{a(e).jqGrid("delTreeNode",e.p.idPrefix+h[0])}catch(o){}else for(var l=0;l<h.length;l++)a(e).jqGrid("delRowData",e.p.idPrefix+h[l]);e.p.selrow=null;e.p.selarrrow=[]}a.isFunction(c[e.p.id].afterComplete)&&setTimeout(function(){c[e.p.id].afterComplete.call(e,b,h)},500)}c[e.p.id].processing=\n +false;a("#dData","#"+f+"_2").removeClass("ui-state-active");g[0]&&a.jgrid.hideModal("#"+a.jgrid.jqID(j.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:d.jqModal,onClose:c[e.p.id].onClose})}},a.jgrid.ajaxOptions,c[e.p.id].ajaxDelOptions);if(!i.url&&!c[e.p.id].useDataProxy)if(a.isFunction(e.p.dataProxy))c[e.p.id].useDataProxy=true;else{g[0]=false;g[1]=g[1]+(" "+a.jgrid.errors.nourl)}if(g[0])if(c[e.p.id].useDataProxy){i=e.p.dataProxy.call(e,i,"del_"+e.p.id);typeof i=="undefined"&&(i=[true,""]);if(i[0]===\n +false){g[0]=false;g[1]=i[1]||"Error deleting the selected row!"}else a.jgrid.hideModal("#"+a.jgrid.jqID(j.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:d.jqModal,onClose:c[e.p.id].onClose})}else a.ajax(i)}if(g[0]===false){a("#DelError>td","#"+f).html(g[1]);a("#DelError","#"+f).show()}return false});a("#eData","#"+f+"_2").click(function(){a.jgrid.hideModal("#"+a.jgrid.jqID(j.themodal),{gb:"#gbox_"+a.jgrid.jqID(t),jqm:c[e.p.id].jqModal,onClose:c[e.p.id].onClose});return false});n&&c[e.p.id].beforeShowForm.call(e,\n +a("#"+f));a.jgrid.viewModal("#"+a.jgrid.jqID(j.themodal),{gbox:"#gbox_"+a.jgrid.jqID(t),jqm:c[e.p.id].jqModal,overlay:c[e.p.id].overlay,modal:c[e.p.id].modal})}r&&c[e.p.id].afterShowForm.call(e,a("#"+f));!0===c[e.p.id].closeOnEscape&&setTimeout(function(){a(".ui-jqdialog-titlebar-close","#"+a.jgrid.jqID(j.modalhead)).focus()},0)}})},navGrid:function(c,d,e,n,r,u,t){d=a.extend({edit:!0,editicon:"ui-icon-pencil",add:!0,addicon:"ui-icon-plus",del:!0,delicon:"ui-icon-trash",search:!0,searchicon:"ui-icon-search",\n +refresh:!0,refreshicon:"ui-icon-refresh",refreshstate:"firstpage",view:!1,viewicon:"ui-icon-document",position:"left",closeOnEscape:!0,beforeRefresh:null,afterRefresh:null,cloneToTop:!1,alertwidth:200,alertheight:"auto",alerttop:null,alertleft:null,alertzIndex:null},a.jgrid.nav,d||{});return this.each(function(){if(!this.nav){var l={themodal:"alertmod",modalhead:"alerthd",modalcontent:"alertcnt"},g=this,f;if(g.grid&&"string"==typeof c){void 0===a("#"+l.themodal)[0]&&(!d.alerttop&&!d.alertleft&&("undefined"!=\n +typeof window.innerWidth?(d.alertleft=window.innerWidth,d.alerttop=window.innerHeight):"undefined"!=typeof document.documentElement&&"undefined"!=typeof document.documentElement.clientWidth&&0!==document.documentElement.clientWidth?(d.alertleft=document.documentElement.clientWidth,d.alerttop=document.documentElement.clientHeight):(d.alertleft=1024,d.alerttop=768),d.alertleft=d.alertleft/2-parseInt(d.alertwidth,10)/2,d.alerttop=d.alerttop/2-25),a.jgrid.createModal(l,"<div>"+d.alerttext+"</div><span tabindex=\'0\'><span tabindex=\'-1\' id=\'jqg_alrt\'></span></span>",\n +{gbox:"#gbox_"+a.jgrid.jqID(g.p.id),jqModal:!0,drag:!0,resize:!0,caption:d.alertcap,top:d.alerttop,left:d.alertleft,width:d.alertwidth,height:d.alertheight,closeOnEscape:d.closeOnEscape,zIndex:d.alertzIndex},"","",!0));var p=1;d.cloneToTop&&g.p.toppager&&(p=2);for(var w=0;w<p;w++){var b=a("<table cellspacing=\'0\' cellpadding=\'0\' border=\'0\' class=\'ui-pg-table navtable\' style=\'float:left;table-layout:auto;\'><tbody><tr></tr></tbody></table>"),s,h;0===w?(s=c,h=g.p.id,s==g.p.toppager&&(h+="_top",p=1)):\n +(s=g.p.toppager,h=g.p.id+"_top");"rtl"==g.p.direction&&a(b).attr("dir","rtl").css("float","right");d.add&&(n=n||{},f=a("<td class=\'ui-pg-button ui-corner-all\'></td>"),a(f).append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.addicon+"\'></span>"+d.addtext+"</div>"),a("tr",b).append(f),a(f,b).attr({title:d.addtitle||"",id:n.id||"add_"+h}).click(function(){a(this).hasClass("ui-state-disabled")||(a.isFunction(d.addfunc)?d.addfunc.call(g):a(g).jqGrid("editGridRow","new",n));return false}).hover(function(){a(this).hasClass("ui-state-disabled")||\n +a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}),f=null);d.edit&&(f=a("<td class=\'ui-pg-button ui-corner-all\'></td>"),e=e||{},a(f).append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.editicon+"\'></span>"+d.edittext+"</div>"),a("tr",b).append(f),a(f,b).attr({title:d.edittitle||"",id:e.id||"edit_"+h}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b=g.p.selrow;if(b)a.isFunction(d.editfunc)?d.editfunc.call(g,b):a(g).jqGrid("editGridRow",b,e);\n +else{a.jgrid.viewModal("#"+l.themodal,{gbox:"#gbox_"+a.jgrid.jqID(g.p.id),jqm:true});a("#jqg_alrt").focus()}}return false}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}),f=null);d.view&&(f=a("<td class=\'ui-pg-button ui-corner-all\'></td>"),t=t||{},a(f).append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.viewicon+"\'></span>"+d.viewtext+"</div>"),a("tr",b).append(f),a(f,b).attr({title:d.viewtitle||"",\n +id:t.id||"view_"+h}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b=g.p.selrow;if(b)a.isFunction(d.viewfunc)?d.viewfunc.call(g,b):a(g).jqGrid("viewGridRow",b,t);else{a.jgrid.viewModal("#"+l.themodal,{gbox:"#gbox_"+a.jgrid.jqID(g.p.id),jqm:true});a("#jqg_alrt").focus()}}return false}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}),f=null);d.del&&(f=a("<td class=\'ui-pg-button ui-corner-all\'></td>"),\n +r=r||{},a(f).append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.delicon+"\'></span>"+d.deltext+"</div>"),a("tr",b).append(f),a(f,b).attr({title:d.deltitle||"",id:r.id||"del_"+h}).click(function(){if(!a(this).hasClass("ui-state-disabled")){var b;if(g.p.multiselect){b=g.p.selarrrow;b.length===0&&(b=null)}else b=g.p.selrow;if(b)a.isFunction(d.delfunc)?d.delfunc.call(g,b):a(g).jqGrid("delGridRow",b,r);else{a.jgrid.viewModal("#"+l.themodal,{gbox:"#gbox_"+a.jgrid.jqID(g.p.id),jqm:true});a("#jqg_alrt").focus()}}return false}).hover(function(){a(this).hasClass("ui-state-disabled")||\n +a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}),f=null);(d.add||d.edit||d.del||d.view)&&a("tr",b).append("<td class=\'ui-pg-button ui-state-disabled\' style=\'width:4px;\'><span class=\'ui-separator\'></span></td>");d.search&&(f=a("<td class=\'ui-pg-button ui-corner-all\'></td>"),u=u||{},a(f).append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.searchicon+"\'></span>"+d.searchtext+"</div>"),a("tr",b).append(f),a(f,b).attr({title:d.searchtitle||"",id:u.id||"search_"+\n +h}).click(function(){a(this).hasClass("ui-state-disabled")||(a.isFunction(d.searchfunc)?d.searchfunc.call(g,u):a(g).jqGrid("searchGrid",u));return false}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}),u.showOnLoad&&!0===u.showOnLoad&&a(f,b).click(),f=null);d.refresh&&(f=a("<td class=\'ui-pg-button ui-corner-all\'></td>"),a(f).append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.refreshicon+"\'></span>"+\n +d.refreshtext+"</div>"),a("tr",b).append(f),a(f,b).attr({title:d.refreshtitle||"",id:"refresh_"+h}).click(function(){if(!a(this).hasClass("ui-state-disabled")){a.isFunction(d.beforeRefresh)&&d.beforeRefresh.call(g);g.p.search=false;try{var b=g.p.id;g.p.postData.filters="";a("#fbox_"+a.jgrid.jqID(b)).jqFilter("resetFilter");a.isFunction(g.clearToolbar)&&g.clearToolbar.call(g,false)}catch(c){}switch(d.refreshstate){case "firstpage":a(g).trigger("reloadGrid",[{page:1}]);break;case "current":a(g).trigger("reloadGrid",\n +[{current:true}])}a.isFunction(d.afterRefresh)&&d.afterRefresh.call(g)}return false}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}),f=null);f=a(".ui-jqgrid").css("font-size")||"11px";a("body").append("<div id=\'testpg2\' class=\'ui-jqgrid ui-widget ui-widget-content\' style=\'font-size:"+f+";visibility:hidden;\' ></div>");f=a(b).clone().appendTo("#testpg2").width();a("#testpg2").remove();a(s+"_"+d.position,\n +s).append(b);g.p._nvtd&&(f>g.p._nvtd[0]&&(a(s+"_"+d.position,s).width(f),g.p._nvtd[0]=f),g.p._nvtd[1]=f);b=f=f=null;this.nav=!0}}}})},navButtonAdd:function(c,d){d=a.extend({caption:"newButton",title:"",buttonicon:"ui-icon-newwin",onClickButton:null,position:"last",cursor:"pointer"},d||{});return this.each(function(){if(this.grid){"string"===typeof c&&0!==c.indexOf("#")&&(c="#"+a.jgrid.jqID(c));var e=a(".navtable",c)[0],n=this;if(e&&!(d.id&&void 0!==a("#"+a.jgrid.jqID(d.id),e)[0])){var r=a("<td></td>");\n +"NONE"==d.buttonicon.toString().toUpperCase()?a(r).addClass("ui-pg-button ui-corner-all").append("<div class=\'ui-pg-div\'>"+d.caption+"</div>"):a(r).addClass("ui-pg-button ui-corner-all").append("<div class=\'ui-pg-div\'><span class=\'ui-icon "+d.buttonicon+"\'></span>"+d.caption+"</div>");d.id&&a(r).attr("id",d.id);"first"==d.position?0===e.rows[0].cells.length?a("tr",e).append(r):a("tr td:eq(0)",e).before(r):a("tr",e).append(r);a(r,e).attr("title",d.title||"").click(function(c){a(this).hasClass("ui-state-disabled")||\n +a.isFunction(d.onClickButton)&&d.onClickButton.call(n,c);return!1}).hover(function(){a(this).hasClass("ui-state-disabled")||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")})}}})},navSeparatorAdd:function(c,d){d=a.extend({sepclass:"ui-separator",sepcontent:""},d||{});return this.each(function(){if(this.grid){"string"===typeof c&&0!==c.indexOf("#")&&(c="#"+a.jgrid.jqID(c));var e=a(".navtable",c)[0];if(e){var n="<td class=\'ui-pg-button ui-state-disabled\' style=\'width:4px;\'><span class=\'"+\n +d.sepclass+"\'></span>"+d.sepcontent+"</td>";a("tr",e).append(n)}}})},GridToForm:function(c,d){return this.each(function(){var e=this;if(e.grid){var n=a(e).jqGrid("getRowData",c);if(n)for(var r in n)a("[name="+a.jgrid.jqID(r)+"]",d).is("input:radio")||a("[name="+a.jgrid.jqID(r)+"]",d).is("input:checkbox")?a("[name="+a.jgrid.jqID(r)+"]",d).each(function(){if(a(this).val()==n[r])a(this)[e.p.useProp?"prop":"attr"]("checked",!0);else a(this)[e.p.useProp?"prop":"attr"]("checked",!1)}):a("[name="+a.jgrid.jqID(r)+\n +"]",d).val(n[r])}})},FormToGrid:function(c,d,e,n){return this.each(function(){if(this.grid){e||(e="set");n||(n="first");var r=a(d).serializeArray(),u={};a.each(r,function(a,c){u[c.name]=c.value});"add"==e?a(this).jqGrid("addRowData",c,u,n):"set"==e&&a(this).jqGrid("setRowData",c,u)}})}})})(jQuery);\n +(function(a){a.fn.jqFilter=function(d){if("string"===typeof d){var n=a.fn.jqFilter[d];if(!n)throw"jqFilter - No such method: "+d;var u=a.makeArray(arguments).slice(1);return n.apply(this,u)}var o=a.extend(!0,{filter:null,columns:[],onChange:null,afterRedraw:null,checkValues:null,error:!1,errmsg:"",errorcheck:!0,showQuery:!0,sopt:null,ops:[{name:"eq",description:"equal",operator:"="},{name:"ne",description:"not equal",operator:"<>"},{name:"lt",description:"less",operator:"<"},{name:"le",description:"less or equal",\n +operator:"<="},{name:"gt",description:"greater",operator:">"},{name:"ge",description:"greater or equal",operator:">="},{name:"bw",description:"begins with",operator:"LIKE"},{name:"bn",description:"does not begin with",operator:"NOT LIKE"},{name:"in",description:"in",operator:"IN"},{name:"ni",description:"not in",operator:"NOT IN"},{name:"ew",description:"ends with",operator:"LIKE"},{name:"en",description:"does not end with",operator:"NOT LIKE"},{name:"cn",description:"contains",operator:"LIKE"},{name:"nc",\n +description:"does not contain",operator:"NOT LIKE"},{name:"nu",description:"is null",operator:"IS NULL"},{name:"nn",description:"is not null",operator:"IS NOT NULL"}],numopts:"eq ne lt le gt ge nu nn in ni".split(" "),stropts:"eq ne bw bn ew en cn nc nu nn in ni".split(" "),_gridsopt:[],groupOps:[{op:"AND",text:"AND"},{op:"OR",text:"OR"}],groupButton:!0,ruleButtons:!0,direction:"ltr"},a.jgrid.filter,d||{});return this.each(function(){if(!this.filter){this.p=o;if(null===this.p.filter||void 0===this.p.filter)this.p.filter=\n +{groupOp:this.p.groupOps[0].op,rules:[],groups:[]};var d,n=this.p.columns.length,f,t=/msie/i.test(navigator.userAgent)&&!window.opera;if(this.p._gridsopt.length)for(d=0;d<this.p._gridsopt.length;d++)this.p.ops[d].description=this.p._gridsopt[d];this.p.initFilter=a.extend(!0,{},this.p.filter);if(n){for(d=0;d<n;d++)if(f=this.p.columns[d],f.stype?f.inputtype=f.stype:f.inputtype||(f.inputtype="text"),f.sorttype?f.searchtype=f.sorttype:f.searchtype||(f.searchtype="string"),void 0===f.hidden&&(f.hidden=\n +!1),f.label||(f.label=f.name),f.index&&(f.name=f.index),f.hasOwnProperty("searchoptions")||(f.searchoptions={}),!f.hasOwnProperty("searchrules"))f.searchrules={};this.p.showQuery&&a(this).append("<table class=\'queryresult ui-widget ui-widget-content\' style=\'display:block;max-width:440px;border:0px none;\' dir=\'"+this.p.direction+"\'><tbody><tr><td class=\'query\'></td></tr></tbody></table>");var r=function(g,k){var b=[!0,""];if(a.isFunction(k.searchrules))b=k.searchrules(g,k);else if(a.jgrid&&a.jgrid.checkValues)try{b=\n +a.jgrid.checkValues(g,-1,null,k.searchrules,k.label)}catch(c){}b&&(b.length&&!1===b[0])&&(o.error=!b[0],o.errmsg=b[1])};this.onchange=function(){this.p.error=!1;this.p.errmsg="";return a.isFunction(this.p.onChange)?this.p.onChange.call(this,this.p):!1};this.reDraw=function(){a("table.group:first",this).remove();var g=this.createTableForGroup(o.filter,null);a(this).append(g);a.isFunction(this.p.afterRedraw)&&this.p.afterRedraw.call(this,this.p)};this.createTableForGroup=function(g,k){var b=this,c,\n +e=a("<table class=\'group ui-widget ui-widget-content\' style=\'border:0px none;\'><tbody></tbody></table>"),d="left";"rtl"==this.p.direction&&(d="right",e.attr("dir","rtl"));null===k&&e.append("<tr class=\'error\' style=\'display:none;\'><th colspan=\'5\' class=\'ui-state-error\' align=\'"+d+"\'></th></tr>");var h=a("<tr></tr>");e.append(h);d=a("<th colspan=\'5\' align=\'"+d+"\'></th>");h.append(d);if(!0===this.p.ruleButtons){var i=a("<select class=\'opsel\'></select>");d.append(i);var h="",f;for(c=0;c<o.groupOps.length;c++)f=\n +g.groupOp===b.p.groupOps[c].op?" selected=\'selected\'":"",h+="<option value=\'"+b.p.groupOps[c].op+"\'"+f+">"+b.p.groupOps[c].text+"</option>";i.append(h).bind("change",function(){g.groupOp=a(i).val();b.onchange()})}h="<span></span>";this.p.groupButton&&(h=a("<input type=\'button\' value=\'+ {}\' title=\'Add subgroup\' class=\'add-group\'/>"),h.bind("click",function(){if(g.groups===void 0)g.groups=[];g.groups.push({groupOp:o.groupOps[0].op,rules:[],groups:[]});b.reDraw();b.onchange();return false}));d.append(h);\n +if(!0===this.p.ruleButtons){var h=a("<input type=\'button\' value=\'+\' title=\'Add rule\' class=\'add-rule ui-add\'/>"),l;h.bind("click",function(){if(g.rules===void 0)g.rules=[];for(c=0;c<b.p.columns.length;c++){var a=typeof b.p.columns[c].search==="undefined"?true:b.p.columns[c].search,e=b.p.columns[c].hidden===true;if(b.p.columns[c].searchoptions.searchhidden===true&&a||a&&!e){l=b.p.columns[c];break}}g.rules.push({field:l.name,op:(l.searchoptions.sopt?l.searchoptions.sopt:b.p.sopt?b.p.sopt:l.searchtype===\n +"string"?b.p.stropts:b.p.numopts)[0],data:""});b.reDraw();return false});d.append(h)}null!==k&&(h=a("<input type=\'button\' value=\'-\' title=\'Delete group\' class=\'delete-group\'/>"),d.append(h),h.bind("click",function(){for(c=0;c<k.groups.length;c++)if(k.groups[c]===g){k.groups.splice(c,1);break}b.reDraw();b.onchange();return false}));if(void 0!==g.groups)for(c=0;c<g.groups.length;c++)d=a("<tr></tr>"),e.append(d),h=a("<td class=\'first\'></td>"),d.append(h),h=a("<td colspan=\'4\'></td>"),h.append(this.createTableForGroup(g.groups[c],\n +g)),d.append(h);void 0===g.groupOp&&(g.groupOp=b.p.groupOps[0].op);if(void 0!==g.rules)for(c=0;c<g.rules.length;c++)e.append(this.createTableRowForRule(g.rules[c],g));return e};this.createTableRowForRule=function(g,d){var b=this,c=a("<tr></tr>"),e,f,h,i,j="",l;c.append("<td class=\'first\'></td>");var m=a("<td class=\'columns\'></td>");c.append(m);var n=a("<select></select>"),p,q=[];m.append(n);n.bind("change",function(){g.field=a(n).val();h=a(this).parents("tr:first");for(e=0;e<b.p.columns.length;e++)if(b.p.columns[e].name===\n +g.field){i=b.p.columns[e];break}if(i){i.searchoptions.id=a.jgrid.randId();t&&"text"===i.inputtype&&!i.searchoptions.size&&(i.searchoptions.size=10);var c=a.jgrid.createEl(i.inputtype,i.searchoptions,"",!0,b.p.ajaxSelectOptions,!0);a(c).addClass("input-elm");f=i.searchoptions.sopt?i.searchoptions.sopt:b.p.sopt?b.p.sopt:"string"===i.searchtype?b.p.stropts:b.p.numopts;var d="",k=0;q=[];a.each(b.p.ops,function(){q.push(this.name)});for(e=0;e<f.length;e++)p=a.inArray(f[e],q),-1!==p&&(0===k&&(g.op=b.p.ops[p].name),\n +d+="<option value=\'"+b.p.ops[p].name+"\'>"+b.p.ops[p].description+"</option>",k++);a(".selectopts",h).empty().append(d);a(".selectopts",h)[0].selectedIndex=0;a.browser.msie&&9>a.browser.version&&(d=parseInt(a("select.selectopts",h)[0].offsetWidth)+1,a(".selectopts",h).width(d),a(".selectopts",h).css("width","auto"));a(".data",h).empty().append(c);a(".input-elm",h).bind("change",function(c){var d=a(this).hasClass("ui-autocomplete-input")?200:0;setTimeout(function(){var d=c.target;g.data=d.nodeName.toUpperCase()===\n +"SPAN"&&i.searchoptions&&a.isFunction(i.searchoptions.custom_value)?i.searchoptions.custom_value(a(d).children(".customelement:first"),"get"):d.value;b.onchange()},d)});setTimeout(function(){g.data=a(c).val();b.onchange()},0)}});for(e=m=0;e<b.p.columns.length;e++){l="undefined"===typeof b.p.columns[e].search?!0:b.p.columns[e].search;var r=!0===b.p.columns[e].hidden;if(!0===b.p.columns[e].searchoptions.searchhidden&&l||l&&!r)l="",g.field===b.p.columns[e].name&&(l=" selected=\'selected\'",m=e),j+="<option value=\'"+\n +b.p.columns[e].name+"\'"+l+">"+b.p.columns[e].label+"</option>"}n.append(j);j=a("<td class=\'operators\'></td>");c.append(j);i=o.columns[m];i.searchoptions.id=a.jgrid.randId();t&&"text"===i.inputtype&&!i.searchoptions.size&&(i.searchoptions.size=10);var m=a.jgrid.createEl(i.inputtype,i.searchoptions,g.data,!0,b.p.ajaxSelectOptions,!0),s=a("<select class=\'selectopts\'></select>");j.append(s);s.bind("change",function(){g.op=a(s).val();h=a(this).parents("tr:first");var c=a(".input-elm",h)[0];if(g.op==="nu"||\n +g.op==="nn"){g.data="";c.value="";c.setAttribute("readonly","true");c.setAttribute("disabled","true")}else{c.removeAttribute("readonly");c.removeAttribute("disabled")}b.onchange()});f=i.searchoptions.sopt?i.searchoptions.sopt:b.p.sopt?b.p.sopt:"string"===i.searchtype?o.stropts:b.p.numopts;j="";a.each(b.p.ops,function(){q.push(this.name)});for(e=0;e<f.length;e++)p=a.inArray(f[e],q),-1!==p&&(l=g.op===b.p.ops[p].name?" selected=\'selected\'":"",j+="<option value=\'"+b.p.ops[p].name+"\'"+l+">"+b.p.ops[p].description+\n +"</option>");s.append(j);j=a("<td class=\'data\'></td>");c.append(j);j.append(m);a(m).addClass("input-elm").bind("change",function(){g.data=i.inputtype==="custom"?i.searchoptions.custom_value(a(this).children(".customelement:first"),"get"):a(this).val();b.onchange()});j=a("<td></td>");c.append(j);!0===this.p.ruleButtons&&(m=a("<input type=\'button\' value=\'-\' title=\'Delete rule\' class=\'delete-rule ui-del\'/>"),j.append(m),m.bind("click",function(){for(e=0;e<d.rules.length;e++)if(d.rules[e]===g){d.rules.splice(e,\n +1);break}b.reDraw();b.onchange();return false}));return c};this.getStringForGroup=function(a){var d="(",b;if(void 0!==a.groups)for(b=0;b<a.groups.length;b++){1<d.length&&(d+=" "+a.groupOp+" ");try{d+=this.getStringForGroup(a.groups[b])}catch(c){alert(c)}}if(void 0!==a.rules)try{for(b=0;b<a.rules.length;b++)1<d.length&&(d+=" "+a.groupOp+" "),d+=this.getStringForRule(a.rules[b])}catch(e){alert(e)}d+=")";return"()"===d?"":d};this.getStringForRule=function(d){var f="",b="",c,e;for(c=0;c<this.p.ops.length;c++)if(this.p.ops[c].name===\n +d.op){f=this.p.ops[c].operator;b=this.p.ops[c].name;break}for(c=0;c<this.p.columns.length;c++)if(this.p.columns[c].name===d.field){e=this.p.columns[c];break}c=d.data;if("bw"===b||"bn"===b)c+="%";if("ew"===b||"en"===b)c="%"+c;if("cn"===b||"nc"===b)c="%"+c+"%";if("in"===b||"ni"===b)c=" ("+c+")";o.errorcheck&&r(d.data,e);return-1!==a.inArray(e.searchtype,["int","integer","float","number","currency"])||"nn"===b||"nu"===b?d.field+" "+f+" "+c:d.field+" "+f+\' "\'+c+\'"\'};this.resetFilter=function(){this.p.filter=\n +a.extend(!0,{},this.p.initFilter);this.reDraw();this.onchange()};this.hideError=function(){a("th.ui-state-error",this).html("");a("tr.error",this).hide()};this.showError=function(){a("th.ui-state-error",this).html(this.p.errmsg);a("tr.error",this).show()};this.toUserFriendlyString=function(){return this.getStringForGroup(o.filter)};this.toString=function(){function a(b){var c="(",e;if(void 0!==b.groups)for(e=0;e<b.groups.length;e++)1<c.length&&(c="OR"===b.groupOp?c+" || ":c+" && "),c+=a(b.groups[e]);\n +if(void 0!==b.rules)for(e=0;e<b.rules.length;e++){1<c.length&&(c="OR"===b.groupOp?c+" || ":c+" && ");var f=b.rules[e];if(d.p.errorcheck){for(var h=void 0,i=void 0,h=0;h<d.p.columns.length;h++)if(d.p.columns[h].name===f.field){i=d.p.columns[h];break}i&&r(f.data,i)}c+=f.op+"(item."+f.field+",\'"+f.data+"\')"}c+=")";return"()"===c?"":c}var d=this;return a(this.p.filter)};this.reDraw();if(this.p.showQuery)this.onchange();this.filter=!0}}})};a.extend(a.fn.jqFilter,{toSQLString:function(){var a="";this.each(function(){a=\n +this.toUserFriendlyString()});return a},filterData:function(){var a;this.each(function(){a=this.p.filter});return a},getParameter:function(a){return void 0!==a&&this.p.hasOwnProperty(a)?this.p[a]:this.p},resetFilter:function(){return this.each(function(){this.resetFilter()})},addFilter:function(a){"string"===typeof a&&(a=jQuery.jgrid.parse(a));this.each(function(){this.p.filter=a;this.reDraw();this.onchange()})}})})(jQuery);\n +(function(a){a.jgrid.inlineEdit=a.jgrid.inlineEdit||{};a.jgrid.extend({editRow:function(c,d,b,k,g,l,p,h,e){var j={},f=a.makeArray(arguments).slice(1);if("object"===a.type(f[0]))j=f[0];else if("undefined"!==typeof d&&(j.keys=d),a.isFunction(b)&&(j.oneditfunc=b),a.isFunction(k)&&(j.successfunc=k),"undefined"!==typeof g&&(j.url=g),"undefined"!==typeof l&&(j.extraparam=l),a.isFunction(p)&&(j.aftersavefunc=p),a.isFunction(h)&&(j.errorfunc=h),a.isFunction(e))j.afterrestorefunc=e;j=a.extend(!0,{keys:!1,\n +oneditfunc:null,successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0,mtype:"POST"},a.jgrid.inlineEdit,j);return this.each(function(){var e=this,d,b,f,g=0,h=null,l={},m,n;e.grid&&(m=a(e).jqGrid("getInd",c,!0),!1!==m&&(f=a(m).attr("editable")||"0","0"==f&&!a(m).hasClass("not-editable-row")&&(n=e.p.colModel,a(\'td[role="gridcell"]\',m).each(function(f){d=n[f].name;var j=!0===e.p.treeGrid&&d==e.p.ExpandColumn;if(j)b=a("span:first",this).html();\n +else try{b=a.unformat.call(e,this,{rowId:c,colModel:n[f]},f)}catch(m){b=n[f].edittype&&"textarea"==n[f].edittype?a(this).text():a(this).html()}if("cb"!=d&&("subgrid"!=d&&"rn"!=d)&&(e.p.autoencode&&(b=a.jgrid.htmlDecode(b)),l[d]=b,!0===n[f].editable)){null===h&&(h=f);j?a("span:first",this).html(""):a(this).html("");var k=a.extend({},n[f].editoptions||{},{id:c+"_"+d,name:d});n[f].edittype||(n[f].edittype="text");if(" "==b||" "==b||1==b.length&&160==b.charCodeAt(0))b="";k=a.jgrid.createEl.call(e,\n +n[f].edittype,k,b,!0,a.extend({},a.jgrid.ajaxOptions,e.p.ajaxSelectOptions||{}));a(k).addClass("editable");j?a("span:first",this).append(k):a(this).append(k);"select"==n[f].edittype&&("undefined"!==typeof n[f].editoptions&&!0===n[f].editoptions.multiple&&"undefined"===typeof n[f].editoptions.dataUrl&&a.browser.msie)&&a(k).width(a(k).width());g++}}),0<g&&(l.id=c,e.p.savedRow.push(l),a(m).attr("editable","1"),a("td:eq("+h+") input",m).focus(),!0===j.keys&&a(m).bind("keydown",function(f){if(27===f.keyCode){a(e).jqGrid("restoreRow",\n +c,j.afterrestorefunc);if(e.p._inlinenav)try{a(e).jqGrid("showAddEditButtons")}catch(b){}return!1}if(13===f.keyCode){if("TEXTAREA"==f.target.tagName)return!0;if(a(e).jqGrid("saveRow",c,j)&&e.p._inlinenav)try{a(e).jqGrid("showAddEditButtons")}catch(d){}return!1}}),a(e).triggerHandler("jqGridInlineEditRow",[c,j]),a.isFunction(j.oneditfunc)&&j.oneditfunc.call(e,c)))))})},saveRow:function(c,d,b,k,g,l,p){var h=a.makeArray(arguments).slice(1),e={};if("object"===a.type(h[0]))e=h[0];else if(a.isFunction(d)&&\n +(e.successfunc=d),"undefined"!==typeof b&&(e.url=b),"undefined"!==typeof k&&(e.extraparam=k),a.isFunction(g)&&(e.aftersavefunc=g),a.isFunction(l)&&(e.errorfunc=l),a.isFunction(p))e.afterrestorefunc=p;var e=a.extend(!0,{successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:!0,mtype:"POST"},a.jgrid.inlineEdit,e),j=!1,f=this[0],o,i={},u={},r={},t,s,q;if(!f.grid)return j;q=a(f).jqGrid("getInd",c,!0);if(!1===q)return j;h=a(q).attr("editable");\n +e.url=e.url?e.url:f.p.editurl;if("1"===h){var m;a(\'td[role="gridcell"]\',q).each(function(c){m=f.p.colModel[c];o=m.name;if("cb"!=o&&"subgrid"!=o&&!0===m.editable&&"rn"!=o&&!a(this).hasClass("not-editable-cell")){switch(m.edittype){case "checkbox":var b=["Yes","No"];m.editoptions&&(b=m.editoptions.value.split(":"));i[o]=a("input",this).is(":checked")?b[0]:b[1];break;case "text":case "password":case "textarea":case "button":i[o]=a("input, textarea",this).val();break;case "select":if(m.editoptions.multiple){var b=\n +a("select",this),d=[];i[o]=a(b).val();i[o]=i[o]?i[o].join(","):"";a("select option:selected",this).each(function(e,f){d[e]=a(f).text()});u[o]=d.join(",")}else i[o]=a("select option:selected",this).val(),u[o]=a("select option:selected",this).text();m.formatter&&"select"==m.formatter&&(u={});break;case "custom":try{if(m.editoptions&&a.isFunction(m.editoptions.custom_value)){if(i[o]=m.editoptions.custom_value.call(f,a(".customelement",this),"get"),void 0===i[o])throw"e2";}else throw"e1";}catch(g){"e1"==\n +g&&a.jgrid.info_dialog(a.jgrid.errors.errcap,"function \'custom_value\' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose),"e2"==g?a.jgrid.info_dialog(a.jgrid.errors.errcap,"function \'custom_value\' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose):a.jgrid.info_dialog(a.jgrid.errors.errcap,g.message,a.jgrid.edit.bClose)}}s=a.jgrid.checkValues(i[o],c,f);if(!1===s[0])return s[1]=i[o]+" "+s[1],!1;f.p.autoencode&&(i[o]=a.jgrid.htmlEncode(i[o]));"clientArray"!==e.url&&m.editoptions&&!0===m.editoptions.NullIfEmpty&&\n +""===i[o]&&(r[o]="null")}});if(!1===s[0]){try{var n=a.jgrid.findPos(a("#"+a.jgrid.jqID(c),f.grid.bDiv)[0]);a.jgrid.info_dialog(a.jgrid.errors.errcap,s[1],a.jgrid.edit.bClose,{left:n[0],top:n[1]})}catch(w){alert(s[1])}return j}var v,h=f.p.prmNames;v=h.oper;n=h.id;i&&(i[v]=h.editoper,i[n]=c,"undefined"==typeof f.p.inlineData&&(f.p.inlineData={}),i=a.extend({},i,f.p.inlineData,e.extraparam));if("clientArray"==e.url){i=a.extend({},i,u);f.p.autoencode&&a.each(i,function(e,f){i[e]=a.jgrid.htmlDecode(f)});\n +n=a(f).jqGrid("setRowData",c,i);a(q).attr("editable","0");for(h=0;h<f.p.savedRow.length;h++)if(f.p.savedRow[h].id==c){t=h;break}0<=t&&f.p.savedRow.splice(t,1);a(f).triggerHandler("jqGridInlineAfterSaveRow",[c,n,i,e]);a.isFunction(e.aftersavefunc)&&e.aftersavefunc.call(f,c,n,e);j=!0;a(q).unbind("keydown")}else a("#lui_"+a.jgrid.jqID(f.p.id)).show(),r=a.extend({},i,r),r[n]=a.jgrid.stripPref(f.p.idPrefix,r[n]),a.ajax(a.extend({url:e.url,data:a.isFunction(f.p.serializeRowData)?f.p.serializeRowData.call(f,\n +r):r,type:e.mtype,async:!1,complete:function(b,d){a("#lui_"+a.jgrid.jqID(f.p.id)).hide();if(d==="success"){var g=true,h;h=a(f).triggerHandler("jqGridInlineSuccessSaveRow",[b,c,e]);a.isArray(h)||(h=[true,i]);h[0]&&a.isFunction(e.successfunc)&&(h=e.successfunc.call(f,b));if(a.isArray(h)){g=h[0];i=h[1]?h[1]:i}else g=h;if(g===true){f.p.autoencode&&a.each(i,function(b,e){i[b]=a.jgrid.htmlDecode(e)});i=a.extend({},i,u);a(f).jqGrid("setRowData",c,i);a(q).attr("editable","0");for(g=0; + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +g<f.p.savedRow.length;g++)if(f.p.savedRow[g].id==\n +c){t=g;break}t>=0&&f.p.savedRow.splice(t,1);a(f).triggerHandler("jqGridInlineAfterSaveRow",[c,b,i,e]);a.isFunction(e.aftersavefunc)&&e.aftersavefunc.call(f,c,b);j=true;a(q).unbind("keydown")}else{a(f).triggerHandler("jqGridInlineErrorSaveRow",[c,b,d,null,e]);a.isFunction(e.errorfunc)&&e.errorfunc.call(f,c,b,d,null);e.restoreAfterError===true&&a(f).jqGrid("restoreRow",c,e.afterrestorefunc)}}},error:function(b,d,g){a("#lui_"+a.jgrid.jqID(f.p.id)).hide();a(f).triggerHandler("jqGridInlineErrorSaveRow",\n +[c,b,d,g,e]);if(a.isFunction(e.errorfunc))e.errorfunc.call(f,c,b,d,g);else{b=b.responseText||b.statusText;try{a.jgrid.info_dialog(a.jgrid.errors.errcap,\'<div class="ui-state-error">\'+b+"</div>",a.jgrid.edit.bClose,{buttonalign:"right"})}catch(h){alert(b)}}e.restoreAfterError===true&&a(f).jqGrid("restoreRow",c,e.afterrestorefunc)}},a.jgrid.ajaxOptions,f.p.ajaxRowOptions||{}))}return j},restoreRow:function(c,d){var b=a.makeArray(arguments).slice(1),k={};"object"===a.type(b[0])?k=b[0]:a.isFunction(d)&&\n +(k.afterrestorefunc=d);k=a.extend(!0,a.jgrid.inlineEdit,k);return this.each(function(){var b=this,d,p,h={};if(b.grid){p=a(b).jqGrid("getInd",c,true);if(p!==false){for(var e=0;e<b.p.savedRow.length;e++)if(b.p.savedRow[e].id==c){d=e;break}if(d>=0){if(a.isFunction(a.fn.datepicker))try{a("input.hasDatepicker","#"+a.jgrid.jqID(p.id)).datepicker("hide")}catch(j){}a.each(b.p.colModel,function(){this.editable===true&&this.name in b.p.savedRow[d]&&(h[this.name]=b.p.savedRow[d][this.name])});a(b).jqGrid("setRowData",\n +c,h);a(p).attr("editable","0").unbind("keydown");b.p.savedRow.splice(d,1);a("#"+a.jgrid.jqID(c),"#"+a.jgrid.jqID(b.p.id)).hasClass("jqgrid-new-row")&&setTimeout(function(){a(b).jqGrid("delRowData",c)},0)}a(b).triggerHandler("jqGridInlineAfterRestoreRow",[c]);a.isFunction(k.afterrestorefunc)&&k.afterrestorefunc.call(b,c)}}})},addRow:function(c){c=a.extend(!0,{rowID:"new_row",initdata:{},position:"first",useDefValues:!0,useFormatter:!1,addRowParams:{extraparam:{}}},c||{});return this.each(function(){if(this.grid){var d=\n +this;!0===c.useDefValues&&a(d.p.colModel).each(function(){if(this.editoptions&&this.editoptions.defaultValue){var b=this.editoptions.defaultValue,b=a.isFunction(b)?b.call(d):b;c.initdata[this.name]=b}});a(d).jqGrid("addRowData",c.rowID,c.initdata,c.position);c.rowID=d.p.idPrefix+c.rowID;a("#"+a.jgrid.jqID(c.rowID),"#"+a.jgrid.jqID(d.p.id)).addClass("jqgrid-new-row");if(c.useFormatter)a("#"+a.jgrid.jqID(c.rowID)+" .ui-inline-edit","#"+a.jgrid.jqID(d.p.id)).click();else{var b=d.p.prmNames;c.addRowParams.extraparam[b.oper]=\n +b.addoper;a(d).jqGrid("editRow",c.rowID,c.addRowParams);a(d).jqGrid("setSelection",c.rowID)}}})},inlineNav:function(c,d){d=a.extend({edit:!0,editicon:"ui-icon-pencil",add:!0,addicon:"ui-icon-plus",save:!0,saveicon:"ui-icon-disk",cancel:!0,cancelicon:"ui-icon-cancel",addParams:{useFormatter:!1,rowID:"new_row"},editParams:{},restoreAfterSelect:!0},a.jgrid.nav,d||{});return this.each(function(){if(this.grid){var b=this,k,g=a.jgrid.jqID(b.p.id);b.p._inlinenav=!0;if(!0===d.addParams.useFormatter){var l=\n +b.p.colModel,p;for(p=0;p<l.length;p++)if(l[p].formatter&&"actions"===l[p].formatter){l[p].formatoptions&&(l=a.extend({keys:!1,onEdit:null,onSuccess:null,afterSave:null,onError:null,afterRestore:null,extraparam:{},url:null},l[p].formatoptions),d.addParams.addRowParams={keys:l.keys,oneditfunc:l.onEdit,successfunc:l.onSuccess,url:l.url,extraparam:l.extraparam,aftersavefunc:l.afterSavef,errorfunc:l.onError,afterrestorefunc:l.afterRestore});break}}d.add&&a(b).jqGrid("navButtonAdd",c,{caption:d.addtext,\n +title:d.addtitle,buttonicon:d.addicon,id:b.p.id+"_iladd",onClickButton:function(){a(b).jqGrid("addRow",d.addParams);d.addParams.useFormatter||(a("#"+g+"_ilsave").removeClass("ui-state-disabled"),a("#"+g+"_ilcancel").removeClass("ui-state-disabled"),a("#"+g+"_iladd").addClass("ui-state-disabled"),a("#"+g+"_iledit").addClass("ui-state-disabled"))}});d.edit&&a(b).jqGrid("navButtonAdd",c,{caption:d.edittext,title:d.edittitle,buttonicon:d.editicon,id:b.p.id+"_iledit",onClickButton:function(){var c=a(b).jqGrid("getGridParam",\n +"selrow");c?(a(b).jqGrid("editRow",c,d.editParams),a("#"+g+"_ilsave").removeClass("ui-state-disabled"),a("#"+g+"_ilcancel").removeClass("ui-state-disabled"),a("#"+g+"_iladd").addClass("ui-state-disabled"),a("#"+g+"_iledit").addClass("ui-state-disabled")):(a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+g,jqm:!0}),a("#jqg_alrt").focus())}});d.save&&(a(b).jqGrid("navButtonAdd",c,{caption:d.savetext||"",title:d.savetitle||"Save row",buttonicon:d.saveicon,id:b.p.id+"_ilsave",onClickButton:function(){var c=\n +b.p.savedRow[0].id;if(c){var e=b.p.prmNames,j=e.oper;d.editParams.extraparam||(d.editParams.extraparam={});d.editParams.extraparam[j]=a("#"+a.jgrid.jqID(c),"#"+g).hasClass("jqgrid-new-row")?e.addoper:e.editoper;a(b).jqGrid("saveRow",c,d.editParams)&&a(b).jqGrid("showAddEditButtons")}else a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+g,jqm:!0}),a("#jqg_alrt").focus()}}),a("#"+g+"_ilsave").addClass("ui-state-disabled"));d.cancel&&(a(b).jqGrid("navButtonAdd",c,{caption:d.canceltext||"",title:d.canceltitle||\n +"Cancel row editing",buttonicon:d.cancelicon,id:b.p.id+"_ilcancel",onClickButton:function(){var c=b.p.savedRow[0].id;if(c){a(b).jqGrid("restoreRow",c,d.editParams);a(b).jqGrid("showAddEditButtons")}else{a.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+g,jqm:true});a("#jqg_alrt").focus()}}}),a("#"+g+"_ilcancel").addClass("ui-state-disabled"));!0===d.restoreAfterSelect&&(k=a.isFunction(b.p.beforeSelectRow)?b.p.beforeSelectRow:!1,b.p.beforeSelectRow=function(c,e){var g=true;if(b.p.savedRow.length>0&&b.p._inlinenav===\n +true&&c!==b.p.selrow&&b.p.selrow!==null){b.p.selrow==d.addParams.rowID?a(b).jqGrid("delRowData",b.p.selrow):a(b).jqGrid("restoreRow",b.p.selrow,d.editParams);a(b).jqGrid("showAddEditButtons")}k&&(g=k.call(b,c,e));return g})}})},showAddEditButtons:function(){return this.each(function(){if(this.grid){var c=a.jgrid.jqID(this.p.id);a("#"+c+"_ilsave").addClass("ui-state-disabled");a("#"+c+"_ilcancel").addClass("ui-state-disabled");a("#"+c+"_iladd").removeClass("ui-state-disabled");a("#"+c+"_iledit").removeClass("ui-state-disabled")}})}})})(jQuery);\n +(function(b){b.jgrid.extend({editCell:function(d,f,a){return this.each(function(){var c=this,g,e,h,i;if(c.grid&&!0===c.p.cellEdit){f=parseInt(f,10);c.p.selrow=c.rows[d].id;c.p.knv||b(c).jqGrid("GridNav");if(0<c.p.savedRow.length){if(!0===a&&d==c.p.iRow&&f==c.p.iCol)return;b(c).jqGrid("saveCell",c.p.savedRow[0].id,c.p.savedRow[0].ic)}else window.setTimeout(function(){b("#"+b.jgrid.jqID(c.p.knv)).attr("tabindex","-1").focus()},0);i=c.p.colModel[f];g=i.name;if(!("subgrid"==g||"cb"==g||"rn"==g)){h=b("td:eq("+\n +f+")",c.rows[d]);if(!0===i.editable&&!0===a&&!h.hasClass("not-editable-cell")){0<=parseInt(c.p.iCol,10)&&0<=parseInt(c.p.iRow,10)&&(b("td:eq("+c.p.iCol+")",c.rows[c.p.iRow]).removeClass("edit-cell ui-state-highlight"),b(c.rows[c.p.iRow]).removeClass("selected-row ui-state-hover"));b(h).addClass("edit-cell ui-state-highlight");b(c.rows[d]).addClass("selected-row ui-state-hover");try{e=b.unformat.call(c,h,{rowId:c.rows[d].id,colModel:i},f)}catch(k){e=i.edittype&&"textarea"==i.edittype?b(h).text():b(h).html()}c.p.autoencode&&\n +(e=b.jgrid.htmlDecode(e));i.edittype||(i.edittype="text");c.p.savedRow.push({id:d,ic:f,name:g,v:e});if(" "===e||" "===e||1===e.length&&160===e.charCodeAt(0))e="";if(b.isFunction(c.p.formatCell)){var j=c.p.formatCell.call(c,c.rows[d].id,g,e,d,f);void 0!==j&&(e=j)}var j=b.extend({},i.editoptions||{},{id:d+"_"+g,name:g}),n=b.jgrid.createEl.call(c,i.edittype,j,e,!0,b.extend({},b.jgrid.ajaxOptions,c.p.ajaxSelectOptions||{}));b(c).triggerHandler("jqGridBeforeEditCell",[c.rows[d].id,g,e,d,f]);\n +b.isFunction(c.p.beforeEditCell)&&c.p.beforeEditCell.call(c,c.rows[d].id,g,e,d,f);b(h).html("").append(n).attr("tabindex","0");window.setTimeout(function(){b(n).focus()},0);b("input, select, textarea",h).bind("keydown",function(a){a.keyCode===27&&(b("input.hasDatepicker",h).length>0?b(".ui-datepicker").is(":hidden")?b(c).jqGrid("restoreCell",d,f):b("input.hasDatepicker",h).datepicker("hide"):b(c).jqGrid("restoreCell",d,f));if(a.keyCode===13){b(c).jqGrid("saveCell",d,f);return false}if(a.keyCode===\n +9){if(c.grid.hDiv.loading)return false;a.shiftKey?b(c).jqGrid("prevCell",d,f):b(c).jqGrid("nextCell",d,f)}a.stopPropagation()});b(c).triggerHandler("jqGridAfterEditCell",[c.rows[d].id,g,e,d,f]);b.isFunction(c.p.afterEditCell)&&c.p.afterEditCell.call(c,c.rows[d].id,g,e,d,f)}else 0<=parseInt(c.p.iCol,10)&&0<=parseInt(c.p.iRow,10)&&(b("td:eq("+c.p.iCol+")",c.rows[c.p.iRow]).removeClass("edit-cell ui-state-highlight"),b(c.rows[c.p.iRow]).removeClass("selected-row ui-state-hover")),h.addClass("edit-cell ui-state-highlight"),\n +b(c.rows[d]).addClass("selected-row ui-state-hover"),e=h.html().replace(/\\ \\;/ig,""),b(c).triggerHandler("jqGridSelectCell",[c.rows[d].id,g,e,d,f]),b.isFunction(c.p.onSelectCell)&&c.p.onSelectCell.call(c,c.rows[d].id,g,e,d,f);c.p.iCol=f;c.p.iRow=d}}})},saveCell:function(d,f){return this.each(function(){var a=this,c;if(a.grid&&!0===a.p.cellEdit){c=1<=a.p.savedRow.length?0:null;if(null!==c){var g=b("td:eq("+f+")",a.rows[d]),e,h,i=a.p.colModel[f],k=i.name,j=b.jgrid.jqID(k);switch(i.edittype){case "select":if(i.editoptions.multiple){var j=\n +b("#"+d+"_"+j,a.rows[d]),n=[];(e=b(j).val())?e.join(","):e="";b("option:selected",j).each(function(a,c){n[a]=b(c).text()});h=n.join(",")}else e=b("#"+d+"_"+j+" option:selected",a.rows[d]).val(),h=b("#"+d+"_"+j+" option:selected",a.rows[d]).text();i.formatter&&(h=e);break;case "checkbox":var l=["Yes","No"];i.editoptions&&(l=i.editoptions.value.split(":"));h=e=b("#"+d+"_"+j,a.rows[d]).is(":checked")?l[0]:l[1];break;case "password":case "text":case "textarea":case "button":h=e=b("#"+d+"_"+j,a.rows[d]).val();\n +break;case "custom":try{if(i.editoptions&&b.isFunction(i.editoptions.custom_value)){e=i.editoptions.custom_value.call(a,b(".customelement",g),"get");if(void 0===e)throw"e2";h=e}else throw"e1";}catch(o){"e1"==o&&b.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function \'custom_value\' "+b.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose),"e2"==o?b.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function \'custom_value\' "+b.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose):b.jgrid.info_dialog(jQuery.jgrid.errors.errcap,\n +o.message,jQuery.jgrid.edit.bClose)}}if(h!==a.p.savedRow[c].v){if(c=b(a).triggerHandler("jqGridBeforeSaveCell",[a.rows[d].id,k,e,d,f]))h=e=c;if(b.isFunction(a.p.beforeSaveCell)&&(c=a.p.beforeSaveCell.call(a,a.rows[d].id,k,e,d,f)))h=e=c;var p=b.jgrid.checkValues(e,f,a);if(!0===p[0]){c=b(a).triggerHandler("jqGridBeforeSubmitCell",[a.rows[d].id,k,e,d,f])||{};b.isFunction(a.p.beforeSubmitCell)&&((c=a.p.beforeSubmitCell.call(a,a.rows[d].id,k,e,d,f))||(c={}));0<b("input.hasDatepicker",g).length&&b("input.hasDatepicker",\n +g).datepicker("hide");if("remote"==a.p.cellsubmit)if(a.p.cellurl){var m={};a.p.autoencode&&(e=b.jgrid.htmlEncode(e));m[k]=e;l=a.p.prmNames;i=l.id;j=l.oper;m[i]=b.jgrid.stripPref(a.p.idPrefix,a.rows[d].id);m[j]=l.editoper;m=b.extend(c,m);b("#lui_"+b.jgrid.jqID(a.p.id)).show();a.grid.hDiv.loading=!0;b.ajax(b.extend({url:a.p.cellurl,data:b.isFunction(a.p.serializeCellData)?a.p.serializeCellData.call(a,m):m,type:"POST",complete:function(c,i){b("#lui_"+a.p.id).hide();a.grid.hDiv.loading=false;if(i=="success"){var j=\n +b(a).triggerHandler("jqGridAfterSubmitCell",[a,c,m.id,k,e,d,f])||[true,""];j[0]===true&&b.isFunction(a.p.afterSubmitCell)&&(j=a.p.afterSubmitCell.call(a,c,m.id,k,e,d,f));if(j[0]===true){b(g).empty();b(a).jqGrid("setCell",a.rows[d].id,f,h,false,false,true);b(g).addClass("dirty-cell");b(a.rows[d]).addClass("edited");b(a).triggerHandler("jqGridAfterSaveCell",[a.rows[d].id,k,e,d,f]);b.isFunction(a.p.afterSaveCell)&&a.p.afterSaveCell.call(a,a.rows[d].id,k,e,d,f);a.p.savedRow.splice(0,1)}else{b.jgrid.info_dialog(b.jgrid.errors.errcap,\n +j[1],b.jgrid.edit.bClose);b(a).jqGrid("restoreCell",d,f)}}},error:function(c,e,h){b("#lui_"+b.jgrid.jqID(a.p.id)).hide();a.grid.hDiv.loading=false;b(a).triggerHandler("jqGridErrorCell",[c,e,h]);b.isFunction(a.p.errorCell)?a.p.errorCell.call(a,c,e,h):b.jgrid.info_dialog(b.jgrid.errors.errcap,c.status+" : "+c.statusText+"<br/>"+e,b.jgrid.edit.bClose);b(a).jqGrid("restoreCell",d,f)}},b.jgrid.ajaxOptions,a.p.ajaxCellOptions||{}))}else try{b.jgrid.info_dialog(b.jgrid.errors.errcap,b.jgrid.errors.nourl,\n +b.jgrid.edit.bClose),b(a).jqGrid("restoreCell",d,f)}catch(q){}"clientArray"==a.p.cellsubmit&&(b(g).empty(),b(a).jqGrid("setCell",a.rows[d].id,f,h,!1,!1,!0),b(g).addClass("dirty-cell"),b(a.rows[d]).addClass("edited"),b(a).triggerHandler("jqGridAfterSaveCell",[a.rows[d].id,k,e,d,f]),b.isFunction(a.p.afterSaveCell)&&a.p.afterSaveCell.call(a,a.rows[d].id,k,e,d,f),a.p.savedRow.splice(0,1))}else try{window.setTimeout(function(){b.jgrid.info_dialog(b.jgrid.errors.errcap,e+" "+p[1],b.jgrid.edit.bClose)},\n +100),b(a).jqGrid("restoreCell",d,f)}catch(r){}}else b(a).jqGrid("restoreCell",d,f)}b.browser.opera?b("#"+b.jgrid.jqID(a.p.knv)).attr("tabindex","-1").focus():window.setTimeout(function(){b("#"+b.jgrid.jqID(a.p.knv)).attr("tabindex","-1").focus()},0)}})},restoreCell:function(d,f){return this.each(function(){var a=this,c;if(a.grid&&!0===a.p.cellEdit){c=1<=a.p.savedRow.length?0:null;if(null!==c){var g=b("td:eq("+f+")",a.rows[d]);if(b.isFunction(b.fn.datepicker))try{b("input.hasDatepicker",g).datepicker("hide")}catch(e){}b(g).empty().attr("tabindex",\n +"-1");b(a).jqGrid("setCell",a.rows[d].id,f,a.p.savedRow[c].v,!1,!1,!0);b(a).triggerHandler("jqGridAfterRestoreCell",[a.rows[d].id,a.p.savedRow[c].v,d,f]);b.isFunction(a.p.afterRestoreCell)&&a.p.afterRestoreCell.call(a,a.rows[d].id,a.p.savedRow[c].v,d,f);a.p.savedRow.splice(0,1)}window.setTimeout(function(){b("#"+a.p.knv).attr("tabindex","-1").focus()},0)}})},nextCell:function(d,f){return this.each(function(){var a=!1;if(this.grid&&!0===this.p.cellEdit){for(var c=f+1;c<this.p.colModel.length;c++)if(!0===\n +this.p.colModel[c].editable){a=c;break}!1!==a?b(this).jqGrid("editCell",d,a,!0):0<this.p.savedRow.length&&b(this).jqGrid("saveCell",d,f)}})},prevCell:function(d,f){return this.each(function(){var a=!1;if(this.grid&&!0===this.p.cellEdit){for(var c=f-1;0<=c;c--)if(!0===this.p.colModel[c].editable){a=c;break}!1!==a?b(this).jqGrid("editCell",d,a,!0):0<this.p.savedRow.length&&b(this).jqGrid("saveCell",d,f)}})},GridNav:function(){return this.each(function(){function d(c,d,e){if("v"==e.substr(0,1)){var f=\n +b(a.grid.bDiv)[0].clientHeight,g=b(a.grid.bDiv)[0].scrollTop,l=a.rows[c].offsetTop+a.rows[c].clientHeight,o=a.rows[c].offsetTop;"vd"==e&&l>=f&&(b(a.grid.bDiv)[0].scrollTop=b(a.grid.bDiv)[0].scrollTop+a.rows[c].clientHeight);"vu"==e&&o<g&&(b(a.grid.bDiv)[0].scrollTop=b(a.grid.bDiv)[0].scrollTop-a.rows[c].clientHeight)}"h"==e&&(e=b(a.grid.bDiv)[0].clientWidth,f=b(a.grid.bDiv)[0].scrollLeft,g=a.rows[c].cells[d].offsetLeft,a.rows[c].cells[d].offsetLeft+a.rows[c].cells[d].clientWidth>=e+parseInt(f,10)?\n +b(a.grid.bDiv)[0].scrollLeft=b(a.grid.bDiv)[0].scrollLeft+a.rows[c].cells[d].clientWidth:g<f&&(b(a.grid.bDiv)[0].scrollLeft=b(a.grid.bDiv)[0].scrollLeft-a.rows[c].cells[d].clientWidth))}function f(b,c){var d,e;if("lft"==c){d=b+1;for(e=b;0<=e;e--)if(!0!==a.p.colModel[e].hidden){d=e;break}}if("rgt"==c){d=b-1;for(e=b;e<a.p.colModel.length;e++)if(!0!==a.p.colModel[e].hidden){d=e;break}}return d}var a=this;if(a.grid&&!0===a.p.cellEdit){a.p.knv=a.p.id+"_kn";var c=b("<div style=\'position:absolute;top:-1000000px;width:1px;height:1px;\' tabindex=\'0\'><div tabindex=\'-1\' style=\'width:1px;height:1px;\' id=\'"+\n +a.p.knv+"\'></div></div>"),g,e;b(c).insertBefore(a.grid.cDiv);b("#"+a.p.knv).focus().keydown(function(c){e=c.keyCode;"rtl"==a.p.direction&&(37===e?e=39:39===e&&(e=37));switch(e){case 38:0<a.p.iRow-1&&(d(a.p.iRow-1,a.p.iCol,"vu"),b(a).jqGrid("editCell",a.p.iRow-1,a.p.iCol,!1));break;case 40:a.p.iRow+1<=a.rows.length-1&&(d(a.p.iRow+1,a.p.iCol,"vd"),b(a).jqGrid("editCell",a.p.iRow+1,a.p.iCol,!1));break;case 37:0<=a.p.iCol-1&&(g=f(a.p.iCol-1,"lft"),d(a.p.iRow,g,"h"),b(a).jqGrid("editCell",a.p.iRow,g,!1));\n +break;case 39:a.p.iCol+1<=a.p.colModel.length-1&&(g=f(a.p.iCol+1,"rgt"),d(a.p.iRow,g,"h"),b(a).jqGrid("editCell",a.p.iRow,g,!1));break;case 13:0<=parseInt(a.p.iCol,10)&&0<=parseInt(a.p.iRow,10)&&b(a).jqGrid("editCell",a.p.iRow,a.p.iCol,!0);break;default:return!0}return!1})}})},getChangedCells:function(d){var f=[];d||(d="all");this.each(function(){var a=this,c;a.grid&&!0===a.p.cellEdit&&b(a.rows).each(function(g){var e={};b(this).hasClass("edited")&&(b("td",this).each(function(f){c=a.p.colModel[f].name;\n +if("cb"!==c&&"subgrid"!==c)if("dirty"==d){if(b(this).hasClass("dirty-cell"))try{e[c]=b.unformat.call(a,this,{rowId:a.rows[g].id,colModel:a.p.colModel[f]},f)}catch(i){e[c]=b.jgrid.htmlDecode(b(this).html())}}else try{e[c]=b.unformat.call(a,this,{rowId:a.rows[g].id,colModel:a.p.colModel[f]},f)}catch(k){e[c]=b.jgrid.htmlDecode(b(this).html())}}),e.id=this.id,f.push(e))})});return f}})})(jQuery);\n +(function(b){b.fn.jqm=function(a){var k={overlay:50,closeoverlay:!0,overlayClass:"jqmOverlay",closeClass:"jqmClose",trigger:".jqModal",ajax:d,ajaxText:"",target:d,modal:d,toTop:d,onShow:d,onHide:d,onLoad:d};return this.each(function(){if(this._jqm)return i[this._jqm].c=b.extend({},i[this._jqm].c,a);g++;this._jqm=g;i[g]={c:b.extend(k,b.jqm.params,a),a:d,w:b(this).addClass("jqmID"+g),s:g};k.trigger&&b(this).jqmAddTrigger(k.trigger)})};b.fn.jqmAddClose=function(a){return n(this,a,"jqmHide")};b.fn.jqmAddTrigger=\n +function(a){return n(this,a,"jqmShow")};b.fn.jqmShow=function(a){return this.each(function(){b.jqm.open(this._jqm,a)})};b.fn.jqmHide=function(a){return this.each(function(){b.jqm.close(this._jqm,a)})};b.jqm={hash:{},open:function(a,k){var c=i[a],e=c.c,l="."+e.closeClass,h=parseInt(c.w.css("z-index")),h=0<h?h:3E3,f=b("<div></div>").css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":h-1,opacity:e.overlay/100});if(c.a)return d;c.t=k;c.a=!0;c.w.css("z-index",h);e.modal?(j[0]||setTimeout(function(){o("bind")},\n +1),j.push(a)):0<e.overlay?e.closeoverlay&&c.w.jqmAddClose(f):f=d;c.o=f?f.addClass(e.overlayClass).prependTo("body"):d;if(p&&(b("html,body").css({height:"100%",width:"100%"}),f)){var f=f.css({position:"absolute"})[0],g;for(g in{Top:1,Left:1})f.style.setExpression(g.toLowerCase(),"(_=(document.documentElement.scroll"+g+" || document.body.scroll"+g+"))+\'px\'")}e.ajax?(h=e.target||c.w,f=e.ajax,h="string"==typeof h?b(h,c.w):b(h),f="@"==f.substr(0,1)?b(k).attr(f.substring(1)):f,h.html(e.ajaxText).load(f,\n +function(){e.onLoad&&e.onLoad.call(this,c);l&&c.w.jqmAddClose(b(l,c.w));q(c)})):l&&c.w.jqmAddClose(b(l,c.w));e.toTop&&c.o&&c.w.before(\'<span id="jqmP\'+c.w[0]._jqm+\'"></span>\').insertAfter(c.o);e.onShow?e.onShow(c):c.w.show();q(c);return d},close:function(a){a=i[a];if(!a.a)return d;a.a=d;j[0]&&(j.pop(),j[0]||o("unbind"));a.c.toTop&&a.o&&b("#jqmP"+a.w[0]._jqm).after(a.w).remove();if(a.c.onHide)a.c.onHide(a);else a.w.hide(),a.o&&a.o.remove();return d},params:{}};var g=0,i=b.jqm.hash,j=[],p=b.browser.msie&&\n +"6.0"==b.browser.version,d=!1,q=function(a){var d=b(\'<iframe src="javascript:false;document.write(\\\'\\\');" class="jqm"></iframe>\').css({opacity:0});p&&(a.o?a.o.html(\'<p style="width:100%;height:100%"/>\').prepend(d):b("iframe.jqm",a.w)[0]||a.w.prepend(d));r(a)},r=function(a){try{b(":input:visible",a.w)[0].focus()}catch(d){}},o=function(a){b(document)[a]("keypress",m)[a]("keydown",m)[a]("mousedown",m)},m=function(a){var d=i[j[j.length-1]];(a=!b(a.target).parents(".jqmID"+d.s)[0])&&r(d);return!a},n=function(a,\n +g,c){return a.each(function(){var a=this._jqm;b(g).each(function(){this[c]||(this[c]=[],b(this).click(function(){for(var a in{jqmShow:1,jqmHide:1})for(var b in this[a])if(i[this[a][b]])i[this[a][b]].w[a](this);return d}));this[c].push(a)})})}})(jQuery);\n +(function(b){b.fn.jqDrag=function(a){return h(this,a,"d")};b.fn.jqResize=function(a,b){return h(this,a,"r",b)};b.jqDnR={dnr:{},e:0,drag:function(a){"d"==d.k?e.css({left:d.X+a.pageX-d.pX,top:d.Y+a.pageY-d.pY}):(e.css({width:Math.max(a.pageX-d.pX+d.W,0),height:Math.max(a.pageY-d.pY+d.H,0)}),f&&g.css({width:Math.max(a.pageX-f.pX+f.W,0),height:Math.max(a.pageY-f.pY+f.H,0)}));return!1},stop:function(){b(document).unbind("mousemove",c.drag).unbind("mouseup",c.stop)}};var c=b.jqDnR,d=c.dnr,e=c.e,g,f,h=function(a,\n +c,h,l){return a.each(function(){c=c?b(c,a):a;c.bind("mousedown",{e:a,k:h},function(a){var c=a.data,i={};e=c.e;g=l?b(l):!1;if("relative"!=e.css("position"))try{e.position(i)}catch(h){}d={X:i.left||j("left")||0,Y:i.top||j("top")||0,W:j("width")||e[0].scrollWidth||0,H:j("height")||e[0].scrollHeight||0,pX:a.pageX,pY:a.pageY,k:c.k};f=g&&"d"!=c.k?{X:i.left||k("left")||0,Y:i.top||k("top")||0,W:g[0].offsetWidth||k("width")||0,H:g[0].offsetHeight||k("height")||0,pX:a.pageX,pY:a.pageY,k:c.k}:!1;if(b("input.hasDatepicker",\n +e[0])[0])try{b("input.hasDatepicker",e[0]).datepicker("hide")}catch(m){}b(document).mousemove(b.jqDnR.drag).mouseup(b.jqDnR.stop);return!1})})},j=function(a){return parseInt(e.css(a),10)||!1},k=function(a){return parseInt(g.css(a),10)||!1}})(jQuery);\n +(function(b){b.jgrid.extend({setSubGrid:function(){return this.each(function(){var e;this.p.subGridOptions=b.extend({plusicon:"ui-icon-plus",minusicon:"ui-icon-minus",openicon:"ui-icon-carat-1-sw",expandOnLoad:!1,delayOnLoad:50,selectOnExpand:!1,reloadOnExpand:!0},this.p.subGridOptions||{});this.p.colNames.unshift("");this.p.colModel.unshift({name:"subgrid",width:b.browser.safari?this.p.subGridWidth+this.p.cellLayout:this.p.subGridWidth,sortable:!1,resizable:!1,hidedlg:!0,search:!1,fixed:!0});e=this.p.subGridModel;\n +if(e[0]){e[0].align=b.extend([],e[0].align||[]);for(var c=0;c<e[0].name.length;c++)e[0].align[c]=e[0].align[c]||"left"}})},addSubGridCell:function(b,c){var a="",m,l;this.each(function(){a=this.formatCol(b,c);l=this.p.id;m=this.p.subGridOptions.plusicon});return\'<td role="gridcell" aria-describedby="\'+l+\'_subgrid" class="ui-sgcollapsed sgcollapsed" \'+a+"><a href=\'javascript:void(0);\'><span class=\'ui-icon "+m+"\'></span></a></td>"},addSubGrid:function(e,c){return this.each(function(){var a=this;if(a.grid){var m=\n +function(c,e,h){e=b("<td align=\'"+a.p.subGridModel[0].align[h]+"\'></td>").html(e);b(c).append(e)},l=function(c,e){var h,f,n,d=b("<table cellspacing=\'0\' cellpadding=\'0\' border=\'0\'><tbody></tbody></table>"),i=b("<tr></tr>");for(f=0;f<a.p.subGridModel[0].name.length;f++)h=b("<th class=\'ui-state-default ui-th-subgrid ui-th-column ui-th-"+a.p.direction+"\'></th>"),b(h).html(a.p.subGridModel[0].name[f]),b(h).width(a.p.subGridModel[0].width[f]),b(i).append(h);b(d).append(i);c&&(n=a.p.xmlReader.subgrid,b(n.root+\n +" "+n.row,c).each(function(){i=b("<tr class=\'ui-widget-content ui-subtblcell\'></tr>");if(!0===n.repeatitems)b(n.cell,this).each(function(a){m(i,b(this).text()||" ",a)});else{var c=a.p.subGridModel[0].mapping||a.p.subGridModel[0].name;if(c)for(f=0;f<c.length;f++)m(i,b(c[f],this).text()||" ",f)}b(d).append(i)}));h=b("table:first",a.grid.bDiv).attr("id")+"_";b("#"+b.jgrid.jqID(h+e)).append(d);a.grid.hDiv.loading=!1;b("#load_"+b.jgrid.jqID(a.p.id)).hide();return!1},p=function(c,e){var h,f,d,\n +g,i,k=b("<table cellspacing=\'0\' cellpadding=\'0\' border=\'0\'><tbody></tbody></table>"),j=b("<tr></tr>");for(f=0;f<a.p.subGridModel[0].name.length;f++)h=b("<th class=\'ui-state-default ui-th-subgrid ui-th-column ui-th-"+a.p.direction+"\'></th>"),b(h).html(a.p.subGridModel[0].name[f]),b(h).width(a.p.subGridModel[0].width[f]),b(j).append(h);b(k).append(j);if(c&&(g=a.p.jsonReader.subgrid,h=b.jgrid.getAccessor(c,g.root),"undefined"!==typeof h))for(f=0;f<h.length;f++){d=h[f];j=b("<tr class=\'ui-widget-content ui-subtblcell\'></tr>");\n +if(!0===g.repeatitems){g.cell&&(d=d[g.cell]);for(i=0;i<d.length;i++)m(j,d[i]||" ",i)}else{var l=a.p.subGridModel[0].mapping||a.p.subGridModel[0].name;if(l.length)for(i=0;i<l.length;i++)m(j,d[l[i]]||" ",i)}b(k).append(j)}f=b("table:first",a.grid.bDiv).attr("id")+"_";b("#"+b.jgrid.jqID(f+e)).append(k);a.grid.hDiv.loading=!1;b("#load_"+b.jgrid.jqID(a.p.id)).hide();return!1},t=function(c){var e,d,f,g;e=b(c).attr("id");d={nd_:(new Date).getTime()};d[a.p.prmNames.subgridid]=e;if(!a.p.subGridModel[0])return!1;\n +if(a.p.subGridModel[0].params)for(g=0;g<a.p.subGridModel[0].params.length;g++)for(f=0;f<a.p.colModel.length;f++)a.p.colModel[f].name===a.p.subGridModel[0].params[g]&&(d[a.p.colModel[f].name]=b("td:eq("+f+")",c).text().replace(/\\ \\;/ig,""));if(!a.grid.hDiv.loading)switch(a.grid.hDiv.loading=!0,b("#load_"+b.jgrid.jqID(a.p.id)).show(),a.p.subgridtype||(a.p.subgridtype=a.p.datatype),b.isFunction(a.p.subgridtype)?a.p.subgridtype.call(a,d):a.p.subgridtype=a.p.subgridtype.toLowerCase(),a.p.subgridtype){case "xml":case "json":b.ajax(b.extend({type:a.p.mtype,\n +url:a.p.subGridUrl,dataType:a.p.subgridtype,data:b.isFunction(a.p.serializeSubGridData)?a.p.serializeSubGridData.call(a,d):d,complete:function(c){a.p.subgridtype==="xml"?l(c.responseXML,e):p(b.jgrid.parse(c.responseText),e)}},b.jgrid.ajaxOptions,a.p.ajaxSubgridOptions||{}))}return!1},d,k,q,r=0,g,j;b.each(a.p.colModel,function(){(!0===this.hidden||"rn"===this.name||"cb"===this.name)&&r++});var s=a.rows.length,o=1;void 0!==c&&0<c&&(o=c,s=c+1);for(;o<s;)b(a.rows[o]).hasClass("jqgrow")&&b(a.rows[o].cells[e]).bind("click",\n +function(){var c=b(this).parent("tr")[0];j=c.nextSibling;if(b(this).hasClass("sgcollapsed")){k=a.p.id;d=c.id;if(a.p.subGridOptions.reloadOnExpand===true||a.p.subGridOptions.reloadOnExpand===false&&!b(j).hasClass("ui-subgrid")){q=e>=1?"<td colspan=\'"+e+"\'> </td>":"";g=b(a).triggerHandler("jqGridSubGridBeforeExpand",[k+"_"+d,d]);(g=g===false||g==="stop"?false:true)&&b.isFunction(a.p.subGridBeforeExpand)&&(g=a.p.subGridBeforeExpand.call(a,k+"_"+d,d));if(g===false)return false;b(c).after("<tr role=\'row\' class=\'ui-subgrid\'>"+\n +q+"<td class=\'ui-widget-content subgrid-cell\'><span class=\'ui-icon "+a.p.subGridOptions.openicon+"\'></span></td><td colspan=\'"+parseInt(a.p.colNames.length-1-r,10)+"\' class=\'ui-widget-content subgrid-data\'><div id="+k+"_"+d+" class=\'tablediv\'></div></td></tr>");b(a).triggerHandler("jqGridSubGridRowExpanded",[k+"_"+d,d]);b.isFunction(a.p.subGridRowExpanded)?a.p.subGridRowExpanded.call(a,k+"_"+d,d):t(c)}else b(j).show();b(this).html("<a href=\'javascript:void(0);\'><span class=\'ui-icon "+a.p.subGridOptions.minusicon+\n +"\'></span></a>").removeClass("sgcollapsed").addClass("sgexpanded");a.p.subGridOptions.selectOnExpand&&b(a).jqGrid("setSelection",d)}else if(b(this).hasClass("sgexpanded")){g=b(a).triggerHandler("jqGridSubGridRowColapsed",[k+"_"+d,d]);if((g=g===false||g==="stop"?false:true)&&b.isFunction(a.p.subGridRowColapsed)){d=c.id;g=a.p.subGridRowColapsed.call(a,k+"_"+d,d)}if(g===false)return false;a.p.subGridOptions.reloadOnExpand===true?b(j).remove(".ui-subgrid"):b(j).hasClass("ui-subgrid")&&b(j).hide();b(this).html("<a href=\'javascript:void(0);\'><span class=\'ui-icon "+\n +a.p.subGridOptions.plusicon+"\'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed")}return false}),o++;!0===a.p.subGridOptions.expandOnLoad&&b(a.rows).filter(".jqgrow").each(function(a,c){b(c.cells[0]).click()});a.subGridXml=function(a,b){l(a,b)};a.subGridJson=function(a,b){p(a,b)}}})},expandSubGridRow:function(e){return this.each(function(){if((this.grid||e)&&!0===this.p.subGrid){var c=b(this).jqGrid("getInd",e,!0);c&&(c=b("td.sgcollapsed",c)[0])&&b(c).trigger("click")}})},collapseSubGridRow:function(e){return this.each(function(){if((this.grid||\n +e)&&!0===this.p.subGrid){var c=b(this).jqGrid("getInd",e,!0);c&&(c=b("td.sgexpanded",c)[0])&&b(c).trigger("click")}})},toggleSubGridRow:function(e){return this.each(function(){if((this.grid||e)&&!0===this.p.subGrid){var c=b(this).jqGrid("getInd",e,!0);if(c){var a=b("td.sgcollapsed",c)[0];a?b(a).trigger("click"):(a=b("td.sgexpanded",c)[0])&&b(a).trigger("click")}}})}})})(jQuery);\n +(function(b){b.extend(b.jgrid,{template:function(a){var c=b.makeArray(arguments).slice(1),f=1;void 0===a&&(a="");return a.replace(/\\{([\\w\\-]+)(?:\\:([\\w\\.]*)(?:\\((.*?)?\\))?)?\\}/g,function(a,d){if(isNaN(parseInt(d,10))){for(var b=c[f],g=b.length;g--;)if(d===b[g].nm)return b[g].v;f++}else return f++,c[parseInt(d,10)]})}});b.jgrid.extend({groupingSetup:function(){return this.each(function(){var a=this.p.groupingView;if(null!==a&&("object"===typeof a||b.isFunction(a)))if(a.groupField.length){"undefined"===\n +typeof a.visibiltyOnNextGrouping&&(a.visibiltyOnNextGrouping=[]);a.lastvalues=[];a.groups=[];a.counters=[];for(var c=0;c<a.groupField.length;c++)a.groupOrder[c]||(a.groupOrder[c]="asc"),a.groupText[c]||(a.groupText[c]="{0}"),"boolean"!==typeof a.groupColumnShow[c]&&(a.groupColumnShow[c]=!0),"boolean"!==typeof a.groupSummary[c]&&(a.groupSummary[c]=!1),!0===a.groupColumnShow[c]?(a.visibiltyOnNextGrouping[c]=!0,b(this).jqGrid("showCol",a.groupField[c])):(a.visibiltyOnNextGrouping[c]=b("#"+b.jgrid.jqID(this.p.id+\n +"_"+a.groupField[c])).is(":visible"),b(this).jqGrid("hideCol",a.groupField[c]));a.summary=[];for(var c=this.p.colModel,f=0,e=c.length;f<e;f++)c[f].summaryType&&a.summary.push({nm:c[f].name,st:c[f].summaryType,v:"",sr:c[f].summaryRound,srt:c[f].summaryRoundType||"round"})}else this.p.grouping=!1;else this.p.grouping=!1})},groupingPrepare:function(a,c,f,e){this.each(function(){for(var d=this.p.groupingView,h=this,g=d.groupField.length,k,j,p=0,i=0;i<g;i++)k=d.groupField[i],j=f[k],void 0!==j&&(0===e?\n +(d.groups.push({idx:i,dataIndex:k,value:j,startRow:e,cnt:1,summary:[]}),d.lastvalues[i]=j,d.counters[i]={cnt:1,pos:d.groups.length-1,summary:b.extend(!0,[],d.summary)}):"object"!==typeof j&&d.lastvalues[i]!==j?(d.groups.push({idx:i,dataIndex:k,value:j,startRow:e,cnt:1,summary:[]}),d.lastvalues[i]=j,p=1,d.counters[i]={cnt:1,pos:d.groups.length-1,summary:b.extend(!0,[],d.summary)}):1===p?(d.groups.push({idx:i,dataIndex:k,value:j,startRow:e,cnt:1,summary:[]}),d.lastvalues[i]=j,d.counters[i]={cnt:1,pos:d.groups.length-\n +1,summary:b.extend(!0,[],d.summary)}):(d.counters[i].cnt+=1,d.groups[d.counters[i].pos].cnt=d.counters[i].cnt),b.each(d.counters[i].summary,function(){this.v=b.isFunction(this.st)?this.st.call(h,this.v,this.nm,f):b(h).jqGrid("groupingCalculations.handler",this.st,this.v,this.nm,this.sr,this.srt,f)}),d.groups[d.counters[i].pos].summary=d.counters[i].summary);c.push(a)});return c},groupingToggle:function(a){this.each(function(){var c=this.p.groupingView,f=a.split("_"),e=parseInt(f[f.length-2],10);f.splice(f.length-\n +2,2);var f=f.join("_"),d=c.minusicon,h=c.plusicon,g=b("#"+b.jgrid.jqID(a)),g=g.length?g[0].nextSibling:null,k=b("#"+b.jgrid.jqID(a)+" span.tree-wrap-"+this.p.direction),j=!1;if(k.hasClass(d)){if(c.showSummaryOnHide){if(g)for(;g&&!(b(g).hasClass("jqfoot")&&parseInt(b(g).attr("jqfootlevel"),10)<=e);)b(g).hide(),g=g.nextSibling}else if(g)for(;g&&!b(g).hasClass(f+"_"+(""+e))&&!b(g).hasClass(f+"_"+(""+(e-1)));)b(g).hide(),g=g.nextSibling;k.removeClass(d).addClass(h);j=!0}else{if(g)for(;g&&!b(g).hasClass(f+\n +"_"+(""+e))&&!b(g).hasClass(f+"_"+(""+(e-1)));)b(g).show(),(c=b(g).find("span.tree-wrap-"+this.p.direction))&&b(c).hasClass(h)&&b(c).removeClass(h).addClass(d),g=g.nextSibling;k.removeClass(h).addClass(d)}b(this).triggerHandler("jqGridGroupingClickGroup",[a,j]);b.isFunction(this.p.onClickGroup)&&this.p.onClickGroup.call(this,a,j)});return!1},groupingRender:function(a,c){return this.each(function(){function f(a,b,c){if(0===b)return c[a];var d=c[a].idx;if(0===d)return c[a];for(;0<=a;a--)if(c[a].idx===\n +d-b)return c[a]}var e=this,d=e.p.groupingView,h="",g="",k,j,p=d.groupCollapse?d.plusicon:d.minusicon,i,w=[],x=d.groupField.length,p=p+(" tree-wrap-"+e.p.direction);b.each(e.p.colModel,function(a,b){for(var c=0;c<x;c++)if(d.groupField[c]===b.name){w[c]=a;break}});var s=0,y=b.makeArray(d.groupSummary);y.reverse();b.each(d.groups,function(r,l){s++;j=e.p.id+"ghead_"+l.idx;k=j+"_"+r;g="<span style=\'cursor:pointer;\' class=\'ui-icon "+p+"\' onclick=\\"jQuery(\'#"+b.jgrid.jqID(e.p.id)+"\').jqGrid(\'groupingToggle\',\'"+\n +k+"\');return false;\\"></span>";try{i=e.formatter(k,l.value,w[l.idx],l.value)}catch(C){i=l.value}h+=\'<tr id="\'+k+\'" role="row" class= "ui-widget-content jqgroup ui-row-\'+e.p.direction+" "+j+\'"><td style="padding-left:\'+12*l.idx+\'px;" colspan="\'+c+\'">\'+g+b.jgrid.template(d.groupText[l.idx],i,l.cnt,l.summary)+"</td></tr>";if(x-1===l.idx){for(var m=d.groups[r+1],o=void 0!==m?d.groups[r+1].startRow:a.length,t=l.startRow;t<o;t++)h+=a[t].join("");var q;if(void 0!==m){for(q=0;q<d.groupField.length&&m.dataIndex!==\n +d.groupField[q];q++);s=d.groupField.length-q}for(m=0;m<s;m++)if(y[m]){o="";d.groupCollapse&&!d.showSummaryOnHide&&(o=\' style="display:none;"\');h+="<tr"+o+\' jqfootlevel="\'+(l.idx-m)+\'" role="row" class="ui-widget-content jqfoot ui-row-\'+e.p.direction+\'">\';for(var o=f(r,m,d.groups),u=e.p.colModel,v,z=o.cnt,n=0;n<c;n++){var A="<td "+e.formatCol(n,1,"")+"> </td>",B="{0}";b.each(o.summary,function(){if(this.nm===u[n].name){u[n].summaryTpl&&(B=u[n].summaryTpl);"string"===typeof this.st&&"avg"===this.st.toLowerCase()&&\n +(this.v&&0<z)&&(this.v/=z);try{v=e.formatter("",this.v,n,this)}catch(a){v=this.v}A="<td "+e.formatCol(n,1,"")+">"+b.jgrid.format(B,v)+"</td>";return!1}});h+=A}h+="</tr>"}s=q}});b("#"+b.jgrid.jqID(e.p.id)+" tbody:first").append(h);h=null})},groupingGroupBy:function(a,c){return this.each(function(){"string"===typeof a&&(a=[a]);var f=this.p.groupingView;this.p.grouping=!0;"undefined"===typeof f.visibiltyOnNextGrouping&&(f.visibiltyOnNextGrouping=[]);var e;for(e=0;e<f.groupField.length;e++)!f.groupColumnShow[e]&&\n +f.visibiltyOnNextGrouping[e]&&b(this).jqGrid("showCol",f.groupField[e]);for(e=0;e<a.length;e++)f.visibiltyOnNextGrouping[e]=b("#"+b.jgrid.jqID(this.p.id)+"_"+b.jgrid.jqID(a[e])).is(":visible");this.p.groupingView=b.extend(this.p.groupingView,c||{});f.groupField=a;b(this).trigger("reloadGrid")})},groupingRemove:function(a){return this.each(function(){"undefined"===typeof a&&(a=!0);this.p.grouping=!1;if(!0===a){for(var c=this.p.groupingView,f=0;f<c.groupField.length;f++)!c.groupColumnShow[f]&&c.visibiltyOnNextGrouping[f]&&\n +b(this).jqGrid("showCol",c.groupField);b("tr.jqgroup, tr.jqfoot","#"+b.jgrid.jqID(this.p.id)+" tbody:first").remove();b("tr.jqgrow:hidden","#"+b.jgrid.jqID(this.p.id)+" tbody:first").show()}else b(this).trigger("reloadGrid")})},groupingCalculations:{handler:function(a,c,b,e,d,h){var g={sum:function(){return parseFloat(c||0)+parseFloat(h[b]||0)},min:function(){return""===c?parseFloat(h[b]||0):Math.min(parseFloat(c),parseFloat(h[b]||0))},max:function(){return""===c?parseFloat(h[b]||0):Math.max(parseFloat(c),\n +parseFloat(h[b]||0))},count:function(){""===c&&(c=0);return h.hasOwnProperty(b)?c+1:0},avg:function(){return g.sum()}};if(!g[a])throw"jqGrid Grouping No such method: "+a;a=g[a]();null!=e&&("fixed"==d?a=a.toFixed(e):(e=Math.pow(10,e),a=Math.round(a*e)/e));return a}}})})(jQuery);\n +(function(d){d.jgrid.extend({setTreeNode:function(a,c){return this.each(function(){var b=this;if(b.grid&&b.p.treeGrid)for(var e=b.p.expColInd,g=b.p.treeReader.expanded_field,h=b.p.treeReader.leaf_field,f=b.p.treeReader.level_field,l=b.p.treeReader.icon_field,j=b.p.treeReader.loaded,i,p,m,k;a<c;)k=b.p.data[b.p._index[b.rows[a].id]],"nested"==b.p.treeGridModel&&!k[h]&&(i=parseInt(k[b.p.treeReader.left_field],10),p=parseInt(k[b.p.treeReader.right_field],10),k[h]=p===i+1?"true":"false",b.rows[a].cells[b.p._treeleafpos].innerHTML=\n +k[h]),i=parseInt(k[f],10),0===b.p.tree_root_level?(m=i+1,p=i):(m=i,p=i-1),m="<div class=\'tree-wrap tree-wrap-"+b.p.direction+"\' style=\'width:"+18*m+"px;\'>",m+="<div style=\'"+("rtl"==b.p.direction?"right:":"left:")+18*p+"px;\' class=\'ui-icon ",void 0!==k[j]&&(k[j]="true"==k[j]||!0===k[j]?!0:!1),"true"==k[h]||!0===k[h]?(m+=(void 0!==k[l]&&""!==k[l]?k[l]:b.p.treeIcons.leaf)+" tree-leaf treeclick",k[h]=!0,p="leaf"):(k[h]=!1,p=""),k[g]=("true"==k[g]||!0===k[g]?!0:!1)&&k[j],m=!1===k[g]?m+(!0===k[h]?"\'":\n +b.p.treeIcons.plus+" tree-plus treeclick\'"):m+(!0===k[h]?"\'":b.p.treeIcons.minus+" tree-minus treeclick\'"),m+="></div></div>",d(b.rows[a].cells[e]).wrapInner("<span class=\'cell-wrapper"+p+"\'></span>").prepend(m),i!==parseInt(b.p.tree_root_level,10)&&((k=(k=d(b).jqGrid("getNodeParent",k))&&k.hasOwnProperty(g)?k[g]:!0)||d(b.rows[a]).css("display","none")),d(b.rows[a].cells[e]).find("div.treeclick").bind("click",function(a){a=d(a.target||a.srcElement,b.rows).closest("tr.jqgrow")[0].id;a=b.p._index[a];\n +if(!b.p.data[a][h])if(b.p.data[a][g]){d(b).jqGrid("collapseRow",b.p.data[a]);d(b).jqGrid("collapseNode",b.p.data[a])}else{d(b).jqGrid("expandRow",b.p.data[a]);d(b).jqGrid("expandNode",b.p.data[a])}return false}),!0===b.p.ExpandColClick&&d(b.rows[a].cells[e]).find("span.cell-wrapper").css("cursor","pointer").bind("click",function(a){var a=d(a.target||a.srcElement,b.rows).closest("tr.jqgrow")[0].id,c=b.p._index[a];if(!b.p.data[c][h])if(b.p.data[c][g]){d(b).jqGrid("collapseRow",b.p.data[c]);d(b).jqGrid("collapseNode",\n +b.p.data[c])}else{d(b).jqGrid("expandRow",b.p.data[c]);d(b).jqGrid("expandNode",b.p.data[c])}d(b).jqGrid("setSelection",a);return false}),a++})},setTreeGrid:function(){return this.each(function(){var a=this,c=0,b,e=!1,g,h=[];if(a.p.treeGrid){a.p.treedatatype||d.extend(a.p,{treedatatype:a.p.datatype});a.p.subGrid=!1;a.p.altRows=!1;a.p.pgbuttons=!1;a.p.pginput=!1;a.p.gridview=!0;null===a.p.rowTotal&&(a.p.rowNum=1E4);a.p.multiselect=!1;a.p.rowList=[];a.p.expColInd=0;b="ui-icon-triangle-1-"+("rtl"==a.p.direction?\n +"w":"e");a.p.treeIcons=d.extend({plus:b,minus:"ui-icon-triangle-1-s",leaf:"ui-icon-radio-off"},a.p.treeIcons||{});"nested"==a.p.treeGridModel?a.p.treeReader=d.extend({level_field:"level",left_field:"lft",right_field:"rgt",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},a.p.treeReader):"adjacency"==a.p.treeGridModel&&(a.p.treeReader=d.extend({level_field:"level",parent_id_field:"parent",leaf_field:"isLeaf",expanded_field:"expanded",loaded:"loaded",icon_field:"icon"},\n +a.p.treeReader));for(g in a.p.colModel)if(a.p.colModel.hasOwnProperty(g)){b=a.p.colModel[g].name;b==a.p.ExpandColumn&&!e&&(e=!0,a.p.expColInd=c);c++;for(var f in a.p.treeReader)a.p.treeReader[f]==b&&h.push(b)}d.each(a.p.treeReader,function(b,e){if(e&&d.inArray(e,h)===-1){if(b==="leaf_field")a.p._treeleafpos=c;c++;a.p.colNames.push(e);a.p.colModel.push({name:e,width:1,hidden:true,sortable:false,resizable:false,hidedlg:true,editable:true,search:false})}})}})},expandRow:function(a){this.each(function(){var c=\n +this;if(c.grid&&c.p.treeGrid){var b=d(c).jqGrid("getNodeChildren",a),e=c.p.treeReader.expanded_field,g=c.rows;d(b).each(function(){var a=d.jgrid.getAccessor(this,c.p.localReader.id);d(g.namedItem(a)).css("display","");this[e]&&d(c).jqGrid("expandRow",this)})}})},collapseRow:function(a){this.each(function(){var c=this;if(c.grid&&c.p.treeGrid){var b=d(c).jqGrid("getNodeChildren",a),e=c.p.treeReader.expanded_field,g=c.rows;d(b).each(function(){var a=d.jgrid.getAccessor(this,c.p.localReader.id);d(g.namedItem(a)).css("display",\n +"none");this[e]&&d(c).jqGrid("collapseRow",this)})}})},getRootNodes:function(){var a=[];this.each(function(){var c=this;if(c.grid&&c.p.treeGrid)switch(c.p.treeGridModel){case "nested":var b=c.p.treeReader.level_field;d(c.p.data).each(function(){parseInt(this[b],10)===parseInt(c.p.tree_root_level,10)&&a.push(this)});break;case "adjacency":var e=c.p.treeReader.parent_id_field;d(c.p.data).each(function(){(null===this[e]||"null"==(""+this[e]).toLowerCase())&&a.push(this)})}});return a},getNodeDepth:function(a){var c=\n +null;this.each(function(){if(this.grid&&this.p.treeGrid)switch(this.p.treeGridModel){case "nested":c=parseInt(a[this.p.treeReader.level_field],10)-parseInt(this.p.tree_root_level,10);break;case "adjacency":c=d(this).jqGrid("getNodeAncestors",a).length}});return c},getNodeParent:function(a){var c=null;this.each(function(){if(this.grid&&this.p.treeGrid)switch(this.p.treeGridModel){case "nested":var b=this.p.treeReader.left_field,e=this.p.treeReader.right_field,g=this.p.treeReader.level_field,h=parseInt(a[b],\n +10),f=parseInt(a[e],10),l=parseInt(a[g],10);d(this.p.data).each(function(){if(parseInt(this[g],10)===l-1&&parseInt(this[b],10)<h&&parseInt(this[e],10)>f)return c=this,!1});break;case "adjacency":var j=this.p.treeReader.parent_id_field,i=this.p.localReader.id;d(this.p.data).each(function(){if(this[i]==a[j])return c=this,!1})}});return c},getNodeChildren:function(a){var c=[];this.each(function(){if(this.grid&&this.p.treeGrid)switch(this.p.treeGridModel){case "nested":var b=this.p.treeReader.left_field,\n +e=this.p.treeReader.right_field,g=this.p.treeReader.level_field,h=parseInt(a[b],10),f=parseInt(a[e],10),l=parseInt(a[g],10);d(this.p.data).each(function(){parseInt(this[g],10)===l+1&&(parseInt(this[b],10)>h&&parseInt(this[e],10)<f)&&c.push(this)});break;case "adjacency":var j=this.p.treeReader.parent_id_field,i=this.p.localReader.id;d(this.p.data).each(function(){this[j]==a[i]&&c.push(this)})}});return c},getFullTreeNode:function(a){var c=[];this.each(function(){var b;if(this.grid&&this.p.treeGrid)switch(this.p.treeGridModel){case "nested":var e=\n +this.p.treeReader.left_field,g=this.p.treeReader.right_field,h=this.p.treeReader.level_field,f=parseInt(a[e],10),l=parseInt(a[g],10),j=parseInt(a[h],10);d(this.p.data).each(function(){parseInt(this[h],10)>=j&&(parseInt(this[e],10)>=f&&parseInt(this[e],10)<=l)&&c.push(this)});break;case "adjacency":if(a){c.push(a);var i=this.p.treeReader.parent_id_field,p=this.p.localReader.id;d(this.p.data).each(function(a){b=c.length;for(a=0;a<b;a++)if(c[a][p]==this[i]){c.push(this);break}})}}});return c},getNodeAncestors:function(a){var c=\n +[];this.each(function(){if(this.grid&&this.p.treeGrid)for(var b=d(this).jqGrid("getNodeParent",a);b;)c.push(b),b=d(this).jqGrid("getNodeParent",b)});return c},isVisibleNode:function(a){var c=!0;this.each(function(){if(this.grid&&this.p.treeGrid){var b=d(this).jqGrid("getNodeAncestors",a),e=this.p.treeReader.expanded_field;d(b).each(function(){c=c&&this[e];if(!c)return!1})}});return c},isNodeLoaded:function(a){var c;this.each(function(){if(this.grid&&this.p.treeGrid){var b=this.p.treeReader.leaf_field;\n +c=void 0!==a?void 0!==a.loaded?a.loaded:a[b]||0<d(this).jqGrid("getNodeChildren",a).length?!0:!1:!1}});return c},expandNode:function(a){return this.each(function(){if(this.grid&&this.p.treeGrid){var c=this.p.treeReader.expanded_field,b=this.p.treeReader.parent_id_field,e=this.p.treeReader.loaded,g=this.p.treeReader.level_field,h=this.p.treeReader.left_field,f=this.p.treeReader.right_field;if(!a[c]){var l=d.jgrid.getAccessor(a,this.p.localReader.id),j=d("#"+d.jgrid.jqID(l),this.grid.bDiv)[0],i=this.p._index[l];\n +d(this).jqGrid("isNodeLoaded",this.p.data[i])?(a[c]=!0,d("div.treeclick",j).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus")):this.grid.hDiv.loading||(a[c]=!0,d("div.treeclick",j).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus"),this.p.treeANode=j.rowIndex,this.p.datatype=this.p.treedatatype,"nested"==this.p.treeGridModel?d(this).jqGrid("setGridParam",{postData:{nodeid:l,n_left:a[h],n_right:a[f],n_level:a[g]}}):\n +d(this).jqGrid("setGridParam",{postData:{nodeid:l,parentid:a[b],n_level:a[g]}}),d(this).trigger("reloadGrid"),a[e]=!0,"nested"==this.p.treeGridModel?d(this).jqGrid("setGridParam",{postData:{nodeid:"",n_left:"",n_right:"",n_level:""}}):d(this).jqGrid("setGridParam",{postData:{nodeid:"",parentid:"",n_level:""}}))}}})},collapseNode:function(a){return this.each(function(){if(this.grid&&this.p.treeGrid){var c=this.p.treeReader.expanded_field;a[c]&&(a[c]=!1,c=d.jgrid.getAccessor(a,this.p.localReader.id),\n +c=d("#"+d.jgrid.jqID(c),this.grid.bDiv)[0],d("div.treeclick",c).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus"))}})},SortTree:function(a,c,b,e){return this.each(function(){if(this.grid&&this.p.treeGrid){var g,h,f,l=[],j=this,i;g=d(this).jqGrid("getRootNodes");g=d.jgrid.from(g);g.orderBy(a,c,b,e);i=g.select();g=0;for(h=i.length;g<h;g++)f=i[g],l.push(f),d(this).jqGrid("collectChildrenSortTree",l,f,a,c,b,e);d.each(l,function(a){var b=d.jgrid.getAccessor(this,\n +j.p.localReader.id);d("#"+d.jgrid.jqID(j.p.id)+" tbody tr:eq("+a+")").after(d("tr#"+d.jgrid.jqID(b),j.grid.bDiv))});l=i=g=null}})},collectChildrenSortTree:function(a,c,b,e,g,h){return this.each(function(){if(this.grid&&this.p.treeGrid){var f,l,j,i;f=d(this).jqGrid("getNodeChildren",c);f=d.jgrid.from(f);f.orderBy(b,e,g,h);i=f.select();f=0;for(l=i.length;f<l;f++)j=i[f],a.push(j),d(this).jqGrid("collectChildrenSortTree",a,j,b,e,g,h)}})},setTreeRow:function(a,c){var b=!1;this.each(function(){this.grid&&\n +this.p.treeGrid&&(b=d(this).jqGrid("setRowData",a,c))});return b},delTreeNode:function(a){return this.each(function(){var c=this.p.localReader.id,b=this.p.treeReader.left_field,e=this.p.treeReader.right_field,g,h,f;if(this.grid&&this.p.treeGrid){var l=this.p._index[a];if(void 0!==l){g=parseInt(this.p.data[l][e],10);h=g-parseInt(this.p.data[l][b],10)+1;l=d(this).jqGrid("getFullTreeNode",this.p.data[l]);if(0<l.length)for(var j=0;j<l.length;j++)d(this).jqGrid("delRowData",l[j][c]);if("nested"===this.p.treeGridModel){c=\n +d.jgrid.from(this.p.data).greater(b,g,{stype:"integer"}).select();if(c.length)for(f in c)c.hasOwnProperty(f)&&(c[f][b]=parseInt(c[f][b],10)-h);c=d.jgrid.from(this.p.data).greater(e,g,{stype:"integer"}).select();if(c.length)for(f in c)c.hasOwnProperty(f)&&(c[f][e]=parseInt(c[f][e],10)-h)}}}})},addChildNode:function(a,c,b){var e=this[0];if(b){var g=e.p.treeReader.expanded_field,h=e.p.treeReader.leaf_field,f=e.p.treeReader.level_field,l=e.p.treeReader.parent_id_field,j=e.p.treeReader.left_field,i=e.p.treeReader.right_field,\n +p=e.p.treeReader.loaded,m,k,q,s,o;m=0;var r=c,t;if("undefined"===typeof a||null===a){o=e.p.data.length-1;if(0<=o)for(;0<=o;)m=Math.max(m,parseInt(e.p.data[o][e.p.localReader.id],10)),o--;a=m+1}var u=d(e).jqGrid("getInd",c);t=!1;if(void 0===c||null===c||""===c)r=c=null,m="last",s=e.p.tree_root_level,o=e.p.data.length+1;else if(m="after",k=e.p._index[c],q=e.p.data[k],c=q[e.p.localReader.id],s=parseInt(q[f],10)+1,o=d(e).jqGrid("getFullTreeNode",q),o.length?(r=o=o[o.length-1][e.p.localReader.id],o=d(e).jqGrid("getInd",\n +r)+1):o=d(e).jqGrid("getInd",c)+1,q[h])t=!0,q[g]=!0,d(e.rows[u]).find("span.cell-wrapperleaf").removeClass("cell-wrapperleaf").addClass("cell-wrapper").end().find("div.tree-leaf").removeClass(e.p.treeIcons.leaf+" tree-leaf").addClass(e.p.treeIcons.minus+" tree-minus"),e.p.data[k][h]=!1,q[p]=!0;k=o+1;b[g]=!1;b[p]=!0;b[f]=s;b[h]=!0;"adjacency"===e.p.treeGridModel&&(b[l]=c);if("nested"===e.p.treeGridModel){var n;if(null!==c){h=parseInt(q[i],10);f=d.jgrid.from(e.p.data);f=f.greaterOrEquals(i,h,{stype:"integer"});\n +f=f.select();if(f.length)for(n in f)f.hasOwnProperty(n)&&(f[n][j]=f[n][j]>h?parseInt(f[n][j],10)+2:f[n][j],f[n][i]=f[n][i]>=h?parseInt(f[n][i],10)+2:f[n][i]);b[j]=h;b[i]=h+1}else{h=parseInt(d(e).jqGrid("getCol",i,!1,"max"),10);f=d.jgrid.from(e.p.data).greater(j,h,{stype:"integer"}).select();if(f.length)for(n in f)f.hasOwnProperty(n)&&(f[n][j]=parseInt(f[n][j],10)+2);f=d.jgrid.from(e.p.data).greater(i,h,{stype:"integer"}).select();if(f.length)for(n in f)f.hasOwnProperty(n)&&(f[n][i]=parseInt(f[n][i],\n +10)+2);b[j]=h+1;b[i]=h+2}}if(null===c||d(e).jqGrid("isNodeLoaded",q)||t)d(e).jqGrid("addRowData",a,b,m,r),d(e).jqGrid("setTreeNode",o,k);q&&!q[g]&&d(e.rows[u]).find("div.treeclick").click()}}})})(jQuery);\n +(function(c){c.jgrid.extend({jqGridImport:function(a){a=c.extend({imptype:"xml",impstring:"",impurl:"",mtype:"GET",impData:{},xmlGrid:{config:"roots>grid",data:"roots>rows"},jsonGrid:{config:"grid",data:"data"},ajaxOptions:{}},a||{});return this.each(function(){var d=this,b=function(a,b){var e=c(b.xmlGrid.config,a)[0],h=c(b.xmlGrid.data,a)[0],f;if(xmlJsonClass.xml2json&&c.jgrid.parse){var e=xmlJsonClass.xml2json(e," "),e=c.jgrid.parse(e),g;for(g in e)e.hasOwnProperty(g)&&(f=e[g]);h?(h=e.grid.datatype,\n +e.grid.datatype="xmlstring",e.grid.datastr=a,c(d).jqGrid(f).jqGrid("setGridParam",{datatype:h})):c(d).jqGrid(f)}else alert("xml2json or parse are not present")},g=function(a,b){if(a&&"string"==typeof a){var e=!1;c.jgrid.useJSON&&(c.jgrid.useJSON=!1,e=!0);var f=c.jgrid.parse(a);e&&(c.jgrid.useJSON=!0);e=f[b.jsonGrid.config];if(f=f[b.jsonGrid.data]){var g=e.datatype;e.datatype="jsonstring";e.datastr=f;c(d).jqGrid(e).jqGrid("setGridParam",{datatype:g})}else c(d).jqGrid(e)}};switch(a.imptype){case "xml":c.ajax(c.extend({url:a.impurl,\n +type:a.mtype,data:a.impData,dataType:"xml",complete:function(f,g){"success"==g&&(b(f.responseXML,a),c(d).triggerHandler("jqGridImportComplete",[f,a]),c.isFunction(a.importComplete)&&a.importComplete(f))}},a.ajaxOptions));break;case "xmlstring":if(a.impstring&&"string"==typeof a.impstring){var f=c.jgrid.stringToDoc(a.impstring);f&&(b(f,a),c(d).triggerHandler("jqGridImportComplete",[f,a]),c.isFunction(a.importComplete)&&a.importComplete(f),a.impstring=null);f=null}break;case "json":c.ajax(c.extend({url:a.impurl,\n +type:a.mtype,data:a.impData,dataType:"json",complete:function(b){try{g(b.responseText,a),c(d).triggerHandler("jqGridImportComplete",[b,a]),c.isFunction(a.importComplete)&&a.importComplete(b)}catch(f){}}},a.ajaxOptions));break;case "jsonstring":a.impstring&&"string"==typeof a.impstring&&(g(a.impstring,a),c(d).triggerHandler("jqGridImportComplete",[a.impstring,a]),c.isFunction(a.importComplete)&&a.importComplete(a.impstring),a.impstring=null)}})},jqGridExport:function(a){var a=c.extend({exptype:"xmlstring",\n +root:"grid",ident:"\\t"},a||{}),d=null;this.each(function(){if(this.grid){var b=c.extend(!0,{},c(this).jqGrid("getGridParam"));b.rownumbers&&(b.colNames.splice(0,1),b.colModel.splice(0,1));b.multiselect&&(b.colNames.splice(0,1),b.colModel.splice(0,1));b.subGrid&&(b.colNames.splice(0,1),b.colModel.splice(0,1));b.knv=null;if(b.treeGrid)for(var g in b.treeReader)b.treeReader.hasOwnProperty(g)&&(b.colNames.splice(b.colNames.length-1),b.colModel.splice(b.colModel.length-1));switch(a.exptype){case "xmlstring":d=\n +"<"+a.root+">"+xmlJsonClass.json2xml(b,a.ident)+"</"+a.root+">";break;case "jsonstring":d="{"+xmlJsonClass.toJson(b,a.root,a.ident,!1)+"}",void 0!==b.postData.filters&&(d=d.replace(/filters":"/,\'filters":\'),d=d.replace(/}]}"/,"}]}"))}}});return d},excelExport:function(a){a=c.extend({exptype:"remote",url:null,oper:"oper",tag:"excel",exportOptions:{}},a||{});return this.each(function(){if(this.grid){var d;"remote"==a.exptype&&(d=c.extend({},this.p.postData),d[a.oper]=a.tag,d=jQuery.param(d),d=-1!=a.url.indexOf("?")?\n +a.url+"&"+d:a.url+"?"+d,window.location=d)}})}})})(jQuery);\n +var xmlJsonClass={xml2json:function(a,b){9===a.nodeType&&(a=a.documentElement);var g=this.toJson(this.toObj(this.removeWhite(a)),a.nodeName,"\\t");return"{\\n"+b+(b?g.replace(/\\t/g,b):g.replace(/\\t|\\n/g,""))+"\\n}"},json2xml:function(a,b){var g=function(a,b,e){var d="",f,i;if(a instanceof Array)if(0===a.length)d+=e+"<"+b+">__EMPTY_ARRAY_</"+b+">\\n";else{f=0;for(i=a.length;f<i;f+=1)var l=e+g(a[f],b,e+"\\t")+"\\n",d=d+l}else if("object"===typeof a){f=!1;d+=e+"<"+b;for(i in a)a.hasOwnProperty(i)&&("@"===\n +i.charAt(0)?d+=" "+i.substr(1)+\'="\'+a[i].toString()+\'"\':f=!0);d+=f?">":"/>";if(f){for(i in a)a.hasOwnProperty(i)&&("#text"===i?d+=a[i]:"#cdata"===i?d+="<![CDATA["+a[i]+"]]\\>":"@"!==i.charAt(0)&&(d+=g(a[i],i,e+"\\t")));d+=("\\n"===d.charAt(d.length-1)?e:"")+"</"+b+">"}}else"function"===typeof a?d+=e+"<"+b+"><![CDATA["+a+"]]\\></"+b+">":(void 0===a&&(a=""),d=\'""\'===a.toString()||0===a.toString().length?d+(e+"<"+b+">__EMPTY_STRING_</"+b+">"):d+(e+"<"+b+">"+a.toString()+"</"+b+">"));return d},f="",e;for(e in a)a.hasOwnProperty(e)&&\n +(f+=g(a[e],e,""));return b?f.replace(/\\t/g,b):f.replace(/\\t|\\n/g,"")},toObj:function(a){var b={},g=/function/i;if(1===a.nodeType){if(a.attributes.length){var f;for(f=0;f<a.attributes.length;f+=1)b["@"+a.attributes[f].nodeName]=(a.attributes[f].nodeValue||"").toString()}if(a.firstChild){var e=f=0,h=!1,c;for(c=a.firstChild;c;c=c.nextSibling)1===c.nodeType?h=!0:3===c.nodeType&&c.nodeValue.match(/[^ \\f\\n\\r\\t\\v]/)?f+=1:4===c.nodeType&&(e+=1);if(h)if(2>f&&2>e){this.removeWhite(a);for(c=a.firstChild;c;c=\n +c.nextSibling)3===c.nodeType?b["#text"]=this.escape(c.nodeValue):4===c.nodeType?g.test(c.nodeValue)?b[c.nodeName]=[b[c.nodeName],c.nodeValue]:b["#cdata"]=this.escape(c.nodeValue):b[c.nodeName]?b[c.nodeName]instanceof Array?b[c.nodeName][b[c.nodeName].length]=this.toObj(c):b[c.nodeName]=[b[c.nodeName],this.toObj(c)]:b[c.nodeName]=this.toObj(c)}else a.attributes.length?b["#text"]=this.escape(this.innerXml(a)):b=this.escape(this.innerXml(a));else if(f)a.attributes.length?b["#text"]=this.escape(this.innerXml(a)):\n +(b=this.escape(this.innerXml(a)),"__EMPTY_ARRAY_"===b?b="[]":"__EMPTY_STRING_"===b&&(b=""));else if(e)if(1<e)b=this.escape(this.innerXml(a));else for(c=a.firstChild;c;c=c.nextSibling)if(g.test(a.firstChild.nodeValue)){b=a.firstChild.nodeValue;break}else b["#cdata"]=this.escape(c.nodeValue)}!a.attributes.length&&!a.firstChild&&(b=null)}else 9===a.nodeType?b=this.toObj(a.documentElement):alert("unhandled node type: "+a.nodeType);return b},toJson:function(a,b,g,f){void 0===f&&(f=!0);var e=b?\'"\'+b+\'"\':\n +"",h="\\t",c="\\n";f||(c=h="");if("[]"===a)e+=b?":[]":"[]";else if(a instanceof Array){var j,d,k=[];d=0;for(j=a.length;d<j;d+=1)k[d]=this.toJson(a[d],"",g+h,f);e+=(b?":[":"[")+(1<k.length?c+g+h+k.join(","+c+g+h)+c+g:k.join(""))+"]"}else if(null===a)e+=(b&&":")+"null";else if("object"===typeof a){j=[];for(d in a)a.hasOwnProperty(d)&&(j[j.length]=this.toJson(a[d],d,g+h,f));e+=(b?":{":"{")+(1<j.length?c+g+h+j.join(","+c+g+h)+c+g:j.join(""))+"}"}else e="string"===typeof a?e+((b&&":")+\'"\'+a.replace(/\\\\/g,\n +"\\\\\\\\").replace(/\\"/g,\'\\\\"\')+\'"\'):e+((b&&":")+a.toString());return e},innerXml:function(a){var b="";if("innerHTML"in a)b=a.innerHTML;else for(var g=function(a){var b="",h;if(1===a.nodeType){b+="<"+a.nodeName;for(h=0;h<a.attributes.length;h+=1)b+=" "+a.attributes[h].nodeName+\'="\'+(a.attributes[h].nodeValue||"").toString()+\'"\';if(a.firstChild){b+=">";for(h=a.firstChild;h;h=h.nextSibling)b+=g(h);b+="</"+a.nodeName+">"}else b+="/>"}else 3===a.nodeType?b+=a.nodeValue:4===a.nodeType&&(b+="<![CDATA["+a.nodeValue+\n +"]]\\>");return b},a=a.firstChild;a;a=a.nextSibling)b+=g(a);return b},escape:function(a){return a.replace(/[\\\\]/g,"\\\\\\\\").replace(/[\\"]/g,\'\\\\"\').replace(/[\\n]/g,"\\\\n").replace(/[\\r]/g,"\\\\r")},removeWhite:function(a){a.normalize();var b;for(b=a.firstChild;b;)if(3===b.nodeType)if(b.nodeValue.match(/[^ \\f\\n\\r\\t\\v]/))b=b.nextSibling;else{var g=b.nextSibling;a.removeChild(b);b=g}else 1===b.nodeType&&this.removeWhite(b),b=b.nextSibling;return a}};\n +function tableToGrid(j,k){jQuery(j).each(function(){if(!this.grid){jQuery(this).width("99%");var b=jQuery(this).width(),c=jQuery("tr td:first-child input[type=checkbox]:first",jQuery(this)),a=jQuery("tr td:first-child input[type=radio]:first",jQuery(this)),c=0<c.length,a=!c&&0<a.length,i=c||a,d=[],e=[];jQuery("th",jQuery(this)).each(function(){0===d.length&&i?(d.push({name:"__selection__",index:"__selection__",width:0,hidden:!0}),e.push("__selection__")):(d.push({name:jQuery(this).attr("id")||jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),\n +index:jQuery(this).attr("id")||jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(" ").join("_"),width:jQuery(this).width()||150}),e.push(jQuery(this).html()))});var f=[],g=[],h=[];jQuery("tbody > tr",jQuery(this)).each(function(){var b={},a=0;jQuery("td",jQuery(this)).each(function(){if(0===a&&i){var c=jQuery("input",jQuery(this)),e=c.attr("value");g.push(e||f.length);c.is(":checked")&&h.push(e);b[d[a].name]=c.attr("value")}else b[d[a].name]=jQuery(this).html();a++});0<a&&f.push(b)});\n +jQuery(this).empty();jQuery(this).addClass("scroll");jQuery(this).jqGrid(jQuery.extend({datatype:"local",width:b,colNames:e,colModel:d,multiselect:c},k||{}));for(b=0;b<f.length;b++)a=null,0<g.length&&(a=g[b])&&a.replace&&(a=encodeURIComponent(a).replace(/[.\\-%]/g,"_")),null===a&&(a=b+1),jQuery(this).jqGrid("addRowData",a,f[b]);for(b=0;b<h.length;b++)jQuery(this).jqGrid("setSelection",h[b])}})};\n +(function(b){b.browser.msie&&8==b.browser.version&&(b.expr[":"].hidden=function(b){return 0===b.offsetWidth||0===b.offsetHeight||"none"==b.style.display});b.jgrid._multiselect=!1;if(b.ui&&b.ui.multiselect){if(b.ui.multiselect.prototype._setSelected){var m=b.ui.multiselect.prototype._setSelected;b.ui.multiselect.prototype._setSelected=function(a,e){var c=m.call(this,a,e);if(e&&this.selectedList){var d=this.element;this.selectedList.find("li").each(function(){b(this).data("optionLink")&&b(this).data("optionLink").remove().appendTo(d)})}return c}}b.ui.multiselect.prototype.destroy&&\n +(b.ui.multiselect.prototype.destroy=function(){this.element.show();this.container.remove();b.Widget===void 0?b.widget.prototype.destroy.apply(this,arguments):b.Widget.prototype.destroy.apply(this,arguments)});b.jgrid._multiselect=!0}b.jgrid.extend({sortableColumns:function(a){return this.each(function(){function e(){c.p.disableClick=true}var c=this,d=b.jgrid.jqID(c.p.id),d={tolerance:"pointer",axis:"x",scrollSensitivity:"1",items:">th:not(:has(#jqgh_"+d+"_cb,#jqgh_"+d+"_rn,#jqgh_"+d+"_subgrid),:hidden)",\n +placeholder:{element:function(a){return b(document.createElement(a[0].nodeName)).addClass(a[0].className+" ui-sortable-placeholder ui-state-highlight").removeClass("ui-sortable-helper")[0]},update:function(b,a){a.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));a.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}},update:function(a,\n +g){var d=b(g.item).parent(),d=b(">th",d),e={},i=c.p.id+"_";b.each(c.p.colModel,function(b){e[this.name]=b});var h=[];d.each(function(){var a=b(">div",this).get(0).id.replace(/^jqgh_/,"").replace(i,"");a in e&&h.push(e[a])});b(c).jqGrid("remapColumns",h,true,true);b.isFunction(c.p.sortable.update)&&c.p.sortable.update(h);setTimeout(function(){c.p.disableClick=false},50)}};if(c.p.sortable.options)b.extend(d,c.p.sortable.options);else if(b.isFunction(c.p.sortable))c.p.sortable={update:c.p.sortable};\n +if(d.start){var g=d.start;d.start=function(b,a){e();g.call(this,b,a)}}else d.start=e;if(c.p.sortable.exclude)d.items=d.items+(":not("+c.p.sortable.exclude+")");a.sortable(d).data("sortable").floating=true})},columnChooser:function(a){function e(a,c){a&&(typeof a=="string"?b.fn[a]&&b.fn[a].apply(c,b.makeArray(arguments).slice(2)):b.isFunction(a)&&a.apply(c,b.makeArray(arguments).slice(2)))}var c=this;if(!b("#colchooser_"+b.jgrid.jqID(c[0].p.id)).length){var d=b(\'<div id="colchooser_\'+c[0].p.id+\'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>\'),\n +g=b("select",d),a=b.extend({width:420,height:240,classname:null,done:function(b){b&&c.jqGrid("remapColumns",b,true)},msel:"multiselect",dlog:"dialog",dialog_opts:{minWidth:470},dlog_opts:function(a){var c={};c[a.bSubmit]=function(){a.apply_perm();a.cleanup(false)};c[a.bCancel]=function(){a.cleanup(true)};return b.extend(true,{buttons:c,close:function(){a.cleanup(true)},modal:a.modal?a.modal:false,resizable:a.resizable?a.resizable:true,width:a.width+20},a.dialog_opts||{})},apply_perm:function(){b("option",\n +g).each(function(){this.selected?c.jqGrid("showCol",k[this.value].name):c.jqGrid("hideCol",k[this.value].name)});var d=[];b("option:selected",g).each(function(){d.push(parseInt(this.value,10))});b.each(d,function(){delete f[k[parseInt(this,10)].name]});b.each(f,function(){var b=parseInt(this,10);var a=d,c=b;if(c>=0){var g=a.slice(),e=g.splice(c,Math.max(a.length-c,c));if(c>a.length)c=a.length;g[c]=b;d=g.concat(e)}else d=void 0});a.done&&a.done.call(c,d)},cleanup:function(b){e(a.dlog,d,"destroy");\n +e(a.msel,g,"destroy");d.remove();b&&a.done&&a.done.call(c)},msel_opts:{}},b.jgrid.col,a||{});if(b.ui&&b.ui.multiselect&&a.msel=="multiselect"){if(!b.jgrid._multiselect){alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!");return}a.msel_opts=b.extend(b.ui.multiselect.defaults,a.msel_opts)}a.caption&&d.attr("title",a.caption);if(a.classname){d.addClass(a.classname);g.addClass(a.classname)}if(a.width){b(">div",d).css({width:a.width,margin:"0 auto"});g.css("width",\n +a.width)}if(a.height){b(">div",d).css("height",a.height);g.css("height",a.height-10)}var k=c.jqGrid("getGridParam","colModel"),p=c.jqGrid("getGridParam","colNames"),f={},j=[];g.empty();b.each(k,function(b){f[this.name]=b;this.hidedlg?this.hidden||j.push(b):g.append("<option value=\'"+b+"\' "+(this.hidden?"":"selected=\'selected\'")+">"+jQuery.jgrid.stripHtml(p[b])+"</option>")});var i=b.isFunction(a.dlog_opts)?a.dlog_opts.call(c,a):a.dlog_opts;e(a.dlog,d,i);i=b.isFunction(a.msel_opts)?a.msel_opts.call(c,\n +a):a.msel_opts;e(a.msel,g,i)}},sortableRows:function(a){return this.each(function(){var e=this;if(e.grid&&!e.p.treeGrid&&b.fn.sortable){a=b.extend({cursor:"move",axis:"y",items:".jqgrow"},a||{});if(a.start&&b.isFunction(a.start)){a._start_=a.start;delete a.start}else a._start_=false;if(a.update&&b.isFunction(a.update)){a._update_=a.update;delete a.update}else a._update_=false;a.start=function(c,d){b(d.item).css("border-width","0px");b("td",d.item).each(function(b){this.style.width=e.grid.cols[b].style.width});\n +if(e.p.subGrid){var g=b(d.item).attr("id");try{b(e).jqGrid("collapseSubGridRow",g)}catch(k){}}a._start_&&a._start_.apply(this,[c,d])};a.update=function(c,d){b(d.item).css("border-width","");e.p.rownumbers===true&&b("td.jqgrid-rownum",e.rows).each(function(a){b(this).html(a+1+(parseInt(e.p.page,10)-1)*parseInt(e.p.rowNum,10))});a._update_&&a._update_.apply(this,[c,d])};b("tbody:first",e).sortable(a);b("tbody:first",e).disableSelection()}})},gridDnD:function(a){return this.each(function(){function e(){var a=\n +b.data(c,"dnd");b("tr.jqgrow:not(.ui-draggable)",c).draggable(b.isFunction(a.drag)?a.drag.call(b(c),a):a.drag)}var c=this;if(c.grid&&!c.p.treeGrid&&b.fn.draggable&&b.fn.droppable){b("#jqgrid_dnd")[0]===void 0&&b("body").append("<table id=\'jqgrid_dnd\' class=\'ui-jqgrid-dnd\'></table>");if(typeof a=="string"&&a=="updateDnD"&&c.p.jqgdnd===true)e();else{a=b.extend({drag:function(a){return b.extend({start:function(d,e){if(c.p.subGrid){var f=b(e.helper).attr("id");try{b(c).jqGrid("collapseSubGridRow",f)}catch(j){}}for(f=\n +0;f<b.data(c,"dnd").connectWith.length;f++)b(b.data(c,"dnd").connectWith[f]).jqGrid("getGridParam","reccount")=="0"&&b(b.data(c,"dnd").connectWith[f]).jqGrid("addRowData","jqg_empty_row",{});e.helper.addClass("ui-state-highlight");b("td",e.helper).each(function(b){this.style.width=c.grid.headers[b].width+"px"});a.onstart&&b.isFunction(a.onstart)&&a.onstart.call(b(c),d,e)},stop:function(d,e){if(e.helper.dropped&&!a.dragcopy){var f=b(e.helper).attr("id");f===void 0&&(f=b(this).attr("id"));b(c).jqGrid("delRowData",\n +f)}for(f=0;f<b.data(c,"dnd").connectWith.length;f++)b(b.data(c,"dnd").connectWith[f]).jqGrid("delRowData","jqg_empty_row");a.onstop&&b.isFunction(a.onstop)&&a.onstop.call(b(c),d,e)}},a.drag_opts||{})},drop:function(a){return b.extend({accept:function(a){if(!b(a).hasClass("jqgrow"))return a;a=b(a).closest("table.ui-jqgrid-btable");if(a.length>0&&b.data(a[0],"dnd")!==void 0){a=b.data(a[0],"dnd").connectWith;return b.inArray("#"+b.jgrid.jqID(this.id),a)!=-1?true:false}return false},drop:function(d,e){if(b(e.draggable).hasClass("jqgrow")){var f=\n +b(e.draggable).attr("id"),f=e.draggable.parent().parent().jqGrid("getRowData",f);if(!a.dropbyname){var j=0,i={},h,n=b("#"+b.jgrid.jqID(this.id)).jqGrid("getGridParam","colModel");try{for(var o in f){h=n[j].name;h=="cb"||(h=="rn"||h=="subgrid")||f.hasOwnProperty(o)&&n[j]&&(i[h]=f[o]);j++}f=i}catch(m){}}e.helper.dropped=true;if(a.beforedrop&&b.isFunction(a.beforedrop)){h=a.beforedrop.call(this,d,e,f,b("#"+b.jgrid.jqID(c.p.id)),b(this));typeof h!="undefined"&&(h!==null&&typeof h=="object")&&(f=h)}if(e.helper.dropped){var l;\n +if(a.autoid)if(b.isFunction(a.autoid))l=a.autoid.call(this,f);else{l=Math.ceil(Math.random()*1E3);l=a.autoidprefix+l}b("#"+b.jgrid.jqID(this.id)).jqGrid("addRowData",l,f,a.droppos)}a.ondrop&&b.isFunction(a.ondrop)&&a.ondrop.call(this,d,e,f)}}},a.drop_opts||{})},onstart:null,onstop:null,beforedrop:null,ondrop:null,drop_opts:{activeClass:"ui-state-active",hoverClass:"ui-state-hover"},drag_opts:{revert:"invalid",helper:"clone",cursor:"move",appendTo:"#jqgrid_dnd",zIndex:5E3},dragcopy:false,dropbyname:false,\n +droppos:"first",autoid:true,autoidprefix:"dnd_"},a||{});if(a.connectWith){a.connectWith=a.connectWith.split(",");a.connectWith=b.map(a.connectWith,function(a){return b.trim(a)});b.data(c,"dnd",a);c.p.reccount!="0"&&!c.p.jqgdnd&&e();c.p.jqgdnd=true;for(var d=0;d<a.connectWith.length;d++)b(a.connectWith[d]).droppable(b.isFunction(a.drop)?a.drop.call(b(c),a):a.drop)}}}})},gridResize:function(a){return this.each(function(){var e=this,c=b.jgrid.jqID(e.p.id);if(e.grid&&b.fn.resizable){a=b.extend({},a||\n +{});if(a.alsoResize){a._alsoResize_=a.alsoResize;delete a.alsoResize}else a._alsoResize_=false;if(a.stop&&b.isFunction(a.stop)){a._stop_=a.stop;delete a.stop}else a._stop_=false;a.stop=function(d,g){b(e).jqGrid("setGridParam",{height:b("#gview_"+c+" .ui-jqgrid-bdiv").height()});b(e).jqGrid("setGridWidth",g.size.width,a.shrinkToFit);a._stop_&&a._stop_.call(e,d,g)};a.alsoResize=a._alsoResize_?eval("("+("{\'#gview_"+c+" .ui-jqgrid-bdiv\':true,\'"+a._alsoResize_+"\':true}")+")"):b(".ui-jqgrid-bdiv","#gview_"+\n +c);delete a._alsoResize_;b("#gbox_"+c).resizable(a)}})}})})(jQuery);\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.src.js.xml b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.src.js.xml index b69bb6360f1ad83a6212cd7ed26887e1b6ec529c..079a0c1d285e0dc03fa0cc61904a992cfddca981 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.src.js.xml +++ b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/jquery.jqGrid.src.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts30690511.77</string> </value> + <value> <string>ts58176234.25</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -34,7 +34,7 @@ </item> <item> <key> <string>size</string> </key> - <value> <int>418973</int> </value> + <value> <int>441297</int> </value> </item> <item> <key> <string>title</string> </key> @@ -57,12 +57,12 @@ // @compilation_level SIMPLE_OPTIMIZATIONS\r\n \r\n /**\r\n - * @license jqGrid 4.3.1 - jQuery Grid\r\n + * @license jqGrid 4.4.1 - jQuery Grid\r\n * Copyright (c) 2008, Tony Tomov, tony@trirand.com\r\n * Dual licensed under the MIT and GPL licenses\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl-2.0.html\r\n - * Date: 2011-12-20\r\n + * Date: 2012-08-28\r\n */\r\n //jsHint options\r\n /*global document, window, jQuery, DOMParser, ActiveXObject, $, alert */\r\n @@ -71,6 +71,7 @@ "use strict";\r\n $.jgrid = $.jgrid || {};\r\n $.extend($.jgrid,{\r\n +\tversion : "4.4.1",\r\n \thtmlDecode : function(value){\r\n \t\tif(value && (value==\' \' || value==\' \' || (value.length===1 && value.charCodeAt(0)===160))) { return "";}\r\n \t\treturn !value ? value : String(value).replace(/>/g, ">").replace(/</g, "<").replace(/"/g, \'"\').replace(/&/g, "&");\t\t\r\n @@ -102,12 +103,9 @@ $.extend($.jgrid,{\r\n \t\t\treturn v;\r\n \t\t}\r\n \t},\r\n -\trealType : function (arg) {\r\n -\t\treturn Object.prototype.toString.call(arg).slice(8, -1);\r\n -\t},\r\n \tstripPref : function (pref, id) {\r\n -\t\tvar obj = this.realType( pref );\r\n -\t\tif( obj == "String" || obj =="Number") {\r\n +\t\tvar obj = $.type( pref );\r\n +\t\tif( obj == "string" || obj =="number") {\r\n \t\t\tpref = String(pref);\r\n \t\t\tid = pref !== "" ? String(id).replace(String(pref), "") : id;\r\n \t\t}\r\n @@ -133,30 +131,39 @@ $.extend($.jgrid,{\r\n \t\tif (js.substr(0,2) == "/*") { js = js.substr(2,js.length-4); }\r\n \t\tif(!js) { js = "{}"; }\r\n \t\treturn ($.jgrid.useJSON===true && typeof (JSON) === \'object\' && typeof (JSON.parse) === \'function\') ?\r\n -\t\t JSON.parse(js) :\r\n -\t\t eval(\'(\' + js + \')\');\r\n +\t\t\tJSON.parse(js) :\r\n +\t\t\teval(\'(\' + js + \')\');\r\n \t},\r\n \tparseDate : function(format, date) {\r\n \t\tvar tsp = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0, u:0},k,hl,dM, regdate = /[\\\\\\/:_;.,\\t\\T\\s-]/;\r\n \t\tif(date && date !== null && date !== undefined){\r\n \t\t\tdate = $.trim(date);\r\n \t\t\tdate = date.split(regdate);\r\n +\t\t\tif ($.jgrid.formatter.date.masks[format] !== undefined) {\r\n +\t\t\t\tformat = $.jgrid.formatter.date.masks[format];\r\n +\t\t\t}\r\n \t\t\tformat = format.split(regdate);\r\n \t\t\tvar dfmt = $.jgrid.formatter.date.monthNames;\r\n \t\t\tvar afmt = $.jgrid.formatter.date.AmPm;\r\n \t\t\tvar h12to24 = function(ampm, h){\r\n \t\t\t\tif (ampm === 0){ if (h === 12) { h = 0;} }\r\n -\t\t\t\t else { if (h !== 12) { h += 12; } }\r\n +\t\t\t\telse { if (h !== 12) { h += 12; } }\r\n \t\t\t\treturn h;\r\n \t\t\t};\r\n \t\t\tfor(k=0,hl=format.length;k<hl;k++){\r\n \t\t\t\tif(format[k] == \'M\') {\r\n \t\t\t\t\tdM = $.inArray(date[k],dfmt);\r\n -\t\t\t\t\tif(dM !== -1 && dM < 12){date[k] = dM+1;}\r\n +\t\t\t\t\tif(dM !== -1 && dM < 12){\r\n +\t\t\t\t\t\tdate[k] = dM+1;\r\n +\t\t\t\t\t\ttsp.m = date[k];\r\n +\t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(format[k] == \'F\') {\r\n \t\t\t\t\tdM = $.inArray(date[k],dfmt);\r\n -\t\t\t\t\tif(dM !== -1 && dM > 11){date[k] = dM+1-12;}\r\n +\t\t\t\t\tif(dM !== -1 && dM > 11){\r\n +\t\t\t\t\t\tdate[k] = dM+1-12;\r\n +\t\t\t\t\t\ttsp.m = date[k];\r\n +\t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(format[k] == \'a\') {\r\n \t\t\t\t\tdM = $.inArray(date[k],afmt);\r\n @@ -172,6 +179,9 @@ $.extend($.jgrid,{\r\n \t\t\t\t\t\ttsp.h = h12to24(date[k], tsp.h);\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n +\t\t\t\tif (format[k] === \'g\') {\r\n +\t\t\t\t\ttsp.h = parseInt(date[k], 10);\r\n +\t\t\t\t}\r\n \t\t\t\tif(date[k] !== undefined) {\r\n \t\t\t\t\ttsp[format[k].toLowerCase()] = parseInt(date[k],10);\r\n \t\t\t\t}\r\n @@ -180,6 +190,8 @@ $.extend($.jgrid,{\r\n \t\t\tvar ty = tsp.y;\r\n \t\t\tif (ty >= 70 && ty <= 99) {tsp.y = 1900+tsp.y;}\r\n \t\t\telse if (ty >=0 && ty <=69) {tsp.y= 2000+tsp.y;}\r\n +\t\t\tif(tsp.j !== undefined) { tsp.d = tsp.j; }\r\n +\t\t\tif(tsp.n !== undefined) { tsp.m = parseInt(tsp.n,10)-1; }\r\n \t\t}\r\n \t\treturn new Date(tsp.y, tsp.m, tsp.d, tsp.h, tsp.i, tsp.s, tsp.u);\r\n \t},\r\n @@ -203,7 +215,7 @@ $.extend($.jgrid,{\r\n \t\t\t\ti = prm.length;\r\n \t\t\t\tif( i ) {\r\n \t\t\t\t\tret = obj;\r\n -\t\t\t\t while (ret && i--) {\r\n +\t\t\t\t\twhile (ret && i--) {\r\n \t\t\t\t\t\tp = prm.shift();\r\n \t\t\t\t\t\tret = ret[p];\r\n \t\t\t\t\t}\r\n @@ -227,11 +239,19 @@ $.extend($.jgrid,{\r\n \t\t\treturn ret.length > 0 ? $(ret).text() : undefined;\r\n \t\t}\r\n \t},\r\n +\tcellWidth : function () {\r\n +\t\tvar $testDiv = $("<div class=\'ui-jqgrid\' style=\'left:10000px\'><table class=\'ui-jqgrid-btable\' style=\'width:5px;\'><tr class=\'jqgrow\'><td style=\'width:5px;\'></td></tr></table></div>"),\r\n +\t\ttestCell = $testDiv.appendTo("body")\r\n +\t\t\t.find("td")\r\n +\t\t\t.width();\r\n +\t\t$testDiv.remove();\r\n +\t\treturn testCell !== 5;\r\n +\t},\r\n \tajaxOptions: {},\r\n -\tfrom : function(source,initalQuery){\r\n +\tfrom : function(source){\r\n \t\t// Original Author Hugo Bonacci\r\n \t\t// License MIT http://jlinq.codeplex.com/license\r\n -\t\tvar queryObject=function(d,q){\r\n +\t\tvar QueryObject=function(d,q){\r\n \t\tif(typeof(d)=="string"){\r\n \t\t\td=$.data(d);\r\n \t\t}\r\n @@ -290,11 +310,8 @@ $.extend($.jgrid,{\r\n \t\t\tif(_trim){\r\n \t\t\t\tphrase=$.trim(phrase);\r\n \t\t\t}\r\n -\t\t\tif(!_usecase){\r\n -\t\t\t\tphrase=phrase.toLowerCase();\r\n -\t\t\t}\r\n \t\t\tphrase=phrase.toString().replace(/\\\\/g,\'\\\\\\\\\').replace(/\\"/g,\'\\\\"\');\r\n -\t\t\treturn phrase;\r\n +\t\t\treturn _usecase ? phrase : phrase.toLowerCase();\r\n \t\t};\r\n \t\tthis._funcLoop=function(func){\r\n \t\t\tvar results=[];\r\n @@ -347,6 +364,7 @@ $.extend($.jgrid,{\r\n \t\t\treturn(self._compare(a,b,1)===0);\r\n \t\t};\r\n \t\tthis._compare=function(a,b,d){\r\n +\t\t\tvar toString = Object.prototype.toString;\r\n \t\t\tif( d === undefined) { d = 1; }\r\n \t\t\tif(a===undefined) { a = null; }\r\n \t\t\tif(b===undefined) { b = null; }\r\n @@ -359,6 +377,11 @@ $.extend($.jgrid,{\r\n \t\t\tif(a!==null&&b===null){\r\n \t\t\t\treturn -1;\r\n \t\t\t}\r\n +\t\t\tif (toString.call(a) === \'[object Date]\' && toString.call(b) === \'[object Date]\') {\r\n +\t\t\t\tif (a < b) { return -d; }\r\n +\t\t\t\tif (a > b) { return d; }\r\n +\t\t\t\treturn 0;\r\n +\t\t\t}\r\n \t\t\tif(!_usecase && typeof(a) !== "number" && typeof(b) !== "number" ) {\r\n \t\t\t\ta=String(a).toLowerCase();\r\n \t\t\t\tb=String(b).toLowerCase();\r\n @@ -396,22 +419,22 @@ $.extend($.jgrid,{\r\n \r\n \t\t\tif(type === undefined ) { type = "text"; }\r\n \t\t\tif (type == \'float\' || type== \'number\' || type== \'currency\' || type== \'numeric\') {\r\n -\t\t\t\tfindSortKey = function($cell, a) {\r\n +\t\t\t\tfindSortKey = function($cell) {\r\n \t\t\t\t\tvar key = parseFloat( String($cell).replace(_stripNum, \'\'));\r\n \t\t\t\t\treturn isNaN(key) ? 0.00 : key;\r\n \t\t\t\t};\r\n \t\t\t} else if (type==\'int\' || type==\'integer\') {\r\n -\t\t\t\tfindSortKey = function($cell, a) {\r\n +\t\t\t\tfindSortKey = function($cell) {\r\n \t\t\t\t\treturn $cell ? parseFloat(String($cell).replace(_stripNum, \'\')) : 0;\r\n \t\t\t\t};\r\n \t\t\t} else if(type == \'date\' || type == \'datetime\') {\r\n -\t\t\t\tfindSortKey = function($cell, a) {\r\n +\t\t\t\tfindSortKey = function($cell) {\r\n \t\t\t\t\treturn $.jgrid.parseDate(dfmt,$cell).getTime();\r\n \t\t\t\t};\r\n \t\t\t} else if($.isFunction(type)) {\r\n \t\t\t\tfindSortKey = type;\r\n \t\t\t} else {\r\n -\t\t\t\tfindSortKey = function($cell, a) {\r\n +\t\t\t\tfindSortKey = function($cell) {\r\n \t\t\t\t\tif(!$cell) {$cell ="";}\r\n \t\t\t\t\treturn $.trim(String($cell).toUpperCase());\r\n \t\t\t\t};\r\n @@ -502,7 +525,7 @@ $.extend($.jgrid,{\r\n \t\t\t}\r\n \t\t\treturn _data;\r\n \t\t};\r\n -\t\tthis.hasMatch=function(f){\r\n +\t\tthis.hasMatch=function(){\r\n \t\t\tif(!self._hasData()) { return false; }\r\n \t\t\tself.execute();\r\n \t\t\treturn _data.length>0;\r\n @@ -663,7 +686,7 @@ $.extend($.jgrid,{\r\n \t\t};\r\n \t\treturn self;\r\n \t\t};\r\n -\treturn new queryObject(source,null);\r\n +\treturn new QueryObject(source,null);\r\n \t},\r\n \textend : function(methods) {\r\n \t\t$.extend($.fn.jqGrid,methods);\r\n @@ -785,12 +808,12 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tdata : [],\r\n \t\t\t_index : {},\r\n \t\t\tgrouping : false,\r\n -\t\t\tgroupingView : {groupField:[],groupOrder:[], groupText:[],groupColumnShow:[],groupSummary:[], showSummaryOnHide: false, sortitems:[], sortnames:[], groupDataSorted : false, summary:[],summaryval:[], plusicon: \'ui-icon-circlesmall-plus\', minusicon: \'ui-icon-circlesmall-minus\'},\r\n +\t\t\tgroupingView : {groupField:[],groupOrder:[], groupText:[],groupColumnShow:[],groupSummary:[], showSummaryOnHide: false, sortitems:[], sortnames:[], summary:[],summaryval:[], plusicon: \'ui-icon-circlesmall-plus\', minusicon: \'ui-icon-circlesmall-minus\'},\r\n \t\t\tignoreCase : false,\r\n \t\t\tcmTemplate : {},\r\n \t\t\tidPrefix : ""\r\n \t\t}, $.jgrid.defaults, pin || {});\r\n -\t\tvar grid={\r\n +\t\tvar ts= this, grid={\r\n \t\t\theaders:[],\r\n \t\t\tcols:[],\r\n \t\t\tfooters: [],\r\n @@ -799,6 +822,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tthis.hDiv.style.cursor = "col-resize";\r\n \t\t\t\tthis.curGbox = $("#rs_m"+$.jgrid.jqID(p.id),"#gbox_"+$.jgrid.jqID(p.id));\r\n \t\t\t\tthis.curGbox.css({display:"block",left:y[0],top:y[1],height:y[2]});\r\n +\t\t\t\t$(ts).triggerHandler("jqGridResizeStart", [x, i]);\r\n \t\t\t\tif($.isFunction(p.resizeStart)) { p.resizeStart.call(this,x,i); }\r\n \t\t\t\tdocument.onselectstart=function(){return false;};\r\n \t\t\t},\r\n @@ -853,6 +877,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\t\tthis.sDiv.scrollLeft = this.bDiv.scrollLeft;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridResizeStop", [nw, idx]);\r\n \t\t\t\t\tif($.isFunction(p.resizeStop)) { p.resizeStop.call(this,nw,idx); }\r\n \t\t\t\t}\r\n \t\t\t\tthis.curGbox = null;\r\n @@ -881,7 +906,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tvar tbot = ttop + table.height();\r\n \t\t\t\tvar div = rh * rn;\r\n \t\t\t\tvar page, npage, empty;\r\n -\t\t\t if ( tbot < dh && ttop <= 0 &&\r\n +\t\t\t\tif ( tbot < dh && ttop <= 0 &&\r\n \t\t\t\t\t(p.lastpage===undefined||parseInt((tbot + scrollTop + div - 1) / div,10) <= p.lastpage))\r\n \t\t\t\t{\r\n \t\t\t\t\tnpage = parseInt((dh - tbot + div - 1) / div,10);\r\n @@ -907,7 +932,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\tp.page = page;\r\n \t\t\t\t\t\tif (empty) {\r\n \t\t\t\t\t\t\tgrid.selectionPreserver(table[0]);\r\n -\t\t\t\t\t\t\tgrid.emptyRows(grid.bDiv,false, false);\r\n +\t\t\t\t\t\t\tgrid.emptyRows.call(table[0], false, false);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tgrid.populate(npage);\r\n \t\t\t\t\t}\r\n @@ -930,39 +955,43 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tif( e ) { e.stopPropagation(); }\r\n \t\t\t},\r\n \t\t\tselectionPreserver : function(ts) {\r\n -\t\t\t\tvar p = ts.p;\r\n -\t\t\t\tvar sr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null;\r\n -\t\t\t\tvar left = ts.grid.bDiv.scrollLeft;\r\n -\t\t\t\tvar complete = p.gridComplete;\r\n -\t\t\t\tp.gridComplete = function() {\r\n +\t\t\t\tvar p = ts.p,\r\n +\t\t\t\tsr = p.selrow, sra = p.selarrrow ? $.makeArray(p.selarrrow) : null,\r\n +\t\t\t\tleft = ts.grid.bDiv.scrollLeft,\r\n +\t\t\t\trestoreSelection = function() {\r\n +\t\t\t\t\tvar i;\r\n \t\t\t\t\tp.selrow = null;\r\n \t\t\t\t\tp.selarrrow = [];\r\n \t\t\t\t\tif(p.multiselect && sra && sra.length>0) {\r\n -\t\t\t\t\t\tfor(var i=0;i<sra.length;i++){\r\n +\t\t\t\t\t\tfor(i=0;i<sra.length;i++){\r\n \t\t\t\t\t\t\tif (sra[i] != sr) {\r\n -\t\t\t\t\t\t\t\t$(ts).jqGrid("setSelection",sra[i],false);\r\n +\t\t\t\t\t\t\t\t$(ts).jqGrid("setSelection",sra[i],false, null);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif (sr) {\r\n -\t\t\t\t\t\t$(ts).jqGrid("setSelection",sr,false);\r\n +\t\t\t\t\t\t$(ts).jqGrid("setSelection",sr,false,null);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tts.grid.bDiv.scrollLeft = left;\r\n -\t\t\t\t\tp.gridComplete = complete;\r\n -\t\t\t\t\tif (p.gridComplete) {\r\n -\t\t\t\t\t\tcomplete();\r\n -\t\t\t\t\t}\r\n +\t\t\t\t\t$(ts).unbind(\'.selectionPreserver\', restoreSelection);\r\n \t\t\t\t};\r\n +\t\t\t\t$(ts).bind(\'jqGridGridComplete.selectionPreserver\', restoreSelection);\t\t\t\t\r\n \t\t\t}\r\n \t\t};\r\n \t\tif(this.tagName.toUpperCase()!=\'TABLE\') {\r\n \t\t\talert("Element is not a table");\r\n \t\t\treturn;\r\n \t\t}\r\n +\t\tif(document.documentMode !== undefined ) { // IE only\r\n +\t\t\tif(document.documentMode <= 5) {\r\n +\t\t\t\talert("Grid can not be used in this (\'quirks\') mode!");\r\n +\t\t\t\treturn;\r\n +\t\t\t}\r\n +\t\t}\r\n \t\t$(this).empty().attr("tabindex","1");\r\n \t\tthis.p = p ;\r\n \t\tthis.p.useProp = !!$.fn.prop;\r\n -\t\tvar i, dir,ts;\r\n +\t\tvar i, dir;\r\n \t\tif(this.p.colNames.length === 0) {\r\n \t\t\tfor (i=0;i<this.p.colModel.length;i++){\r\n \t\t\t\tthis.p.colNames[i] = this.p.colModel[i].label || this.p.colModel[i].name;\r\n @@ -973,9 +1002,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\treturn;\r\n \t\t}\r\n \t\tvar gv = $("<div class=\'ui-jqgrid-view\'></div>"), ii,\r\n -\t\tisMSIE = $.browser.msie ? true:false,\r\n -\t\tisSafari = $.browser.webkit || $.browser.safari ? true : false;\r\n -\t\tts = this;\r\n +\t\tisMSIE = $.browser.msie ? true:false;\r\n \t\tts.p.direction = $.trim(ts.p.direction.toLowerCase());\r\n \t\tif($.inArray(ts.p.direction,["ltr","rtl"]) == -1) { ts.p.direction = "ltr"; }\r\n \t\tdir = ts.p.direction;\r\n @@ -1038,7 +1065,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tif($.isFunction( cm.formatter ) ) {\r\n \t\t\t\t\tv = cm.formatter.call(ts,cellval,opts,rwdat,_act);\r\n \t\t\t\t} else if($.fmatter){\r\n -\t\t\t\t\tv = $.fn.fmatter(cm.formatter, cellval,opts, rwdat, _act);\r\n +\t\t\t\t\tv = $.fn.fmatter.call(ts,cm.formatter,cellval,opts,rwdat,_act);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tv = cellVal(cellval);\r\n \t\t\t\t}\r\n @@ -1053,8 +1080,8 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tprp = formatCol( pos,irow, v, srvr, rowId, true);\r\n \t\t\treturn "<td role=\\"gridcell\\" "+prp+">"+v+"</td>";\r\n \t\t},\r\n -\t\taddMulti = function(rowid,pos,irow){\r\n -\t\t\tvar\tv = "<input role=\\"checkbox\\" type=\\"checkbox\\""+" id=\\"jqg_"+ts.p.id+"_"+rowid+"\\" class=\\"cbox\\" name=\\"jqg_"+ts.p.id+"_"+rowid+"\\"/>",\r\n +\t\taddMulti = function(rowid,pos,irow,checked){\r\n +\t\t\tvar\tv = "<input role=\\"checkbox\\" type=\\"checkbox\\""+" id=\\"jqg_"+ts.p.id+"_"+rowid+"\\" class=\\"cbox\\" name=\\"jqg_"+ts.p.id+"_"+rowid+"\\"" + ((checked) ? "checked=\\"checked\\"" : "")+"/>",\r\n \t\t\tprp = formatCol( pos,irow,\'\',null, rowid, true);\r\n \t\t\treturn "<td role=\\"gridcell\\" "+prp+">"+v+"</td>";\r\n \t\t},\r\n @@ -1086,20 +1113,23 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t}\r\n \t\t\treturn order;\r\n \t\t},\r\n -\t\temptyRows = function (parent, scroll, locdata) {\r\n -\t\t\tif(ts.p.deepempty) {$("#"+$.jgrid.jqID(ts.p.id)+" tbody:first tr:gt(0)").remove();}\r\n -\t\t\telse {\r\n -\t\t\t\tvar trf = $("#"+$.jgrid.jqID(ts.p.id)+" tbody:first tr:first")[0];\r\n -\t\t\t\t$("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").empty().append(trf);\r\n -\t\t\t}\r\n -\t\t\tif (scroll && ts.p.scroll) {\r\n -\t\t\t\t$(">div:first", parent).css({height:"auto"}).children("div:first").css({height:0,display:"none"});\r\n -\t\t\t\tparent.scrollTop = 0;\r\n +\t\temptyRows = function (scroll, locdata) {\r\n +\t\t\tvar firstrow;\r\n +\t\t\tif (this.p.deepempty) {\r\n +\t\t\t\t$(this.rows).slice(1).remove();\r\n +\t\t\t} else {\r\n +\t\t\t\tfirstrow = this.rows.length > 0 ? this.rows[0] : null;\r\n +\t\t\t\t$(this.firstChild).empty().append(firstrow);\r\n \t\t\t}\r\n -\t\t\tif(locdata === true) {\r\n -\t\t\t\tif(ts.p.treeGrid === true ) {\r\n -\t\t\t\tts.p.data = []; ts.p._index = {};\r\n +\t\t\tif (scroll && this.p.scroll) {\r\n +\t\t\t\t$(this.grid.bDiv.firstChild).css({height: "auto"});\r\n +\t\t\t\t$(this.grid.bDiv.firstChild.firstChild).css({height: 0, display: "none"});\r\n +\t\t\t\tif (this.grid.bDiv.scrollTop !== 0) {\r\n +\t\t\t\t\tthis.grid.bDiv.scrollTop = 0;\r\n +\t\t\t\t}\r\n \t\t\t}\r\n +\t\t\tif(locdata === true && this.p.treeGrid) {\r\n +\t\t\t\tthis.p.data = []; this.p._index = {};\r\n \t\t\t}\r\n \t\t},\r\n \t\trefreshIndex = function() {\r\n @@ -1118,6 +1148,38 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tts.p._index[val] = i;\r\n \t\t\t}\r\n \t\t},\r\n +\t\tconstructTr = function(id, hide, altClass, rd, cur, selected) {\r\n +\t\t\tvar tabindex = \'-1\', restAttr = \'\', attrName, style = hide ? \'display:none;\' : \'\',\r\n +\t\t\t\tclasses = \'ui-widget-content jqgrow ui-row-\' + ts.p.direction + altClass + ((selected) ? \' ui-state-highlight\' : \'\'),\r\n +\t\t\t\trowAttrObj = $.isFunction(ts.p.rowattr) ? ts.p.rowattr.call(ts, rd, cur) : {};\r\n +\t\t\tif(!$.isEmptyObject( rowAttrObj )) {\r\n +\t\t\t\tif (rowAttrObj.hasOwnProperty("id")) {\r\n +\t\t\t\t\tid = rowAttrObj.id;\r\n +\t\t\t\t\tdelete rowAttrObj.id;\r\n +\t\t\t\t}\r\n +\t\t\t\tif (rowAttrObj.hasOwnProperty("tabindex")) {\r\n +\t\t\t\t\ttabindex = rowAttrObj.tabindex;\r\n +\t\t\t\t\tdelete rowAttrObj.tabindex;\r\n +\t\t\t\t}\r\n +\t\t\t\tif (rowAttrObj.hasOwnProperty("style")) {\r\n +\t\t\t\t\tstyle += rowAttrObj.style;\r\n +\t\t\t\t\tdelete rowAttrObj.style;\r\n +\t\t\t\t}\r\n +\t\t\t\tif (rowAttrObj.hasOwnProperty("class")) {\r\n +\t\t\t\t\tclasses += \' \' + rowAttrObj[\'class\'];\r\n +\t\t\t\t\tdelete rowAttrObj[\'class\'];\r\n +\t\t\t\t}\r\n +\t\t\t\t// dot\'t allow to change role attribute\r\n +\t\t\t\ttry { delete rowAttrObj.role; } catch(ra){}\r\n +\t\t\t\tfor (attrName in rowAttrObj) {\r\n +\t\t\t\t\tif (rowAttrObj.hasOwnProperty(attrName)) {\r\n +\t\t\t\t\t\trestAttr += \' \' + attrName + \'=\' + rowAttrObj[attrName];\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t}\r\n +\t\t\treturn \'<tr role="row" id="\' + id + \'" tabindex="\' + tabindex + \'" class="\' + classes + \'"\' +\r\n +\t\t\t\t(style === \'\' ? \'\' : \' style="\' + style + \'"\') + restAttr + \'>\';\r\n +\t\t},\r\n \t\taddXmlData = function (xml,t, rcnt, more, adjust) {\r\n \t\t\tvar startReq = new Date(),\r\n \t\t\tlocdata = (ts.p.datatype != "local" && ts.p.loadonce) || ts.p.datatype == "xmlstring",\r\n @@ -1131,14 +1193,14 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tts.p.reccount = 0;\r\n \t\t\tif($.isXMLDoc(xml)) {\r\n \t\t\t\tif(ts.p.treeANode===-1 && !ts.p.scroll) {\r\n -\t\t\t\t\temptyRows(t,false, true);\r\n +\t\t\t\t\temptyRows.call(ts, false, true);\r\n \t\t\t\t\trcnt=1;\r\n \t\t\t\t} else { rcnt = rcnt > 1 ? rcnt :1; }\r\n \t\t\t} else { return; }\r\n -\t\t\tvar i,fpos,ir=0,v,row,gi=0,si=0,ni=0,idn, getId,f=[],F,rd ={}, xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1;\r\n +\t\t\tvar i,fpos,ir=0,v,gi=ts.p.multiselect===true?1:0,si=ts.p.subGrid===true?1:0,ni=ts.p.rownumbers===true?1:0,idn, getId,f=[],F,rd ={}, xmlr,rid, rowData=[], cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1;\r\n \t\t\tif(!xmlRd.repeatitems) {f = reader(frd);}\r\n \t\t\tif( ts.p.keyIndex===false) {\r\n -\t\t\t\tidn = xmlRd.id;\r\n +\t\t\t\tidn = $.isFunction( xmlRd.id ) ? xmlRd.id.call(ts, xml) : xmlRd.id;\r\n \t\t\t} else {\r\n \t\t\t\tidn = ts.p.keyIndex;\r\n \t\t\t}\r\n @@ -1159,7 +1221,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tgetId = function( trow, k) {return trow.getAttribute(idn.replace(/[\\[\\]]/g,"")) || k;};\r\n \t\t\t}\r\n \t\t\tts.p.userData = {};\r\n -\t\t\tts.p.page = $.jgrid.getXmlData( xml,xmlRd.page ) || 0;\r\n +\t\t\tts.p.page = $.jgrid.getXmlData( xml,xmlRd.page ) || ts.p.page || 0;\r\n \t\t\tts.p.lastpage = $.jgrid.getXmlData( xml,xmlRd.total );\r\n \t\t\tif(ts.p.lastpage===undefined) { ts.p.lastpage=1; }\r\n \t\t\tts.p.records = $.jgrid.getXmlData( xml,xmlRd.records ) || 0;\r\n @@ -1171,33 +1233,28 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tvar gxml = $.jgrid.getXmlData( xml, xmlRd.root, true);\r\n \t\t\tgxml = $.jgrid.getXmlData( gxml, xmlRd.row, true);\r\n \t\t\tif (!gxml) { gxml = []; }\r\n -\t\t\tvar gl = gxml.length, j=0, grpdata={}, rn = parseInt(ts.p.rowNum,10);\r\n +\t\t\tvar gl = gxml.length, j=0, grpdata=[], rn = parseInt(ts.p.rowNum,10);\r\n \t\t\tif (gl > 0 && ts.p.page <= 0) { ts.p.page = 1; }\r\n \t\t\tif(gxml && gl){\r\n \t\t\tvar br=ts.p.scroll?$.jgrid.randId():1,altr;\r\n \t\t\tif (adjust) { rn *= adjust+1; }\r\n -\t\t\tvar afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow="";\r\n -\t\t\tif(ts.p.grouping && ts.p.groupingView.groupCollapse === true) {\r\n -\t\t\t\thiderow = " style=\\"display:none;\\"";\r\n -\t\t\t}\r\n +\t\t\tvar afterInsRow = $.isFunction(ts.p.afterInsertRow), hiderow=ts.p.grouping && ts.p.groupingView.groupCollapse === true;\r\n \t\t\twhile (j<gl) {\r\n \t\t\t\txmlr = gxml[j];\r\n \t\t\t\trid = getId(xmlr,br+j);\r\n \t\t\t\trid = ts.p.idPrefix + rid;\r\n \t\t\t\taltr = rcnt === 0 ? 0 : rcnt+1;\r\n \t\t\t\tcn1 = (altr+j)%2 == 1 ? cn : \'\';\r\n -\t\t\t\trowData.push( "<tr"+hiderow+" id=\\""+rid+"\\" tabindex=\\"-1\\" role=\\"row\\" class =\\"ui-widget-content jqgrow ui-row-"+ts.p.direction+""+cn1+"\\">" );\r\n -\t\t\t\tif(ts.p.rownumbers===true) {\r\n +\t\t\t\tvar iStartTrTag = rowData.length;\r\n +\t\t\t\trowData.push("");\r\n +\t\t\t\tif( ni ) {\r\n \t\t\t\t\trowData.push( addRowNum(0,j,ts.p.page,ts.p.rowNum) );\r\n -\t\t\t\t\tni=1;\r\n \t\t\t\t}\r\n -\t\t\t\tif(ts.p.multiselect===true) {\r\n -\t\t\t\t\trowData.push( addMulti(rid,ni,j) );\r\n -\t\t\t\t\tgi=1;\r\n +\t\t\t\tif( gi ) {\r\n +\t\t\t\t\trowData.push( addMulti(rid,ni,j, false) );\r\n \t\t\t\t}\r\n -\t\t\t\tif (ts.p.subGrid===true) {\r\n +\t\t\t\tif( si ) {\r\n \t\t\t\t\trowData.push( $(ts).jqGrid("addSubGridCell",gi+ni,j+rcnt) );\r\n -\t\t\t\t\tsi= 1;\r\n \t\t\t\t}\r\n \t\t\t\tif(xmlRd.repeatitems){\r\n \t\t\t\t\tif (!F) { F=orderedCols(gi+si+ni); }\r\n @@ -1216,13 +1273,10 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\trowData.push( addCell(rid, v, i+gi+si+ni, j+rcnt, xmlr) );\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n +\t\t\t\trowData[iStartTrTag] = constructTr(rid, hiderow, cn1, rd, xmlr, false);\r\n \t\t\t\trowData.push("</tr>");\r\n \t\t\t\tif(ts.p.grouping) {\r\n -\t\t\t\t\tvar grlen = ts.p.groupingView.groupField.length, grpitem = [];\r\n -\t\t\t\t\tfor(var z=0;z<grlen;z++) {\r\n -\t\t\t\t\t\tgrpitem.push(rd[ts.p.groupingView.groupField[z]]);\r\n -\t\t\t\t\t}\r\n -\t\t\t\t\tgrpdata = $(ts).jqGrid(\'groupingPrepare\',rowData, grpitem, grpdata, rd);\r\n +\t\t\t\t\tgrpdata = $(ts).jqGrid(\'groupingPrepare\',rowData, grpdata, rd, j);\r\n \t\t\t\t\trowData = [];\r\n \t\t\t\t}\r\n \t\t\t\tif(locdata || ts.p.treeGrid === true) {\r\n @@ -1232,6 +1286,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t}\r\n \t\t\t\tif(ts.p.gridview === false ) {\r\n \t\t\t\t\t$("tbody:first",t).append(rowData.join(\'\'));\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridAfterInsertRow", [rid, rd, xmlr]);\r\n \t\t\t\t\tif(afterInsRow) {ts.p.afterInsertRow.call(ts,rid,rd,xmlr);}\r\n \t\t\t\t\trowData=[];\r\n \t\t\t\t}\r\n @@ -1273,7 +1328,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tif(locdata) {\r\n \t\t\t\twhile (ir<gl) {\r\n \t\t\t\t\txmlr = gxml[ir];\r\n -\t\t\t\t\trid = getId(xmlr,ir);\r\n +\t\t\t\t\trid = getId(xmlr,ir+br);\r\n \t\t\t\t\trid = ts.p.idPrefix + rid;\r\n \t\t\t\t\tif(xmlRd.repeatitems){\r\n \t\t\t\t\t\tif (!F) { F=orderedCols(gi+si+ni); }\r\n @@ -1302,7 +1357,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tvar startReq = new Date();\r\n \t\t\tif(data) {\r\n \t\t\t\tif(ts.p.treeANode === -1 && !ts.p.scroll) {\r\n -\t\t\t\t\temptyRows(t,false, true);\r\n +\t\t\t\t\temptyRows.call(ts, false, true);\r\n \t\t\t\t\trcnt=1;\r\n \t\t\t\t} else { rcnt = rcnt > 1 ? rcnt :1; }\r\n \t\t\t} else { return; }\r\n @@ -1318,8 +1373,8 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tdReader = ts.p.jsonReader;\r\n \t\t\t\tfrd=\'json\';\r\n \t\t\t}\r\n -\t\t\tvar ir=0,v,i,j,f=[],F,cur,gi=0,si=0,ni=0,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1,lp;\r\n -\t\t\tts.p.page = $.jgrid.getAccessor(data,dReader.page) || 0;\r\n +\t\t\tvar ir=0,v,i,j,f=[],F,cur,gi=ts.p.multiselect?1:0,si=ts.p.subGrid?1:0,ni=ts.p.rownumbers===true?1:0,len,drows,idn,rd={}, fpos, idr,rowData=[],cn=(ts.p.altRows === true) ? " "+ts.p.altclass:"",cn1,lp;\r\n +\t\t\tts.p.page = $.jgrid.getAccessor(data,dReader.page) || ts.p.page || 0;\r\n \t\t\tlp = $.jgrid.getAccessor(data,dReader.total);\r\n \t\t\tts.p.lastpage = lp === undefined ? 1 : lp;\r\n \t\t\tts.p.records = $.jgrid.getAccessor(data,dReader.records) || 0;\r\n @@ -1328,7 +1383,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tF = f = reader(frd);\r\n \t\t\t}\r\n \t\t\tif( ts.p.keyIndex===false ) {\r\n -\t\t\t\tidn = dReader.id;\r\n +\t\t\t\tidn = $.isFunction(dReader.id) ? dReader.id.call(ts, data) : dReader.id; \r\n \t\t\t} else {\r\n \t\t\t\tidn = ts.p.keyIndex;\r\n \t\t\t}\r\n @@ -1342,12 +1397,12 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tif (!drows) { drows = []; }\r\n \t\t\tlen = drows.length; i=0;\r\n \t\t\tif (len > 0 && ts.p.page <= 0) { ts.p.page = 1; }\r\n -\t\t\tvar rn = parseInt(ts.p.rowNum,10),br=ts.p.scroll?$.jgrid.randId():1, altr;\r\n +\t\t\tvar rn = parseInt(ts.p.rowNum,10),br=ts.p.scroll?$.jgrid.randId():1, altr, selected=false, selr;\r\n \t\t\tif (adjust) { rn *= adjust+1; }\r\n -\t\t\tvar afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata={}, hiderow="";\r\n -\t\t\tif(ts.p.grouping && ts.p.groupingView.groupCollapse === true) {\r\n -\t\t\t\thiderow = " style=\\"display:none;\\"";\r\n +\t\t\tif(ts.p.datatype === "local" && !ts.p.deselectAfterSort) {\r\n +\t\t\t\tselected = true;\r\n \t\t\t}\r\n +\t\t\tvar afterInsRow = $.isFunction(ts.p.afterInsertRow), grpdata=[], hiderow=ts.p.grouping && ts.p.groupingView.groupCollapse === true;\r\n \t\t\twhile (i<len) {\r\n \t\t\t\tcur = drows[i];\r\n \t\t\t\tidr = $.jgrid.getAccessor(cur,idn);\r\n @@ -1364,18 +1419,23 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tidr = ts.p.idPrefix + idr;\r\n \t\t\t\taltr = rcnt === 1 ? 0 : rcnt;\r\n \t\t\t\tcn1 = (altr+i)%2 == 1 ? cn : \'\';\r\n -\t\t\t\trowData.push("<tr"+hiderow+" id=\\""+ idr +"\\" tabindex=\\"-1\\" role=\\"row\\" class= \\"ui-widget-content jqgrow ui-row-"+ts.p.direction+""+cn1+"\\">");\r\n -\t\t\t\tif(ts.p.rownumbers===true) {\r\n +\t\t\t\tif( selected) {\r\n +\t\t\t\t\tif( ts.p.multiselect) {\r\n +\t\t\t\t\t\tselr = ($.inArray(idr, ts.p.selarrrow) !== -1);\r\n +\t\t\t\t\t} else {\r\n +\t\t\t\t\t\tselr = (idr === ts.p.selrow);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t\tvar iStartTrTag = rowData.length;\r\n +\t\t\t\trowData.push("");\r\n +\t\t\t\tif( ni ) {\r\n \t\t\t\t\trowData.push( addRowNum(0,i,ts.p.page,ts.p.rowNum) );\r\n -\t\t\t\t\tni=1;\r\n \t\t\t\t}\r\n -\t\t\t\tif(ts.p.multiselect){\r\n -\t\t\t\t\trowData.push( addMulti(idr,ni,i) );\r\n -\t\t\t\t\tgi = 1;\r\n +\t\t\t\tif( gi ){\r\n +\t\t\t\t\trowData.push( addMulti(idr,ni,i,selr) );\r\n \t\t\t\t}\r\n -\t\t\t\tif (ts.p.subGrid) {\r\n +\t\t\t\tif( si ) {\r\n \t\t\t\t\trowData.push( $(ts).jqGrid("addSubGridCell",gi+ni,i+rcnt) );\r\n -\t\t\t\t\tsi= 1;\r\n \t\t\t\t}\r\n \t\t\t\tif (dReader.repeatitems) {\r\n \t\t\t\t\tif(dReader.cell) {cur = $.jgrid.getAccessor(cur,dReader.cell);}\r\n @@ -1386,13 +1446,10 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\trowData.push( addCell(idr,v,j+gi+si+ni,i+rcnt,cur) );\r\n \t\t\t\t\trd[ts.p.colModel[j+gi+si+ni].name] = v;\r\n \t\t\t\t}\r\n +\t\t\t\trowData[iStartTrTag] = constructTr(idr, hiderow, cn1, rd, cur, selr);\r\n \t\t\t\trowData.push( "</tr>" );\r\n \t\t\t\tif(ts.p.grouping) {\r\n -\t\t\t\t\tvar grlen = ts.p.groupingView.groupField.length, grpitem = [];\r\n -\t\t\t\t\tfor(var z=0;z<grlen;z++) {\r\n -\t\t\t\t\t\tgrpitem.push(rd[ts.p.groupingView.groupField[z]]);\r\n -\t\t\t\t\t}\r\n -\t\t\t\t\tgrpdata = $(ts).jqGrid(\'groupingPrepare\',rowData, grpitem, grpdata, rd);\r\n +\t\t\t\t\tgrpdata = $(ts).jqGrid(\'groupingPrepare\',rowData, grpdata, rd, i);\r\n \t\t\t\t\trowData = [];\r\n \t\t\t\t}\r\n \t\t\t\tif(locdata || ts.p.treeGrid===true) {\r\n @@ -1402,6 +1459,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t}\r\n \t\t\t\tif(ts.p.gridview === false ) {\r\n \t\t\t\t\t$("#"+$.jgrid.jqID(ts.p.id)+" tbody:first").append(rowData.join(\'\'));\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridAfterInsertRow", [idr, rd, cur]);\r\n \t\t\t\t\tif(afterInsRow) {ts.p.afterInsertRow.call(ts,idr,rd,cur);}\r\n \t\t\t\t\trowData=[];//ari=0;\r\n \t\t\t\t}\r\n @@ -1480,8 +1538,8 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tif(!$.isArray(ts.p.data)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n -\t\t\tvar grpview = ts.p.grouping ? ts.p.groupingView : false;\r\n -\t\t\t$.each(ts.p.colModel,function(i,v){\r\n +\t\t\tvar grpview = ts.p.grouping ? ts.p.groupingView : false, lengrp, gin;\r\n +\t\t\t$.each(ts.p.colModel,function(){\r\n \t\t\t\tsorttype = this.sorttype || "text";\r\n \t\t\t\tif(sorttype == "date" || sorttype == "datetime") {\r\n \t\t\t\t\tif(this.formatter && typeof(this.formatter) === \'string\' && this.formatter == \'date\') {\r\n @@ -1502,13 +1560,17 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t} else {\r\n \t\t\t\t\tcmtypes[this.name] = {"stype": sorttype, "srcfmt":\'\',"newfmt":\'\'};\r\n \t\t\t\t}\r\n -\t\t\t\tif(ts.p.grouping && this.name == grpview.groupField[0]) {\r\n -\t\t\t\t\tvar grindex = this.name;\r\n -\t\t\t\t\tif (typeof this.index != \'undefined\') {\r\n -\t\t\t\t\t\tgrindex = this.index;\r\n +\t\t\t\tif(ts.p.grouping ) {\r\n +\t\t\t\t\tfor(gin =0, lengrp = grpview.groupField.length; gin< lengrp; gin++) {\r\n +\t\t\t\t\t\tif( this.name == grpview.groupField[gin]) {\r\n +\t\t\t\t\t\t\tvar grindex = this.name;\r\n +\t\t\t\t\t\t\tif (typeof this.index != \'undefined\') {\r\n +\t\t\t\t\t\t\t\tgrindex = this.index;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\tgrtypes[gin] = cmtypes[grindex];\r\n +\t\t\t\t\t\t\tgrindexes[gin]= grindex;\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n -\t\t\t\t\tgrtypes[0] = cmtypes[grindex];\r\n -\t\t\t\t\tgrindexes.push(grindex);\r\n \t\t\t\t}\r\n \t\t\t\tif(!fndsort && (this.index == ts.p.sortname || this.name == ts.p.sortname)){\r\n \t\t\t\t\tst = this.name; // ???\r\n @@ -1520,21 +1582,21 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tvar compareFnMap = {\r\n -\t\t\t\t\'eq\':function(queryObj, op) {return queryObj.equals;},\r\n -\t\t\t\t\'ne\':function(queryObj,op) {return queryObj.notEquals;},\r\n -\t\t\t\t\'lt\':function(queryObj,op) {return queryObj.less;},\r\n -\t\t\t\t\'le\':function(queryObj,op) {return queryObj.lessOrEquals;},\r\n -\t\t\t\t\'gt\':function(queryObj,op) {return queryObj.greater;},\r\n -\t\t\t\t\'ge\':function(queryObj,op) {return queryObj.greaterOrEquals;},\r\n -\t\t\t\t\'cn\':function(queryObj,op) {return queryObj.contains;},\r\n +\t\t\t\t\'eq\':function(queryObj) {return queryObj.equals;},\r\n +\t\t\t\t\'ne\':function(queryObj) {return queryObj.notEquals;},\r\n +\t\t\t\t\'lt\':function(queryObj) {return queryObj.less;},\r\n +\t\t\t\t\'le\':function(queryObj) {return queryObj.lessOrEquals;},\r\n +\t\t\t\t\'gt\':function(queryObj) {return queryObj.greater;},\r\n +\t\t\t\t\'ge\':function(queryObj) {return queryObj.greaterOrEquals;},\r\n +\t\t\t\t\'cn\':function(queryObj) {return queryObj.contains;},\r\n \t\t\t\t\'nc\':function(queryObj,op) {return op === "OR" ? queryObj.orNot().contains : queryObj.andNot().contains;},\r\n -\t\t\t\t\'bw\':function(queryObj,op) {return queryObj.startsWith;},\r\n +\t\t\t\t\'bw\':function(queryObj) {return queryObj.startsWith;},\r\n \t\t\t\t\'bn\':function(queryObj,op) {return op === "OR" ? queryObj.orNot().startsWith : queryObj.andNot().startsWith;},\r\n \t\t\t\t\'en\':function(queryObj,op) {return op === "OR" ? queryObj.orNot().endsWith : queryObj.andNot().endsWith;},\r\n -\t\t\t\t\'ew\':function(queryObj,op) {return queryObj.endsWith;},\r\n +\t\t\t\t\'ew\':function(queryObj) {return queryObj.endsWith;},\r\n \t\t\t\t\'ni\':function(queryObj,op) {return op === "OR" ? queryObj.orNot().equals : queryObj.andNot().equals;},\r\n -\t\t\t\t\'in\':function(queryObj,op) {return queryObj.equals;},\r\n -\t\t\t\t\'nu\':function(queryObj,op) {return queryObj.isNull;},\r\n +\t\t\t\t\'in\':function(queryObj) {return queryObj.equals;},\r\n +\t\t\t\t\'nu\':function(queryObj) {return queryObj.isNull;},\r\n \t\t\t\t\'nn\':function(queryObj,op) {return op === "OR" ? queryObj.orNot().isNull : queryObj.andNot().isNull;}\r\n \r\n \t\t\t},\r\n @@ -1601,8 +1663,9 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif(ts.p.grouping) {\r\n -\t\t\t\tquery.orderBy(grindexes,grpview.groupOrder[0],grtypes[0].stype, grtypes[0].srcfmt);\r\n -\t\t\t\tgrpview.groupDataSorted = true;\r\n +\t\t\t\tfor(gin=0; gin<lengrp;gin++) {\r\n +\t\t\t\t\tquery.orderBy(grindexes[gin],grpview.groupOrder[gin],grtypes[gin].stype, grtypes[gin].srcfmt);\r\n +\t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif (st && ts.p.sortorder && fndsort) {\r\n \t\t\t\tif(ts.p.sortorder.toUpperCase() == "DESC") {\r\n @@ -1644,7 +1707,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tif (rh) {\r\n \t\t\t\t\tvar top = base * rh;\r\n \t\t\t\t\tvar height = parseInt(ts.p.records,10) * rh;\r\n -\t\t\t\t $(">div:first",ts.grid.bDiv).css({height : height}).children("div:first").css({height:top,display:top?"":"none"});\r\n +\t\t\t\t\t$(">div:first",ts.grid.bDiv).css({height : height}).children("div:first").css({height:top,display:top?"":"none"});\r\n \t\t\t\t}\r\n \t\t\t\tts.grid.bDiv.scrollLeft = ts.grid.hDiv.scrollLeft;\r\n \t\t\t}\r\n @@ -1699,8 +1762,9 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t});\r\n \t\t\t}\r\n \t\t\tif(dnd && ts.p.jqgdnd) { $(ts).jqGrid(\'gridDnD\',\'updateDnD\');}\r\n +\t\t\t$(ts).triggerHandler("jqGridGridComplete");\r\n \t\t\tif($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);}\r\n -\t\t\tif($.isFunction(ts.p._complete)) {ts.p._complete.call(ts);}\r\n +\t\t\t$(ts).triggerHandler("jqGridAfterGridComplete");\r\n \t\t},\r\n \t\tbeginReq = function() {\r\n \t\t\tts.grid.hDiv.loading = true;\r\n @@ -1733,16 +1797,14 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t},\r\n \t\tpopulate = function (npage) {\r\n \t\t\tif(!ts.grid.hDiv.loading) {\r\n -\t\t\t\tvar pvis = ts.p.scroll && npage === false;\r\n -\t\t\t\tvar prm = {}, dt, dstr, pN=ts.p.prmNames;\r\n +\t\t\t\tvar pvis = ts.p.scroll && npage === false,\r\n +\t\t\t\tprm = {}, dt, dstr, pN=ts.p.prmNames;\r\n \t\t\t\tif(ts.p.page <=0) { ts.p.page = 1; }\r\n \t\t\t\tif(pN.search !== null) {prm[pN.search] = ts.p.search;} if(pN.nd !== null) {prm[pN.nd] = new Date().getTime();}\r\n \t\t\t\tif(pN.rows !== null) {prm[pN.rows]= ts.p.rowNum;} if(pN.page !== null) {prm[pN.page]= ts.p.page;}\r\n \t\t\t\tif(pN.sort !== null) {prm[pN.sort]= ts.p.sortname;} if(pN.order !== null) {prm[pN.order]= ts.p.sortorder;}\r\n \t\t\t\tif(ts.p.rowTotal !== null && pN.totalrows !== null) { prm[pN.totalrows]= ts.p.rowTotal; }\r\n -\t\t\t\tvar lc = ts.p.loadComplete;\r\n -\t\t\t\tvar lcf = $.isFunction(lc);\r\n -\t\t\t\tif (!lcf) { lc = null; }\r\n +\t\t\t\tvar lcf = $.isFunction(ts.p.loadComplete), lc = lcf ? ts.p.loadComplete : null;\r\n \t\t\t\tvar adjust = 0;\r\n \t\t\t\tnpage = npage || 1;\r\n \t\t\t\tif (npage > 1) {\r\n @@ -1765,15 +1827,25 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t}\r\n \t\t\t\tif(ts.p.grouping) {\r\n \t\t\t\t\t$(ts).jqGrid(\'groupingSetup\');\r\n -\t\t\t\t\tif(ts.p.groupingView.groupDataSorted === true) {\r\n -\t\t\t\t\t\tprm[pN.sort] = ts.p.groupingView.groupField[0] +" "+ ts.p.groupingView.groupOrder[0]+", "+prm[pN.sort];\r\n +\t\t\t\t\tvar grp = ts.p.groupingView, gi, gs="";\r\n +\t\t\t\t\tfor(gi=0;gi<grp.groupField.length;gi++) {\r\n +\t\t\t\t\t\tvar index = grp.groupField[gi];\r\n +\t\t\t\t\t\t$.each(ts.p.colModel, function(cmIndex, cmValue) {\r\n +\t\t\t\t\t\t\tif (cmValue.name == index && cmValue.index){\r\n +\t\t\t\t\t\t\t\tindex = cmValue.index;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t} );\r\n +\t\t\t\t\t\tgs += index +" "+grp.groupOrder[gi]+", ";\r\n \t\t\t\t\t}\r\n +\t\t\t\t\tprm[pN.sort] = gs + prm[pN.sort];\r\n \t\t\t\t}\r\n \t\t\t\t$.extend(ts.p.postData,prm);\r\n \t\t\t\tvar rcnt = !ts.p.scroll ? 1 : ts.rows.length-1;\r\n +\t\t\t\tvar bfr = $(ts).triggerHandler("jqGridBeforeRequest");\r\n +\t\t\t\tif (bfr === false || bfr === \'stop\') { return; }\r\n \t\t\t\tif ($.isFunction(ts.p.datatype)) { ts.p.datatype.call(ts,ts.p.postData,"load_"+ts.p.id); return;}\r\n \t\t\t\telse if($.isFunction(ts.p.beforeRequest)) {\r\n -\t\t\t\t\tvar bfr = ts.p.beforeRequest.call(ts);\r\n +\t\t\t\t\tbfr = ts.p.beforeRequest.call(ts);\r\n \t\t\t\t\tif(bfr === undefined) { bfr = true; }\r\n \t\t\t\t\tif ( bfr === false ) { return; }\r\n \t\t\t\t}\r\n @@ -1791,11 +1863,16 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\tdata: $.isFunction(ts.p.serializeGridData)? ts.p.serializeGridData.call(ts,ts.p.postData) : ts.p.postData,\r\n \t\t\t\t\t\tsuccess:function(data,st, xhr) {\r\n \t\t\t\t\t\t\tif ($.isFunction(ts.p.beforeProcessing)) {\r\n -\t\t\t\t\t\t\t\t\tts.p.beforeProcessing.call(ts, data, st, xhr);\r\n +\t\t\t\t\t\t\t\tif (ts.p.beforeProcessing.call(ts, data, st, xhr) === false) {\r\n +\t\t\t\t\t\t\t\t\tendReq();\r\n +\t\t\t\t\t\t\t\t\treturn;\r\n +\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif(dt === "xml") { addXmlData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }\r\n \t\t\t\t\t\t\telse { addJSONData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }\r\n +\t\t\t\t\t\t\t$(ts).triggerHandler("jqGridLoadComplete", [data]);\r\n \t\t\t\t\t\t\tif(lc) { lc.call(ts,data); }\r\n +\t\t\t\t\t\t\t$(ts).triggerHandler("jqGridAfterLoadComplete", [data]);\r\n \t\t\t\t\t\t\tif (pvis) { ts.grid.populateVisible(); }\r\n \t\t\t\t\t\t\tif( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}\r\n \t\t\t\t\t\t\tdata=null;\r\n @@ -1824,7 +1901,9 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\tbeginReq();\r\n \t\t\t\t\tdstr = $.jgrid.stringToDoc(ts.p.datastr);\r\n \t\t\t\t\taddXmlData(dstr,ts.grid.bDiv);\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridLoadComplete", [dstr]);\r\n \t\t\t\t\tif(lcf) {ts.p.loadComplete.call(ts,dstr);}\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]);\r\n \t\t\t\t\tts.p.datatype = "local";\r\n \t\t\t\t\tts.p.datastr = null;\r\n \t\t\t\t\tendReq();\r\n @@ -1834,7 +1913,9 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\tif(typeof ts.p.datastr == \'string\') { dstr = $.jgrid.parse(ts.p.datastr); }\r\n \t\t\t\t\telse { dstr = ts.p.datastr; }\r\n \t\t\t\t\taddJSONData(dstr,ts.grid.bDiv);\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridLoadComplete", [dstr]);\r\n \t\t\t\t\tif(lcf) {ts.p.loadComplete.call(ts,dstr);}\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridAfterLoadComplete", [dstr]);\r\n \t\t\t\t\tts.p.datatype = "local";\r\n \t\t\t\t\tts.p.datastr = null;\r\n \t\t\t\t\tendReq();\r\n @@ -1845,7 +1926,9 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\tts.p.datatype = "local";\r\n \t\t\t\t\tvar req = addLocalData();\r\n \t\t\t\t\taddJSONData(req,ts.grid.bDiv,rcnt,npage>1,adjust);\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridLoadComplete", [req]);\r\n \t\t\t\t\tif(lc) { lc.call(ts,req); }\r\n +\t\t\t\t\t$(ts).triggerHandler("jqGridAfterLoadComplete", [req]);\r\n \t\t\t\t\tif (pvis) { ts.grid.populateVisible(); }\r\n \t\t\t\t\tendReq();\r\n \t\t\t\tbreak;\r\n @@ -1918,27 +2001,27 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t$(\'.ui-pg-selbox\',"#"+pgcnt).bind(\'change\',function() {\r\n \t\t\t\tts.p.page = Math.round(ts.p.rowNum*(ts.p.page-1)/this.value-0.5)+1;\r\n \t\t\t\tts.p.rowNum = this.value;\r\n -\t\t\t\tif(tp) { $(\'.ui-pg-selbox\',ts.p.pager).val(this.value); }\r\n -\t\t\t\telse if(ts.p.toppager) { $(\'.ui-pg-selbox\',ts.p.toppager).val(this.value); }\r\n +\t\t\t\tif(ts.p.pager) { $(\'.ui-pg-selbox\',ts.p.pager).val(this.value); }\r\n +\t\t\t\tif(ts.p.toppager) { $(\'.ui-pg-selbox\',ts.p.toppager).val(this.value); }\r\n \t\t\t\tif(!clearVals(\'records\')) { return false; }\r\n \t\t\t\tpopulate();\r\n \t\t\t\treturn false;\r\n \t\t\t});\r\n \t\t\tif(ts.p.pgbuttons===true) {\r\n -\t\t\t$(".ui-pg-button","#"+pgcnt).hover(function(e){\r\n +\t\t\t$(".ui-pg-button","#"+pgcnt).hover(function(){\r\n \t\t\t\tif($(this).hasClass(\'ui-state-disabled\')) {\r\n \t\t\t\t\tthis.style.cursor=\'default\';\r\n \t\t\t\t} else {\r\n \t\t\t\t\t$(this).addClass(\'ui-state-hover\');\r\n \t\t\t\t\tthis.style.cursor=\'pointer\';\r\n \t\t\t\t}\r\n -\t\t\t},function(e) {\r\n +\t\t\t},function() {\r\n \t\t\t\tif(!$(this).hasClass(\'ui-state-disabled\')) {\r\n \t\t\t\t\t$(this).removeClass(\'ui-state-hover\');\r\n \t\t\t\t\tthis.style.cursor= "default";\r\n \t\t\t\t}\r\n \t\t\t});\r\n -\t\t\t$("#first"+$.jgrid.jqID(tp)+", #prev"+$.jgrid.jqID(tp)+", #next"+$.jgrid.jqID(tp)+", #last"+$.jgrid.jqID(tp)).click( function(e) {\r\n +\t\t\t$("#first"+$.jgrid.jqID(tp)+", #prev"+$.jgrid.jqID(tp)+", #next"+$.jgrid.jqID(tp)+", #last"+$.jgrid.jqID(tp)).click( function() {\r\n \t\t\t\tvar cp = intNum(ts.p.page,1),\r\n \t\t\t\tlast = intNum(ts.p.lastpage,1), selclick = false,\r\n \t\t\t\tfp=true, pp=true, np=true,lp=true;\r\n @@ -2003,6 +2086,10 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tindex = index.substring(5 + ts.p.id.length + 1); // bad to be changed!?!\r\n \t\t\tts.p.sortname = ts.p.colModel[idxcol].index || index;\r\n \t\t\tso = ts.p.sortorder;\r\n +\t\t\tif ($(ts).triggerHandler("jqGridSortCol", [index, idxcol, so]) === \'stop\') {\r\n +\t\t\t\tts.p.lastsort = idxcol;\r\n +\t\t\t\treturn;\r\n +\t\t\t}\r\n \t\t\tif($.isFunction(ts.p.onSortCol)) {if (ts.p.onSortCol.call(ts,index,idxcol,so)==\'stop\') {ts.p.lastsort = idxcol; return;}}\r\n \t\t\tif(ts.p.datatype == "local") {\r\n \t\t\t\tif(ts.p.deselectAfterSort) {$(ts).jqGrid("resetSelection");}\r\n @@ -2014,7 +2101,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t}\r\n \t\t\tif(ts.p.scroll) {\r\n \t\t\t\tvar sscroll = ts.grid.bDiv.scrollLeft;\r\n -\t\t\t\temptyRows(ts.grid.bDiv,true, false);\r\n +\t\t\t\temptyRows.call(ts, true, false);\r\n \t\t\t\tts.grid.hDiv.scrollLeft = sscroll;\r\n \t\t\t}\r\n \t\t\tif(ts.p.subGrid && ts.p.datatype==\'local\') {\r\n @@ -2027,9 +2114,9 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tif(ts.p.sortname != index && idxcol) {ts.p.lastsort = idxcol;}\r\n \t\t},\r\n \t\tsetColWidth = function () {\r\n -\t\t\tvar initwidth = 0, brd=isSafari? 0: ts.p.cellLayout, vc=0, lvc, scw=ts.p.scrollOffset,cw,hs=false,aw,gw=0,\r\n +\t\t\tvar initwidth = 0, brd=$.jgrid.cellWidth()? 0: intNum(ts.p.cellLayout,0), vc=0, lvc, scw=intNum(ts.p.scrollOffset,0),cw,hs=false,aw,gw=0,\r\n \t\t\tcl = 0, cr;\r\n -\t\t\t$.each(ts.p.colModel, function(i) {\r\n +\t\t\t$.each(ts.p.colModel, function() {\r\n \t\t\t\tif(typeof this.hidden === \'undefined\') {this.hidden=false;}\r\n \t\t\t\tthis.widthOrg = cw = intNum(this.width,0);\r\n \t\t\t\tif(this.hidden===false){\r\n @@ -2042,8 +2129,10 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\tcl++;\r\n \t\t\t\t}\r\n \t\t\t});\r\n -\t\t\tif(isNaN(ts.p.width)) {ts.p.width = grid.width = initwidth;}\r\n -\t\t\telse { grid.width = ts.p.width;}\r\n +\t\t\tif(isNaN(ts.p.width)) {\r\n +\t\t\t\tts.p.width = initwidth + ((ts.p.shrinkToFit ===false && !isNaN(ts.p.height)) ? scw : 0);\r\n +\t\t\t}\r\n +\t\t\tgrid.width = ts.p.width;\r\n \t\t\tts.p.tblwidth = initwidth;\r\n \t\t\tif(ts.p.shrinkToFit ===false && ts.p.forceFit === true) {ts.p.forceFit=false;}\r\n \t\t\tif(ts.p.shrinkToFit===true && vc > 0) {\r\n @@ -2087,7 +2176,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\treturn j-ret;\r\n \t\t},\r\n \t\tgetOffset = function (iCol) {\r\n -\t\t\tvar i, ret = {}, brd1 = isSafari ? 0 : ts.p.cellLayout;\r\n +\t\t\tvar i, ret = {}, brd1 = $.jgrid.cellWidth() ? 0 : ts.p.cellLayout;\r\n \t\t\tret[0] = ret[1] = ret[2] = 0;\r\n \t\t\tfor(i=0;i<=iCol;i++){\r\n \t\t\t\tif(ts.p.colModel[i].hidden === false ) {\r\n @@ -2125,7 +2214,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\tif(ts.p.grouping===true) {\r\n \t\t\tts.p.scroll = false;\r\n \t\t\tts.p.rownumbers = false;\r\n -\t\t\tts.p.subGrid = false;\r\n +\t\t\t//ts.p.subGrid = false; expiremental\r\n \t\t\tts.p.treeGrid = false;\r\n \t\t\tts.p.gridview = true;\r\n \t\t}\r\n @@ -2138,7 +2227,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t}\r\n \t\tif(this.p.multiselect) {\r\n \t\t\tthis.p.colNames.unshift("<input role=\'checkbox\' id=\'cb_"+this.p.id+"\' class=\'cbox\' type=\'checkbox\'/>");\r\n -\t\t\tthis.p.colModel.unshift({name:\'cb\',width:isSafari ? ts.p.multiselectWidth+ts.p.cellLayout : ts.p.multiselectWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:\'center\',fixed:true});\r\n +\t\t\tthis.p.colModel.unshift({name:\'cb\',width:$.jgrid.cellWidth() ? ts.p.multiselectWidth+ts.p.cellLayout : ts.p.multiselectWidth,sortable:false,resizable:false,hidedlg:true,search:false,align:\'center\',fixed:true});\r\n \t\t}\r\n \t\tif(this.p.rownumbers) {\r\n \t\t\tthis.p.colNames.unshift("");\r\n @@ -2223,15 +2312,15 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t$(ts.rows).each(function(i) {\r\n \t\t\t\t\t\tif (i>0) {\r\n \t\t\t\t\t\t\tif(!$(this).hasClass("ui-subgrid") && !$(this).hasClass("jqgroup") && !$(this).hasClass(\'ui-state-disabled\')){\r\n -\t\t\t\t\t\t\t $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? \'prop\': \'attr\']("checked",true);\r\n -\t\t\t\t\t\t\t $(this).addClass("ui-state-highlight").attr("aria-selected","true"); \r\n -\t\t\t\t\t\t\t ts.p.selarrrow.push(this.id);\r\n +\t\t\t\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id) )[ts.p.useProp ? \'prop\': \'attr\']("checked",true);\r\n +\t\t\t\t\t\t\t\t$(this).addClass("ui-state-highlight").attr("aria-selected","true"); \r\n +\t\t\t\t\t\t\t\tts.p.selarrrow.push(this.id);\r\n \t\t\t\t\t\t\t\tts.p.selrow = this.id;\r\n \t\t\t\t\t\t\t\tif(froz) {\r\n \t\t\t\t\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+$.jgrid.jqID(this.id), ts.grid.fbDiv )[ts.p.useProp ? \'prop\': \'attr\']("checked",true);\r\n \t\t\t\t\t\t\t\t\t$("#"+$.jgrid.jqID(this.id), ts.grid.fbDiv).addClass("ui-state-highlight");\r\n \t\t\t\t\t\t\t\t}\r\n - }\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t});\r\n \t\t\t\t\tchk=true;\r\n @@ -2254,6 +2343,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\tts.p.selrow = null;\r\n \t\t\t\t\tchk=false;\r\n \t\t\t\t}\r\n +\t\t\t\t$(ts).triggerHandler("jqGridSelectAll", [chk ? ts.p.selarrrow : emp, chk]);\r\n \t\t\t\tif($.isFunction(ts.p.onSelectAll)) {ts.p.onSelectAll.call(ts, chk ? ts.p.selarrrow : emp,chk);}\r\n \t\t\t});\r\n \t\t}\r\n @@ -2346,8 +2436,8 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t$(hb).append(hTable);\r\n \t\thTable = null;\r\n \t\tif(hg) { $(grid.hDiv).hide(); }\r\n - if(ts.p.pager){\r\n - // TBD -- escape ts.p.pager here?\r\n +\t\tif(ts.p.pager){\r\n +\t\t\t// TBD -- escape ts.p.pager here?\r\n \t\t\tif(typeof ts.p.pager == "string") {if(ts.p.pager.substr(0,1) !="#") { ts.p.pager = "#"+ts.p.pager;} }\r\n \t\t\telse { ts.p.pager = "#"+ $(ts.p.pager).attr("id");}\r\n \t\t\t$(ts.p.pager).css({width: grid.width+"px"}).appendTo(eg).addClass(\'ui-state-default ui-jqgrid-pager ui-corner-bottom\');\r\n @@ -2365,29 +2455,36 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t$(ptr).removeClass("ui-state-hover");\r\n \t\t});\r\n \t\t}\r\n -\t\tvar ri,ci;\r\n +\t\tvar ri,ci, tdHtml;\r\n \t\t$(ts).before(grid.hDiv).click(function(e) {\r\n \t\t\ttd = e.target;\r\n \t\t\tptr = $(td,ts.rows).closest("tr.jqgrow");\r\n -\t\t\tif($(ptr).length === 0 || ptr[0].className.indexOf( \'ui-state-disabled\' ) > -1 || $(td,ts).closest("table.ui-jqgrid-btable")[0].id.replace("_frozen","") !== ts.id ) {\r\n +\t\t\tif($(ptr).length === 0 || ptr[0].className.indexOf( \'ui-state-disabled\' ) > -1 || ($(td,ts).closest("table.ui-jqgrid-btable").attr(\'id\') || \'\').replace("_frozen","") !== ts.id ) {\r\n \t\t\t\treturn this;\r\n \t\t\t}\r\n \t\t\tvar scb = $(td).hasClass("cbox"),\r\n -\t\t\tcSel = true;\r\n -\t\t\tif($.isFunction(ts.p.beforeSelectRow)) { cSel = ts.p.beforeSelectRow.call(ts,ptr[0].id, e); }\r\n -\t\t\tif (td.tagName == \'A\' || ((td.tagName == \'INPUT\' || td.tagName == \'TEXTAREA\' || td.tagName == \'OPTION\' || td.tagName == \'SELECT\' ) && !scb) ) { return this; }\r\n +\t\t\tcSel = $(ts).triggerHandler("jqGridBeforeSelectRow", [ptr[0].id, e]);\r\n +\t\t\tcSel = (cSel === false || cSel === \'stop\') ? false : true;\r\n +\t\t\tif(cSel && $.isFunction(ts.p.beforeSelectRow)) { cSel = ts.p.beforeSelectRow.call(ts,ptr[0].id, e); }\r\n +\t\t\tif (td.tagName == \'A\' || ((td.tagName == \'INPUT\' || td.tagName == \'TEXTAREA\' || td.tagName == \'OPTION\' || td.tagName == \'SELECT\' ) && !scb) ) { return; }\r\n \t\t\tif(cSel === true) {\r\n +\t\t\t\tri = ptr[0].id;\r\n +\t\t\t\tci = $.jgrid.getCellIndex(td);\r\n +\t\t\t\ttdHtml = $(td).closest("td,th").html();\r\n +\t\t\t\t$(ts).triggerHandler("jqGridCellSelect", [ri,ci,tdHtml,e]);\r\n +\t\t\t\tif($.isFunction(ts.p.onCellSelect)) {\r\n +\t\t\t\t\tts.p.onCellSelect.call(ts,ri,ci,tdHtml,e);\r\n +\t\t\t\t}\r\n \t\t\t\tif(ts.p.cellEdit === true) {\r\n \t\t\t\t\tif(ts.p.multiselect && scb){\r\n -\t\t\t\t\t\t$(ts).jqGrid("setSelection",ptr[0].id,true);\r\n +\t\t\t\t\t\t$(ts).jqGrid("setSelection", ri ,true,e);\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\t\tri = ptr[0].rowIndex;\r\n -\t\t\t\t\t\tci = $.jgrid.getCellIndex(td);\r\n \t\t\t\t\t\ttry {$(ts).jqGrid("editCell",ri,ci,true);} catch (_) {}\r\n \t\t\t\t\t}\r\n \t\t\t\t} else if ( !ts.p.multikey ) {\r\n \t\t\t\t\tif(ts.p.multiselect && ts.p.multiboxonly) {\r\n -\t\t\t\t\t\tif(scb){$(ts).jqGrid("setSelection",ptr[0].id,true);}\r\n +\t\t\t\t\t\tif(scb){$(ts).jqGrid("setSelection",ri,true,e);}\r\n \t\t\t\t\t\telse {\r\n \t\t\t\t\t\t\tvar frz = ts.p.frozenColumns ? ts.p.id+"_frozen" : "";\r\n \t\t\t\t\t\t\t$(ts.p.selarrrow).each(function(i,n){\r\n @@ -2400,29 +2497,20 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t});\r\n \t\t\t\t\t\t\tts.p.selarrrow = [];\r\n -\t\t\t\t\t\t\t$(ts).jqGrid("setSelection",ptr[0].id,true);\r\n +\t\t\t\t\t\t\t$(ts).jqGrid("setSelection",ri,true,e);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t} else {\r\n -\t\t\t\t\t\t$(ts).jqGrid("setSelection",ptr[0].id,true);\r\n +\t\t\t\t\t\t$(ts).jqGrid("setSelection",ri,true,e);\r\n \t\t\t\t\t}\r\n \t\t\t\t} else {\r\n \t\t\t\t\tif(e[ts.p.multikey]) {\r\n -\t\t\t\t\t\t$(ts).jqGrid("setSelection",ptr[0].id,true);\r\n +\t\t\t\t\t\t$(ts).jqGrid("setSelection",ri,true,e);\r\n \t\t\t\t\t} else if(ts.p.multiselect && scb) {\r\n -\t\t\t\t\t\tscb = $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ptr[0].id).is(":checked");\r\n -\t\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ptr[0].id)[ts.p.useProp ? \'prop\' : \'attr\']("checked", scb);\r\n +\t\t\t\t\t\tscb = $("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri).is(":checked");\r\n +\t\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(ts.p.id)+"_"+ri)[ts.p.useProp ? \'prop\' : \'attr\']("checked", scb);\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n -\t\t\t\tif($.isFunction(ts.p.onCellSelect)) {\r\n -\t\t\t\t\tri = ptr[0].id;\r\n -\t\t\t\t\tci = $.jgrid.getCellIndex(td);\r\n -\t\t\t\t\tts.p.onCellSelect.call(ts,ri,ci,$(td).html(),e);\r\n -\t\t\t\t}\r\n -\t\t\t\t//e.stopPropagation();\r\n \t\t\t}\r\n -\t\t\t//else {\r\n -\t\t\t\treturn this;\r\n -\t\t\t//}\r\n \t\t}).bind(\'reloadGrid\', function(e,opts) {\r\n \t\t\tif(ts.p.treeGrid ===true) {\tts.p.datatype = ts.p.treedatatype;}\r\n \t\t\tif (opts && opts.current) {\r\n @@ -2434,7 +2522,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\tif(ts.p.multiselect) {ts.p.selarrrow =[];setHeadCheckBox(false);}\r\n \t\t\t\tts.p.savedRow = [];\r\n \t\t\t}\r\n -\t\t\tif(ts.p.scroll) {emptyRows(ts.grid.bDiv,true, false);}\r\n +\t\t\tif(ts.p.scroll) {emptyRows.call(ts, true, false);}\r\n \t\t\tif (opts && opts.page) {\r\n \t\t\t\tvar page = opts.page;\r\n \t\t\t\tif (page > ts.p.lastpage) { page = ts.p.lastpage; }\r\n @@ -2447,36 +2535,33 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif (ts.grid.prevRowHeight && ts.p.scroll) {\r\n - delete ts.p.lastpage;\r\n +\t\t\t\tdelete ts.p.lastpage;\r\n \t\t\t\tts.grid.populateVisible();\r\n \t\t\t} else {\r\n \t\t\t\tts.grid.populate();\r\n \t\t\t}\r\n +\t\t\tif(ts.p._inlinenav===true) {$(ts).jqGrid(\'showAddEditButtons\');}\r\n \t\t\treturn false;\r\n +\t\t})\r\n +\t\t.dblclick(function(e) {\r\n +\t\t\ttd = e.target;\r\n +\t\t\tptr = $(td,ts.rows).closest("tr.jqgrow");\r\n +\t\t\tif($(ptr).length === 0 ){return;}\r\n +\t\t\tri = ptr[0].rowIndex;\r\n +\t\t\tci = $.jgrid.getCellIndex(td);\r\n +\t\t\t$(ts).triggerHandler("jqGridDblClickRow", [$(ptr).attr("id"),ri,ci,e]);\r\n +\t\t\tif ($.isFunction(this.p.ondblClickRow)) { ts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); }\r\n +\t\t})\r\n +\t\t.bind(\'contextmenu\', function(e) {\r\n +\t\t\ttd = e.target;\r\n +\t\t\tptr = $(td,ts.rows).closest("tr.jqgrow");\r\n +\t\t\tif($(ptr).length === 0 ){return;}\r\n +\t\t\tif(!ts.p.multiselect) {\t$(ts).jqGrid("setSelection",ptr[0].id,true,e);\t}\r\n +\t\t\tri = ptr[0].rowIndex;\r\n +\t\t\tci = $.jgrid.getCellIndex(td);\r\n +\t\t\t$(ts).triggerHandler("jqGridRightClickRow", [$(ptr).attr("id"),ri,ci,e]);\r\n +\t\t\tif ($.isFunction(this.p.onRightClickRow)) { ts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e); }\r\n \t\t});\r\n -\t\tif( $.isFunction(this.p.ondblClickRow) ) {\r\n -\t\t\t$(this).dblclick(function(e) {\r\n -\t\t\t\ttd = e.target;\r\n -\t\t\t\tptr = $(td,ts.rows).closest("tr.jqgrow");\r\n -\t\t\t\tif($(ptr).length === 0 ){return false;}\r\n -\t\t\t\tri = ptr[0].rowIndex;\r\n -\t\t\t\tci = $.jgrid.getCellIndex(td);\r\n -\t\t\t\tts.p.ondblClickRow.call(ts,$(ptr).attr("id"),ri,ci, e);\r\n -\t\t\t\treturn false;\r\n -\t\t\t});\r\n -\t\t}\r\n -\t\tif ($.isFunction(this.p.onRightClickRow)) {\r\n -\t\t\t$(this).bind(\'contextmenu\', function(e) {\r\n -\t\t\t\ttd = e.target;\r\n -\t\t\t\tptr = $(td,ts.rows).closest("tr.jqgrow");\r\n -\t\t\t\tif($(ptr).length === 0 ){return false;}\r\n -\t\t\t\tif(!ts.p.multiselect) {\t$(ts).jqGrid("setSelection",ptr[0].id,true);\t}\r\n -\t\t\t\tri = ptr[0].rowIndex;\r\n -\t\t\t\tci = $.jgrid.getCellIndex(td);\r\n -\t\t\t\tts.p.onRightClickRow.call(ts,$(ptr).attr("id"),ri,ci, e);\r\n -\t\t\t\treturn false;\r\n -\t\t\t});\r\n -\t\t}\r\n \t\tgrid.bDiv = document.createElement("div");\r\n \t\tif(isMSIE) { if(String(ts.p.height).toLowerCase() === "auto") { ts.p.height = "100%"; } }\r\n \t\t$(grid.bDiv)\r\n @@ -2486,7 +2571,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t.scroll(grid.scrollGrid);\r\n \t\t$("table:first",grid.bDiv).css({width:ts.p.tblwidth+"px"});\r\n \t\tif( isMSIE ) {\r\n -\t\t\tif( $("tbody",this).size() == 2 ) { $("tbody:gt(0)",this).remove();}\r\n +\t\t\tif( $("tbody",this).length == 2 ) { $("tbody:gt(0)",this).remove();}\r\n \t\t\tif( ts.p.multikey) {$(grid.bDiv).bind("selectstart",function(){return false;});}\r\n \t\t} else {\r\n \t\t\tif( ts.p.multikey) {$(grid.bDiv).bind("mousedown",function(){return false;});}\r\n @@ -2553,6 +2638,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\t\t\t$("span",self).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");\r\n \t\t\t\t\t\t\t\tts.p.gridstate = \'hidden\';\r\n \t\t\t\t\t\t\t\tif($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).hide(); }\r\n +\t\t\t\t\t\t\t\t$(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]);\r\n \t\t\t\t\t\t\t\tif(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t});\r\n @@ -2564,6 +2650,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\t\t\t\t\t\tif(hg) {ts.p.datatype = tdt;populate();hg=false;}\r\n \t\t\t\t\t\t\t\tts.p.gridstate = \'visible\';\r\n \t\t\t\t\t\t\t\tif($("#gbox_"+$.jgrid.jqID(ts.p.id)).hasClass("ui-resizable")) { $(".ui-resizable-handle","#gbox_"+$.jgrid.jqID(ts.p.id)).show(); }\r\n +\t\t\t\t\t\t\t\t$(ts).triggerHandler("jqGridHeaderClick", [ts.p.gridstate,e]);\r\n \t\t\t\t\t\t\t\tif(onHdCl) {if(!hg) {ts.p.onHeaderClick.call(ts,ts.p.gridstate,e);}}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t});\r\n @@ -2578,7 +2665,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\t\tif(grid.resizing){grid.dragMove(e);return false;}\r\n \t\t});\r\n \t\t$(".ui-jqgrid-labels",grid.hDiv).bind("selectstart", function () { return false; });\r\n -\t\t$(document).mouseup(function (e) {\r\n +\t\t$(document).mouseup(function () {\r\n \t\t\tif(grid.resizing) {\tgrid.dragEnd(); return false;}\r\n \t\t\treturn true;\r\n \t\t});\r\n @@ -2587,6 +2674,7 @@ $.fn.jqGrid = function( pin ) {\r\n \t\tts.updatepager = updatepager;\r\n \t\tts.refreshIndex = refreshIndex;\r\n \t\tts.setHeadCheckBox = setHeadCheckBox;\r\n +\t\tts.constructTr = constructTr;\r\n \t\tts.formatter = function ( rowId, cellval , colpos, rwdat, act){return formatter(rowId, cellval , colpos, rwdat, act);};\r\n \t\t$.extend(grid,{populate : populate, emptyRows: emptyRows});\r\n \t\tthis.grid = grid;\r\n @@ -2595,30 +2683,6 @@ $.fn.jqGrid = function( pin ) {\r\n \t\tthis.grid.cols = this.rows[0].cells;\r\n \r\n \t\tpopulate();ts.p.hiddengrid=false;\r\n -\t\t$(window).unload(function () {\r\n -\t\t\tts = null - -]]></string> </value> - </item> - <item> - <key> <string>next</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="3" aka="AAAAAAAAAAM="> - <pickle> - <global name="Pdata" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>data</string> </key> - <value> <string>;\r\n -\t\t});\r\n \t});\r\n };\r\n $.jgrid.extend({\r\n @@ -2630,15 +2694,15 @@ $.jgrid.extend({\r\n \t},\r\n \tsetGridParam : function (newParams){\r\n \t\treturn this.each(function(){\r\n -\t\t\tif (this.grid \046\046 typeof(newParams) === \'object\') {$.extend(true,this.p,newParams);}\r\n +\t\t\tif (this.grid && typeof(newParams) === \'object\') {$.extend(true,this.p,newParams);}\r\n \t\t});\r\n \t},\r\n \tgetDataIDs : function () {\r\n \t\tvar ids=[], i=0, len, j=0;\r\n \t\tthis.each(function(){\r\n \t\t\tlen = this.rows.length;\r\n -\t\t\tif(len \046\046 len\0760){\r\n -\t\t\t\twhile(i\074len) {\r\n +\t\t\tif(len && len>0){\r\n +\t\t\t\twhile(i<len) {\r\n \t\t\t\t\tif($(this.rows[i]).hasClass(\'jqgrow\')) {\r\n \t\t\t\t\t\tids[j] = this.rows[i].id;\r\n \t\t\t\t\t\tj++;\r\n @@ -2649,28 +2713,28 @@ $.jgrid.extend({\r\n \t\t});\r\n \t\treturn ids;\r\n \t},\r\n -\tsetSelection : function(selection,onsr) {\r\n +\tsetSelection : function(selection,onsr, e) {\r\n \t\treturn this.each(function(){\r\n \t\t\tvar $t = this, stat,pt, ner, ia, tpsr, fid;\r\n \t\t\tif(selection === undefined) { return; }\r\n \t\t\tonsr = onsr === false ? false : true;\r\n \t\t\tpt=$t.rows.namedItem(selection+"");\r\n -\t\t\tif(!pt || !pt.className || pt.className.indexOf( \'ui-state-disabled\' ) \076 -1 ) { return; }\r\n +\t\t\tif(!pt || !pt.className || pt.className.indexOf( \'ui-state-disabled\' ) > -1 ) { return; }\r\n \t\t\tfunction scrGrid(iR){\r\n \t\t\t\tvar ch = $($t.grid.bDiv)[0].clientHeight,\r\n \t\t\t\tst = $($t.grid.bDiv)[0].scrollTop,\r\n -\t\t\t\trpos = $t.rows[iR].offsetTop,\r\n +\t\t\t\trpos = $($t.rows[iR]).position().top,\r\n \t\t\t\trh = $t.rows[iR].clientHeight;\r\n -\t\t\t\tif(rpos+rh \076= ch+st) { $($t.grid.bDiv)[0].scrollTop = rpos-(ch+st)+rh+st; }\r\n -\t\t\t\telse if(rpos \074 ch+st) {\r\n -\t\t\t\t\tif(rpos \074 st) {\r\n +\t\t\t\tif(rpos+rh >= ch+st) { $($t.grid.bDiv)[0].scrollTop = rpos-(ch+st)+rh+st; }\r\n +\t\t\t\telse if(rpos < ch+st) {\r\n +\t\t\t\t\tif(rpos < st) {\r\n \t\t\t\t\t\t$($t.grid.bDiv)[0].scrollTop = rpos;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif($t.p.scrollrows===true) {\r\n \t\t\t\tner = $t.rows.namedItem(selection).rowIndex;\r\n -\t\t\t\tif(ner \076=0 ){\r\n +\t\t\t\tif(ner >=0 ){\r\n \t\t\t\t\tscrGrid(ner);\r\n \t\t\t\t}\r\n \t\t\t}\r\n @@ -2691,7 +2755,8 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tstat = false;\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$t.p.selrow = pt.id;\r\n -\t\t\t\t\tif( $t.p.onSelectRow \046\046 onsr) { $t.p.onSelectRow.call($t, pt.id, stat); }\r\n +\t\t\t\t\t$($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]);\r\n +\t\t\t\t\tif( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id, stat, e); }\r\n \t\t\t\t}\r\n \t\t\t} else {\r\n \t\t\t\t//unselect selectall checkbox when deselecting a specific row\r\n @@ -2701,16 +2766,15 @@ $.jgrid.extend({\r\n \t\t\t\tif ( ia === -1 ){\r\n \t\t\t\t\tif(pt.className !== "ui-subgrid") { $(pt).addClass("ui-state-highlight").attr("aria-selected","true");}\r\n \t\t\t\t\tstat = true;\r\n -\t\t\t\t\t$("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID($t.p.selrow))[$t.p.useProp ? \'prop\': \'attr\']("checked",stat);\r\n \t\t\t\t\t$t.p.selarrrow.push($t.p.selrow);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tif(pt.className !== "ui-subgrid") { $(pt).removeClass("ui-state-highlight").attr("aria-selected","false");}\r\n \t\t\t\t\tstat = false;\r\n -\t\t\t\t\t$("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID($t.p.selrow))[$t.p.useProp ? \'prop\': \'attr\']("checked",stat);\r\n \t\t\t\t\t$t.p.selarrrow.splice(ia,1);\r\n \t\t\t\t\ttpsr = $t.p.selarrrow[0];\r\n \t\t\t\t\t$t.p.selrow = (tpsr === undefined) ? null : tpsr;\r\n \t\t\t\t}\r\n +\t\t\t\t$("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(pt.id))[$t.p.useProp ? \'prop\': \'attr\']("checked",stat);\r\n \t\t\t\tif(fid) {\r\n \t\t\t\t\tif(ia === -1) {\r\n \t\t\t\t\t\t$("#"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid)).addClass("ui-state-highlight");\r\n @@ -2719,24 +2783,31 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$("#jqg_"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(selection), "#"+$.jgrid.jqID(fid))[$t.p.useProp ? \'prop\': \'attr\']("checked",stat);\r\n \t\t\t\t}\r\n -\t\t\t\tif( $t.p.onSelectRow \046\046 onsr) { $t.p.onSelectRow.call($t, pt.id , stat); }\r\n +\t\t\t\t$($t).triggerHandler("jqGridSelectRow", [pt.id, stat, e]);\r\n +\t\t\t\tif( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id , stat, e); }\r\n \t\t\t}\r\n \t\t});\r\n \t},\r\n \tresetSelection : function( rowid ){\r\n \t\treturn this.each(function(){\r\n -\t\t\tvar t = this, ind, sr;\r\n +\t\t\tvar t = this, ind, sr, fid;\r\n +\t\t\tif( t.p.frozenColumns === true ) {\r\n +\t\t\t\tfid = t.p.id+"_frozen";\r\n +\t\t\t}\r\n \t\t\tif(typeof(rowid) !== "undefined" ) {\r\n \t\t\t\tsr = rowid === t.p.selrow ? t.p.selrow : rowid;\r\n \t\t\t\t$("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(sr)).removeClass("ui-state-highlight").attr("aria-selected","false");\r\n +\t\t\t\tif (fid) { $("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }\r\n \t\t\t\tif(t.p.multiselect) {\r\n -\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr))[t.p.useProp ? \'prop\': \'attr\']("checked",false);\r\n +\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(t.p.id))[t.p.useProp ? \'prop\': \'attr\']("checked",false);\r\n +\t\t\t\t\tif(fid) { $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid))[t.p.useProp ? \'prop\': \'attr\']("checked",false); }\r\n \t\t\t\t\tt.setHeadCheckBox( false);\r\n \t\t\t\t}\r\n \t\t\t\tsr = null;\r\n \t\t\t} else if(!t.p.multiselect) {\r\n \t\t\t\tif(t.p.selrow) {\r\n \t\t\t\t\t$("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(t.p.selrow)).removeClass("ui-state-highlight").attr("aria-selected","false");\r\n +\t\t\t\t\tif(fid) { $("#"+$.jgrid.jqID(t.p.selrow), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }\r\n \t\t\t\t\tt.p.selrow = null;\r\n \t\t\t\t}\r\n \t\t\t} else {\r\n @@ -2744,12 +2815,16 @@ $.jgrid.extend({\r\n \t\t\t\t\tind = t.rows.namedItem(n);\r\n \t\t\t\t\t$(ind).removeClass("ui-state-highlight").attr("aria-selected","false");\r\n \t\t\t\t\t$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n))[t.p.useProp ? \'prop\': \'attr\']("checked",false);\r\n +\t\t\t\t\tif(fid) { \r\n +\t\t\t\t\t\t$("#"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); \r\n +\t\t\t\t\t\t$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(n), "#"+$.jgrid.jqID(fid))[t.p.useProp ? \'prop\': \'attr\']("checked",false);\r\n +\t\t\t\t\t}\r\n \t\t\t\t});\r\n \t\t\t\tt.setHeadCheckBox( false );\r\n \t\t\t\tt.p.selarrrow = [];\r\n \t\t\t}\r\n \t\t\tif(t.p.cellEdit === true) {\r\n -\t\t\t\tif(parseInt(t.p.iCol,10)\076=0 \046\046 parseInt(t.p.iRow,10)\076=0) {\r\n +\t\t\t\tif(parseInt(t.p.iCol,10)>=0 && parseInt(t.p.iRow,10)>=0) {\r\n \t\t\t\t\t$("td:eq("+t.p.iCol+")",t.rows[t.p.iRow]).removeClass("edit-cell ui-state-highlight");\r\n \t\t\t\t\t$(t.rows[t.p.iRow]).removeClass("selected-row ui-state-hover");\r\n \t\t\t\t}\r\n @@ -2770,17 +2845,17 @@ $.jgrid.extend({\r\n \t\t\t\tif(!ind) { return res; }\r\n \t\t\t\tlen = 2;\r\n \t\t\t}\r\n -\t\t\twhile(j\074len){\r\n +\t\t\twhile(j<len){\r\n \t\t\t\tif(getall) { ind = $t.rows[j]; }\r\n \t\t\t\tif( $(ind).hasClass(\'jqgrow\') ) {\r\n -\t\t\t\t\t$(\'td\',ind).each( function(i) {\r\n +\t\t\t\t\t$(\'td[role="gridcell"]\',ind).each( function(i) {\r\n \t\t\t\t\t\tnm = $t.p.colModel[i].name;\r\n -\t\t\t\t\t\tif ( nm !== \'cb\' \046\046 nm !== \'subgrid\' \046\046 nm !== \'rn\') {\r\n -\t\t\t\t\t\t\tif($t.p.treeGrid===true \046\046 nm == $t.p.ExpandColumn) {\r\n +\t\t\t\t\t\tif ( nm !== \'cb\' && nm !== \'subgrid\' && nm !== \'rn\') {\r\n +\t\t\t\t\t\t\tif($t.p.treeGrid===true && nm == $t.p.ExpandColumn) {\r\n \t\t\t\t\t\t\t\tres[nm] = $.jgrid.htmlDecode($("span:first",this).html());\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t\tres[nm] = $.unformat(this,{rowId:ind.id, colModel:$t.p.colModel[i]},i);\r\n +\t\t\t\t\t\t\t\t\tres[nm] = $.unformat.call($t,this,{rowId:ind.id, colModel:$t.p.colModel[i]},i);\r\n \t\t\t\t\t\t\t\t} catch (e){\r\n \t\t\t\t\t\t\t\t\tres[nm] = $.jgrid.htmlDecode($(this).html());\r\n \t\t\t\t\t\t\t\t}\r\n @@ -2814,13 +2889,14 @@ $.jgrid.extend({\r\n \t\t\t\tif(rowid == $t.p.selrow) {$t.p.selrow=null;}\r\n \t\t\t}\r\n \t\t\tif($t.p.datatype == \'local\') {\r\n -\t\t\t\tvar pos = $t.p._index[rowid];\r\n +\t\t\t\tvar id = $.jgrid.stripPref($t.p.idPrefix, rowid),\r\n +\t\t\t\tpos = $t.p._index[id];\r\n \t\t\t\tif(typeof(pos) != \'undefined\') {\r\n \t\t\t\t\t$t.p.data.splice(pos,1);\r\n \t\t\t\t\t$t.refreshIndex();\r\n \t\t\t\t}\r\n \t\t\t}\r\n -\t\t\tif( $t.p.altRows === true \046\046 success ) {\r\n +\t\t\tif( $t.p.altRows === true && success ) {\r\n \t\t\t\tvar cn = $t.p.altclass;\r\n \t\t\t\t$($t.rows).each(function(i){\r\n \t\t\t\t\tif(i % 2 ==1) { $(this).addClass(cn); }\r\n @@ -2842,18 +2918,19 @@ $.jgrid.extend({\r\n \t\t\t\t\t$(this.p.colModel).each(function(i){\r\n \t\t\t\t\t\tnm = this.name;\r\n \t\t\t\t\t\tif( data[nm] !== undefined) {\r\n -\t\t\t\t\t\t\tlcdata[nm] = this.formatter \046\046 typeof(this.formatter) === \'string\' \046\046 this.formatter == \'date\' ? $.unformat.date(data[nm],this) : data[nm];\r\n +\t\t\t\t\t\t\tlcdata[nm] = this.formatter && typeof(this.formatter) === \'string\' && this.formatter == \'date\' ? $.unformat.date.call(t,data[nm],this) : data[nm];\r\n \t\t\t\t\t\t\tvl = t.formatter( rowid, data[nm], i, data, \'edit\');\r\n \t\t\t\t\t\t\ttitle = this.title ? {"title":$.jgrid.stripHtml(vl)} : {};\r\n -\t\t\t\t\t\t\tif(t.p.treeGrid===true \046\046 nm == t.p.ExpandColumn) {\r\n -\t\t\t\t\t\t\t\t$("td:eq("+i+") \076 span:first",ind).html(vl).attr(title);\r\n +\t\t\t\t\t\t\tif(t.p.treeGrid===true && nm == t.p.ExpandColumn) {\r\n +\t\t\t\t\t\t\t\t$("td:eq("+i+") > span:first",ind).html(vl).attr(title);\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t$("td:eq("+i+")",ind).html(vl).attr(title);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t});\r\n \t\t\t\t\tif(t.p.datatype == \'local\') {\r\n -\t\t\t\t\t\tvar pos = t.p._index[rowid];\r\n +\t\t\t\t\t\tvar id = $.jgrid.stripPref(t.p.idPrefix, rowid),\r\n +\t\t\t\t\t\tpos = t.p._index[id];\r\n \t\t\t\t\t\tif(t.p.treeGrid) {\r\n \t\t\t\t\t\t\tfor(var key in t.p.treeReader ){\r\n \t\t\t\t\t\t\t\tif(lcdata.hasOwnProperty(t.p.treeReader[key])) {\r\n @@ -2872,14 +2949,14 @@ $.jgrid.extend({\r\n \t\t\t}\r\n \t\t\tif(success) {\r\n \t\t\t\tif(cp === \'string\') {$(ind).addClass(cssp);} else if(cp === \'object\') {$(ind).css(cssp);}\r\n -\t\t\t\tif($.isFunction(t.p._complete)) {t.p._complete.call(t);}\r\n +\t\t\t\t$(t).triggerHandler("jqGridAfterGridComplete");\r\n \t\t\t}\r\n \t\t});\r\n \t\treturn success;\r\n \t},\r\n \taddRowData : function(rowid,rdata,pos,src) {\r\n \t\tif(!pos) {pos = "last";}\r\n -\t\tvar success = false, nm, row, gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm;\r\n +\t\tvar success = false, nm, row, gi, si, ni,sind, i, v, prp="", aradd, cnm, cn, data, cm, id;\r\n \t\tif(rdata) {\r\n \t\t\tif($.isArray(rdata)) {\r\n \t\t\t\taradd=true;\r\n @@ -2907,59 +2984,61 @@ $.jgrid.extend({\r\n \t\t\t\tcn = t.p.altclass;\r\n \t\t\t\tvar k = 0, cna ="", lcdata = {},\r\n \t\t\t\tair = $.isFunction(t.p.afterInsertRow) ? true : false;\r\n -\t\t\t\twhile(k \074 datalen) {\r\n +\t\t\t\twhile(k < datalen) {\r\n \t\t\t\t\tdata = rdata[k];\r\n -\t\t\t\t\trow="";\r\n +\t\t\t\t\trow=[];\r\n \t\t\t\t\tif(aradd) {\r\n \t\t\t\t\t\ttry {rowid = data[cnm];}\r\n \t\t\t\t\t\tcatch (e) {rowid = $.jgrid.randId();}\r\n \t\t\t\t\t\tcna = t.p.altRows === true ? (t.rows.length-1)%2 === 0 ? cn : "" : "";\r\n \t\t\t\t\t}\r\n +\t\t\t\t\tid = rowid;\r\n \t\t\t\t\trowid = t.p.idPrefix + rowid;\r\n \t\t\t\t\tif(ni){\r\n \t\t\t\t\t\tprp = t.formatCol(0,1,\'\',null,rowid, true);\r\n -\t\t\t\t\t\trow += "\074td role=\\"gridcell\\" aria-describedby=\\""+t.p.id+"_rn\\" class=\\"ui-state-default jqgrid-rownum\\" "+prp+"\0760\074/td\076";\r\n +\t\t\t\t\t\trow[row.length] = "<td role=\\"gridcell\\" class=\\"ui-state-default jqgrid-rownum\\" "+prp+">0</td>";\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(gi) {\r\n -\t\t\t\t\t\tv = "\074input role=\\"checkbox\\" type=\\"checkbox\\""+" id=\\"jqg_"+t.p.id+"_"+rowid+"\\" class=\\"cbox\\"/\076";\r\n +\t\t\t\t\t\tv = "<input role=\\"checkbox\\" type=\\"checkbox\\""+" id=\\"jqg_"+t.p.id+"_"+rowid+"\\" class=\\"cbox\\"/>";\r\n \t\t\t\t\t\tprp = t.formatCol(ni,1,\'\', null, rowid, true);\r\n -\t\t\t\t\t\trow += "\074td role=\\"gridcell\\" aria-describedby=\\""+t.p.id+"_cb\\" "+prp+"\076"+v+"\074/td\076";\r\n +\t\t\t\t\t\trow[row.length] = "<td role=\\"gridcell\\" "+prp+">"+v+"</td>";\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(si) {\r\n -\t\t\t\t\t\trow += $(t).jqGrid("addSubGridCell",gi+ni,1);\r\n +\t\t\t\t\t\trow[row.length] = $(t).jqGrid("addSubGridCell",gi+ni,1);\r\n \t\t\t\t\t}\r\n -\t\t\t\t\tfor(i = gi+si+ni; i \074 t.p.colModel.length;i++){\r\n +\t\t\t\t\tfor(i = gi+si+ni; i < t.p.colModel.length;i++){\r\n \t\t\t\t\t\tcm = t.p.colModel[i];\r\n \t\t\t\t\t\tnm = cm.name;\r\n -\t\t\t\t\t\tlcdata[nm] = cm.formatter \046\046 typeof(cm.formatter) === \'string\' \046\046 cm.formatter == \'date\' ? $.unformat.date(data[nm],cm) : data[nm];\r\n -\t\t\t\t\t\tv = t.formatter( rowid, $.jgrid.getAccessor(data,nm), i, data, \'edit\');\r\n +\t\t\t\t\t\tlcdata[nm] = data[nm];\r\n +\t\t\t\t\t\tv = t.formatter( rowid, $.jgrid.getAccessor(data,nm), i, data );\r\n \t\t\t\t\t\tprp = t.formatCol(i,1,v, data, rowid, true);\r\n -\t\t\t\t\t\trow += "\074td role=\\"gridcell\\" aria-describedby=\\""+t.p.id+"_"+nm+"\\" "+prp+"\076"+v+"\074/td\076";\r\n +\t\t\t\t\t\trow[row.length] = "<td role=\\"gridcell\\" "+prp+">"+v+"</td>";\r\n \t\t\t\t\t}\r\n -\t\t\t\t\trow = "\074tr id=\\""+rowid+"\\" role=\\"row\\" tabindex=\\"-1\\" class=\\"ui-widget-content jqgrow ui-row-"+t.p.direction+" "+cna+"\\"\076" + row+"\074/tr\076";\r\n +\t\t\t\t\trow.unshift( t.constructTr(rowid, false, cna, lcdata, data, false ) );\r\n +\t\t\t\t\trow[row.length] = "</tr>";\r\n \t\t\t\t\tif(t.rows.length === 0){\r\n -\t\t\t\t\t\t$("table:first",t.grid.bDiv).append(row);\r\n +\t\t\t\t\t\t$("table:first",t.grid.bDiv).append(row.join(\'\'));\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\tswitch (pos) {\r\n \t\t\t\t\t\tcase \'last\':\r\n -\t\t\t\t\t\t\t$(t.rows[t.rows.length-1]).after(row);\r\n +\t\t\t\t\t\t\t$(t.rows[t.rows.length-1]).after(row.join(\'\'));\r\n \t\t\t\t\t\t\tsind = t.rows.length-1;\r\n \t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t\tcase \'first\':\r\n -\t\t\t\t\t\t\t$(t.rows[0]).after(row);\r\n +\t\t\t\t\t\t\t$(t.rows[0]).after(row.join(\'\'));\r\n \t\t\t\t\t\t\tsind = 1;\r\n \t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t\tcase \'after\':\r\n \t\t\t\t\t\t\tsind = t.rows.namedItem(src);\r\n \t\t\t\t\t\t\tif (sind) {\r\n \t\t\t\t\t\t\t\tif($(t.rows[sind.rowIndex+1]).hasClass("ui-subgrid")) { $(t.rows[sind.rowIndex+1]).after(row); }\r\n -\t\t\t\t\t\t\t\telse { $(sind).after(row); }\r\n +\t\t\t\t\t\t\t\telse { $(sind).after(row.join(\'\')); }\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tsind++;\r\n \t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t\tcase \'before\':\r\n \t\t\t\t\t\t\tsind = t.rows.namedItem(src);\r\n -\t\t\t\t\t\t\tif(sind) {$(sind).before(row);sind=sind.rowIndex;}\r\n +\t\t\t\t\t\t\tif(sind) {$(sind).before(row.join(\'\'));sind=sind.rowIndex;}\r\n \t\t\t\t\t\t\tsind--;\r\n \t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t}\r\n @@ -2969,16 +3048,17 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\tt.p.records++;\r\n \t\t\t\t\tt.p.reccount++;\r\n +\t\t\t\t\t$(t).triggerHandler("jqGridAfterInsertRow", [rowid,data,data]);\r\n \t\t\t\t\tif(air) { t.p.afterInsertRow.call(t,rowid,data,data); }\r\n \t\t\t\t\tk++;\r\n \t\t\t\t\tif(t.p.datatype == \'local\') {\r\n -\t\t\t\t\t\tlcdata[t.p.localReader.id] = rowid;\r\n -\t\t\t\t\t\tt.p._index[rowid] = t.p.data.length;\r\n +\t\t\t\t\t\tlcdata[t.p.localReader.id] = id;\r\n +\t\t\t\t\t\tt.p._index[id] = t.p.data.length;\r\n \t\t\t\t\t\tt.p.data.push(lcdata);\r\n \t\t\t\t\t\tlcdata = {};\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n -\t\t\t\tif( t.p.altRows === true \046\046 !aradd) {\r\n +\t\t\t\tif( t.p.altRows === true && !aradd) {\r\n \t\t\t\t\tif (pos == "last") {\r\n \t\t\t\t\t\tif ((t.rows.length-1)%2 == 1) {$(t.rows[t.rows.length-1]).addClass(cn);}\r\n \t\t\t\t\t} else {\r\n @@ -3028,32 +3108,40 @@ $.jgrid.extend({\r\n \t},\r\n \tshowHideCol : function(colname,show) {\r\n \t\treturn this.each(function() {\r\n -\t\t\tvar $t = this, fndh=false, brd=$.browser.webkit||$.browser.safari? 0: $t.p.cellLayout, cw;\r\n +\t\t\tvar $t = this, fndh=false, brd=$.jgrid.cellWidth()? 0: $t.p.cellLayout, cw;\r\n \t\t\tif (!$t.grid ) {return;}\r\n \t\t\tif( typeof colname === \'string\') {colname=[colname];}\r\n \t\t\tshow = show != "none" ? "" : "none";\r\n \t\t\tvar sw = show === "" ? true :false,\r\n -\t\t\tgh = $t.p.groupHeader \046\046 (typeof $t.p.groupHeader === \'object\' || $.isFunction($t.p.groupHeader) );\r\n +\t\t\tgh = $t.p.groupHeader && (typeof $t.p.groupHeader === \'object\' || $.isFunction($t.p.groupHeader) );\r\n \t\t\tif(gh) { $($t).jqGrid(\'destroyGroupHeader\', false); }\r\n \t\t\t$(this.p.colModel).each(function(i) {\r\n -\t\t\t\tif ($.inArray(this.name,colname) !== -1 \046\046 this.hidden === sw) {\r\n -\t\t\t\t\tif($t.p.frozenColumns === true \046\046 this.frozen === true) {\r\n +\t\t\t\tif ($.inArray(this.name,colname) !== -1 && this.hidden === sw) {\r\n +\t\t\t\t\tif($t.p.frozenColumns === true && this.frozen === true) {\r\n \t\t\t\t\t\treturn true;\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$("tr",$t.grid.hDiv).each(function(){\r\n \t\t\t\t\t\t$(this.cells[i]).css("display", show);\r\n \t\t\t\t\t});\r\n -\t\t\t\t\t$($t.rows).each(function(j){\r\n -\t\t\t\t\t\t$(this.cells[i]).css("display", show);\r\n +\t\t\t\t\t$($t.rows).each(function(){\r\n +\t\t\t\t\t\tif (!$(this).hasClass("jqgroup")) {\r\n +\t\t\t\t\t\t\t$(this.cells[i]).css("display", show);\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t});\r\n \t\t\t\t\tif($t.p.footerrow) { $("tr.footrow td:eq("+i+")", $t.grid.sDiv).css("display", show); }\r\n -\t\t\t\t\tcw = this.widthOrg? this.widthOrg: parseInt(this.width,10);\r\n -\t\t\t\t\tif(show === "none") {$t.p.tblwidth -= cw+brd;} else {$t.p.tblwidth += cw+brd;}\r\n +\t\t\t\t\tcw = parseInt(this.width,10);\r\n +\t\t\t\t\tif(show === "none") {\r\n +\t\t\t\t\t\t$t.p.tblwidth -= cw+brd;\r\n +\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t$t.p.tblwidth += cw+brd;\r\n +\t\t\t\t\t}\r\n \t\t\t\t\tthis.hidden = !sw;\r\n \t\t\t\t\tfndh=true;\r\n +\t\t\t\t\t$($t).triggerHandler("jqGridShowHideCol", [sw,this.name,i]);\r\n \t\t\t\t}\r\n \t\t\t});\r\n \t\t\tif(fndh===true) {\r\n +\t\t\t\tif($t.p.shrinkToFit === true && !isNaN($t.p.height)) { $t.p.tblwidth += parseInt($t.p.scrollOffset,10);}\r\n \t\t\t\t$($t).jqGrid("setGridWidth",$t.p.shrinkToFit === true ? $t.p.tblwidth : $t.p.width );\r\n \t\t\t}\r\n \t\t\tif( gh ) {\r\n @@ -3082,7 +3170,7 @@ $.jgrid.extend({\r\n \t\t}\r\n \t\tvar ts = this.get(0);\r\n \t\tfunction resortRows(parent, clobj) {\r\n -\t\t\t$("\076tr"+(clobj||""), parent).each(function() {\r\n +\t\t\t$(">tr"+(clobj||""), parent).each(function() {\r\n \t\t\t\tvar row = this;\r\n \t\t\t\tvar elems = $.makeArray(row.cells);\r\n \t\t\t\t$.each(permutation, function() {\r\n @@ -3096,7 +3184,7 @@ $.jgrid.extend({\r\n \t\tresortArray(ts.p.colModel);\r\n \t\tresortArray(ts.p.colNames);\r\n \t\tresortArray(ts.grid.headers);\r\n -\t\tresortRows($("thead:first", ts.grid.hDiv), keepHeader \046\046 ":not(.ui-jqgrid-labels)");\r\n +\t\tresortRows($("thead:first", ts.grid.hDiv), keepHeader && ":not(.ui-jqgrid-labels)");\r\n \t\tif (updateCells) {\r\n \t\t\tresortRows($("#"+$.jgrid.jqID(ts.p.id)+" tbody:first"), ".jqgfirstrow, tr.jqgrow, tr.jqfoot");\r\n \t\t}\r\n @@ -3112,19 +3200,42 @@ $.jgrid.extend({\r\n \t\t}\r\n \t\tts.p.lastsort = $.inArray(ts.p.lastsort, permutation);\r\n \t\tif(ts.p.treeGrid) { ts.p.expColInd = $.inArray(ts.p.expColInd, permutation); }\r\n +\t\t$(ts).triggerHandler("jqGridRemapColumns", [permutation, updateCells, keepHeader]);\r\n \t},\r\n \tsetGridWidth : function(nwidth, shrink) {\r\n \t\treturn this.each(function(){\r\n \t\t\tif (!this.grid ) {return;}\r\n \t\t\tvar $t = this, cw,\r\n -\t\t\tinitwidth = 0, brd=$.browser.webkit||$.browser.safari? 0: $t.p.cellLayout, lvc, vc=0, hs=false, scw=$t.p.scrollOffset, aw, gw=0,\r\n +\t\t\tinitwidth = 0, brd=$.jgrid.cellWidth() ? 0: $t.p.cellLayout, lvc, vc=0, hs=false, scw=$t.p.scrollOffset, aw, gw=0,\r\n \t\t\tcl = 0,cr;\r\n \t\t\tif(typeof shrink != \'boolean\') {\r\n \t\t\t\tshrink=$t.p.shrinkToFit;\r\n \t\t\t}\r\n \t\t\tif(isNaN(nwidth)) {return;}\r\n -\t\t\telse { nwidth = parseInt(nwidth,10); $t.grid.width = $t.p.width = nwidth;}\r\n -\t\t\t$("#gbox_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px");\r\n +\t\t\tnwidth = parseInt(nwidth,10); \r\n +\t\t\t$t.grid.width = $t.p.width = nwidth;\r\n +\t\t\t$("#gbo + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string>x_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px");\r\n \t\t\t$("#gview_"+$.jgrid.jqID($t.p.id)).css("width",nwidth+"px");\r\n \t\t\t$($t.grid.bDiv).css("width",nwidth+"px");\r\n \t\t\t$($t.grid.hDiv).css("width",nwidth+"px");\r\n @@ -3137,9 +3248,9 @@ $.jgrid.extend({\r\n \t\t\tif($t.p.footerrow) { $($t.grid.sDiv).css("width",nwidth+"px"); }\r\n \t\t\tif(shrink ===false \046\046 $t.p.forceFit === true) {$t.p.forceFit=false;}\r\n \t\t\tif(shrink===true) {\r\n -\t\t\t\t$.each($t.p.colModel, function(i) {\r\n +\t\t\t\t$.each($t.p.colModel, function() {\r\n \t\t\t\t\tif(this.hidden===false){\r\n -\t\t\t\t\t\tcw = this.widthOrg? this.widthOrg: parseInt(this.width,10);\r\n +\t\t\t\t\t\tcw = this.widthOrg;\r\n \t\t\t\t\t\tinitwidth += cw+brd;\r\n \t\t\t\t\t\tif(this.fixed) {\r\n \t\t\t\t\t\t\tgw += cw+brd;\r\n @@ -3162,7 +3273,7 @@ $.jgrid.extend({\r\n \t\t\t\tvar cle = $t.grid.cols.length \0760;\r\n \t\t\t\t$.each($t.p.colModel, function(i) {\r\n \t\t\t\t\tif(this.hidden === false \046\046 !this.fixed){\r\n -\t\t\t\t\t\tcw = this.widthOrg? this.widthOrg: parseInt(this.width,10);\r\n +\t\t\t\t\t\tcw = this.widthOrg;\r\n \t\t\t\t\t\tcw = Math.round(aw*cw/($t.p.tblwidth-brd*vc-gw));\r\n \t\t\t\t\t\tif (cw \074 0) { return; }\r\n \t\t\t\t\t\tthis.width =cw;\r\n @@ -3176,7 +3287,7 @@ $.jgrid.extend({\r\n \t\t\t\t});\r\n \r\n \t\t\t\tif (!lvc) { return; }\r\n -\t\t\t \r\n +\r\n \t\t\t\tcr =0;\r\n \t\t\t\tif (hs) {\r\n \t\t\t\t\tif(nwidth-gw-(initwidth+brd*vc) !== scw){\r\n @@ -3219,7 +3330,7 @@ $.jgrid.extend({\r\n \t\t\tbDiv.css({height: nh+(isNaN(nh)?"":"px")});\r\n \t\t\tif($t.p.frozenColumns === true){\r\n \t\t\t\t//follow the original set height to use 16, better scrollbar width detection\r\n -\t\t\t\t$(\'#\'+$t.p.id+"_frozen").parent().height(bDiv.height() - 16); \r\n +\t\t\t\t$(\'#\'+$.jgrid.jqID($t.p.id)+"_frozen").parent().height(bDiv.height() - 16);\r\n \t\t\t}\r\n \t\t\t$t.p.height = nh;\r\n \t\t\tif ($t.p.scroll) { $t.grid.populateVisible(); }\r\n @@ -3282,7 +3393,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif($t.p.datatype == "local") {\r\n \t\t\t\t\t\t\tvar cm = $t.p.colModel[pos], index;\r\n -\t\t\t\t\t\t\tnData = cm.formatter \046\046 typeof(cm.formatter) === \'string\' \046\046 cm.formatter == \'date\' ? $.unformat.date(nData,cm) : nData;\r\n +\t\t\t\t\t\t\tnData = cm.formatter \046\046 typeof(cm.formatter) === \'string\' \046\046 cm.formatter == \'date\' ? $.unformat.date.call($t,nData,cm) : nData;\r\n \t\t\t\t\t\t\tindex = $t.p._index[rowid];\r\n \t\t\t\t\t\t\tif(typeof index != "undefined") {\r\n \t\t\t\t\t\t\t\t$t.p.data[index][cm.name] = nData;\r\n @@ -3315,7 +3426,7 @@ $.jgrid.extend({\r\n \t\t\t\tvar ind = $t.rows.namedItem(rowid);\r\n \t\t\t\tif(ind) {\r\n \t\t\t\t\ttry {\r\n -\t\t\t\t\t\tret = $.unformat($("td:eq("+pos+")",ind),{rowId:ind.id, colModel:$t.p.colModel[pos]},pos);\r\n +\t\t\t\t\t\tret = $.unformat.call($t,$("td:eq("+pos+")",ind),{rowId:ind.id, colModel:$t.p.colModel[pos]},pos);\r\n \t\t\t\t\t} catch (e){\r\n \t\t\t\t\t\tret = $.jgrid.htmlDecode($("td:eq("+pos+")",ind).html());\r\n \t\t\t\t\t}\r\n @@ -3344,20 +3455,16 @@ $.jgrid.extend({\r\n \t\t\t\t\twhile(i\074ln){\r\n \t\t\t\t\t\tif($($t.rows[i]).hasClass(\'jqgrow\')) {\r\n \t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\tval = $.unformat($($t.rows[i].cells[pos]),{rowId:$t.rows[i].id, colModel:$t.p.colModel[pos]},pos);\r\n +\t\t\t\t\t\t\t\tval = $.unformat.call($t,$($t.rows[i].cells[pos]),{rowId:$t.rows[i].id, colModel:$t.p.colModel[pos]},pos);\r\n \t\t\t\t\t\t\t} catch (e) {\r\n \t\t\t\t\t\t\t\tval = $.jgrid.htmlDecode($t.rows[i].cells[pos].innerHTML);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif(mathopr) {\r\n \t\t\t\t\t\t\t\tv = parseFloat(val);\r\n \t\t\t\t\t\t\t\tsum += v;\r\n -\t\t\t\t\t\t\t\tif(i===0) {\r\n -\t\t\t\t\t\t\t\t\tmin = v;\r\n -\t\t\t\t\t\t\t\t\tmax = v;\r\n -\t\t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t\tmin = Math.min(min, v);\r\n -\t\t\t\t\t\t\t\t\tmax = Math.max(max, v);\r\n -\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\tif (max === undefined) {max = min = v}\r\n +\t\t\t\t\t\t\t\tmin = Math.min(min, v);\r\n +\t\t\t\t\t\t\t\tmax = Math.max(max, v);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\telse if(obj) { ret.push( {id:$t.rows[i].id,value:val} ); }\r\n \t\t\t\t\t\t\telse { ret.push( val ); }\r\n @@ -3438,7 +3545,8 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\tid = r.id;\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t$($t).jqGrid(\'setSelection\', id);\r\n +\t\t\t\t\t\t\t$($t).jqGrid(\'setSelection\', id, true, event);\r\n +\t\t\t\t\t\t\tevent.preventDefault();\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\t//if key is down arrow\r\n \t\t\t\t\t\tif(event.keyCode === 40){\r\n @@ -3454,48 +3562,49 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\tid = r.id;\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t$($t).jqGrid(\'setSelection\', id);\r\n +\t\t\t\t\t\t\t$($t).jqGrid(\'setSelection\', id, true, event);\r\n +\t\t\t\t\t\t\tevent.preventDefault();\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\t// left\r\n \t\t\t\t\t\tif(event.keyCode === 37 ){\r\n \t\t\t\t\t\t\tif($t.p.treeGrid \046\046 $t.p.data[mind][expanded]) {\r\n \t\t\t\t\t\t\t\t$(target).find("div.treeclick").trigger(\'click\');\r\n \t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t$($t).triggerHandler("jqGridKeyLeft", [$t.p.selrow]);\r\n \t\t\t\t\t\t\tif($.isFunction(o.onLeftKey)) {\r\n \t\t\t\t\t\t\t\to.onLeftKey.call($t, $t.p.selrow);\r\n -\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\t// right\r\n \t\t\t\t\t\tif(event.keyCode === 39 ){\r\n \t\t\t\t\t\t\tif($t.p.treeGrid \046\046 !$t.p.data[mind][expanded]) {\r\n \t\t\t\t\t\t\t\t$(target).find("div.treeclick").trigger(\'click\');\r\n \t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t$($t).triggerHandler("jqGridKeyRight", [$t.p.selrow]);\r\n \t\t\t\t\t\t\tif($.isFunction(o.onRightKey)) {\r\n \t\t\t\t\t\t\t\to.onRightKey.call($t, $t.p.selrow);\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t//return false;\r\n \t\t\t\t\t}\r\n \t\t\t\t\t//check if enter was pressed on a grid or treegrid node\r\n \t\t\t\t\telse if( event.keyCode === 13 ){\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridKeyEnter", [$t.p.selrow]);\r\n \t\t\t\t\t\tif($.isFunction(o.onEnter)) {\r\n \t\t\t\t\t\t\to.onEnter.call($t, $t.p.selrow);\r\n \t\t\t\t\t\t}\r\n -\t\t\t\t\t\t//return false;\r\n \t\t\t\t\t} else if(event.keyCode === 32) {\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridKeySpace", [$t.p.selrow]);\r\n \t\t\t\t\t\tif($.isFunction(o.onSpace)) {\r\n \t\t\t\t\t\t\to.onSpace.call($t, $t.p.selrow);\r\n -\t\t\t\t\t }\r\n -\t\t\t\t\t\t//return false;\r\n -\t\t\t\t }\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t});\r\n \t\t});\r\n \t},\r\n \tunbindKeys : function(){\r\n \t\treturn this.each(function(){\r\n -\t\t\tvar $t = this;\r\n -\t\t\t$($t).unbind(\'keydown\');\r\n +\t\t\t$(this).unbind(\'keydown\');\r\n \t\t});\r\n \t},\r\n \tgetLocalRow : function (rowid) {\r\n @@ -3525,7 +3634,7 @@ $.jgrid.extend({\r\n * http://www.gnu.org/licenses/gpl-2.0.html\r\n **/\r\n /*global jQuery, $ */\r\n -\r\n +"use strict";\r\n $.jgrid.extend({\r\n \tgetColProp : function(colname){\r\n \t\tvar ret ={}, $t = this[0];\r\n @@ -3574,15 +3683,53 @@ $.jgrid.extend({\r\n \t\t\t}\r\n \t\t});\r\n \t},\r\n +\tclearBeforeUnload : function () {\r\n +\t\treturn this.each(function(){\r\n +\t\t\tvar grid = this.grid;\r\n +\t\t\tgrid.emptyRows.call(this, true, true); // this work quick enough and reduce the size of memory leaks if we have someone\r\n +\r\n +\t\t\t//$(document).unbind("mouseup"); // TODO add namespace\r\n +\t\t\t$(grid.hDiv).unbind("mousemove"); // TODO add namespace\r\n +\t\t\t$(this).unbind();\r\n +\r\n +\t\t\tgrid.dragEnd = null;\r\n +\t\t\tgrid.dragMove = null;\r\n +\t\t\tgrid.dragStart = null;\r\n +\t\t\tgrid.emptyRows = null;\r\n +\t\t\tgrid.populate = null;\r\n +\t\t\tgrid.populateVisible = null;\r\n +\t\t\tgrid.scrollGrid = null;\r\n +\t\t\tgrid.selectionPreserver = null;\r\n +\r\n +\t\t\tgrid.bDiv = null;\r\n +\t\t\tgrid.cDiv = null;\r\n +\t\t\tgrid.hDiv = null;\r\n +\t\t\tgrid.cols = null;\r\n +\t\t\tvar i, l = grid.headers.length;\r\n +\t\t\tfor (i = 0; i \074 l; i++) {\r\n +\t\t\t\tgrid.headers[i].el = null;\r\n +\t\t\t}\r\n +\r\n +\t\t\tthis.formatCol = null;\r\n +\t\t\tthis.sortData = null;\r\n +\t\t\tthis.updatepager = null;\r\n +\t\t\tthis.refreshIndex = null;\r\n +\t\t\tthis.setHeadCheckBox = null;\r\n +\t\t\tthis.constructTr = null;\r\n +\t\t\tthis.formatter = null;\r\n +\t\t\tthis.addXmlData = null;\r\n +\t\t\tthis.addJSONData = null;\r\n +\t\t});\r\n +\t},\r\n \tGridDestroy : function () {\r\n \t\treturn this.each(function(){\r\n \t\t\tif ( this.grid ) { \r\n \t\t\t\tif ( this.p.pager ) { // if not part of grid\r\n \t\t\t\t\t$(this.p.pager).remove();\r\n \t\t\t\t}\r\n -\t\t\t\tvar gid = this.id;\r\n \t\t\t\ttry {\r\n -\t\t\t\t\t$("#gbox_"+gid).remove();\r\n +\t\t\t\t\t$(this).jqGrid(\'clearBeforeUnload\');\r\n +\t\t\t\t\t$("#gbox_"+$.jgrid.jqID(this.id)).remove();\r\n \t\t\t\t} catch (_) {}\r\n \t\t\t}\r\n \t\t});\r\n @@ -3597,7 +3744,7 @@ $.jgrid.extend({\r\n \t\t\tvar newtable = document.createElement(\'table\');\r\n \t\t\t$(newtable).attr({id:defgrid.id});\r\n \t\t\tnewtable.className = defgrid.cl;\r\n -\t\t\tvar gid = this.id;\r\n +\t\t\tvar gid = $.jgrid.jqID(this.id);\r\n \t\t\t$(newtable).removeClass("ui-jqgrid-btable");\r\n \t\t\tif( $(this.p.pager).parents("#gbox_"+gid).length === 1 ) {\r\n \t\t\t\t$(newtable).insertBefore("#gbox_"+gid).show();\r\n @@ -3605,15 +3752,16 @@ $.jgrid.extend({\r\n \t\t\t} else {\r\n \t\t\t\t$(newtable).insertBefore("#gbox_"+gid).show();\r\n \t\t\t}\r\n +\t\t\t$(this).jqGrid(\'clearBeforeUnload\');\r\n \t\t\t$("#gbox_"+gid).remove();\r\n \t\t});\r\n \t},\r\n setGridState : function(state) {\r\n \t\treturn this.each(function(){\r\n \t\t\tif ( !this.grid ) {return;}\r\n - var $t = this;\r\n - if(state == \'hidden\'){\r\n -\t\t\t\t$(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+$t.p.id).slideUp("fast");\r\n +\t\t\tvar $t = this;\r\n +\t\t\tif(state == \'hidden\'){\r\n +\t\t\t\t$(".ui-jqgrid-bdiv, .ui-jqgrid-hdiv","#gview_"+$.jgrid.jqID($t.p.id)).slideUp("fast");\r\n \t\t\t\tif($t.p.pager) {$($t.p.pager).slideUp("fast");}\r\n \t\t\t\tif($t.p.toppager) {$($t.p.toppager).slideUp("fast");}\r\n \t\t\t\tif($t.p.toolbar[0]===true) {\r\n @@ -3622,11 +3770,11 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$($t.grid.uDiv).slideUp("fast");\r\n \t\t\t\t}\r\n -\t\t\t\tif($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$t.p.id).slideUp("fast"); }\r\n +\t\t\t\tif($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$.jgrid.jqID($t.p.id)).slideUp("fast"); }\r\n \t\t\t\t$(".ui-jqgrid-titlebar-close span",$t.grid.cDiv).removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");\r\n \t\t\t\t$t.p.gridstate = \'hidden\';\r\n - } else if(state==\'visible\') {\r\n -\t\t\t\t$(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+$t.p.id).slideDown("fast");\r\n +\t\t\t} else if(state==\'visible\') {\r\n +\t\t\t\t$(".ui-jqgrid-hdiv, .ui-jqgrid-bdiv","#gview_"+$.jgrid.jqID($t.p.id)).slideDown("fast");\r\n \t\t\t\tif($t.p.pager) {$($t.p.pager).slideDown("fast");}\r\n \t\t\t\tif($t.p.toppager) {$($t.p.toppager).slideDown("fast");}\r\n \t\t\t\tif($t.p.toolbar[0]===true) {\r\n @@ -3635,7 +3783,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$($t.grid.uDiv).slideDown("fast");\r\n \t\t\t\t}\r\n -\t\t\t\tif($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$t.p.id).slideDown("fast"); }\r\n +\t\t\t\tif($t.p.footerrow) { $(".ui-jqgrid-sdiv","#gbox_"+$.jgrid.jqID($t.p.id)).slideDown("fast"); }\r\n \t\t\t\t$(".ui-jqgrid-titlebar-close span",$t.grid.cDiv).removeClass("ui-icon-circle-triangle-s").addClass("ui-icon-circle-triangle-n");\r\n \t\t\t\t$t.p.gridstate = \'visible\';\r\n \t\t\t}\r\n @@ -3660,7 +3808,7 @@ $.jgrid.extend({\r\n \t\t\tif(this.ftoolbar) { return; }\r\n \t\t\tvar triggerToolbar = function() {\r\n \t\t\t\tvar sdata={}, j=0, v, nm, sopt={},so;\r\n -\t\t\t\t$.each($t.p.colModel,function(i,n){\r\n +\t\t\t\t$.each($t.p.colModel,function(){\r\n \t\t\t\t\tnm = this.index || this.name;\r\n \t\t\t\t\tso = (this.searchoptions \046\046 this.searchoptions.sopt) ? this.searchoptions.sopt[0] : this.stype==\'select\'? \'eq\' : p.defaultSearch;\r\n \t\t\t\t\tv = $("#gs_"+$.jgrid.jqID(this.name), (this.frozen===true \046\046 $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv).val();\r\n @@ -3699,32 +3847,32 @@ $.jgrid.extend({\r\n \t\t\t\t\tsaveurl = $t.p.url;\r\n \t\t\t\t\t$($t).jqGrid("setGridParam",{url:$t.p.searchurl});\r\n \t\t\t\t}\r\n -\t\t\t\tvar bsr = false;\r\n -\t\t\t\tif($.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);}\r\n +\t\t\t\tvar bsr = $($t).triggerHandler("jqGridToolbarBeforeSearch") === \'stop\' ? true : false;\r\n +\t\t\t\tif(!bsr \046\046 $.isFunction(p.beforeSearch)){bsr = p.beforeSearch.call($t);}\r\n \t\t\t\tif(!bsr) { $($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]); }\r\n \t\t\t\tif(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});}\r\n -\t\t\t\tif($.isFunction(p.afterSearch)){p.afterSearch();}\r\n +\t\t\t\t$($t).triggerHandler("jqGridToolbarAfterSearch");\r\n +\t\t\t\tif($.isFunction(p.afterSearch)){p.afterSearch.call($t);}\r\n \t\t\t};\r\n \t\t\tvar clearToolbar = function(trigger){\r\n -\t\t\t\tvar sdata={}, v, j=0, nm;\r\n +\t\t\t\tvar sdata={}, j=0, nm;\r\n \t\t\t\ttrigger = (typeof trigger != \'boolean\') ? true : trigger;\r\n -\t\t\t\t$.each($t.p.colModel,function(i,n){\r\n -\t\t\t\t\tv = (this.searchoptions \046\046 this.searchoptions.defaultValue) ? this.searchoptions.defaultValue : "";\r\n +\t\t\t\t$.each($t.p.colModel,function(){\r\n +\t\t\t\t\tvar v;\r\n +\t\t\t\t\tif(this.searchoptions \046\046 this.searchoptions.defaultValue !== undefined) { v = this.searchoptions.defaultValue; }\r\n \t\t\t\t\tnm = this.index || this.name;\r\n \t\t\t\t\tswitch (this.stype) {\r\n \t\t\t\t\t\tcase \'select\' :\r\n -\t\t\t\t\t\t\tvar v1;\r\n \t\t\t\t\t\t\t$("#gs_"+$.jgrid.jqID(this.name)+" option",(this.frozen===true \046\046 $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv).each(function (i){\r\n \t\t\t\t\t\t\t\tif(i===0) { this.selected = true; }\r\n -\t\t\t\t\t\t\t\tif ($(this).text() == v) {\r\n +\t\t\t\t\t\t\t\tif ($(this).val() == v) {\r\n \t\t\t\t\t\t\t\t\tthis.selected = true;\r\n -\t\t\t\t\t\t\t\t\tv1 = $(this).val();\r\n \t\t\t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t});\r\n -\t\t\t\t\t\t\tif (v1) {\r\n +\t\t\t\t\t\t\tif ( v !== undefined ) {\r\n \t\t\t\t\t\t\t\t// post the key and not the text\r\n -\t\t\t\t\t\t\t\tsdata[nm] = v1;\r\n +\t\t\t\t\t\t\t\tsdata[nm] = v;\r\n \t\t\t\t\t\t\t\tj++;\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\ttry {\r\n @@ -3734,7 +3882,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t\tcase \'text\':\r\n \t\t\t\t\t\t\t$("#gs_"+$.jgrid.jqID(this.name),(this.frozen===true \046\046 $t.p.frozenColumns === true) ? $t.grid.fhDiv : $t.grid.hDiv).val(v);\r\n -\t\t\t\t\t\t\tif(v) {\r\n +\t\t\t\t\t\t\tif(v !== undefined) {\r\n \t\t\t\t\t\t\t\tsdata[nm] = v;\r\n \t\t\t\t\t\t\t\tj++;\r\n \t\t\t\t\t\t\t} else {\r\n @@ -3770,19 +3918,20 @@ $.jgrid.extend({\r\n \t\t\t\t\tsaveurl = $t.p.url;\r\n \t\t\t\t\t$($t).jqGrid("setGridParam",{url:$t.p.searchurl});\r\n \t\t\t\t}\r\n -\t\t\t\tvar bcv = false;\r\n -\t\t\t\tif($.isFunction(p.beforeClear)){bcv = p.beforeClear.call($t);}\r\n +\t\t\t\tvar bcv = $($t).triggerHandler("jqGridToolbarBeforeClear") === \'stop\' ? true : false;\r\n +\t\t\t\tif(!bcv \046\046 $.isFunction(p.beforeClear)){bcv = p.beforeClear.call($t);}\r\n \t\t\t\tif(!bcv) {\r\n \t\t\t\t\tif(trigger) {\r\n \t\t\t\t\t\t$($t).jqGrid("setGridParam",{search:sd}).trigger("reloadGrid",[{page:1}]);\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(saveurl) {$($t).jqGrid("setGridParam",{url:saveurl});}\r\n +\t\t\t\t$($t).triggerHandler("jqGridToolbarAfterClear");\r\n \t\t\t\tif($.isFunction(p.afterClear)){p.afterClear();}\r\n \t\t\t};\r\n \t\t\tvar toggleToolbar = function(){\r\n \t\t\t\tvar trow = $("tr.ui-search-toolbar",$t.grid.hDiv),\r\n -\t\t\t\ttrow2 = $t.p.frozenColumns === true ? $("tr.ui-search-toolbar",$t.grid.hDiv) : false;\r\n +\t\t\t\ttrow2 = $t.p.frozenColumns === true ? $("tr.ui-search-toolbar",$t.grid.fhDiv) : false;\r\n \t\t\t\tif(trow.css("display")==\'none\') { \r\n \t\t\t\t\ttrow.show(); \r\n \t\t\t\t\tif(trow2) {\r\n @@ -3799,18 +3948,18 @@ $.jgrid.extend({\r\n \t\t\tfunction bindEvents(selector, events) {\r\n \t\t\t\tvar jElem = $(selector);\r\n \t\t\t\tif (jElem[0]) {\r\n -\t\t\t\t jQuery.each(events, function() {\r\n -\t\t\t\t if (this.data !== undefined) {\r\n -\t\t\t\t jElem.bind(this.type, this.data, this.fn);\r\n -\t\t\t\t } else {\r\n -\t\t\t\t jElem.bind(this.type, this.fn);\r\n -\t\t\t\t }\r\n -\t\t\t\t });\r\n +\t\t\t\t\tjQuery.each(events, function() {\r\n +\t\t\t\t\t\tif (this.data !== undefined) {\r\n +\t\t\t\t\t\t\tjElem.bind(this.type, this.data, this.fn);\r\n +\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\tjElem.bind(this.type, this.fn);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tvar tr = $("\074tr class=\'ui-search-toolbar\' role=\'rowheader\'\076\074/tr\076");\r\n \t\t\tvar timeoutHnd;\r\n -\t\t\t$.each($t.p.colModel,function(i,n){\r\n +\t\t\t$.each($t.p.colModel,function(){\r\n \t\t\t\tvar cm=this, thd , th, soptions,surl,self;\r\n \t\t\t\tth = $("\074th role=\'columnheader\' class=\'ui-state-default ui-th-column ui-th-"+$t.p.direction+"\'\076\074/th\076");\r\n \t\t\t\tthd = $("\074div style=\'width:100%;position:relative;height:100%;padding-right:0.3em;\'\076\074/div\076");\r\n @@ -3830,14 +3979,14 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t$.ajax($.extend({\r\n \t\t\t\t\t\t\t\turl: surl,\r\n \t\t\t\t\t\t\t\tdataType: "html",\r\n -\t\t\t\t\t\t\t\tsuccess: function(res,status) {\r\n +\t\t\t\t\t\t\t\tsuccess: function(res) {\r\n \t\t\t\t\t\t\t\t\tif(soptions.buildSelect !== undefined) {\r\n \t\t\t\t\t\t\t\t\t\tvar d = soptions.buildSelect(res);\r\n \t\t\t\t\t\t\t\t\t\tif (d) { $(self).append(d); }\r\n \t\t\t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t\t\t$(self).append(res);\r\n \t\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\t\tif(soptions.defaultValue) { $("select",self).val(soptions.defaultValue); }\r\n +\t\t\t\t\t\t\t\t\tif(soptions.defaultValue !== undefined) { $("select",self).val(soptions.defaultValue); }\r\n \t\t\t\t\t\t\t\t\t$("select",self).attr({name:cm.index || cm.name, id: "gs_"+cm.name});\r\n \t\t\t\t\t\t\t\t\tif(soptions.attr) {$("select",self).attr(soptions.attr);}\r\n \t\t\t\t\t\t\t\t\t$("select",self).css({width: "100%"});\r\n @@ -3845,7 +3994,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\tif(soptions.dataInit !== undefined) { soptions.dataInit($("select",self)[0]); }\r\n \t\t\t\t\t\t\t\t\tif(soptions.dataEvents !== undefined) { bindEvents($("select",self)[0],soptions.dataEvents); }\r\n \t\t\t\t\t\t\t\t\tif(p.autosearch===true){\r\n -\t\t\t\t\t\t\t\t\t\t$("select",self).change(function(e){\r\n +\t\t\t\t\t\t\t\t\t\t$("select",self).change(function(){\r\n \t\t\t\t\t\t\t\t\t\t\ttriggerToolbar();\r\n \t\t\t\t\t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t\t\t\t\t});\r\n @@ -3854,11 +4003,15 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}, $.jgrid.ajaxOptions, $t.p.ajaxSelectOptions || {} ));\r\n \t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\tvar oSv;\r\n -\t\t\t\t\t\t\tif(cm.searchoptions \046\046 cm.searchoptions.value) {\r\n -\t\t\t\t\t\t\t\toSv = cm.searchoptions.value;\r\n -\t\t\t\t\t\t\t} else if(cm.editoptions \046\046 cm.editoptions.value) {\r\n -\t\t\t\t\t\t\t\toSv = cm.editoptions.value;\r\n +\t\t\t\t\t\t\tvar oSv, sep, delim;\r\n +\t\t\t\t\t\t\tif(cm.searchoptions) {\r\n +\t\t\t\t\t\t\t\toSv = cm.searchoptions.value === undefined ? "" : cm.searchoptions.value;\r\n +\t\t\t\t\t\t\t\tsep = cm.searchoptions.separator === undefined ? ":" : cm.searchoptions.separator;\r\n +\t\t\t\t\t\t\t\tdelim = cm.searchoptions.delimiter === undefined ? ";" : cm.searchoptions.delimiter;\r\n +\t\t\t\t\t\t\t} else if(cm.editoptions) {\r\n +\t\t\t\t\t\t\t\toSv = cm.editoptions.value === undefined ? "" : cm.editoptions.value;\r\n +\t\t\t\t\t\t\t\tsep = cm.editoptions.separator === undefined ? ":" : cm.editoptions.separator;\r\n +\t\t\t\t\t\t\t\tdelim = cm.editoptions.delimiter === undefined ? ";" : cm.editoptions.delimiter;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif (oSv) {\t\r\n \t\t\t\t\t\t\t\tvar elem = document.createElement("select");\r\n @@ -3866,9 +4019,9 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t$(elem).attr({name:cm.index || cm.name, id: "gs_"+cm.name});\r\n \t\t\t\t\t\t\t\tvar so, sv, ov;\r\n \t\t\t\t\t\t\t\tif(typeof oSv === "string") {\r\n -\t\t\t\t\t\t\t\t\tso = oSv.split(";");\r\n +\t\t\t\t\t\t\t\t\tso = oSv.split(delim);\r\n \t\t\t\t\t\t\t\t\tfor(var k=0; k\074so.length;k++){\r\n -\t\t\t\t\t\t\t\t\t\tsv = so[k].split(":");\r\n +\t\t\t\t\t\t\t\t\t\tsv = so[k].split(sep);\r\n \t\t\t\t\t\t\t\t\t\tov = document.createElement("option");\r\n \t\t\t\t\t\t\t\t\t\tov.value = sv[0]; ov.innerHTML = sv[1];\r\n \t\t\t\t\t\t\t\t\t\telem.appendChild(ov);\r\n @@ -3882,13 +4035,13 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\tif(soptions.defaultValue) { $(elem).val(soptions.defaultValue); }\r\n +\t\t\t\t\t\t\t\tif(soptions.defaultValue !== undefined) { $(elem).val(soptions.defaultValue); }\r\n \t\t\t\t\t\t\t\tif(soptions.attr) {$(elem).attr(soptions.attr);}\r\n \t\t\t\t\t\t\t\tif(soptions.dataInit !== undefined) { soptions.dataInit(elem); }\r\n \t\t\t\t\t\t\t\tif(soptions.dataEvents !== undefined) { bindEvents(elem, soptions.dataEvents); }\r\n \t\t\t\t\t\t\t\t$(thd).append(elem);\r\n \t\t\t\t\t\t\t\tif(p.autosearch===true){\r\n -\t\t\t\t\t\t\t\t\t$(elem).change(function(e){\r\n +\t\t\t\t\t\t\t\t\t$(elem).change(function(){\r\n \t\t\t\t\t\t\t\t\t\ttriggerToolbar();\r\n \t\t\t\t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t\t\t\t});\r\n @@ -3897,7 +4050,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\tcase \'text\':\r\n -\t\t\t\t\t\tvar df = soptions.defaultValue ? soptions.defaultValue: "";\r\n +\t\t\t\t\t\tvar df = soptions.defaultValue !== undefined ? soptions.defaultValue: "";\r\n \t\t\t\t\t\t$(thd).append("\074input type=\'text\' style=\'width:95%;padding:0px;\' name=\'"+(cm.index || cm.name)+"\' id=\'gs_"+cm.name+"\' value=\'"+df+"\'/\076");\r\n \t\t\t\t\t\tif(soptions.attr) {$("input",thd).attr(soptions.attr);}\r\n \t\t\t\t\t\tif(soptions.dataInit !== undefined) { soptions.dataInit($("input",thd)[0]); }\r\n @@ -3956,8 +4109,9 @@ $.jgrid.extend({\r\n \t\t{\r\n \t\t\tvar $t = this, $tr, i, l, headers, $th, $resizing, grid = $t.grid,\r\n \t\t\tthead = $("table.ui-jqgrid-htable thead", grid.hDiv), cm = $t.p.colModel, hc;\r\n -\t\t\tif(!grid) return;\r\n +\t\t\tif(!grid) { return; }\r\n \r\n +\t\t\t$(this).unbind(\'.setGroupHeaders\');\r\n \t\t\t$tr = $("\074tr\076", {role: "rowheader"}).addClass("ui-jqgrid-labels");\r\n \t\t\theaders = grid.headers;\r\n \t\t\tfor (i = 0, l = headers.length; i \074 l; i++) {\r\n @@ -4009,9 +4163,8 @@ $.jgrid.extend({\r\n \t\t\t$trLabels = $htable.children("thead").children("tr.ui-jqgrid-labels:last").addClass("jqg-second-row-header"),\r\n \t\t\t$thead = $htable.children("thead"),\r\n \t\t\t$theadInTable,\r\n -\t\t\toriginalResizeStop,\r\n \t\t\t$firstHeaderRow = $htable.find(".jqg-first-row-header");\r\n -\t\t\tif($firstHeaderRow.html() === null) {\r\n +\t\t\tif($firstHeaderRow[0] === undefined) {\r\n \t\t\t\t$firstHeaderRow = $(\'\074tr\076\', {role: "row", "aria-hidden": "true"}).addClass("jqg-first-row-header").css("height", "auto");\r\n \t\t\t} else {\r\n \t\t\t\t$firstHeaderRow.empty();\r\n @@ -4119,17 +4272,10 @@ $.jgrid.extend({\r\n \t\t\t\t});\r\n \t\t\t}\r\n \r\n -\t\t\t// Preserve original resizeStop event if any defined\r\n -\t\t\tif ($.isFunction(ts.p.resizeStop)) {\r\n -\t\t\t\toriginalResizeStop = ts.p.resizeStop;\r\n -\t\t\t}\r\n \t\t\t$firstRow = $theadInTable.find("tr.jqg-first-row-header");\r\n -\t\t\tts.p.resizeStop = function (nw, idx) {\r\n +\t\t\t$(ts).bind(\'jqGridResizeStop.setGroupHeaders\', function (e, nw, idx) {\r\n \t\t\t\t$firstRow.find(\'th\').eq(idx).width(nw);\r\n -\t\t\t\tif ($.isFunction(originalResizeStop)) {\r\n -\t\t\t\t\toriginalResizeStop.call(ts, nw, idx);\r\n -\t\t\t\t}\r\n -\t\t\t};\r\n +\t\t\t});\r\n \t\t});\t\t\t\t\r\n \t},\r\n \tsetFrozenColumns : function () {\r\n @@ -4137,7 +4283,7 @@ $.jgrid.extend({\r\n \t\t\tif ( !this.grid ) {return;}\r\n \t\t\tvar $t = this, cm = $t.p.colModel,i=0, len = cm.length, maxfrozen = -1, frozen= false;\r\n \t\t\t// TODO treeGrid and grouping Support\r\n -\t\t\tif($t.p.subGrid == true || $t.p.treeGrid === true || $t.p.cellEdit == true || $t.p.sortable || $t.p.scroll || $t.p.grouping )\r\n +\t\t\tif($t.p.subGrid === true || $t.p.treeGrid === true || $t.p.cellEdit === true || $t.p.sortable || $t.p.scroll || $t.p.grouping )\r\n \t\t\t{\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n @@ -4160,12 +4306,11 @@ $.jgrid.extend({\r\n \t\t\tif( maxfrozen\076=0 \046\046 frozen) {\r\n \t\t\t\tvar top = $t.p.caption ? $($t.grid.cDiv).outerHeight() : 0,\r\n \t\t\t\thth = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).height();\r\n -\t\t\t\t$t.p.orgEvents = {};\r\n \t\t\t\t//headers\r\n \t\t\t\tif($t.p.toppager) {\r\n \t\t\t\t\ttop = top + $($t.grid.topDiv).outerHeight();\r\n \t\t\t\t}\r\n -\t\t\t\tif($t.p.toolbar[0] == true) {\r\n +\t\t\t\tif($t.p.toolbar[0] === true) {\r\n \t\t\t\t\tif($t.p.toolbar[1] != "bottom") {\r\n \t\t\t\t\t\ttop = top + $($t.grid.uDiv).outerHeight();\r\n \t\t\t\t\t}\r\n @@ -4180,7 +4325,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t$("th:gt("+maxfrozen+")",this).remove();\r\n \t\t\t\t\t});\r\n \t\t\t\t\tvar swapfroz = -1, fdel = -1;\r\n -\t\t\t\t\t$("tr.jqg-second-row-header th", htbl).each(function( i ){\r\n +\t\t\t\t\t$("tr.jqg-second-row-header th", htbl).each(function(){\r\n \t\t\t\t\t\tvar cs= parseInt($(this).attr("colspan"),10);\r\n \t\t\t\t\t\tif(cs) {\r\n \t\t\t\t\t\t\tswapfroz = swapfroz+cs;\r\n @@ -4193,7 +4338,7 @@ $.jgrid.extend({\r\n \t\t\t\t\tif(swapfroz !== maxfrozen) {\r\n \t\t\t\t\t\tfdel = maxfrozen;\r\n \t\t\t\t\t}\r\n -\t\t\t\t\t$("tr.jqg-second-row-header", htbl).each(function( i ){\r\n +\t\t\t\t\t$("tr.jqg-second-row-header", htbl).each(function(){\r\n \t\t\t\t\t\t$("th:gt("+fdel+")",this).remove();\r\n \t\t\t\t\t});\r\n \t\t\t\t} else {\r\n @@ -4207,29 +4352,14 @@ $.jgrid.extend({\r\n \t\t\t\t.mousemove(function (e) {\r\n \t\t\t\t\tif($t.grid.resizing){ $t.grid.dragMove(e);return false; }\r\n \t\t\t\t});\r\n -\t\t\t\tif ($.isFunction($t.p.resizeStop)) {\r\n -\t\t\t\t\t$t.p.orgEvents.resizeStop = $t.p.resizeStop;\r\n -\t\t\t\t}\r\n -\t\t\t\t$t.p.resizeStop = function(w, index)\r\n -\t\t\t\t{\r\n +\t\t\t\t$($t).bind(\'jqGridResizeStop.setFrozenColumns\', function (e, w, index) {\r\n \t\t\t\t\tvar rhth = $(".ui-jqgrid-htable",$t.grid.fhDiv);\r\n \t\t\t\t\t$("th:eq("+index+")",rhth).width( w ); \r\n \t\t\t\t\tvar btd = $(".ui-jqgrid-btable",$t.grid.fbDiv);\r\n \t\t\t\t\t$("tr:first td:eq("+index+")",btd).width( w ); \r\n -\t\t\t\t\t\r\n -\t\t\t\t\tif ($.isFunction($t.p.orgEvents.resizeStop)) {\r\n -\t\t\t\t\t\t$t.p.orgEvents.resizeStop.call($t, w, index);\r\n -\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t$t.p.orgEvents.resizeStop = null;\r\n -\t\t\t\t\t}\r\n -\t\t\t\t};\r\n +\t\t\t\t});\r\n \t\t\t\t// sorting stuff\r\n -\t\t\t\tif($.isFunction( $t.p.onSortCol)) {\r\n -\t\t\t\t\t$t.p.orgEvents.onSortCol = $t.p.onSortCol;\r\n -\t\t\t\t} else {\r\n -\t\t\t\t\t$t.p.orgEvents.onSortCol = null;\r\n -\t\t\t\t}\r\n -\t\t\t\t$t.p.onSortCol = function( index,idxcol,so ){\r\n +\t\t\t\t$($t).bind(\'jqGridOnSortCol.setFrozenColumns\', function (index, idxcol) {\r\n \r\n \t\t\t\t\tvar previousSelectedTh = $("tr.ui-jqgrid-labels:last th:eq("+$t.p.lastsort+")",$t.grid.fhDiv), newSelectedTh = $("tr.ui-jqgrid-labels:last th:eq("+idxcol+")",$t.grid.fhDiv);\r\n \r\n @@ -4243,10 +4373,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t$("span.s-ico",newSelectedTh).show();\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n -\t\t\t\t\tif(\t$.isFunction($t.p.orgEvents.onSortCol) ) {\r\n -\t\t\t\t\t\t$t.p.orgEvents.onSortCol.call($t,index,idxcol,so);\r\n -\t\t\t\t\t}\r\n -\t\t\t\t};\r\n +\t\t\t\t});\r\n \t\t\t\t\r\n \t\t\t\t// data stuff\r\n \t\t\t\t//TODO support for setRowData\r\n @@ -4254,15 +4381,10 @@ $.jgrid.extend({\r\n \t\t\t\tjQuery($t.grid.bDiv).scroll(function () {\r\n \t\t\t\t\tjQuery($t.grid.fbDiv).scrollTop(jQuery(this).scrollTop());\r\n \t\t\t\t});\r\n -\t\t\t\tif ($.isFunction($t.p._complete)) {\r\n -\t\t\t\t\t$t.p.orgEvents.complete = $t.p._complete;\r\n -\t\t\t\t} else {\r\n -\t\t\t\t\t$t.p.orgEvents.complete = null;\r\n -\t\t\t\t}\r\n \t\t\t\tif($t.p.hoverrows === true) {\r\n \t\t\t\t\t$("#"+$.jgrid.jqID($t.p.id)).unbind(\'mouseover\').unbind(\'mouseout\');\r\n \t\t\t\t}\r\n -\t\t\t\t$t.p._complete = function() {\r\n +\t\t\t\t$($t).bind(\'jqGridAfterGridComplete.setFrozenColumns\', function () {\r\n \t\t\t\t\t$("#"+$.jgrid.jqID($t.p.id)+"_frozen").remove();\r\n \t\t\t\t\tjQuery($t.grid.fbDiv).height( jQuery($t.grid.bDiv).height()-16);\r\n \t\t\t\t\tvar btbl = $("#"+$.jgrid.jqID($t.p.id)).clone(true);\r\n @@ -4270,12 +4392,12 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t$("td:gt("+maxfrozen+")",this).remove();\r\n \t\t\t\t\t});\r\n \r\n -\t\t\t\t\t$(btbl).width(1).attr("id",$.jgrid.jqID($t.p.id)+"_frozen");\r\n +\t\t\t\t\t$(btbl).width(1).attr("id",$t.p.id+"_frozen");\r\n \t\t\t\t\t$($t.grid.fbDiv).append(btbl);\r\n \t\t\t\t\tif($t.p.hoverrows === true) {\r\n \t\t\t\t\t\t$("tr.jqgrow", btbl).hover(\r\n -\t\t\t\t\t\t\tfunction(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).addClass("ui-state-hover") },\r\n -\t\t\t\t\t\t\tfunction(){ $(this).removeClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).removeClass("ui-state-hover") }\r\n +\t\t\t\t\t\t\tfunction(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).addClass("ui-state-hover"); },\r\n +\t\t\t\t\t\t\tfunction(){ $(this).removeClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)).removeClass("ui-state-hover"); }\r\n \t\t\t\t\t\t);\r\n \t\t\t\t\t\t$("tr.jqgrow", "#"+$.jgrid.jqID($t.p.id)).hover(\r\n \t\t\t\t\t\t\tfunction(){ $(this).addClass("ui-state-hover"); $("#"+$.jgrid.jqID(this.id), "#"+$.jgrid.jqID($t.p.id)+"_frozen").addClass("ui-state-hover");},\r\n @@ -4283,10 +4405,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tbtbl=null;\r\n -\t\t\t\t\tif($.isFunction($t.p.orgEvents.complete)) {\r\n -\t\t\t\t\t\t$t.p.orgEvents.complete.call($t);\r\n -\t\t\t\t\t}\r\n -\t\t\t\t};\r\n +\t\t\t\t});\r\n \t\t\t\t$t.p.frozenColumns = true;\r\n \t\t\t}\r\n \t\t});\r\n @@ -4299,11 +4418,8 @@ $.jgrid.extend({\r\n \t\t\t\t$($t.grid.fhDiv).remove();\r\n \t\t\t\t$($t.grid.fbDiv).remove();\r\n \t\t\t\t$t.grid.fhDiv = null; $t.grid.fbDiv=null;\r\n -\t\t\t\t$t.p._complete = $t.p.orgEvents.complete;\r\n -\t\t\t\t$t.p.resizeStop = $t.p.orgEvents.resizeStop;\r\n -\t\t\t\t$t.p.onSortCol = $t.p.orgEvents.onSortCol;\r\n -\t\t\t\t$t.p.orgEvents = null;\r\n -\t\t\t\tif($t.p.hoverrows == true) {\r\n +\t\t\t\t$(this).unbind(\'.setFrozenColumns\');\r\n +\t\t\t\tif($t.p.hoverrows === true) {\r\n \t\t\t\t\tvar ptr;\r\n \t\t\t\t\t$("#"+$.jgrid.jqID($t.p.id)).bind(\'mouseover\',function(e) {\r\n \t\t\t\t\t\tptr = $(e.target).closest("tr.jqgrow");\r\n @@ -4405,39 +4521,39 @@ $.jqDnR={\r\n \tdnr:{},\r\n \te:0,\r\n \tdrag:function(v){\r\n - \t\tif(M.k == \'d\')E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY});\r\n - \t\telse {\r\n +\t\tif(M.k == \'d\'){E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY});}\r\n +\t\telse {\r\n \t\t\tE.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)});\r\n \t\t\tif(M1){E1.css({width:Math.max(v.pageX-M1.pX+M1.W,0),height:Math.max(v.pageY-M1.pY+M1.H,0)});}\r\n \t\t}\r\n - \t\treturn false;\r\n - \t},\r\n +\t\treturn false;\r\n +\t},\r\n \tstop:function(){\r\n \t\t//E.css(\'opacity\',M.o);\r\n \t\t$(document).unbind(\'mousemove\',J.drag).unbind(\'mouseup\',J.stop);\r\n \t}\r\n };\r\n -var J=$.jqDnR,M=J.dnr,E=J.e,E1,\r\n +var J=$.jqDnR,M=J.dnr,E=J.e,E1,M1,\r\n i=function(e,h,k,aR){\r\n \treturn e.each(function(){\r\n \t\th=(h)?$(h,e):e;\r\n - \t\th.bind(\'mousedown\',{e:e,k:k},function(v){\r\n - \t\t\tvar d=v.data,p={};E=d.e;E1 = aR ? $(aR) : false;\r\n - \t\t\t// attempt utilization of dimensions plugin to fix IE issues\r\n - \t\t\tif(E.css(\'position\') != \'relative\'){try{E.position(p);}catch(e){}}\r\n - \t\t\tM={\r\n - \t\t\t\tX:p.left||f(\'left\')||0,\r\n - \t\t\t\tY:p.top||f(\'top\')||0,\r\n - \t\t\t\tW:f(\'width\')||E[0].scrollWidth||0,\r\n - \t\t\t\tH:f(\'height\')||E[0].scrollHeight||0,\r\n - \t\t\t\tpX:v.pageX,\r\n - \t\t\t\tpY:v.pageY,\r\n - \t\t\t\tk:d.k\r\n - \t\t\t\t//o:E.css(\'opacity\')\r\n - \t\t\t};\r\n +\t\th.bind(\'mousedown\',{e:e,k:k},function(v){\r\n +\t\t\tvar d=v.data,p={};E=d.e;E1 = aR ? $(aR) : false;\r\n +\t\t\t// attempt utilization of dimensions plugin to fix IE issues\r\n +\t\t\tif(E.css(\'position\') != \'relative\'){try{E.position(p);}catch(e){}}\r\n +\t\t\tM={\r\n +\t\t\t\tX:p.left||f(\'left\')||0,\r\n +\t\t\t\tY:p.top||f(\'top\')||0,\r\n +\t\t\t\tW:f(\'width\')||E[0].scrollWidth||0,\r\n +\t\t\t\tH:f(\'height\')||E[0].scrollHeight||0,\r\n +\t\t\t\tpX:v.pageX,\r\n +\t\t\t\tpY:v.pageY,\r\n +\t\t\t\tk:d.k\r\n +\t\t\t\t//o:E.css(\'opacity\')\r\n +\t\t\t};\r\n \t\t\t// also resize\r\n \t\t\tif(E1 \046\046 d.k != \'d\'){\r\n - \t\t\t\tM1={\r\n +\t\t\t\tM1={\r\n \t\t\t\t\tX:p.left||f1(\'left\')||0,\r\n \t\t\t\t\tY:p.top||f1(\'top\')||0,\r\n \t\t\t\t\tW:E1[0].offsetWidth||f1(\'width\')||0,\r\n @@ -4447,17 +4563,17 @@ i=function(e,h,k,aR){\r\n \t\t\t\t\tk:d.k\r\n \t\t\t\t};\r\n \t\t\t} else {M1 = false;}\t\t\t\r\n - \t\t\t//E.css({opacity:0.8});\r\n +\t\t\t//E.css({opacity:0.8});\r\n \t\t\tif($("input.hasDatepicker",E[0])[0]) {\r\n \t\t\ttry {$("input.hasDatepicker",E[0]).datepicker(\'hide\');}catch (dpe){}\r\n \t\t\t}\r\n - \t\t\t$(document).mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);\r\n - \t\t\treturn false;\r\n - \t\t});\r\n +\t\t\t$(document).mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);\r\n +\t\t\treturn false;\r\n +\t\t});\r\n \t});\r\n },\r\n -f=function(k){return parseInt(E.css(k))||false;};\r\n -f1=function(k){\treturn parseInt(E1.css(k))||false;};\r\n +f=function(k){return parseInt(E.css(k),10)||false;},\r\n +f1=function(k){return parseInt(E1.css(k),10)||false;};\r\n })(jQuery);/*\r\n \tThe below work is licensed under Creative Commons GNU LGPL License.\r\n \r\n @@ -4548,26 +4664,7 @@ var xmlJsonClass = {\r\n \t\t\telse {\r\n \t\t\t\tif (v === undefined ) { v = ""; }\r\n \t\t\t\tif (v.toString() === "\\"\\"" || v.toString().length === 0) {\r\n -\t\t\t\t\txml += ind + "\074" + name + "\076__EMPTY_STRING_\074</string> </value> - </item> - <item> - <key> <string>next</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="4" aka="AAAAAAAAAAQ="> - <pickle> - <global name="Pdata" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>data</string> </key> - <value> <string>/" + name + "\076";\r\n +\t\t\t\t\txml += ind + "\074" + name + "\076__EMPTY_STRING_\074/" + name + "\076";\r\n \t\t\t\t} \r\n \t\t\t\telse {\r\n \t\t\t\t\txml += ind + "\074" + name + "\076" + v.toString() + "\074/" + name + "\076";\r\n @@ -4742,7 +4839,7 @@ var xmlJsonClass = {\r\n \t\t\t//}\r\n \t\t\t}\r\n \t\telse {\r\n -\t\t\tjson += (name \046\046 ":") + "\\"" + o.toString()+ "\\"";\r\n +\t\t\tjson += (name \046\046 ":") + o.toString();\r\n \t\t}\r\n \t\treturn json;\r\n \t},\r\n @@ -4831,6 +4928,7 @@ var xmlJsonClass = {\r\n **/\r\n \r\n ;(function($) {\r\n +"use strict";\t\r\n \t$.fmatter = {};\r\n \t//opts can be id:row id for the row, rowdata:the data for the row, colmodel:the column model for this column\r\n \t//example {id:1234,}\r\n @@ -4871,9 +4969,9 @@ var xmlJsonClass = {\r\n \t\tvar v=cellval;\r\n \t\topts = $.extend({}, $.jgrid.formatter, opts);\r\n \r\n -\t\tif ($.fn.fmatter[formatType]){\r\n -\t\t\tv = $.fn.fmatter[formatType](cellval, opts, rwd, act);\r\n -\t\t}\r\n +\t\ttry {\r\n +\t\t\tv = $.fn.fmatter[formatType].call(this, cellval, opts, rwd, act);\r\n +\t\t} catch(fe){}\r\n \t\treturn v;\r\n \t};\r\n \t$.fmatter.util = {\r\n @@ -4960,7 +5058,7 @@ var xmlJsonClass = {\r\n \t\t\tif( format in opts.masks ) { format = opts.masks[format]; }\r\n \t\t\tif( !isNaN( date - 0 ) \046\046 String(format).toLowerCase() == "u") {\r\n \t\t\t\t//Unix timestamp\r\n -\t\t\t timestamp = new Date( parseFloat(date)*1000 );\r\n +\t\t\t\ttimestamp = new Date( parseFloat(date)*1000 );\r\n \t\t\t} else if(date.constructor === Date) {\r\n \t\t\t\ttimestamp = date;\r\n \t\t\t\t// Microsoft date format support\r\n @@ -5081,7 +5179,7 @@ var xmlJsonClass = {\r\n \t};\r\n \t$.fn.fmatter.checkbox =function(cval, opts) {\r\n \t\tvar op = $.extend({},opts.checkbox), ds;\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n \t\tif(op.disabled===true) {ds = "disabled=\\"disabled\\"";} else {ds="";}\r\n @@ -5093,10 +5191,29 @@ var xmlJsonClass = {\r\n \t$.fn.fmatter.link = function(cellval, opts) {\r\n \t\tvar op = {target:opts.target};\r\n \t\tvar target = "";\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n -\t\tif(op.target) {target = \'target=\' + op.target;}\r\n +\t\tif(op.target) {target = \'target=\' + op.targe</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string>t;}\r\n \t\tif(!$.fmatter.isEmpty(cellval)) {\r\n \t\t\treturn "\074a "+target+" href=\\"" + cellval + "\\"\076" + cellval + "\074/a\076";\r\n \t\t}else {\r\n @@ -5106,7 +5223,7 @@ var xmlJsonClass = {\r\n \t$.fn.fmatter.showlink = function(cellval, opts) {\r\n \t\tvar op = {baseLinkUrl: opts.baseLinkUrl,showAction:opts.showAction, addParam: opts.addParam || "", target: opts.target, idName: opts.idName},\r\n \t\ttarget = "", idUrl;\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n \t\tif(op.target) {target = \'target=\' + op.target;}\r\n @@ -5119,7 +5236,7 @@ var xmlJsonClass = {\r\n \t};\r\n \t$.fn.fmatter.integer = function(cellval, opts) {\r\n \t\tvar op = $.extend({},opts.integer);\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n \t\tif($.fmatter.isEmpty(cellval)) {\r\n @@ -5129,7 +5246,7 @@ var xmlJsonClass = {\r\n \t};\r\n \t$.fn.fmatter.number = function (cellval, opts) {\r\n \t\tvar op = $.extend({},opts.number);\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n \t\tif($.fmatter.isEmpty(cellval)) {\r\n @@ -5139,7 +5256,7 @@ var xmlJsonClass = {\r\n \t};\r\n \t$.fn.fmatter.currency = function (cellval, opts) {\r\n \t\tvar op = $.extend({},opts.currency);\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n \t\tif($.fmatter.isEmpty(cellval)) {\r\n @@ -5149,7 +5266,7 @@ var xmlJsonClass = {\r\n \t};\r\n \t$.fn.fmatter.date = function (cellval, opts, rwd, act) {\r\n \t\tvar op = $.extend({},opts.date);\r\n -\t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n +\t\tif(opts.colModel !== undefined \046\046 !$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend({},op,opts.colModel.formatoptions);\r\n \t\t}\r\n \t\tif(!op.reformatAfterEdit \046\046 act==\'edit\'){\r\n @@ -5160,16 +5277,18 @@ var xmlJsonClass = {\r\n \t\t\treturn $.fn.fmatter.defaultFormat(cellval, opts);\r\n \t\t}\r\n \t};\r\n -\t$.fn.fmatter.select = function (cellval,opts, rwd, act) {\r\n +\t$.fn.fmatter.select = function (cellval,opts) {\r\n \t\t// jqGrid specific\r\n \t\tcellval = cellval + "";\r\n -\t\tvar oSelect = false, ret=[], sep;\r\n +\t\tvar oSelect = false, ret=[], sep, delim;\r\n \t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)){\r\n \t\t\toSelect= opts.colModel.formatoptions.value;\r\n \t\t\tsep = opts.colModel.formatoptions.separator === undefined ? ":" : opts.colModel.formatoptions.separator;\r\n +\t\t\tdelim = opts.colModel.formatoptions.delimiter === undefined ? ";" : opts.colModel.formatoptions.delimiter;\r\n \t\t} else if(!$.fmatter.isUndefined(opts.colModel.editoptions)){\r\n \t\t\toSelect= opts.colModel.editoptions.value;\r\n \t\t\tsep = opts.colModel.editoptions.separator === undefined ? ":" : opts.colModel.editoptions.separator;\r\n +\t\t\tdelim = opts.colModel.editoptions.delimiter === undefined ? ";" : opts.colModel.editoptions.delimiter;\r\n \t\t}\r\n \t\tif (oSelect) {\r\n \t\t\tvar\tmsl = opts.colModel.editoptions.multiple === true ? true : false,\r\n @@ -5177,14 +5296,14 @@ var xmlJsonClass = {\r\n \t\t\tif(msl) {scell = cellval.split(",");scell = $.map(scell,function(n){return $.trim(n);});}\r\n \t\t\tif ($.fmatter.isString(oSelect)) {\r\n \t\t\t\t// mybe here we can use some caching with care ????\r\n -\t\t\t\tvar so = oSelect.split(";"), j=0;\r\n +\t\t\t\tvar so = oSelect.split(delim), j=0;\r\n \t\t\t\tfor(var i=0; i\074so.length;i++){\r\n \t\t\t\t\tsv = so[i].split(sep);\r\n \t\t\t\t\tif(sv.length \076 2 ) {\r\n -\t\t\t\t\t\tsv[1] = jQuery.map(sv,function(n,i){if(i\0760) {return n;}}).join(":");\r\n +\t\t\t\t\t\tsv[1] = $.map(sv,function(n,i){if(i\0760) {return n;}}).join(sep);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(msl) {\r\n -\t\t\t\t\t\tif(jQuery.inArray(sv[0],scell)\076-1) {\r\n +\t\t\t\t\t\tif($.inArray(sv[0],scell)\076-1) {\r\n \t\t\t\t\t\t\tret[j] = sv[1];\r\n \t\t\t\t\t\t\tj++;\r\n \t\t\t\t\t\t}\r\n @@ -5196,7 +5315,7 @@ var xmlJsonClass = {\r\n \t\t\t} else if($.fmatter.isObject(oSelect)) {\r\n \t\t\t\t// this is quicker\r\n \t\t\t\tif(msl) {\r\n -\t\t\t\t\tret = jQuery.map(scell, function(n, i){\r\n +\t\t\t\t\tret = $.map(scell, function(n){\r\n \t\t\t\t\t\treturn oSelect[n];\r\n \t\t\t\t\t});\r\n \t\t\t\t} else {\r\n @@ -5217,6 +5336,8 @@ var xmlJsonClass = {\r\n \t\t\tafterRestore: null,\r\n \t\t\textraparam: {},\r\n \t\t\turl: null,\r\n +\t\t\trestoreAfterError: true,\r\n +\t\t\tmtype: "POST",\r\n \t\t\tdelOptions: {},\r\n \t\t\teditOptions : {}\r\n \t\t};\r\n @@ -5234,12 +5355,12 @@ var xmlJsonClass = {\r\n \t\t}\r\n \t\tvar $t = $("#"+gid)[0];\r\n \t\tvar saverow = function( rowid, res)\t{\r\n -\t\t\tif(op.afterSave) op.afterSave.call($t, rowid, res);\r\n +\t\t\tif($.isFunction(op.afterSave)) { op.afterSave.call($t, rowid, res); }\r\n \t\t\t$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid + ".ui-jqgrid-btable:first").show();\r\n \t\t\t$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();\r\n \t\t},\r\n \t\trestorerow = function( rowid)\t{\r\n -\t\t\tif(op.afterRestore) op.afterRestore.call($t, rowid);\r\n +\t\t\tif($.isFunction(op.afterRestore) ) { op.afterRestore.call($t, rowid); }\r\n \t\t\t$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();\r\n \t\t\t$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();\r\n \t\t};\r\n @@ -5248,26 +5369,38 @@ var xmlJsonClass = {\r\n \t\t\toper = opers.oper;\r\n \t\t\top.extraparam[oper] = opers.addoper;\r\n \t\t}\r\n +\t\tvar actop = {\r\n +\t\t\tkeys : op.keys,\r\n +\t\t\toneditfunc: op.onEdit,\r\n +\t\t\tsuccessfunc: op.onSuccess,\r\n +\t\t\turl: op.url,\r\n +\t\t\textraparam: op.extraparam,\r\n +\t\t\taftersavefunc: saverow,\r\n +\t\t\terrorfunc: op.onError,\r\n +\t\t\tafterrestorefunc: restorerow,\r\n +\t\t\trestoreAfterError: op.restoreAfterError,\r\n +\t\t\tmtype: op.mtype\r\n +\t\t};\r\n \t\tswitch(act)\r\n \t\t{\r\n \t\t\tcase \'edit\':\r\n -\t\t\t\t$(\'#\'+gid).jqGrid(\'editRow\',rid, op.keys, op.onEdit, op.onSuccess, op.url, op.extraparam, saverow, op.onError,restorerow);\r\n +\t\t\t\t$(\'#\'+gid).jqGrid(\'editRow\', rid, actop);\r\n \t\t\t\t$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").hide();\r\n \t\t\t\t$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").show();\r\n -\t\t\t\tif($.isFunction($t.p._complete)) {$t.p._complete.call($t);}\r\n +\t\t\t\t$($t).triggerHandler("jqGridAfterGridComplete");\r\n \t\t\t\tbreak;\r\n \t\t\tcase \'save\':\r\n -\t\t\t\tif ( $(\'#\'+gid).jqGrid(\'saveRow\',rid, op.onSuccess,op.url, op.extraparam, saverow, op.onError,restorerow) ) {\r\n +\t\t\t\tif ( $(\'#\'+gid).jqGrid(\'saveRow\', rid, actop) ) {\r\n \t\t\t\t$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();\r\n \t\t\t\t$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();\r\n -\t\t\t\tif($.isFunction($t.p._complete)) {$t.p._complete.call($t);}\r\n +\t\t\t\t$($t).triggerHandler("jqGridAfterGridComplete");\r\n \t\t\t\t}\r\n \t\t\t\tbreak;\r\n \t\t\tcase \'cancel\' :\r\n \t\t\t\t$(\'#\'+gid).jqGrid(\'restoreRow\',rid, restorerow);\r\n \t\t\t\t$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();\r\n \t\t\t\t$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();\r\n -\t\t\t\tif($.isFunction($t.p._complete)) {$t.p._complete.call($t);}\r\n +\t\t\t\t$($t).triggerHandler("jqGridAfterGridComplete");\r\n \t\t\t\tbreak;\r\n \t\t\tcase \'del\':\r\n \t\t\t\t$(\'#\'+gid).jqGrid(\'delGridRow\',rid, op.delOptions);\r\n @@ -5278,7 +5411,7 @@ var xmlJsonClass = {\r\n \t\t\t\tbreak;\r\n \t\t}\r\n \t};\r\n -\t$.fn.fmatter.actions = function(cellval,opts, rwd) {\r\n +\t$.fn.fmatter.actions = function(cellval,opts) {\r\n \t\tvar op ={keys:false, editbutton:true, delbutton:true, editformbutton: false};\r\n \t\tif(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {\r\n \t\t\top = $.extend(op,opts.colModel.formatoptions);\r\n @@ -5286,9 +5419,9 @@ var xmlJsonClass = {\r\n \t\tvar rowid = opts.rowId, str="",ocl;\r\n \t\tif(typeof(rowid) ==\'undefined\' || $.fmatter.isEmpty(rowid)) {return "";}\r\n \t\tif(op.editformbutton){\r\n -\t\t\tocl = "onclick=jQuery.fn.fmatter.rowactions(\'"+rowid+"\',\'"+opts.gid+"\',\'formedit\',"+opts.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\'); "\r\n +\t\t\tocl = "onclick=jQuery.fn.fmatter.rowactions(\'"+rowid+"\',\'"+opts.gid+"\',\'formedit\',"+opts.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\'); ";\r\n \t\t\tstr =str+ "\074div title=\'"+$.jgrid.nav.edittitle+"\' style=\'float:left;cursor:pointer;\' class=\'ui-pg-div ui-inline-edit\' "+ocl+"\076\074span class=\'ui-icon ui-icon-pencil\'\076\074/span\076\074/div\076";\r\n -\t\t} else \tif(op.editbutton){\r\n +\t\t} else if(op.editbutton){\r\n \t\t\tocl = "onclick=jQuery.fn.fmatter.rowactions(\'"+rowid+"\',\'"+opts.gid+"\',\'edit\',"+opts.pos+"); onmouseover=jQuery(this).addClass(\'ui-state-hover\'); onmouseout=jQuery(this).removeClass(\'ui-state-hover\') ";\r\n \t\t\tstr =str+ "\074div title=\'"+$.jgrid.nav.edittitle+"\' style=\'float:left;cursor:pointer;\' class=\'ui-pg-div ui-inline-edit\' "+ocl+"\076\074span class=\'ui-icon ui-icon-pencil\'\076\074/span\076\074/div\076";\r\n \t\t}\r\n @@ -5309,7 +5442,7 @@ var xmlJsonClass = {\r\n \t\tre = /([\\.\\*\\_\\\'\\(\\)\\{\\}\\+\\?\\\\])/g,\r\n \t\tunformatFunc = options.colModel.unformat||($.fn.fmatter[formatType] \046\046 $.fn.fmatter[formatType].unformat);\r\n \t\tif(typeof unformatFunc !== \'undefined\' \046\046 $.isFunction(unformatFunc) ) {\r\n -\t\t\tret = unformatFunc($(cellval).text(), options, cellval);\r\n +\t\t\tret = unformatFunc.call(this, $(cellval).text(), options, cellval);\r\n \t\t} else if(!$.fmatter.isUndefined(formatType) \046\046 $.fmatter.isString(formatType) ) {\r\n \t\t\tvar opts = $.jgrid.formatter || {}, stripTag;\r\n \t\t\tswitch(formatType) {\r\n @@ -5329,7 +5462,14 @@ var xmlJsonClass = {\r\n \t\t\t\t\top = $.extend({},opts.currency,op);\r\n \t\t\t\t\tsep = op.thousandsSeparator.replace(re,"\\\\$1");\r\n \t\t\t\t\tstripTag = new RegExp(sep, "g");\r\n -\t\t\t\t\tret = $(cellval).text().replace(stripTag,\'\').replace(op.decimalSeparator,\'.\').replace(op.prefix,\'\').replace(op.suffix,\'\');\r\n +\t\t\t\t\tret = $(cellval).text();\r\n +\t\t\t\t\tif (op.prefix \046\046 op.prefix.length) {\r\n +\t\t\t\t\t\tret = ret.substr(op.prefix.length);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tif (op.suffix \046\046 op.suffix.length) {\r\n +\t\t\t\t\t\tret = ret.substr(0, ret.length - op.suffix.length);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tret = ret.replace(stripTag,\'\').replace(op.decimalSeparator,\'.\');\r\n \t\t\t\t\tbreak;\r\n \t\t\t\tcase \'checkbox\':\r\n \t\t\t\t\tvar cbv = (options.colModel.editoptions) ? options.colModel.editoptions.value.split(":") : ["Yes","No"];\r\n @@ -5352,21 +5492,24 @@ var xmlJsonClass = {\r\n \t\tvar ret = [];\r\n \t\tvar cell = $(cellval).text();\r\n \t\tif(cnt===true) {return cell;}\r\n -\t\tvar op = $.extend({},options.colModel.editoptions);\r\n +\t\tvar op = $.extend({}, !$.fmatter.isUndefined(options.colModel.formatoptions) ? options.colModel.formatoptions: options.colModel.editoptions),\r\n +\t\tsep = op.separator === undefined ? ":" : op.separator,\r\n +\t\tdelim = op.delimiter === undefined ? ";" : op.delimiter;\r\n +\t\t\r\n \t\tif(op.value){\r\n \t\t\tvar oSelect = op.value,\r\n \t\t\tmsl = op.multiple === true ? true : false,\r\n \t\t\tscell = [], sv;\r\n \t\t\tif(msl) {scell = cell.split(",");scell = $.map(scell,function(n){return $.trim(n);});}\r\n \t\t\tif ($.fmatter.isString(oSelect)) {\r\n -\t\t\t\tvar so = oSelect.split(";"), j=0;\r\n +\t\t\t\tvar so = oSelect.split(delim), j=0;\r\n \t\t\t\tfor(var i=0; i\074so.length;i++){\r\n -\t\t\t\t\tsv = so[i].split(":");\r\n +\t\t\t\t\tsv = so[i].split(sep);\r\n \t\t\t\t\tif(sv.length \076 2 ) {\r\n -\t\t\t\t\t\tsv[1] = jQuery.map(sv,function(n,i){if(i\0760) {return n;}}).join(":");\r\n +\t\t\t\t\t\tsv[1] = $.map(sv,function(n,i){if(i\0760) {return n;}}).join(sep);\r\n \t\t\t\t\t}\t\t\t\t\t\r\n \t\t\t\t\tif(msl) {\r\n -\t\t\t\t\t\tif(jQuery.inArray(sv[1],scell)\076-1) {\r\n +\t\t\t\t\t\tif($.inArray(sv[1],scell)\076-1) {\r\n \t\t\t\t\t\t\tret[j] = sv[0];\r\n \t\t\t\t\t\t\tj++;\r\n \t\t\t\t\t\t}\r\n @@ -5377,7 +5520,7 @@ var xmlJsonClass = {\r\n \t\t\t\t}\r\n \t\t\t} else if($.fmatter.isObject(oSelect) || $.isArray(oSelect) ){\r\n \t\t\t\tif(!msl) {scell[0] = cell;}\r\n -\t\t\t\tret = jQuery.map(scell, function(n){\r\n +\t\t\t\tret = $.map(scell, function(n){\r\n \t\t\t\t\tvar rv;\r\n \t\t\t\t\t$.each(oSelect, function(i,val){\r\n \t\t\t\t\t\tif (val == n) {\r\n @@ -5399,7 +5542,7 @@ var xmlJsonClass = {\r\n \t\t\top = $.extend({},op,opts.formatoptions);\r\n \t\t}\t\t\r\n \t\tif(!$.fmatter.isEmpty(cellval)) {\r\n -\t\t\treturn $.fmatter.util.DateFormat(op.newformat,cellval,op.srcformat,op);\r\n +\t\t\treturn $.fmatter.util.DateFormat(op.newformat,cellval,op.srcformat,op);\r\n \t\t} else {\r\n \t\t\treturn $.fn.fmatter.defaultFormat(cellval, opts);\r\n \t\t}\r\n @@ -5452,7 +5595,8 @@ $.extend($.jgrid,{\r\n \t\t}\r\n \t\treturn [curleft,curtop];\r\n \t},\r\n -\tcreateModal : function(aIDs, content, p, insertSelector, posSelector, appendsel, css) {\t\t\r\n +\tcreateModal : function(aIDs, content, p, insertSelector, posSelector, appendsel, css) {\r\n +\t\tp = $.extend(true, $.jgrid.jqModal || {}, p);\r\n \t\tvar mw = document.createElement(\'div\'), rtlsup, self = this;\r\n \t\tcss = $.extend({}, css || {});\r\n \t\trtlsup = $(p.gbox).attr("dir") == "rtl" ? true : false;\r\n @@ -5491,7 +5635,7 @@ $.extend($.jgrid,{\r\n \t\tif ( $.fn.jqm \046\046 p.jqModal === true) {\r\n \t\t\tif(p.left ===0 \046\046 p.top===0 \046\046 p.overlay) {\r\n \t\t\t\tvar pos = [];\r\n -\t\t\t\tpos = this.findPos(posSelector);\r\n +\t\t\t\tpos = $.jgrid.findPos(posSelector);\r\n \t\t\t\tp.left = pos[0] + 4;\r\n \t\t\t\tp.top = pos[1] + 4;\r\n \t\t\t}\r\n @@ -5501,10 +5645,10 @@ $.extend($.jgrid,{\r\n \t\t\tcoord.left = p.left;\r\n \t\t\tcoord.top = p.top+"px";\r\n \t\t}\r\n -\t\t$("a.ui-jqdialog-titlebar-close",mh).click(function(e){\r\n -\t\t\tvar oncm = $("#"+aIDs.themodal).data("onClose") || p.onClose;\r\n -\t\t\tvar gboxclose = $("#"+aIDs.themodal).data("gbox") || p.gbox;\r\n -\t\t\tself.hideModal("#"+aIDs.themodal,{gb:gboxclose,jqm:p.jqModal,onClose:oncm});\r\n +\t\t$("a.ui-jqdialog-titlebar-close",mh).click(function(){\r\n +\t\t\tvar oncm = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose;\r\n +\t\t\tvar gboxclose = $("#"+$.jgrid.jqID(aIDs.themodal)).data("gbox") || p.gbox;\r\n +\t\t\tself.hideModal("#"+$.jgrid.jqID(aIDs.themodal),{gb:gboxclose,jqm:p.jqModal,onClose:oncm});\r\n \t\t\treturn false;\r\n \t\t});\r\n \t\tif (p.width === 0 || !p.width) {p.width = 300;}\r\n @@ -5539,24 +5683,24 @@ $.extend($.jgrid,{\r\n \t\t\t\t$(mw).jqDrag(mh);\r\n \t\t\t} else {\r\n \t\t\t\ttry {\r\n -\t\t\t\t\t$(mw).draggable({handle: $("#"+mh.id)});\r\n +\t\t\t\t\t$(mw).draggable({handle: $("#"+$.jgrid.jqID(mh.id))});\r\n \t\t\t\t} catch (e) {}\r\n \t\t\t}\r\n \t\t}\r\n \t\tif(p.resize) {\r\n \t\t\tif($.fn.jqResize) {\r\n \t\t\t\t$(mw).append("\074div class=\'jqResize ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se ui-icon-grip-diagonal-se\'\076\074/div\076");\r\n -\t\t\t\t$("#"+aIDs.themodal).jqResize(".jqResize",aIDs.scrollelm ? "#"+aIDs.scrollelm : false);\r\n +\t\t\t\t$("#"+$.jgrid.jqID(aIDs.themodal)).jqResize(".jqResize",aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false);\r\n \t\t\t} else {\r\n \t\t\t\ttry {\r\n -\t\t\t\t\t$(mw).resizable({handles: \'se, sw\',alsoResize: aIDs.scrollelm ? "#"+aIDs.scrollelm : false});\r\n +\t\t\t\t\t$(mw).resizable({handles: \'se, sw\',alsoResize: aIDs.scrollelm ? "#"+$.jgrid.jqID(aIDs.scrollelm) : false});\r\n \t\t\t\t} catch (r) {}\r\n \t\t\t}\r\n \t\t}\r\n \t\tif(p.closeOnEscape === true){\r\n \t\t\t$(mw).keydown( function( e ) {\r\n \t\t\t\tif( e.which == 27 ) {\r\n -\t\t\t\t\tvar cone = $("#"+aIDs.themodal).data("onClose") || p.onClose;\r\n +\t\t\t\t\tvar cone = $("#"+$.jgrid.jqID(aIDs.themodal)).data("onClose") || p.onClose;\r\n \t\t\t\t\tself.hideModal(this,{gb:p.gbox,jqm:p.jqModal,onClose: cone});\r\n \t\t\t\t}\r\n \t\t\t});\r\n @@ -5568,8 +5712,8 @@ $.extend($.jgrid,{\r\n \t\t\toverlay: 10,\r\n \t\t\tmodal: false,\r\n \t\t\toverlayClass : \'ui-widget-overlay\',\r\n -\t\t\tonShow: this.showModal,\r\n -\t\t\tonHide: this.closeModal,\r\n +\t\t\tonShow: $.jgrid.showModal,\r\n +\t\t\tonHide: $.jgrid.closeModal,\r\n \t\t\tgbox: \'\',\r\n \t\t\tjqm : true,\r\n \t\t\tjqM : true\r\n @@ -5628,11 +5772,11 @@ $.extend($.jgrid,{\r\n \r\n \t\ttry {\r\n \t\t\tif($("#info_dialog").attr("aria-hidden") == "false") {\r\n -\t\t\t\tthis.hideModal("#info_dialog",{jqm:jm});\r\n +\t\t\t\t$.jgrid.hideModal("#info_dialog",{jqm:jm});\r\n \t\t\t}\r\n \t\t\t$("#info_dialog").remove();\r\n \t\t} catch (e){}\r\n -\t\tthis.createModal({\r\n +\t\t$.jgrid.createModal({\r\n \t\t\tthemodal:\'info_dialog\',\r\n \t\t\tmodalhead:\'info_head\',\r\n \t\t\tmodalcontent:\'info_content\',\r\n @@ -5644,10 +5788,10 @@ $.extend($.jgrid,{\r\n \t\t// attach onclick after inserting into the dom\r\n \t\tif(buttstr) {\r\n \t\t\t$.each(mopt.buttons,function(i){\r\n -\t\t\t\t$("#"+this.id,"#info_id").bind(\'click\',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;});\r\n +\t\t\t\t$("#"+$.jgrid.jqID(this.id),"#info_id").bind(\'click\',function(){mopt.buttons[i].onClick.call($("#info_dialog")); return false;});\r\n \t\t\t});\r\n \t\t}\r\n -\t\t$("#closedialog", "#info_id").click(function(e){\r\n +\t\t$("#closedialog", "#info_id").click(function(){\r\n \t\t\tself.hideModal("#info_dialog",{jqm:jm});\r\n \t\t\treturn false;\r\n \t\t});\r\n @@ -5656,7 +5800,7 @@ $.extend($.jgrid,{\r\n \t\t\tfunction(){$(this).removeClass(\'ui-state-hover\');}\r\n \t\t);\r\n \t\tif($.isFunction(mopt.beforeOpen) ) { mopt.beforeOpen(); }\r\n -\t\tthis.viewModal("#info_dialog",{\r\n +\t\t$.jgrid.viewModal("#info_dialog",{\r\n \t\t\tonHide: function(h) {\r\n \t\t\t\th.w.hide().remove();\r\n \t\t\t\tif(h.o) { h.o.remove(); }\r\n @@ -5669,10 +5813,10 @@ $.extend($.jgrid,{\r\n \t},\r\n // Form Functions\r\n \tcreateEl : function(eltype,options,vl,autowidth, ajaxso) {\r\n -\t\tvar elem = "";\r\n +\t\tvar elem = "", $t = this;\r\n \t\tfunction bindEv (el, opt) {\r\n \t\t\tif($.isFunction(opt.dataInit)) {\r\n -\t\t\t\topt.dataInit(el);\r\n +\t\t\t\topt.dataInit.call($t,el);\r\n \t\t\t}\r\n \t\t\tif(opt.dataEvents) {\r\n \t\t\t\t$.each(opt.dataEvents, function() {\r\n @@ -5688,7 +5832,7 @@ $.extend($.jgrid,{\r\n \t\tfunction setAttributes(elm, atr, exl ) {\r\n \t\t\tvar exclude = [\'dataInit\',\'dataEvents\',\'dataUrl\', \'buildSelect\',\'sopt\', \'searchhidden\', \'defaultValue\', \'attr\'];\r\n \t\t\tif(typeof(exl) != "undefined" \046\046 $.isArray(exl)) {\r\n -\t\t\t\texclude = $.extend(exclude, exl);\r\n +\t\t\t\t$.merge(exclude, exl);\r\n \t\t\t}\r\n \t\t\t$.each(atr, function(key, value){\r\n \t\t\t\tif($.inArray(key, exclude) === -1) {\r\n @@ -5754,12 +5898,12 @@ $.extend($.jgrid,{\r\n \t\t\t\t\t\ttype : "GET",\r\n \t\t\t\t\t\tdataType: "html",\r\n \t\t\t\t\t\tcontext: {elem:elem, options:options, vl:vl},\r\n -\t\t\t\t\t\tsuccess: function(data,status){\r\n +\t\t\t\t\t\tsuccess: function(data){\r\n \t\t\t\t\t\t\tvar a,\tovm = [], elem = this.elem, vl = this.vl,\r\n \t\t\t\t\t\t\toptions = $.extend({},this.options),\r\n \t\t\t\t\t\t\tmsl = options.multiple===true;\r\n -\t\t\t\t\t\t\tif(typeof(options.buildSelect) != "undefined") {\r\n -\t\t\t\t\t\t\t\tvar b = options.buildSelect(data);\r\n +\t\t\t\t\t\t\tif($.isFunction(options.buildSelect)) {\r\n +\t\t\t\t\t\t\t\tvar b = options.buildSelect.call($t,data);\r\n \t\t\t\t\t\t\t\ta = $(b).html();\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\ta = $(data).html();\r\n @@ -5779,6 +5923,8 @@ $.extend($.jgrid,{\r\n \t\t\t\t\t\t\t\tsetTimeout(function(){\r\n \t\t\t\t\t\t\t\t\t$("option",elem).each(function(i){\r\n \t\t\t\t\t\t\t\t\t\t//if(i===0) { this.selected = ""; }\r\n +\t\t\t\t\t\t\t\t\t\t// fix IE8/IE7 problem with selecting of the first item on multiple=true\r\n +\t\t\t\t\t\t\t\t\t\tif (i === 0 \046\046 elem.multiple) { this.selected = false; }\r\n \t\t\t\t\t\t\t\t\t\t$(this).attr("role","option");\r\n \t\t\t\t\t\t\t\t\t\tif($.inArray($.trim($(this).text()),ovm) \076 -1 || $.inArray($.trim($(this).val()),ovm) \076 -1 ) {\r\n \t\t\t\t\t\t\t\t\t\t\tthis.selected= "selected";\r\n @@ -5799,13 +5945,14 @@ $.extend($.jgrid,{\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(typeof options.value === \'function\') { options.value = options.value(); }\r\n \t\t\t\t\tvar so,sv, ov, \r\n -\t\t\t\t\tsep = options.separator === undefined ? ":" : options.separator;\r\n +\t\t\t\t\tsep = options.separator === undefined ? ":" : options.separator,\r\n +\t\t\t\t\tdelim = options.delimiter === undefined ? ";" : options.delimiter;\r\n \t\t\t\t\tif(typeof options.value === \'string\') {\r\n -\t\t\t\t\t\tso = options.value.split(";");\r\n +\t\t\t\t\t\tso = options.value.split(delim);\r\n \t\t\t\t\t\tfor(i=0; i\074so.length;i++){\r\n \t\t\t\t\t\t\tsv = so[i].split(sep);\r\n \t\t\t\t\t\t\tif(sv.length \076 2 ) {\r\n -\t\t\t\t\t\t\t\tsv[1] = $.map(sv,function(n,ii){if(ii\0760) { return n;} }).join(":");\r\n +\t\t\t\t\t\t\t\tsv[1] = $.map(sv,function(n,ii){if(ii\0760) { return n;} }).join(sep);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tov = document.createElement("option");\r\n \t\t\t\t\t\t\tov.setAttribute("role","option");\r\n @@ -5860,7 +6007,7 @@ $.extend($.jgrid,{\r\n \t\t\t\telem = document.createElement("span");\r\n \t\t\t\ttry {\r\n \t\t\t\t\tif($.isFunction(options.custom_element)) {\r\n -\t\t\t\t\t\tvar celm = options.custom_element.call(this,vl,options);\r\n +\t\t\t\t\t\tvar celm = options.custom_element.call($t,vl,options);\r\n \t\t\t\t\t\tif(celm) {\r\n \t\t\t\t\t\t\tcelm = $(celm).addClass("customelement").attr({id:options.id,name:options.name});\r\n \t\t\t\t\t\t\t$(elem).empty().append(celm);\r\n @@ -5871,9 +6018,9 @@ $.extend($.jgrid,{\r\n \t\t\t\t\t\tthrow "e1";\r\n \t\t\t\t\t}\r\n \t\t\t\t} catch (e) {\r\n -\t\t\t\t\tif (e=="e1") { this.info_dialog($.jgrid.errors.errcap,"function \'custom_element\' "+$.jgrid.edit.msg.nodefined, $.jgrid.edit.bClose);}\r\n -\t\t\t\t\tif (e=="e2") { this.info_dialog($.jgrid.errors.errcap,"function \'custom_element\' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);}\r\n -\t\t\t\t\telse { this.info_dialog($.jgrid.errors.errcap,typeof(e)==="string"?e:e.message,$.jgrid.edit.bClose); }\r\n +\t\t\t\t\tif (e=="e1") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function \'custom_element\' "+$.jgrid.edit.msg.nodefined, $.jgrid.edit.bClose);}\r\n +\t\t\t\t\tif (e=="e2") { $.jgrid.info_dialog($.jgrid.errors.errcap,"function \'custom_element\' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);}\r\n +\t\t\t\t\telse { $.jgrid.info_dialog($.jgrid.errors.errcap,typeof(e)==="string"?e:e.message,$.jgrid.edit.bClose); }\r\n \t\t\t\t}\r\n \t\t\tbreak;\r\n \t\t}\r\n @@ -5966,7 +6113,7 @@ $.extend($.jgrid,{\r\n \tcheckTime : function(time){\r\n \t// checks only hh:ss (and optional am/pm)\r\n \t\tvar re = /^(\\d{1,2}):(\\d{2})([ap]m)?$/,regs;\r\n -\t\tif(!this.isEmpty(time))\r\n +\t\tif(!$.jgrid.isEmpty(time))\r\n \t\t{\r\n \t\t\tregs = time.match(re);\r\n \t\t\tif(regs) {\r\n @@ -6006,12 +6153,12 @@ $.extend($.jgrid,{\r\n \t\tif(edtrul) {\r\n \t\t\tif(!nm) { nm = g.p.colNames[valref]; }\r\n \t\t\tif(edtrul.required === true) {\r\n -\t\t\t\tif( this.isEmpty(val) ) { return [false,nm+": "+$.jgrid.edit.msg.required,""]; }\r\n +\t\t\t\tif( $.jgrid.isEmpty(val) ) { return [false,nm+": "+$.jgrid.edit.msg.required,""]; }\r\n \t\t\t}\r\n \t\t\t// force required\r\n \t\t\tvar rqfield = edtrul.required === false ? false : true;\r\n \t\t\tif(edtrul.number === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n \t\t\t\t\tif(isNaN(val)) { return [false,nm+": "+$.jgrid.edit.msg.number,""]; }\r\n \t\t\t\t}\r\n \t\t\t}\r\n @@ -6023,41 +6170,41 @@ $.extend($.jgrid,{\r\n \t\t\t}\r\n \t\t\tvar filter;\r\n \t\t\tif(edtrul.email === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n \t\t\t\t// taken from $ Validate plugin\r\n \t\t\t\t\tfilter = /^((([a-z]|\\d|[!#\\$%\046\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%\046\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i;\r\n \t\t\t\t\tif(!filter.test(val)) {return [false,nm+": "+$.jgrid.edit.msg.email,""];}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif(edtrul.integer === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n \t\t\t\t\tif(isNaN(val)) { return [false,nm+": "+$.jgrid.edit.msg.integer,""]; }\r\n \t\t\t\t\tif ((val % 1 !== 0) || (val.indexOf(\'.\') != -1)) { return [false,nm+": "+$.jgrid.edit.msg.integer,""];}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif(edtrul.date === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n \t\t\t\t\tif(g.p.colModel[valref].formatoptions \046\046 g.p.colModel[valref].formatoptions.newformat) {\r\n \t\t\t\t\t\tdft = g.p.colModel[valref].formatoptions.newformat;\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\t\tdft = g.p.colModel[valref].datefmt || "Y-m-d";\r\n \t\t\t\t\t}\r\n -\t\t\t\t\tif(!this.checkDate (dft, val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - "+dft,""]; }\r\n +\t\t\t\t\tif(!$.jgrid.checkDate (dft, val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - "+dft,""]; }\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif(edtrul.time === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n -\t\t\t\t\tif(!this.checkTime (val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - hh:mm (am/pm)",""]; }\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n +\t\t\t\t\tif(!$.jgrid.checkTime (val)) { return [false,nm+": "+$.jgrid.edit.msg.date+" - hh:mm (am/pm)",""]; }\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif(edtrul.url === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n \t\t\t\t\tfilter = /^(((https?)|(ftp)):\\/\\/([\\-\\w]+\\.)+\\w{2,3}(\\/[%\\-\\w]+(\\.\\w{2,})?)*(([\\w\\-\\.\\?\\\\\\/+@\046#;`~=%!]*)(\\.\\w{2,})?)*\\/?)/i;\r\n \t\t\t\t\tif(!filter.test(val)) {return [false,nm+": "+$.jgrid.edit.msg.url,""];}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif(edtrul.custom === true) {\r\n -\t\t\t\tif( !(rqfield === false \046\046 this.isEmpty(val)) ) {\r\n +\t\t\t\tif( !(rqfield === false \046\046 $.jgrid.isEmpty(val)) ) {\r\n \t\t\t\t\tif($.isFunction(edtrul.custom_func)) {\r\n \t\t\t\t\t\tvar ret = edtrul.custom_func.call(g,val,nm);\r\n \t\t\t\t\t\tif($.isArray(ret)) {\r\n @@ -6152,7 +6299,7 @@ $.fn.jqFilter = function( arg ) {\r\n \t\tgroupButton : true,\r\n \t\truleButtons : true,\r\n \t\tdirection : "ltr"\r\n -\t}, arg || {});\r\n +\t}, $.jgrid.filter, arg || {});\r\n \treturn this.each( function() {\r\n \t\tif (this.filter) {return;}\r\n \t\tthis.p = p;\r\n @@ -6445,29 +6592,8 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(!cm) {return;}\r\n -\t\t\t\tcm.searchoptions.id = $.jgrid.randId()</string> </value> - </item> - <item> - <key> <string>next</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="5" aka="AAAAAAAAAAU="> - <pickle> - <global name="Pdata" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>data</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -;\r\n -\t\t\t\tif(isIE && cm.inputtype === "text") {\r\n +\t\t\t\tcm.searchoptions.id = $.jgrid.randId();\r\n +\t\t\t\tif(isIE \046\046 cm.inputtype === "text") {\r\n \t\t\t\t\tif(!cm.searchoptions.size) {\r\n \t\t\t\t\t\tcm.searchoptions.size = 10;\r\n \t\t\t\t\t}\r\n @@ -6484,28 +6610,33 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\t\tvar s ="", so = 0;\r\n \t\t\t\taoprs = [];\r\n \t\t\t\t$.each(that.p.ops, function() { aoprs.push(this.name) });\r\n -\t\t\t\tfor ( i = 0 ; i < op.length; i++) {\r\n +\t\t\t\tfor ( i = 0 ; i \074 op.length; i++) {\r\n \t\t\t\t\tina = $.inArray(op[i],aoprs);\r\n \t\t\t\t\tif(ina !== -1) {\r\n \t\t\t\t\t\tif(so===0) {\r\n \t\t\t\t\t\t\trule.op = that.p.ops[ina].name;\r\n \t\t\t\t\t\t}\r\n -\t\t\t\t\t\ts += "<option value=\'"+that.p.ops[ina].name+"\'>"+that.p.ops[ina].description+"</option>";\r\n +\t\t\t\t\t\ts += "\074option value=\'"+that.p.ops[ina].name+"\'\076"+that.p.ops[ina].description+"\074/option\076";\r\n \t\t\t\t\t\tso++;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\t$(".selectopts",trpar).empty().append( s );\r\n \t\t\t\t$(".selectopts",trpar)[0].selectedIndex = 0;\r\n -\t\t\t\tif( $.browser.msie && $.browser.version < 9) {\r\n +\t\t\t\tif( $.browser.msie \046\046 $.browser.version \074 9) {\r\n \t\t\t\t\tvar sw = parseInt($("select.selectopts",trpar)[0].offsetWidth) + 1;\r\n \t\t\t\t\t$(".selectopts",trpar).width( sw );\r\n \t\t\t\t\t$(".selectopts",trpar).css("width","auto");\r\n \t\t\t\t}\r\n \t\t\t\t// data\r\n \t\t\t\t$(".data",trpar).empty().append( elm );\r\n -\t\t\t\t$(".input-elm",trpar).bind(\'change\',function() {\r\n -\t\t\t\t\trule.data = $(this).val();\r\n -\t\t\t\t\tthat.onchange(); // signals that the filter has changed\r\n +\t\t\t\t$(".input-elm",trpar).bind(\'change\',function( e ) {\r\n +\t\t\t\t\tvar tmo = $(this).hasClass("ui-autocomplete-input") ? 200 :0;\r\n +\t\t\t\t\tsetTimeout(function(){\r\n +\t\t\t\t\t\tvar elem = e.target;\r\n +\t\t\t\t\t\trule.data = elem.nodeName.toUpperCase() === "SPAN" \046\046 cm.searchoptions \046\046 $.isFunction(cm.searchoptions.custom_value) ?\r\n +\t\t\t\t\t\t\tcm.searchoptions.custom_value($(elem).children(".customelement:first"), \'get\') : elem.value;\r\n +\t\t\t\t\t\tthat.onchange(); // signals that the filter has changed\r\n +\t\t\t\t\t}, tmo);\r\n \t\t\t\t});\r\n \t\t\t\tsetTimeout(function(){ //IE, Opera, Chrome\r\n \t\t\t\trule.data = $(elm).val();\r\n @@ -6515,31 +6646,31 @@ $.fn.jqFilter = function( arg ) {\r\n \r\n \t\t\t// populate drop down with user provided column definitions\r\n \t\t\tvar j=0;\r\n -\t\t\tfor (i = 0; i < that.p.columns.length; i++) {\r\n +\t\t\tfor (i = 0; i \074 that.p.columns.length; i++) {\r\n \t\t\t\t// but show only serchable and serchhidden = true fields\r\n \t\t var searchable = (typeof that.p.columns[i].search === \'undefined\') ? true: that.p.columns[i].search ,\r\n \t\t hidden = (that.p.columns[i].hidden === true),\r\n \t\t\t\tignoreHiding = (that.p.columns[i].searchoptions.searchhidden === true);\r\n -\t\t\t\tif ((ignoreHiding && searchable) || (searchable && !hidden)) {\r\n +\t\t\t\tif ((ignoreHiding \046\046 searchable) || (searchable \046\046 !hidden)) {\r\n \t\t\t\t\tselected = "";\r\n \t\t\t\t\tif(rule.field === that.p.columns[i].name) {\r\n \t\t\t\t\t\tselected = " selected=\'selected\'";\r\n \t\t\t\t\t\tj=i;\r\n \t\t\t\t\t}\r\n -\t\t\t\t\tstr += "<option value=\'"+that.p.columns[i].name+"\'" +selected+">"+that.p.columns[i].label+"</option>";\r\n +\t\t\t\t\tstr += "\074option value=\'"+that.p.columns[i].name+"\'" +selected+"\076"+that.p.columns[i].label+"\074/option\076";\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\truleFieldSelect.append( str );\r\n \r\n \r\n \t\t\t// create operator container\r\n -\t\t\tvar ruleOperatorTd = $("<td class=\'operators\'></td>");\r\n +\t\t\tvar ruleOperatorTd = $("\074td class=\'operators\'\076\074/td\076");\r\n \t\t\ttr.append(ruleOperatorTd);\r\n \t\t\tcm = p.columns[j];\r\n \t\t\t// create it here so it can be referentiated in the onchange event\r\n \t\t\t//var RD = that.createElement(rule, rule.data);\r\n \t\t\tcm.searchoptions.id = $.jgrid.randId();\r\n -\t\t\tif(isIE && cm.inputtype === "text") {\r\n +\t\t\tif(isIE \046\046 cm.inputtype === "text") {\r\n \t\t\t\tif(!cm.searchoptions.size) {\r\n \t\t\t\t\tcm.searchoptions.size = 10;\r\n \t\t\t\t}\r\n @@ -6547,7 +6678,7 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\tvar ruleDataInput = $.jgrid.createEl(cm.inputtype,cm.searchoptions, rule.data, true, that.p.ajaxSelectOptions, true);\r\n \r\n \t\t\t// dropdown for: choosing operator\r\n -\t\t\tvar ruleOperatorSelect = $("<select class=\'selectopts\'></select>");\r\n +\t\t\tvar ruleOperatorSelect = $("\074select class=\'selectopts\'\076\074/select\076");\r\n \t\t\truleOperatorTd.append(ruleOperatorSelect);\r\n \t\t\truleOperatorSelect.bind(\'change\',function() {\r\n \t\t\t\trule.op = $(ruleOperatorSelect).val();\r\n @@ -6573,16 +6704,16 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\telse {op = that.p.numopts;}\r\n \t\t\tstr="";\r\n \t\t\t$.each(that.p.ops, function() { aoprs.push(this.name) });\r\n -\t\t\tfor ( i = 0; i < op.length; i++) {\r\n +\t\t\tfor ( i = 0; i \074 op.length; i++) {\r\n \t\t\t\tina = $.inArray(op[i],aoprs);\r\n \t\t\t\tif(ina !== -1) {\r\n \t\t\t\t\tselected = rule.op === that.p.ops[ina].name ? " selected=\'selected\'" : "";\r\n -\t\t\t\t\tstr += "<option value=\'"+that.p.ops[ina].name+"\'"+selected+">"+that.p.ops[ina].description+"</option>";\r\n +\t\t\t\t\tstr += "\074option value=\'"+that.p.ops[ina].name+"\'"+selected+"\076"+that.p.ops[ina].description+"\074/option\076";\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\truleOperatorSelect.append( str );\r\n \t\t\t// create data container\r\n -\t\t\tvar ruleDataTd = $("<td class=\'data\'></td>");\r\n +\t\t\tvar ruleDataTd = $("\074td class=\'data\'\076\074/td\076");\r\n \t\t\ttr.append(ruleDataTd);\r\n \r\n \t\t\t// textbox for: data\r\n @@ -6593,22 +6724,22 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\t$(ruleDataInput)\r\n \t\t\t.addClass("input-elm")\r\n \t\t\t.bind(\'change\', function() {\r\n -\t\t\t\trule.data = $(this).val();\r\n +\t\t\t\trule.data = cm.inputtype === \'custom\' ? cm.searchoptions.custom_value($(this).children(".customelement:first"),\'get\') : $(this).val();\r\n \t\t\t\tthat.onchange(); // signals that the filter has changed\r\n \t\t\t});\r\n \r\n \t\t\t// create action container\r\n -\t\t\tvar ruleDeleteTd = $("<td></td>");\r\n +\t\t\tvar ruleDeleteTd = $("\074td\076\074/td\076");\r\n \t\t\ttr.append(ruleDeleteTd);\r\n \r\n \t\t\t// create button for: delete rule\r\n \t\t\tif(this.p.ruleButtons === true) {\r\n -\t\t\tvar ruleDeleteInput = $("<input type=\'button\' value=\'-\' title=\'Delete rule\' class=\'delete-rule ui-del\'/>");\r\n +\t\t\tvar ruleDeleteInput = $("\074input type=\'button\' value=\'-\' title=\'Delete rule\' class=\'delete-rule ui-del\'/\076");\r\n \t\t\truleDeleteTd.append(ruleDeleteInput);\r\n \t\t\t//$(ruleDeleteInput).html("").height(20).width(30).button({icons: { primary: "ui-icon-minus", text:false}});\r\n \t\t\truleDeleteInput.bind(\'click\',function() {\r\n \t\t\t\t// remove rule from group\r\n -\t\t\t\tfor (i = 0; i < group.rules.length; i++) {\r\n +\t\t\t\tfor (i = 0; i \074 group.rules.length; i++) {\r\n \t\t\t\t\tif (group.rules[i] === rule) {\r\n \t\t\t\t\t\tgroup.rules.splice(i, 1);\r\n \t\t\t\t\t\tbreak;\r\n @@ -6627,8 +6758,8 @@ $.fn.jqFilter = function( arg ) {\r\n \t\tthis.getStringForGroup = function(group) {\r\n \t\t\tvar s = "(", index;\r\n \t\t\tif (group.groups !== undefined) {\r\n -\t\t\t\tfor (index = 0; index < group.groups.length; index++) {\r\n -\t\t\t\t\tif (s.length > 1) {\r\n +\t\t\t\tfor (index = 0; index \074 group.groups.length; index++) {\r\n +\t\t\t\t\tif (s.length \076 1) {\r\n \t\t\t\t\t\ts += " " + group.groupOp + " ";\r\n \t\t\t\t\t}\r\n \t\t\t\t\ttry {\r\n @@ -6639,8 +6770,8 @@ $.fn.jqFilter = function( arg ) {\r\n \r\n \t\t\tif (group.rules !== undefined) {\r\n \t\t\t\ttry{\r\n -\t\t\t\t\tfor (index = 0; index < group.rules.length; index++) {\r\n -\t\t\t\t\t\tif (s.length > 1) {\r\n +\t\t\t\t\tfor (index = 0; index \074 group.rules.length; index++) {\r\n +\t\t\t\t\t\tif (s.length \076 1) {\r\n \t\t\t\t\t\t\ts += " " + group.groupOp + " ";\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\ts += this.getStringForRule(group.rules[index]);\r\n @@ -6659,14 +6790,14 @@ $.fn.jqFilter = function( arg ) {\r\n \t\tthis.getStringForRule = function(rule) {\r\n \t\t\tvar opUF = "",opC="", i, cm, ret, val,\r\n \t\t\tnumtypes = [\'int\', \'integer\', \'float\', \'number\', \'currency\']; // jqGrid\r\n -\t\t\tfor (i = 0; i < this.p.ops.length; i++) {\r\n +\t\t\tfor (i = 0; i \074 this.p.ops.length; i++) {\r\n \t\t\t\tif (this.p.ops[i].name === rule.op) {\r\n \t\t\t\t\topUF = this.p.ops[i].operator;\r\n \t\t\t\t\topC = this.p.ops[i].name;\r\n \t\t\t\t\tbreak;\r\n \t\t\t\t}\r\n \t\t\t}\r\n -\t\t\tfor (i=0; i<this.p.columns.length; i++) {\r\n +\t\t\tfor (i=0; i\074this.p.columns.length; i++) {\r\n \t\t\t\tif(this.p.columns[i].name === rule.field) {\r\n \t\t\t\t\tcm = this.p.columns[i];\r\n \t\t\t\t\tbreak;\r\n @@ -6704,7 +6835,7 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\tfunction getStringRule(rule) {\r\n \t\t\t\tif(that.p.errorcheck) {\r\n \t\t\t\t\tvar i, cm;\r\n -\t\t\t\t\tfor (i=0; i<that.p.columns.length; i++) {\r\n +\t\t\t\t\tfor (i=0; i\074that.p.columns.length; i++) {\r\n \t\t\t\t\t\tif(that.p.columns[i].name === rule.field) {\r\n \t\t\t\t\t\t\tcm = that.p.columns[i];\r\n \t\t\t\t\t\t\tbreak;\r\n @@ -6719,13 +6850,13 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\t\tvar s = "(", index;\r\n \r\n \t\t\t\tif (group.groups !== undefined) {\r\n -\t\t\t\t\tfor (index = 0; index < group.groups.length; index++) {\r\n -\t\t\t\t\t\tif (s.length > 1) {\r\n +\t\t\t\t\tfor (index = 0; index \074 group.groups.length; index++) {\r\n +\t\t\t\t\t\tif (s.length \076 1) {\r\n \t\t\t\t\t\t\tif (group.groupOp === "OR") {\r\n \t\t\t\t\t\t\t\ts += " || ";\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\telse {\r\n -\t\t\t\t\t\t\t\ts += " && ";\r\n +\t\t\t\t\t\t\t\ts += " \046\046 ";\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\ts += getStringForGroup(group.groups[index]);\r\n @@ -6733,13 +6864,13 @@ $.fn.jqFilter = function( arg ) {\r\n \t\t\t\t}\r\n \r\n \t\t\t\tif (group.rules !== undefined) {\r\n -\t\t\t\t\tfor (index = 0; index < group.rules.length; index++) {\r\n -\t\t\t\t\t\tif (s.length > 1) {\r\n +\t\t\t\t\tfor (index = 0; index \074 group.rules.length; index++) {\r\n +\t\t\t\t\t\tif (s.length \076 1) {\r\n \t\t\t\t\t\t\tif (group.groupOp === "OR") {\r\n \t\t\t\t\t\t\t\ts += " || ";\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\telse {\r\n -\t\t\t\t\t\t\t\ts += " && ";\r\n +\t\t\t\t\t\t\t\ts += " \046\046 ";\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\ts += getStringRule(group.rules[index]);\r\n @@ -6840,14 +6971,16 @@ $.jgrid.extend({\r\n \t\t\tsValue:\'searchString\',\r\n \t\t\tsOper: \'searchOper\',\r\n \t\t\tsFilter: \'filters\',\r\n - loadDefaults: true, // this options activates loading of default filters from grid\'s postData for Multipe Search only.\r\n +\t\t\tloadDefaults: true, // this options activates loading of default filters from grid\'s postData for Multipe Search only.\r\n \t\t\tbeforeShowSearch: null,\r\n \t\t\tafterShowSearch : null,\r\n \t\t\tonInitializeSearch: null,\r\n \t\t\tafterRedraw : null,\r\n +\t\t\tafterChange: null,\r\n \t\t\tcloseAfterSearch : false,\r\n \t\t\tcloseAfterReset: false,\r\n \t\t\tcloseOnEscape : false,\r\n +\t\t\tsearchOnEnter : false,\r\n \t\t\tmultipleSearch : false,\r\n \t\t\tmultipleGroup : false,\r\n \t\t\t//cloneSearchRowOnAdd: true,\r\n @@ -6876,8 +7009,8 @@ $.jgrid.extend({\r\n \t\t\ttmplFilters : null,\r\n \t\t\t// translations - later in lang file\r\n \t\t\ttmplLabel : \' Template: \',\r\n - showOnLoad: false,\r\n - layer: null\r\n +\t\t\tshowOnLoad: false,\r\n +\t\t\tlayer: null\r\n \t\t}, $.jgrid.search, p || {});\r\n \t\treturn this.each(function() {\r\n \t\t\tvar $t = this;\r\n @@ -6890,26 +7023,28 @@ $.jgrid.extend({\r\n \t\t\t\tdefaultFilters = $.jgrid.parse( defaultFilters );\r\n \t\t\t}\r\n \t\t\tif(p.recreateFilter === true) {\r\n -\t\t\t\t$("#"+IDs.themodal).remove();\r\n +\t\t\t\t$("#"+$.jgrid.jqID(IDs.themodal)).remove();\r\n \t\t\t}\r\n -\t\t\tfunction showFilter() {\r\n -\t\t\t\tif($.isFunction(p.beforeShowSearch)) {\r\n -\t\t\t\t\tshowFrm = p.beforeShowSearch($("#"+fid));\r\n -\t\t\t\t\tif(typeof(showFrm) === "undefined") {\r\n -\t\t\t\t\t\tshowFrm = true;\r\n -\t\t\t\t\t}\r\n +\t\t\tfunction showFilter(_filter) {\r\n +\t\t\t\tshowFrm = $($t).triggerHandler("jqGridFilterBeforeShow", [_filter]);\r\n +\t\t\t\tif(typeof(showFrm) === "undefined") {\r\n +\t\t\t\t\tshowFrm = true;\r\n +\t\t\t\t}\r\n +\t\t\t\tif(showFrm \046\046 $.isFunction(p.beforeShowSearch)) {\r\n +\t\t\t\t\tshowFrm = p.beforeShowSearch.call($t,_filter);\r\n \t\t\t\t}\r\n \t\t\t\tif(showFrm) {\r\n -\t\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+fid,jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop});\r\n +\t\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(fid),jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop});\r\n +\t\t\t\t\t$($t).triggerHandler("jqGridFilterAfterShow", [_filter]);\r\n \t\t\t\t\tif($.isFunction(p.afterShowSearch)) {\r\n -\t\t\t\t\t\tp.afterShowSearch($("#"+fid));\r\n +\t\t\t\t\t\tp.afterShowSearch.call($t, _filter);\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t}\r\n -\t\t\tif ( $("#"+IDs.themodal).html() !== null ) {\r\n -\t\t\t\tshowFilter();\r\n +\t\t\tif ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {\r\n +\t\t\t\tshowFilter($("#fbox_"+$.jgrid.jqID(+$t.p.id)));\r\n \t\t\t} else {\r\n -\t\t\t\tvar fil = $("<div><div id=\'"+fid+"\' class=\'searchFilter\' style=\'overflow:auto\'></div></div>").insertBefore("#gview_"+$t.p.id),\r\n +\t\t\t\tvar fil = $("\074div\076\074div id=\'"+fid+"\' class=\'searchFilter\' style=\'overflow:auto\'\076\074/div\076\074/div\076").insertBefore("#gview_"+$.jgrid.jqID($t.p.id)),\r\n \t\t\t\talign = "left", butleft =""; \r\n \t\t\t\tif($t.p.direction == "rtl") {\r\n \t\t\t\t\talign = "right";\r\n @@ -6917,29 +7052,50 @@ $.jgrid.extend({\r\n \t\t\t\t\tfil.attr("dir","rtl");\r\n \t\t\t\t}\r\n \t\t\t\tvar columns = $.extend([],$t.p.colModel),\r\n -\t\t\t\tbS ="<a href=\'javascript:void(0)\' id=\'"+fid+"_search\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset\'><span class=\'ui-icon ui-icon-search\'></span>"+p.Find+"</a>",\r\n -\t\t\t\tbC ="<a href=\'javascript:void(0)\' id=\'"+fid+"_reset\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search\'><span class=\'ui-icon ui-icon-arrowreturnthick-1-w\'></span>"+p.Reset+"</a>",\r\n +\t\t\t\tbS ="\074a href=\'javascript:void(0)\' id=\'"+fid+"_search\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset\'\076\074span class=\'ui-icon ui-icon-search\'\076\074/span\076"+p.Find+"\074/a\076",\r\n +\t\t\t\tbC ="\074a href=\'javascript:void(0)\' id=\'"+fid+"_reset\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search\'\076\074span class=\'ui-icon ui-icon-arrowreturnthick-1-w\'\076\074/span\076"+p.Reset+"\074/a\076",\r\n \t\t\t\tbQ = "", tmpl="", colnm, found = false, bt, cmi=-1;\r\n \t\t\t\tif(p.showQuery) {\r\n -\t\t\t\t\tbQ ="<a href=\'javascript:void(0)\' id=\'"+fid+"_query\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-left\'><span class=\'ui-icon ui-icon-comment\'></span>Query</a>";\r\n -\t\t\t\t}\r\n -\t\t\t\tif(!p.columns.length) {\r\n -\t\t\t\t\t$.each(columns, function(i,n){\r\n -\t\t\t\t\t\tif(!n.label) {\r\n -\t\t\t\t\t\t\tn.label = $t.p.colNames[i];\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t// find first searchable column and set it if no default filter\r\n -\t\t\t\t\t\tif(!found) {\r\n -\t\t\t\t\t\t\tvar searchable = (typeof n.search === \'undefined\') ? true: n.search ,\r\n -\t\t\t\t\t\t\thidden = (n.hidden === true),\r\n -\t\t\t\t\t\t\tignoreHiding = (n.searchoptions && n.searchoptions.searchhidden === true);\r\n -\t\t\t\t\t\t\tif ((ignoreHiding && searchable) || (searchable && !hidden)) {\r\n -\t\t\t\t\t\t\t\tfound = true;\r\n -\t\t\t\t\t\t\t\tcolnm = n.index || n.name;\r\n -\t\t\t\t\t\t\t\tcmi =i;\r\n -\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\t});\r\n +\t\t\t\t\tbQ ="</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +<a href=\'javascript:void(0)\' id=\'"+fid+"_query\' class=\'fm-button ui-state-default ui-corner-all fm-button-icon-left\'><span class=\'ui-icon ui-icon-comment\'></span>Query</a>";\r\n +\t\t\t\t}\r\n +\t\t\t\tif(!p.columns.length) {\r\n +\t\t\t\t\t$.each(columns, function(i,n){\r\n +\t\t\t\t\t\tif(!n.label) {\r\n +\t\t\t\t\t\t\tn.label = $t.p.colNames[i];\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t// find first searchable column and set it if no default filter\r\n +\t\t\t\t\t\tif(!found) {\r\n +\t\t\t\t\t\t\tvar searchable = (typeof n.search === \'undefined\') ? true: n.search ,\r\n +\t\t\t\t\t\t\thidden = (n.hidden === true),\r\n +\t\t\t\t\t\t\tignoreHiding = (n.searchoptions && n.searchoptions.searchhidden === true);\r\n +\t\t\t\t\t\t\tif ((ignoreHiding && searchable) || (searchable && !hidden)) {\r\n +\t\t\t\t\t\t\t\tfound = true;\r\n +\t\t\t\t\t\t\t\tcolnm = n.index || n.name;\r\n +\t\t\t\t\t\t\t\tcmi =i;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t});\r\n \t\t\t\t} else {\r\n \t\t\t\t\tcolumns = p.columns;\r\n \t\t\t\t}\r\n @@ -6966,7 +7122,7 @@ $.jgrid.extend({\r\n \t\t\t\t}\r\n \r\n \t\t\t\tbt = "<table class=\'EditTable\' style=\'border:0px none;margin-top:5px\' id=\'"+fid+"_2\'><tbody><tr><td colspan=\'2\'><hr class=\'ui-widget-content\' style=\'margin:1px\'/></td></tr><tr><td class=\'EditButton\' style=\'text-align:"+align+"\'>"+bC+tmpl+"</td><td class=\'EditButton\' "+butleft+">"+bQ+bS+"</td></tr></tbody></table>";\r\n -\r\n +\t\t\t\tfid = $.jgrid.jqID( fid);\r\n \t\t\t\t$("#"+fid).jqFilter({\r\n \t\t\t\t\tcolumns : columns,\r\n \t\t\t\t\tfilter: p.loadDefaults ? defaultFilters : null,\r\n @@ -6978,16 +7134,20 @@ $.jgrid.extend({\r\n \t\t\t\t\tafterRedraw : p.afterRedraw,\r\n \t\t\t\t\t_gridsopt : $.jgrid.search.odata,\r\n \t\t\t\t\tajaxSelectOptions: $t.p.ajaxSelectOptions,\r\n -\t\t\t\t\tonChange : function( sp ) {\r\n +\t\t\t\t\tgroupOps: p.groupOps,\r\n +\t\t\t\t\tonChange : function() {\r\n \t\t\t\t\t\tif(this.p.showQuery) {\r\n \t\t\t\t\t\t\t$(\'.query\',this).html(this.toUserFriendlyString());\r\n \t\t\t\t\t\t}\r\n +\t\t\t\t\t\tif ($.isFunction(p.afterChange)) {\r\n +\t\t\t\t\t\t\tp.afterChange.call($t, $("#"+fid), p);\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t},\r\n \t\t\t\t\tdirection : $t.p.direction\r\n \t\t\t\t});\r\n \t\t\t\tfil.append( bt );\r\n \t\t\t\tif(found && p.tmplFilters && p.tmplFilters.length) {\r\n -\t\t\t\t\t$(".ui-template", fil).bind(\'change\', function(e){\r\n +\t\t\t\t\t$(".ui-template", fil).bind(\'change\', function(){\r\n \t\t\t\t\t\tvar curtempl = $(this).val();\r\n \t\t\t\t\t\tif(curtempl=="default") {\r\n \t\t\t\t\t\t\t$("#"+fid).jqFilter(\'addFilter\', defaultFilters);\r\n @@ -6998,17 +7158,34 @@ $.jgrid.extend({\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t\tif(p.multipleGroup === true) {p.multipleSearch = true;}\r\n +\t\t\t\t$($t).triggerHandler("jqGridFilterInitialize", [$("#"+fid)]);\r\n \t\t\t\tif($.isFunction(p.onInitializeSearch) ) {\r\n -\t\t\t\t\tp.onInitializeSearch($("#"+fid));\r\n +\t\t\t\t\tp.onInitializeSearch.call($t, $("#"+fid));\r\n \t\t\t\t}\r\n \t\t\t\tp.gbox = "#gbox_"+fid;\r\n \t\t\t\tif (p.layer) {\r\n -\t\t\t\t\t$.jgrid.createModal(IDs ,fil,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0], "#"+p.layer, {position: "relative"});\r\n +\t\t\t\t\t$.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0], "#"+$.jgrid.jqID(p.layer), {position: "relative"});\r\n \t\t\t\t} else {\r\n -\t\t\t\t\t$.jgrid.createModal(IDs ,fil,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0]);\r\n +\t\t\t\t\t$.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);\r\n +\t\t\t\t}\r\n +\t\t\t\tif (p.searchOnEnter || p.closeOnEscape) {\r\n +\t\t\t\t\t$("#"+$.jgrid.jqID(IDs.themodal)).keydown(function (e) {\r\n +\t\t\t\t\t\tvar $target = $(e.target);\r\n +\t\t\t\t\t\tif (p.searchOnEnter && e.which === 13 && // 13 === $.ui.keyCode.ENTER\r\n +\t\t\t\t\t\t\t\t!$target.hasClass(\'add-group\') && !$target.hasClass(\'add-rule\') &&\r\n +\t\t\t\t\t\t\t\t!$target.hasClass(\'delete-group\') && !$target.hasClass(\'delete-rule\') &&\r\n +\t\t\t\t\t\t\t\t(!$target.hasClass("fm-button") || !$target.is("[id$=_query]"))) {\r\n +\t\t\t\t\t\t\t$("#"+fid+"_search").focus().click();\r\n +\t\t\t\t\t\t\treturn false;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\tif (p.closeOnEscape && e.which === 27) { // 27 === $.ui.keyCode.ESCAPE\r\n +\t\t\t\t\t\t\t$("#"+$.jgrid.jqID(IDs.modalhead)).find(".ui-jqdialog-titlebar-close").focus().click();\r\n +\t\t\t\t\t\t\treturn false;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t\tif(bQ) {\r\n -\t\t\t\t\t$("#"+fid+"_query").bind(\'click\', function(e){\r\n +\t\t\t\t\t$("#"+fid+"_query").bind(\'click\', function(){\r\n \t\t\t\t\t\t$(".queryresult", fil).toggle();\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n @@ -7056,12 +7233,13 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$t.p.search = true;\r\n \t\t\t\t\t$.extend($t.p.postData,sdata);\r\n +\t\t\t\t\t$($t).triggerHandler("jqGridFilterSearch");\r\n \t\t\t\t\tif($.isFunction(p.onSearch) ) {\r\n -\t\t\t\t\t\tp.onSearch();\r\n +\t\t\t\t\t\tp.onSearch.call($t);\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$($t).trigger("reloadGrid",[{page:1}]);\r\n \t\t\t\t\tif(p.closeAfterSearch) {\r\n -\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+$t.p.id,jqm:p.jqModal,onClose: p.onClose});\r\n +\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose});\r\n \t\t\t\t\t}\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n @@ -7079,16 +7257,17 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t$(".ui-template", fil).val("default");\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$.extend($t.p.postData,sdata);\r\n +\t\t\t\t\t$($t).triggerHandler("jqGridFilterReset");\r\n \t\t\t\t\tif($.isFunction(p.onReset) ) {\r\n -\t\t\t\t\t\tp.onReset();\r\n +\t\t\t\t\t\tp.onReset.call($t);\r\n \t\t\t\t\t}\r\n \t\t\t\t\t$($t).trigger("reloadGrid",[{page:1}]);\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\tshowFilter();\r\n +\t\t\t\tshowFilter($("#"+fid));\r\n \t\t\t\t$(".fm-button:not(.ui-state-disabled)",fil).hover(\r\n -\t\t\t\t function(){$(this).addClass(\'ui-state-hover\');},\r\n -\t\t\t\t function(){$(this).removeClass(\'ui-state-hover\');}\r\n +\t\t\t\t\tfunction(){$(this).addClass(\'ui-state-hover\');},\r\n +\t\t\t\t\tfunction(){$(this).removeClass(\'ui-state-hover\');}\r\n \t\t\t\t);\r\n \t\t\t}\r\n \t\t});\r\n @@ -7144,37 +7323,39 @@ $.jgrid.extend({\r\n \t\t\tvar $t = this;\r\n \t\t\tif (!$t.grid || !rowid) {return;}\r\n \t\t\tvar gID = $t.p.id,\r\n -\t\t\tfrmgr = "FrmGrid_"+gID,frmtb = "TblGrid_"+gID,\r\n +\t\t\tfrmgr = "FrmGrid_"+gID, frmtborg = "TblGrid_"+gID, frmtb = "#"+$.jgrid.jqID(frmtborg), \r\n \t\t\tIDs = {themodal:\'editmod\'+gID,modalhead:\'edithd\'+gID,modalcontent:\'editcnt\'+gID, scrollelm : frmgr},\r\n \t\t\tonBeforeShow = $.isFunction(rp_ge[$t.p.id].beforeShowForm) ? rp_ge[$t.p.id].beforeShowForm : false,\r\n \t\t\tonAfterShow = $.isFunction(rp_ge[$t.p.id].afterShowForm) ? rp_ge[$t.p.id].afterShowForm : false,\r\n \t\t\tonBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,\r\n \t\t\tonInitializeForm = $.isFunction(rp_ge[$t.p.id].onInitializeForm) ? rp_ge[$t.p.id].onInitializeForm : false,\r\n -\t\t\tcopydata = null,\r\n \t\t\tshowFrm = true,\r\n -\t\t\tmaxCols = 1, maxRows=0,\tpostdata, extpost, newData, diff;\r\n +\t\t\tmaxCols = 1, maxRows=0,\tpostdata, extpost, newData, diff, frmoper;\r\n +\t\t\tfrmgr = $.jgrid.jqID(frmgr);\r\n \t\t\tif (rowid === "new") {\r\n \t\t\t\trowid = "_empty";\r\n +\t\t\t\tfrmoper = "add";\r\n \t\t\t\tp.caption=rp_ge[$t.p.id].addCaption;\r\n \t\t\t} else {\r\n \t\t\t\tp.caption=rp_ge[$t.p.id].editCaption;\r\n +\t\t\t\tfrmoper = "edit";\r\n \t\t\t}\r\n -\t\t\tif(p.recreateForm===true && $("#"+IDs.themodal).html() !== null) {\r\n -\t\t\t\t$("#"+IDs.themodal).remove();\r\n +\t\t\tif(p.recreateForm===true && $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined) {\r\n +\t\t\t\t$("#"+$.jgrid.jqID(IDs.themodal)).remove();\r\n \t\t\t}\r\n \t\t\tvar closeovrl = true;\r\n \t\t\tif(p.checkOnUpdate && p.jqModal && !p.modal) {\r\n \t\t\t\tcloseovrl = false;\r\n \t\t\t}\r\n \t\t\tfunction getFormData(){\r\n -\t\t\t\t$("#"+frmtb+" > tbody > tr > td > .FormElement").each(function(i) {\r\n +\t\t\t\t$(frmtb+" > tbody > tr > td > .FormElement").each(function() {\r\n \t\t\t\t\tvar celm = $(".customelement", this);\r\n \t\t\t\t\tif (celm.length) {\r\n \t\t\t\t\t\tvar elem = celm[0], nm = $(elem).attr(\'name\');\r\n -\t\t\t\t\t\t$.each($t.p.colModel, function(i,n){\r\n +\t\t\t\t\t\t$.each($t.p.colModel, function(){\r\n \t\t\t\t\t\t\tif(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) {\r\n \t\t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t\tpostdata[nm] = this.editoptions.custom_value($("#"+$.jgrid.jqID(nm),"#"+frmtb),\'get\');\r\n +\t\t\t\t\t\t\t\t\tpostdata[nm] = this.editoptions.custom_value.call($t, $("#"+$.jgrid.jqID(nm),frmtb),\'get\');\r\n \t\t\t\t\t\t\t\t\tif (postdata[nm] === undefined) {throw "e1";}\r\n \t\t\t\t\t\t\t\t} catch (e) {\r\n \t\t\t\t\t\t\t\t\tif (e==="e1") {$.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function \'custom_value\' "+$.jgrid.edit.msg.novalue,jQuery.jgrid.edit.bClose);}\r\n @@ -7248,7 +7429,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\ttmp = $("td:eq("+i+")",obj.rows[ind]).text();\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t\ttmp = $.unformat($("td:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);\r\n +\t\t\t\t\t\t\t\t\ttmp = $.unformat.call(obj, $("td:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);\r\n \t\t\t\t\t\t\t\t} catch (_) {\r\n \t\t\t\t\t\t\t\t\ttmp = (this.edittype && this.edittype == "textarea") ? $("td:eq("+i+")",obj.rows[ind]).text() : $("td:eq("+i+")",obj.rows[ind]).html();\r\n \t\t\t\t\t\t\t\t}\r\n @@ -7260,11 +7441,11 @@ $.jgrid.extend({\r\n \t\t\t\t\t\trp = parseInt(frmopt.rowpos,10) || cnt+1,\r\n \t\t\t\t\t\tcp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);\r\n \t\t\t\t\t\tif(rowid == "_empty" && opt.defaultValue ) {\r\n -\t\t\t\t\t\t\ttmp = $.isFunction(opt.defaultValue) ? opt.defaultValue() : opt.defaultValue;\r\n +\t\t\t\t\t\t\ttmp = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(!this.edittype) {this.edittype = "text";}\r\n \t\t\t\t\t\tif($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);}\r\n -\t\t\t\t\t\telc = $.jgrid.createEl(this.edittype,opt,tmp,false,$.extend({},$.jgrid.ajaxOptions,obj.p.ajaxSelectOptions || {}));\r\n +\t\t\t\t\t\telc = $.jgrid.createEl.call($t,this.edittype,opt,tmp,false,$.extend({},$.jgrid.ajaxOptions,obj.p.ajaxSelectOptions || {}));\r\n \t\t\t\t\t\tif(tmp === "" && this.edittype == "checkbox") {tmp = $(elc).attr("offval");}\r\n \t\t\t\t\t\tif(tmp === "" && this.edittype == "select") {tmp = $("option:eq(0)",elc).text();}\r\n \t\t\t\t\t\tif(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = tmp;}\r\n @@ -7303,14 +7484,14 @@ $.jgrid.extend({\r\n \t\t\t\tif(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData = {};rp_ge[$t.p.id]._savedData[obj.p.id+"_id"]=rowid;}\r\n \t\t\t\tvar cm = obj.p.colModel;\r\n \t\t\t\tif(rowid == \'_empty\') {\r\n -\t\t\t\t\t$(cm).each(function(i){\r\n +\t\t\t\t\t$(cm).each(function(){\r\n \t\t\t\t\t\tnm = this.name;\r\n \t\t\t\t\t\topt = $.extend({}, this.editoptions || {} );\r\n \t\t\t\t\t\tfld = $("#"+$.jgrid.jqID(nm),"#"+fmid);\r\n \t\t\t\t\t\tif(fld && fld.length && fld[0] !== null) {\r\n \t\t\t\t\t\t\tvl = "";\r\n \t\t\t\t\t\t\tif(opt.defaultValue ) {\r\n -\t\t\t\t\t\t\t\tvl = $.isFunction(opt.defaultValue) ? opt.defaultValue() : opt.defaultValue;\r\n +\t\t\t\t\t\t\t\tvl = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;\r\n \t\t\t\t\t\t\t\tif(fld[0].type==\'checkbox\') {\r\n \t\t\t\t\t\t\t\t\tvlc = vl.toLowerCase();\r\n \t\t\t\t\t\t\t\t\tif(vlc.search(/(false|0|no|off|undefined)/i)<0 && vlc!=="") {\r\n @@ -7349,7 +7530,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\ttmp = $(this).text();\r\n \t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\ttmp = $.unformat($(this),{rowId:rowid, colModel:cm[i]},i);\r\n +\t\t\t\t\t\t\t\ttmp = $.unformat.call(obj, $(this),{rowId:rowid, colModel:cm[i]},i);\r\n \t\t\t\t\t\t\t} catch (_) {\r\n \t\t\t\t\t\t\t\ttmp = cm[i].edittype=="textarea" ? $(this).text() : $(this).html();\r\n \t\t\t\t\t\t\t}\r\n @@ -7369,7 +7550,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tcase "select":\r\n \t\t\t\t\t\t\t\tvar opv = tmp.split(",");\r\n \t\t\t\t\t\t\t\topv = $.map(opv,function(n){return $.trim(n);});\r\n -\t\t\t\t\t\t\t\t$("#"+nm+" option","#"+fmid).each(function(j){\r\n +\t\t\t\t\t\t\t\t$("#"+nm+" option","#"+fmid).each(function(){\r\n \t\t\t\t\t\t\t\t\tif (!cm[i].editoptions.multiple && ($.trim(tmp) == $.trim($(this).text()) || opv[0] == $.trim($(this).text()) || opv[0] == $.trim($(this).val())) ){\r\n \t\t\t\t\t\t\t\t\t\tthis.selected= true;\r\n \t\t\t\t\t\t\t\t\t} else if (cm[i].editoptions.multiple){\r\n @@ -7408,7 +7589,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tcase \'custom\' :\r\n \t\t\t\t\t\t\t\ttry {\r\n \t\t\t\t\t\t\t\t\tif(cm[i].editoptions && $.isFunction(cm[i].editoptions.custom_value)) {\r\n -\t\t\t\t\t\t\t\t\t\tcm[i].editoptions.custom_value($("#"+nm,"#"+fmid),\'set\',tmp);\r\n +\t\t\t\t\t\t\t\t\t\tcm[i].editoptions.custom_value.call($t, $("#"+nm,"#"+fmid),\'set\',tmp);\r\n \t\t\t\t\t\t\t\t\t} else {throw "e1";}\r\n \t\t\t\t\t\t\t\t} catch (e) {\r\n \t\t\t\t\t\t\t\t\tif (e=="e1") {$.jgrid.info_dialog(jQuery.jgrid.errors.errcap,"function \'custom_value\' "+$.jgrid.edit.msg.nodefined,jQuery.jgrid.edit.bClose);}\r\n @@ -7419,7 +7600,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tcnt++;\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n -\t\t\t\tif(cnt>0) {$("#id_g","#"+frmtb).val(rowid);}\r\n +\t\t\t\tif(cnt>0) {$("#id_g",frmtb).val(rowid);}\r\n \t\t\t}\r\n \t\t\tfunction setNulls() {\r\n \t\t\t\t$.each($t.p.colModel, function(i,n){\r\n @@ -7432,27 +7613,38 @@ $.jgrid.extend({\r\n \t\t\t}\r\n \t\t\tfunction postIt() {\r\n \t\t\t\tvar copydata, ret=[true,"",""], onCS = {}, opers = $t.p.prmNames, idname, oper, key, selr, i;\r\n +\t\t\t\t\r\n +\t\t\t\tvar retvals = $($t).triggerHandler("jqGridAddEditBeforeCheckValues", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(retvals && typeof(retvals) === \'object\') {postdata = retvals;}\r\n +\t\t\t\t\r\n \t\t\t\tif($.isFunction(rp_ge[$t.p.id].beforeCheckValues)) {\r\n -\t\t\t\t\tvar retvals = rp_ge[$t.p.id].beforeCheckValues(postdata,$("#"+frmgr),postdata[$t.p.id+"_id"] == "_empty" ? opers.addoper : opers.editoper);\r\n +\t\t\t\t\tretvals = rp_ge[$t.p.id].beforeCheckValues.call($t, postdata,$("#"+frmgr),postdata[$t.p.id+"_id"] == "_empty" ? opers.addoper : opers.editoper);\r\n \t\t\t\t\tif(retvals && typeof(retvals) === \'object\') {postdata = retvals;}\r\n \t\t\t\t}\r\n \t\t\t\tfor( key in postdata ){\r\n \t\t\t\t\tif(postdata.hasOwnProperty(key)) {\r\n -\t\t\t\t\t\tret = $.jgrid.checkValues(postdata[key],key,$t);\r\n +\t\t\t\t\t\tret = $.jgrid.checkValues.call($t,postdata[key],key,$t);\r\n \t\t\t\t\t\tif(ret[0] === false) {break;}\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tsetNulls();\r\n \t\t\t\tif(ret[0]) {\r\n -\t\t\t\t\tif( $.isFunction( rp_ge[$t.p.id].onclickSubmit)) { \r\n -\t\t\t\t\t\t\tonCS = rp_ge[$t.p.id].onclickSubmit(rp_ge[$t.p.id],postdata) || {}; \r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\tif( $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {ret = rp_ge[$t.p.id].beforeSubmit(postdata,$("#"+frmgr));}\r\n +\t\t\t\t\tonCS = $($t).triggerHandler("jqGridAddEditClickSubmit", [rp_ge[$t.p.id], postdata, frmoper]);\r\n +\t\t\t\t\tif( onCS === undefined && $.isFunction( rp_ge[$t.p.id].onclickSubmit)) { \r\n +\t\t\t\t\t\tonCS = rp_ge[$t.p.id].onclickSubmit.call($t, rp_ge[$t.p.id], postdata) || {}; \r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tret = $($t).triggerHandler("jqGridAddEditBeforeSubmit", [postdata, $("#"+frmgr), frmoper]);\r\n +\t\t\t\t\tif(ret === undefined) {\r\n +\t\t\t\t\t\tret = [true,"",""];\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tif( ret[0] && $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {\r\n +\t\t\t\t\t\tret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata,$("#"+frmgr));\r\n +\t\t\t\t\t}\r\n \t\t\t\t}\r\n \r\n \t\t\t\tif(ret[0] && !rp_ge[$t.p.id].processing) {\r\n \t\t\t\t\trp_ge[$t.p.id].processing = true;\r\n -\t\t\t\t\t$("#sData", "#"+frmtb+"_2").addClass(\'ui-state-active\');\r\n +\t\t\t\t\t$("#sData", frmtb+"_2").addClass(\'ui-state-active\');\r\n \t\t\t\t\toper = opers.oper;\r\n \t\t\t\t\tidname = opers.id;\r\n \t\t\t\t\t// we add to pos data array the action - the name is oper\r\n @@ -7473,11 +7665,11 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tfor(i in $t.p.treeReader){\r\n \t\t\t\t\t\t\tif($t.p.treeReader.hasOwnProperty(i)) {\r\n -\t\t\t\t\t\t\tvar itm = $t.p.treeReader[i];\r\n -\t\t\t\t\t\t\tif(postdata.hasOwnProperty(itm)) {\r\n -\t\t\t\t\t\t\t\tif(postdata[oper] == opers.addoper && i === \'parent_id_field\') {continue;}\r\n -\t\t\t\t\t\t\t\tdelete postdata[itm];\r\n -\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\tvar itm = $t.p.treeReader[i];\r\n +\t\t\t\t\t\t\t\tif(postdata.hasOwnProperty(itm)) {\r\n +\t\t\t\t\t\t\t\t\tif(postdata[oper] == opers.addoper && i === \'parent_id_field\') {continue;}\r\n +\t\t\t\t\t\t\t\t\tdelete postdata[itm];\r\n +\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n @@ -7486,29 +7678,34 @@ $.jgrid.extend({\r\n \t\t\t\t\tvar ajaxOptions = $.extend({\r\n \t\t\t\t\t\turl: rp_ge[$t.p.id].url ? rp_ge[$t.p.id].url : $($t).jqGrid(\'getGridParam\',\'editurl\'),\r\n \t\t\t\t\t\ttype: rp_ge[$t.p.id].mtype,\r\n -\t\t\t\t\t\tdata: $.isFunction(rp_ge[$t.p.id].serializeEditData) ? rp_ge[$t.p.id].serializeEditData(postdata) : postdata,\r\n +\t\t\t\t\t\tdata: $.isFunction(rp_ge[$t.p.id].serializeEditData) ? rp_ge[$t.p.id].serializeEditData.call($t,postdata) : postdata,\r\n \t\t\t\t\t\tcomplete:function(data,Status){\r\n \t\t\t\t\t\t\tpostdata[idname] = $t.p.idPrefix + postdata[idname];\r\n \t\t\t\t\t\t\tif(Status != "success") {\r\n -\t\t\t\t\t\t\t ret[0] = false;\r\n -\t\t\t\t\t\t\t if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {\r\n -\t\t\t\t\t\t\t ret[1] = rp_ge[$t.p.id].errorTextFormat(data);\r\n -\t\t\t\t\t\t\t } else {\r\n -\t\t\t\t\t\t\t ret[1] = Status + " Status: \'" + data.statusText + "\'. Error code: " + data.status;\r\n +\t\t\t\t\t\t\t\tret[0] = false;\r\n +\t\t\t\t\t\t\t\tret[1] = $($t).triggerHandler("jqGridAddEditErrorTextFormat", [data, frmoper]);\r\n +\t\t\t\t\t\t\t\tif ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {\r\n +\t\t\t\t\t\t\t\t\tret[1] = rp_ge[$t.p.id].errorTextFormat.call($t, data);\r\n +\t\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t\tret[1] = Status + " Status: \'" + data.statusText + "\'. Error code: " + data.status;\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t// data is posted successful\r\n \t\t\t\t\t\t\t\t// execute aftersubmit with the returned data from server\r\n -\t\t\t\t\t\t\t\tif( $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {\r\n -\t\t\t\t\t\t\t\t\tret = rp_ge[$t.p.id].afterSubmit(data,postdata);\r\n +\t\t\t\t\t\t\t\tret = $($t).triggerHandler("jqGridAddEditAfterSubmit", [data, postdata, frmoper]);\r\n +\t\t\t\t\t\t\t\tif(ret === undefined) {\r\n +\t\t\t\t\t\t\t\t\tret = [true,"",""];\r\n +\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\tif( ret[0] && $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {\r\n +\t\t\t\t\t\t\t\t\tret = rp_ge[$t.p.id].afterSubmit.call($t, data,postdata);\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif(ret[0] === false) {\r\n -\t\t\t\t\t\t\t\t$("#FormError>td","#"+frmtb).html(ret[1]);\r\n -\t\t\t\t\t\t\t\t$("#FormError","#"+frmtb).show();\r\n +\t\t\t\t\t\t\t\t$("#FormError>td",frmtb).html(ret[1]);\r\n +\t\t\t\t\t\t\t\t$("#FormError",frmtb).show();\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t// remove some values if formattaer select or checkbox\r\n -\t\t\t\t\t\t\t\t$.each($t.p.colModel, function(i,n){\r\n +\t\t\t\t\t\t\t\t$.each($t.p.colModel, function(){\r\n \t\t\t\t\t\t\t\t\tif(extpost[this.name] && this.formatter && this.formatter==\'select\') {\r\n \t\t\t\t\t\t\t\t\t\ttry {delete extpost[this.name];} catch (e) {}\r\n \t\t\t\t\t\t\t\t\t}\r\n @@ -7536,7 +7733,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("setSelection",ret[2]);\r\n \t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\t\t\t\t} else if (rp_ge[$t.p.id].clearAfterAdd) {\r\n \t\t\t\t\t\t\t\t\t\tif(rp_ge[$t.p.id].reloadAfterSubmit) {$($t).trigger("reloadGrid");}\r\n \t\t\t\t\t\t\t\t\t\telse {\r\n @@ -7569,11 +7766,15 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("setRowData", postdata[idname],postdata);\r\n \t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\t\tif(rp_ge[$t.p.id].closeAfterEdit) {$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});}\r\n +\t\t\t\t\t\t\t\t\tif(rp_ge[$t.p.id].closeAfterEdit) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});}\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\tif($.isFunction(rp_ge[$t.p.id].afterComplete)) {\r\n \t\t\t\t\t\t\t\t\tcopydata = data;\r\n -\t\t\t\t\t\t\t\t\tsetTimeout(function(){rp_ge[$t.p.id].afterComplete(copydata,postdata,$("#"+frmgr));copydata=null;},500);\r\n +\t\t\t\t\t\t\t\t\tsetTimeout(function(){\r\n +\t\t\t\t\t\t\t\t\t\t$($t).triggerHandler("jqGridAddEditAfterComplete", [copydata, postdata, $("#"+frmgr), frmoper]);\r\n +\t\t\t\t\t\t\t\t\t\trp_ge[$t.p.id].afterComplete.call($t, copydata, postdata, $("#"+frmgr));\r\n +\t\t\t\t\t\t\t\t\t\tcopydata=null;\r\n +\t\t\t\t\t\t\t\t\t},500);\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {\r\n \t\t\t\t\t\t\t\t$("#"+frmgr).data("disabled",false);\r\n @@ -7587,7 +7788,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\trp_ge[$t.p.id].processing=false;\r\n -\t\t\t\t\t\t\t$("#sData", "#"+frmtb+"_2").removeClass(\'ui-state-active\');\r\n +\t\t\t\t\t\t\t$("#sData", frmtb+"_2").removeClass(\'ui-state-active\');\r\n \t\t\t\t\t\t\ttry{$(\':input:visible\',"#"+frmgr)[0].focus();} catch (e){}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxEditOptions );\r\n @@ -7610,10 +7811,10 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\tret[1] = dpret[1] || "Error deleting the selected row!" ;\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\tif(ajaxOptions.data.oper == opers.addoper && rp_ge[$t.p.id].closeAfterAdd ) {\r\n -\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\tif(ajaxOptions.data.oper == opers.editoper && rp_ge[$t.p.id].closeAfterEdit ) {\r\n -\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t} else {\r\n @@ -7622,8 +7823,8 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(ret[0] === false) {\r\n -\t\t\t\t\t$("#FormError>td","#"+frmtb).html(ret[1]);\r\n -\t\t\t\t\t$("#FormError","#"+frmtb).show();\r\n +\t\t\t\t\t$("#FormError>td",frmtb).html(ret[1]);\r\n +\t\t\t\t\t$("#FormError",frmtb).show();\r\n \t\t\t\t\t// return;\r\n \t\t\t\t}\r\n \t\t\t}\r\n @@ -7639,7 +7840,7 @@ $.jgrid.extend({\r\n \t\t\t}\r\n \t\t\tfunction checkUpdates () {\r\n \t\t\t\tvar stat = true;\r\n -\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n +\t\t\t\t$("#FormError",frmtb).hide();\r\n \t\t\t\tif(rp_ge[$t.p.id].checkOnUpdate) {\r\n \t\t\t\t\tpostdata = {};extpost={};\r\n \t\t\t\t\tgetFormData();\r\n @@ -7665,79 +7866,83 @@ $.jgrid.extend({\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tfunction updateNav(cr,totr){\r\n -\t\t\t\tif (cr===0) {$("#pData","#"+frmtb+"_2").addClass(\'ui-state-disabled\');} else {$("#pData","#"+frmtb+"_2").removeClass(\'ui-state-disabled\');}\r\n -\t\t\t\tif (cr==totr) {$("#nData","#"+frmtb+"_2").addClass(\'ui-state-disabled\');} else {$("#nData","#"+frmtb+"_2").removeClass(\'ui-state-disabled\');}\r\n +\t\t\t\tif (cr===0) {$("#pData",frmtb+"_2").addClass(\'ui-state-disabled\');} else {$("#pData",frmtb+"_2").removeClass(\'ui-state-disabled\');}\r\n +\t\t\t\tif (cr==totr) {$("#nData",frmtb+"_2").addClass(\'ui-state-disabled\');} else {$("#nData",frmtb+"_2").removeClass(\'ui-state-disabled\');}\r\n \t\t\t}\r\n \t\t\tfunction getCurrPos() {\r\n \t\t\t\tvar rowsInGrid = $($t).jqGrid("getDataIDs"),\r\n -\t\t\t\tselrow = $("#id_g","#"+frmtb).val(),\r\n +\t\t\t\tselrow = $("#id_g",frmtb).val(),\r\n \t\t\t\tpos = $.inArray(selrow,rowsInGrid);\r\n \t\t\t\treturn [pos,rowsInGrid];\r\n \t\t\t}\r\n \r\n -\t\t\tif ( $("#"+IDs.themodal).html() !== null ) {\r\n -\t\t\t\tif(onBeforeInit) {\r\n -\t\t\t\t\tshowFrm = onBeforeInit($("#"+frmgr));\r\n -\t\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n -\t\t\t\t\t\tshowFrm = true;\r\n -\t\t\t\t\t}\r\n +\t\t\tif ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {\r\n +\t\t\t\tshowFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [$("#"+$.jgrid.jqID(frmgr)), frmoper]);\r\n +\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n +\t\t\t\t\tshowFrm = true;\r\n +\t\t\t\t}\r\n +\t\t\t\tif(showFrm && onBeforeInit) {\r\n +\t\t\t\t\tshowFrm = onBeforeInit.call($t,$("#"+frmgr));\r\n \t\t\t\t}\r\n \t\t\t\tif(showFrm === false) {return;}\r\n \t\t\t\trestoreInline();\r\n -\t\t\t\t$(".ui-jqdialog-title","#"+IDs.modalhead).html(p.caption);\r\n -\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n +\t\t\t\t$(".ui-jqdialog-title","#"+$.jgrid.jqID(IDs.modalhead)).html(p.caption);\r\n +\t\t\t\t$("#FormError",frmtb).hide();\r\n \t\t\t\tif(rp_ge[$t.p.id].topinfo) {\r\n -\t\t\t\t\t$(".topinfo","#"+frmtb).html(rp_ge[$t.p.id].topinfo);\r\n -\t\t\t\t\t$(".tinfo","#"+frmtb).show();\r\n +\t\t\t\t\t$(".topinfo",frmtb).html(rp_ge[$t.p.id].topinfo);\r\n +\t\t\t\t\t$(".tinfo",frmtb).show();\r\n \t\t\t\t} else {\r\n -\t\t\t\t\t$(".tinfo","#"+frmtb).hide();\r\n +\t\t\t\t\t$(".tinfo",frmtb).hide();\r\n \t\t\t\t}\r\n \t\t\t\tif(rp_ge[$t.p.id].bottominfo) {\r\n -\t\t\t\t\t$(".bottominfo","#"+frmtb+"_2").html(rp_ge[$t.p.id].bottominfo);\r\n -\t\t\t\t\t$(".binfo","#"+frmtb+"_2").show();\r\n +\t\t\t\t\t$(".bottominfo",frmtb+"_2").html(rp_ge[$t.p.id].bottominfo);\r\n +\t\t\t\t\t$(".binfo",frmtb+"_2").show();\r\n \t\t\t\t} else {\r\n -\t\t\t\t\t$(".binfo","#"+frmtb+"_2").hide();\r\n +\t\t\t\t\t$(".binfo",frmtb+"_2").hide();\r\n \t\t\t\t}\r\n \t\t\t\t// filldata\r\n \t\t\t\tfillData(rowid,$t,frmgr);\r\n \t\t\t\t///\r\n \t\t\t\tif(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {\r\n -\t\t\t\t\t$("#pData, #nData","#"+frmtb+"_2").hide();\r\n +\t\t\t\t\t$("#pData, #nData",frmtb+"_2").hide();\r\n \t\t\t\t} else {\r\n -\t\t\t\t\t$("#pData, #nData","#"+frmtb+"_2").show();\r\n +\t\t\t\t\t$("#pData, #nData",frmtb+"_2").show();\r\n \t\t\t\t}\r\n \t\t\t\tif(rp_ge[$t.p.id].processing===true) {\r\n \t\t\t\t\trp_ge[$t.p.id].processing=false;\r\n -\t\t\t\t\t$("#sData", "#"+frmtb+"_2").removeClass(\'ui-state-active\');\r\n +\t\t\t\t\t$("#sData", frmtb+"_2").removeClass(\'ui-state-active\');\r\n \t\t\t\t}\r\n \t\t\t\tif($("#"+frmgr).data("disabled")===true) {\r\n -\t\t\t\t\t$(".confirm","#"+IDs.themodal).hide();\r\n +\t\t\t\t\t$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();\r\n \t\t\t\t\t$("#"+frmgr).data("disabled",false);\r\n \t\t\t\t}\r\n -\t\t\t\tif(onBeforeShow) {onBeforeShow($("#"+frmgr));}\r\n -\t\t\t\t$("#"+IDs.themodal).data("onClose",rp_ge[$t.p.id].onClose);\r\n -\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});\r\n +\t\t\t\t$($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr)); }\r\n +\t\t\t\t$("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);\r\n +\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});\r\n \t\t\t\tif(!closeovrl) {\r\n \t\t\t\t\t$(".jqmOverlay").click(function(){\r\n \t\t\t\t\t\tif(!checkUpdates()) {return false;}\r\n -\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n -\t\t\t\tif(onAfterShow) {onAfterShow($("#"+frmgr));}\r\n +\t\t\t\t$($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(onAfterShow) { onAfterShow.call($t, $("#"+frmgr)); }\r\n \t\t\t} else {\r\n \t\t\t\tvar dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px",\r\n \t\t\t\tfrm = $("<form name=\'FormPost\' id=\'"+frmgr+"\' class=\'FormGrid\' onSubmit=\'return false;\' style=\'width:100%;overflow:auto;position:relative;height:"+dh+";\'></form>").data("disabled",false),\r\n -\t\t\t\ttbl = $("<table id=\'"+frmtb+"\' class=\'EditTable\' cellspacing=\'0\' cellpadding=\'0\' border=\'0\'><tbody></tbody></table>");\r\n -\t\t\t\tif(onBeforeInit) {\r\n -\t\t\t\t\tshowFrm = onBeforeInit($("#"+frmgr));\r\n -\t\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n -\t\t\t\t\t\tshowFrm = true;\r\n -\t\t\t\t\t}\r\n +\t\t\t\ttbl = $("<table id=\'"+frmtborg+"\' class=\'EditTable\' cellspacing=\'0\' cellpadding=\'0\' border=\'0\'><tbody></tbody></table>");\r\n +\t\t\t\tshowFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n +\t\t\t\t\tshowFrm = true;\r\n +\t\t\t\t}\r\n +\t\t\t\tif(showFrm && onBeforeInit) {\r\n +\t\t\t\t\tshowFrm = onBeforeInit.call($t,$("#"+frmgr));\r\n \t\t\t\t}\r\n \t\t\t\tif(showFrm === false) {return;}\r\n \t\t\t\trestoreInline();\r\n -\t\t\t\t$($t.p.colModel).each( function(i) {\r\n +\t\t\t\t$($t.p.colModel).each( function() {\r\n \t\t\t\t\tvar fmto = this.formoptions;\r\n \t\t\t\t\tmaxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );\r\n \t\t\t\t\tmaxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );\r\n @@ -7762,7 +7967,7 @@ $.jgrid.extend({\r\n \t\t\t\tbN = "<a href=\'javascript:void(0)\' id=\'"+bn+"\' class=\'fm-button ui-state-default ui-corner-right\'><span class=\'ui-icon ui-icon-triangle-1-e\'></span></a>",\r\n \t\t\t\tbS ="<a href=\'javascript:void(0)\' id=\'sData\' class=\'fm-button ui-state-default ui-corner-all\'>"+p.bSubmit+"</a>",\r\n \t\t\t\tbC ="<a href=\'javascript:void(0)\' id=\'cData\' class=\'fm-button ui-state-default ui-corner-all\'>"+p.bCancel+"</a>";\r\n -\t\t\t\tvar bt = "<table border=\'0\' cellspacing=\'0\' cellpadding=\'0\' class=\'EditTable\' id=\'"+frmtb+"_2\'><tbody><tr><td colspan=\'2\'><hr class=\'ui-widget-content\' style=\'margin:1px\'/></td></tr><tr id=\'Act_Buttons\'><td class=\'navButton\'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class=\'EditButton\'>"+bS+bC+"</td></tr>";\r\n +\t\t\t\tvar bt = "<table border=\'0\' cellspacing=\'0\' cellpadding=\'0\' class=\'EditTable\' id=\'"+frmtborg+"_2\'><tbody><tr><td colspan=\'2\'><hr class=\'ui-widget-content\' style=\'margin:1px\'/></td></tr><tr id=\'Act_Buttons\'><td class=\'navButton\'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class=\'EditButton\'>"+bS+bC+"</td></tr>";\r\n \t\t\t\tbt += "<tr style=\'display:none\' class=\'binfo\'><td class=\'bottominfo\' colspan=\'2\'>"+rp_ge[$t.p.id].bottominfo+"</td></tr>";\r\n \t\t\t\tbt += "</tbody></table>";\r\n \t\t\t\tif(maxRows > 0) {\r\n @@ -7779,27 +7984,27 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t$(\'tbody\',tbl).append(row);\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n -\t\t\t\tp.gbox = "#gbox_"+gID;\r\n +\t\t\t\tp.gbox = "#gbox_"+$.jgrid.jqID(gID);\r\n \t\t\t\tvar cle = false;\r\n \t\t\t\tif(p.closeOnEscape===true){\r\n \t\t\t\t\tp.closeOnEscape = false;\r\n \t\t\t\t\tcle = true;\r\n \t\t\t\t}\r\n \t\t\t\tvar tms = $("<span></span>").append(frm).append(bt);\r\n -\t\t\t\t$.jgrid.createModal(IDs,tms,p,"#gview_"+$t.p.id,$("#gbox_"+$t.p.id)[0]);\r\n +\t\t\t\t$.jgrid.createModal(IDs,tms,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);\r\n \t\t\t\tif(rtlb) {\r\n -\t\t\t\t\t$("#pData, #nData","#"+frmtb+"_2").css("float","right");\r\n -\t\t\t\t\t$(".EditButton","#"+frmtb+"_2").css("text-align","left");\r\n +\t\t\t\t\t$("#pData, #nData",frmtb+"_2").css("float","right");\r\n +\t\t\t\t\t$(".EditButton",frmtb+"_2").css("text-align","left");\r\n \t\t\t\t}\r\n -\t\t\t\tif(rp_ge[$t.p.id].topinfo) {$(".tinfo","#"+frmtb).show();}\r\n -\t\t\t\tif(rp_ge[$t.p.id].bottominfo) {$(".binfo","#"+frmtb+"_2").show();}\r\n +\t\t\t\tif(rp_ge[$t.p.id].topinfo) {$(".tinfo",frmtb).show();}\r\n +\t\t\t\tif(rp_ge[$t.p.id].bottominfo) {$(".binfo",frmtb+"_2").show();}\r\n \t\t\t\ttms = null;bt=null;\r\n -\t\t\t\t$("#"+IDs.themodal).keydown( function( e ) {\r\n +\t\t\t\t$("#"+$.jgrid.jqID(IDs.themodal)).keydown( function( e ) {\r\n \t\t\t\t\tvar wkey = e.target;\r\n \t\t\t\t\tif ($("#"+frmgr).data("disabled")===true ) {return false;}//??\r\n \t\t\t\t\tif(rp_ge[$t.p.id].savekey[0] === true && e.which == rp_ge[$t.p.id].savekey[1]) { // save\r\n \t\t\t\t\t\tif(wkey.tagName != "TEXTAREA") {\r\n -\t\t\t\t\t\t\t$("#sData", "#"+frmtb+"_2").trigger("click");\r\n +\t\t\t\t\t\t\t$("#sData", frmtb+"_2").trigger("click");\r\n \t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n @@ -7809,23 +8014,23 @@ $.jgrid.extend({\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(rp_ge[$t.p.id].navkeys[0]===true) {\r\n -\t\t\t\t\t\tif($("#id_g","#"+frmtb).val() == "_empty") {return true;}\r\n +\t\t\t\t\t\tif($("#id_g",frmtb).val() == "_empty") {return true;}\r\n \t\t\t\t\t\tif(e.which == rp_ge[$t.p.id].navkeys[1]){ //up\r\n -\t\t\t\t\t\t\t$("#pData", "#"+frmtb+"_2").trigger("click");\r\n +\t\t\t\t\t\t\t$("#pData", frmtb+"_2").trigger("click");\r\n \t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(e.which == rp_ge[$t.p.id].navkeys[2]){ //down\r\n -\t\t\t\t\t\t\t$("#nData", "#"+frmtb+"_2").trigger("click");\r\n +\t\t\t\t\t\t\t$("#nData", frmtb+"_2").trigger("click");\r\n \t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n \t\t\t\tif(p.checkOnUpdate) {\r\n -\t\t\t\t\t$("a.ui-jqdialog-titlebar-close span","#"+IDs.themodal).removeClass("jqmClose");\r\n -\t\t\t\t\t$("a.ui-jqdialog-titlebar-close","#"+IDs.themodal).unbind("click")\r\n +\t\t\t\t\t$("a.ui-jqdialog-titlebar-close span","#"+$.jgrid.jqID(IDs.themodal)).removeClass("jqmClose");\r\n +\t\t\t\t\t$("a.ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.themodal)).unbind("click")\r\n \t\t\t\t\t.click(function(){\r\n \t\t\t\t\t\tif(!checkUpdates()) {return false;}\r\n -\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n @@ -7833,11 +8038,11 @@ $.jgrid.extend({\r\n \t\t\t\tp.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon);\r\n \t\t\t\t// beforeinitdata after creation of the form\r\n \t\t\t\tif(p.saveicon[0]===true) {\r\n -\t\t\t\t\t$("#sData","#"+frmtb+"_2").addClass(p.saveicon[1] == "right" ? \'fm-button-icon-right\' : \'fm-button-icon-left\')\r\n +\t\t\t\t\t$("#sData",frmtb+"_2").addClass(p.saveicon[1] == "right" ? \'fm-button-icon-right\' : \'fm-button-icon-left\')\r\n \t\t\t\t\t.append("<span class=\'ui-icon "+p.saveicon[2]+"\'></span>");\r\n \t\t\t\t}\r\n \t\t\t\tif(p.closeicon[0]===true) {\r\n -\t\t\t\t\t$("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] == "right" ? \'fm-button-icon-right\' : \'fm-button-icon-left\')\r\n +\t\t\t\t\t$("#cData",frmtb+"_2").addClass(p.closeicon[1] == "right" ? \'fm-button-icon-right\' : \'fm-button-icon-left\')\r\n \t\t\t\t\t.append("<span class=\'ui-icon "+p.closeicon[2]+"\'></span>");\r\n \t\t\t\t}\r\n \t\t\t\tif(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {\r\n @@ -7849,46 +8054,49 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tii = \'<iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\\\'0\\\');" src="javascript:false;"></iframe>\';\r\n \t\t\t\t\t} else {ii="";}\r\n \t\t\t\t\t$("<div class=\'ui-widget-overlay jqgrid-overlay confirm\' style=\'z-index:"+zI+";display:none;\'> "+ii+"</div><div class=\'confirm ui-widget-content ui-jqconfirm\' style=\'z-index:"+(zI+1)+"\'>"+p.saveData+"<br/><br/>"+bS+bN+bC+"</div>").insertAfter("#"+frmgr);\r\n -\t\t\t\t\t$("#sNew","#"+IDs.themodal).click(function(){\r\n +\t\t\t\t\t$("#sNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){\r\n \t\t\t\t\t\tpostIt();\r\n \t\t\t\t\t\t$("#"+frmgr).data("disabled",false);\r\n -\t\t\t\t\t\t$(".confirm","#"+IDs.themodal).hide();\r\n +\t\t\t\t\t\t$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n -\t\t\t\t\t$("#nNew","#"+IDs.themodal).click(function(){\r\n -\t\t\t\t\t\t$(".confirm","#"+IDs.themodal).hide();\r\n +\t\t\t\t\t$("#nNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){\r\n +\t\t\t\t\t\t$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();\r\n \t\t\t\t\t\t$("#"+frmgr).data("disabled",false);\r\n \t\t\t\t\t\tsetTimeout(function(){$(":input","#"+frmgr)[0].focus();},0);\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n -\t\t\t\t\t$("#cNew","#"+IDs.themodal).click(function(){\r\n -\t\t\t\t\t\t$(".confirm","#"+IDs.themodal).hide();\r\n +\t\t\t\t\t$("#cNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){\r\n +\t\t\t\t\t\t$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();\r\n \t\t\t\t\t\t$("#"+frmgr).data("disabled",false);\r\n -\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t\t// here initform - only once\r\n -\t\t\t\tif(onInitializeForm) {onInitializeForm($("#"+frmgr));}\r\n -\t\t\t\tif(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData","#"+frmtb+"_2").hide();} else {$("#pData,#nData","#"+frmtb+"_2").show();}\r\n -\t\t\t\tif(onBeforeShow) {onBeforeShow($("#"+frmgr));}\r\n -\t\t\t\t$("#"+IDs.themodal).data("onClose",rp_ge[$t.p.id].onClose);\r\n -\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, overlay: p.overlay,modal:p.modal});\r\n +\t\t\t\t$($t).triggerHandler("jqGridAddEditInitializeForm", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(onInitializeForm) {onInitializeForm.call($t,$("#"+frmgr));}\r\n +\t\t\t\tif(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData",frmtb+"_2").hide();} else {$("#pData,#nData",frmtb+"_2").show();}\r\n +\t\t\t\t$($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr));}\r\n +\t\t\t\t$("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);\r\n +\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, overlay: p.overlay,modal:p.modal});\r\n \t\t\t\tif(!closeovrl) {\r\n \t\t\t\t\t$(".jqmOverlay").click(function(){\r\n \t\t\t\t\t\tif(!checkUpdates()) {return false;}\r\n -\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n -\t\t\t\tif(onAfterShow) {onAfterShow($("#"+frmgr));}\r\n -\t\t\t\t$(".fm-button","#"+IDs.themodal).hover(\r\n -\t\t\t\t function(){$(this).addClass(\'ui-state-hover\');},\r\n -\t\t\t\t function(){$(this).removeClass(\'ui-state-hover\');}\r\n +\t\t\t\t$($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);\r\n +\t\t\t\tif(onAfterShow) { onAfterShow.call($t, $("#"+frmgr)); }\r\n +\t\t\t\t$(".fm-button","#"+$.jgrid.jqID(IDs.themodal)).hover(\r\n +\t\t\t\t\tfunction(){$(this).addClass(\'ui-state-hover\');},\r\n +\t\t\t\t\tfunction(){$(this).removeClass(\'ui-state-hover\');}\r\n \t\t\t\t);\r\n -\t\t\t\t$("#sData", "#"+frmtb+"_2").click(function(e){\r\n +\t\t\t\t$("#sData", frmtb+"_2").click(function(){\r\n \t\t\t\t\tpostdata = {};extpost={};\r\n -\t\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n +\t\t\t\t\t$("#FormError",frmtb).hide();\r\n \t\t\t\t\t// all depend on ret array\r\n \t\t\t\t\t//ret[0] - succes\r\n \t\t\t\t\t//ret[1] - msg if not succes\r\n @@ -7900,7 +8108,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tdiff = compareData(newData,rp_ge[$t.p.id]._savedData);\r\n \t\t\t\t\t\tif(diff) {\r\n \t\t\t\t\t\t\t$("#"+frmgr).data("disabled",true);\r\n -\t\t\t\t\t\t\t$(".confirm","#"+IDs.themodal).show();\r\n +\t\t\t\t\t\t\t$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).show();\r\n \t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\tpostIt();\r\n \t\t\t\t\t\t}\r\n @@ -7909,41 +8117,51 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\t$("#cData", "#"+frmtb+"_2").click(function(e){\r\n +\t\t\t\t$("#cData", frmtb+"_2").click(function(){\r\n \t\t\t\t\tif(!checkUpdates()) {return false;}\r\n -\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\t$("#nData", "#"+frmtb+"_2").click(function(e){\r\n +\t\t\t\t$("#nData", frmtb+"_2").click(function(){\r\n \t\t\t\t\tif(!checkUpdates()) {return false;}\r\n -\t\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n +\t\t\t\t\t$("#FormError",frmtb).hide();\r\n \t\t\t\t\tvar npos = getCurrPos();\r\n \t\t\t\t\tnpos[0] = parseInt(npos[0],10);\r\n \t\t\t\t\tif(npos[0] != -1 && npos[1][npos[0]+1]) {\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridAddEditClickPgButtons", [\'next\',$("#"+frmgr),npos[1][npos[0]]]);\r\n +\t\t\t\t\t\tvar nposret = true;\r\n \t\t\t\t\t\tif($.isFunction(p.onclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.onclickPgButtons(\'next\',$("#"+frmgr),npos[1][npos[0]]);\r\n +\t\t\t\t\t\t\tnposret = p.onclickPgButtons.call($t, \'next\',$("#"+frmgr),npos[1][npos[0]]);\r\n +\t\t\t\t\t\t\tif( nposret !== undefined && nposret === false ) {return false;}\r\n \t\t\t\t\t\t}\r\n +\t\t\t\t\t\tif( $("#"+$.jgrid.jqID(npos[1][npos[0]+1])).hasClass(\'ui-state-disabled\')) {return false;}\r\n \t\t\t\t\t\tfillData(npos[1][npos[0]+1],$t,frmgr);\r\n \t\t\t\t\t\t$($t).jqGrid("setSelection",npos[1][npos[0]+1]);\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridAddEditAfterClickPgButtons", [\'next\',$("#"+frmgr),npos[1][npos[0]]]);\r\n \t\t\t\t\t\tif($.isFunction(p.afterclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.afterclickPgButtons(\'next\',$("#"+frmgr),npos[1][npos[0]+1]);\r\n +\t\t\t\t\t\t\tp.afterclickPgButtons.call($t, \'next\',$("#"+frmgr),npos[1][npos[0]+1]);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tupdateNav(npos[0]+1,npos[1].length-1);\r\n \t\t\t\t\t}\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\t$("#pData", "#"+frmtb+"_2").click(function(e){\r\n +\t\t\t\t$("#pData", frmtb+"_2").click(function(){\r\n \t\t\t\t\tif(!checkUpdates()) {return false;}\r\n -\t\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n +\t\t\t\t\t$("#FormError",frmtb).hide();\r\n \t\t\t\t\tvar ppos = getCurrPos();\r\n \t\t\t\t\tif(ppos[0] != -1 && ppos[1][ppos[0]-1]) {\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridAddEditClickPgButtons", [\'prev\',$("#"+frmgr),ppos[1][ppos[0]]]);\r\n +\t\t\t\t\t\tvar pposret = true;\r\n \t\t\t\t\t\tif($.isFunction(p.onclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.onclickPgButtons(\'prev\',$("#"+frmgr),ppos[1][ppos[0]]);\r\n +\t\t\t\t\t\t\tpposret = p.onclickPgButtons.call($t, \'prev\',$("#"+frmgr),ppos[1][ppos[0]]);\r\n +\t\t\t\t\t\t\tif( pposret !== undefined && pposret === false ) {return false;}\r\n \t\t\t\t\t\t}\r\n +\t\t\t\t\t\tif( $("#"+$.jgrid.jqID(ppos[1][ppos[0]-1])).hasClass(\'ui-state-disabled\')) {return false;}\r\n \t\t\t\t\t\tfillData(ppos[1][ppos[0]-1],$t,frmgr);\r\n \t\t\t\t\t\t$($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridAddEditAfterClickPgButtons", [\'prev\',$("#"+frmgr),ppos[1][ppos[0]]]);\r\n \t\t\t\t\t\tif($.isFunction(p.afterclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.afterclickPgButtons(\'prev\',$("#"+frmgr),ppos[1][ppos[0]-1]);\r\n +\t\t\t\t\t\t\tp.afterclickPgButtons.call($t, \'prev\',$("#"+frmgr),ppos[1][ppos[0]-1]);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tupdateNav(ppos[0]-1,ppos[1].length-1);\r\n \t\t\t\t\t}\r\n @@ -7976,18 +8194,20 @@ $.jgrid.extend({\r\n \t\t\tbeforeInitData : null,\r\n \t\t\tviewPagerButtons : true\r\n \t\t}, $.jgrid.view, p || {});\r\n +\t\trp_ge[$(this)[0].p.id] = p;\r\n \t\treturn this.each(function(){\r\n \t\t\tvar $t = this;\r\n \t\t\tif (!$t.grid || !rowid) {return;}\r\n \t\t\tvar gID = $t.p.id,\r\n -\t\t\tfrmgr = "ViewGrid_"+gID , frmtb = "ViewTbl_"+gID,\r\n +\t\t\tfrmgr = "ViewGrid_"+$.jgrid.jqID( gID ), frmtb = "ViewTbl_" + $.jgrid.jqID( gID ),\r\n +\t\t\tfrmgr_id = "ViewGrid_"+gID, frmtb_id = "ViewTbl_"+gID,\r\n \t\t\tIDs = {themodal:\'viewmod\'+gID,modalhead:\'viewhd\'+gID,modalcontent:\'viewcnt\'+gID, scrollelm : frmgr},\r\n -\t\t\tonBeforeInit = $.isFunction(p.beforeInitData) ? p.beforeInitData : false,\r\n +\t\t\tonBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,\r\n \t\t\tshowFrm = true,\r\n \t\t\tmaxCols = 1, maxRows=0;\r\n \t\t\tfunction focusaref(){ //Sfari 3 issues\r\n -\t\t\t\tif(p.closeOnEscape===true || p.navkeys[0]===true) {\r\n -\t\t\t\t\tsetTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+IDs.modalhead).focus();},0);\r\n +\t\t\t\tif(rp_ge[$t.p.id].closeOnEscape===true || rp_ge[$t.p.id].navkeys[0]===true) {\r\n +\t\t\t\t\tsetTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).focus();},0);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tfunction createData(rowid,obj,tb,maxcols){\r\n @@ -7999,7 +8219,7 @@ $.jgrid.extend({\r\n \t\t\t\t\ttmpl += i == 1 ? tdtmpl : tdtmpl2;\r\n \t\t\t\t}\r\n \t\t\t\t// find max number align rigth with property formatter\r\n -\t\t\t\t$(obj.p.colModel).each( function(i) {\r\n +\t\t\t\t$(obj.p.colModel).each( function() {\r\n \t\t\t\t\tif(this.editrules && this.editrules.edithidden === true) {\r\n \t\t\t\t\t\thc = false;\r\n \t\t\t\t\t} else {\r\n @@ -8037,8 +8257,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tsetme = this.align === \'right\' && maxw !==0 ? true : false;\r\n -\t\t\t\t\t\tvar opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm}),\r\n -\t\t\t\t\t\tfrmopt = $.extend({},{rowabove:false,rowcontent:\'\'}, this.formoptions || {}),\r\n +\t\t\t\t\t\tvar frmopt = $.extend({},{rowabove:false,rowcontent:\'\'}, this.formoptions || {}),\r\n \t\t\t\t\t\trp = parseInt(frmopt.rowpos,10) || cnt+1,\r\n \t\t\t\t\t\tcp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);\r\n \t\t\t\t\t\tif(frmopt.rowabove) {\r\n @@ -8107,32 +8326,32 @@ $.jgrid.extend({\r\n \t\t\t\treturn [pos,rowsInGrid];\r\n \t\t\t}\r\n \r\n -\t\t\tif ( $("#"+IDs.themodal).html() !== null ) {\r\n +\t\t\tif ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {\r\n \t\t\t\tif(onBeforeInit) {\r\n -\t\t\t\t\tshowFrm = onBeforeInit($("#"+frmgr));\r\n +\t\t\t\t\tshowFrm = onBeforeInit.call($t,$("#"+frmgr));\r\n \t\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n \t\t\t\t\t\tshowFrm = true;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(showFrm === false) {return;}\r\n -\t\t\t\t$(".ui-jqdialog-title","#"+IDs.modalhead).html(p.caption);\r\n +\t\t\t\t$(".ui-jqdialog-title","#"+$.jgrid.jqID(IDs.modalhead)).html(p.caption);\r\n \t\t\t\t$("#FormError","#"+frmtb).hide();\r\n \t\t\t\tfillData(rowid,$t);\r\n -\t\t\t\tif($.isFunction(p.beforeShowForm)) {p.beforeShowForm($("#"+frmgr));}\r\n -\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});\r\n +\t\t\t\tif($.isFunction(rp_ge[$t.p.id].beforeShowForm)) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+frmgr));}\r\n +\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});\r\n \t\t\t\tfocusaref();\r\n \t\t\t} else {\r\n \t\t\t\tvar dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px";\r\n -\t\t\t\tvar frm = $("<form name=\'FormPost\' id=\'"+frmgr+"\' class=\'FormGrid\' style=\'width:100%;overflow:auto;position:relative;height:"+dh+";\'></form>"),\r\n -\t\t\t\ttbl =$("<table id=\'"+frmtb+"\' class=\'EditTable\' cellspacing=\'1\' cellpadding=\'2\' border=\'0\' style=\'table-layout:fixed\'><tbody></tbody></table>");\r\n +\t\t\t\tvar frm = $("<form name=\'FormPost\' id=\'"+frmgr_id+"\' class=\'FormGrid\' style=\'width:100%;overflow:auto;position:relative;height:"+dh+";\'></form>"),\r\n +\t\t\t\ttbl =$("<table id=\'"+frmtb_id+"\' class=\'EditTable\' cellspacing=\'1\' cellpadding=\'2\' border=\'0\' style=\'table-layout:fixed\'><tbody></tbody></table>");\r\n \t\t\t\tif(onBeforeInit) {\r\n -\t\t\t\t\tshowFrm = onBeforeInit($("#"+frmgr));\r\n +\t\t\t\t\tshowFrm = onBeforeInit.call($t,$("#"+frmgr));\r\n \t\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n \t\t\t\t\t\tshowFrm = true;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tif(showFrm === false) {return;}\r\n -\t\t\t\t$($t.p.colModel).each( function(i) {\r\n +\t\t\t\t$($t.p.colModel).each( function() {\r\n \t\t\t\t\tvar fmto = this.formoptions;\r\n \t\t\t\t\tmaxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );\r\n \t\t\t\t\tmaxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );\r\n @@ -8162,14 +8381,9 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t$(\'tbody\',tbl).append(row);\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n -\t\t\t\tp.gbox = "#gbox_"+gID;\r\n -\t\t\t\tvar cle = false;\r\n -\t\t\t\tif(p.closeOnEscape===true){\r\n -\t\t\t\t\tp.closeOnEscape = false;\r\n -\t\t\t\t\tcle = true;\r\n -\t\t\t\t}\r\n +\t\t\t\tp.gbox = "#gbox_"+$.jgrid.jqID(gID);\r\n \t\t\t\tvar bt = $("<span></span>").append(frm).append("<table border=\'0\' class=\'EditTable\' id=\'"+frmtb+"_2\'><tbody><tr id=\'Act_Buttons\'><td class=\'navButton\' width=\'"+p.labelswidth+"\'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class=\'EditButton\'>"+bC+"</td></tr></tbody></table>");\r\n -\t\t\t\t$.jgrid.createModal(IDs,bt,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]);\r\n +\t\t\t\t$.jgrid.createModal(IDs,bt,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);\r\n \t\t\t\tif(rtlb) {\r\n \t\t\t\t\t$("#pData, #nData","#"+frmtb+"_2").css("float","right");\r\n \t\t\t\t\t$(".EditButton","#"+frmtb+"_2").css("text-align","left");\r\n @@ -8178,7 +8392,7 @@ $.jgrid.extend({\r\n \t\t\t\tbt = null;\r\n \t\t\t\t$("#"+IDs.themodal).keydown( function( e ) {\r\n \t\t\t\t\tif(e.which === 27) {\r\n -\t\t\t\t\t\tif(cle)\t{$.jgrid.hideModal(this,{gb:p.gbox,jqm:p.jqModal, onClose: p.onClose});}\r\n +\t\t\t\t\t\tif(rp_ge[$t.p.id].closeOnEscape) {$.jgrid.hideModal(this,{gb:p.gbox,jqm:p.jqModal, onClose: p.onClose});}\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t}\r\n \t\t\t\t\tif(p.navkeys[0]===true) {\r\n @@ -8196,70 +8410,47 @@ $.jgrid.extend({\r\n \t\t\t\tif(p.closeicon[0]===true) {\r\n \t\t\t\t\t$("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] == "right" ? \'fm-button-icon-right\' : \'fm-button-icon-left\')\r\n \t\t\t\t\t.append("<span class=\'ui-icon "+p.closeicon[2]+"\'></span>");\r\n -\t\t\t\t}\r - -]]></string> </value> - </item> - <item> - <key> <string>next</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="6" aka="AAAAAAAAAAY="> - <pickle> - <global name="Pdata" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>data</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -\n -\t\t\t\tif($.isFunction(p.beforeShowForm)) {p.beforeShowForm($("#"+frmgr));}\r\n -\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, modal:p.modal});\r\n +\t\t\t\t}\r\n +\t\t\t\tif($.isFunction(p.beforeShowForm)) {p.beforeShowForm.call($t,$("#"+frmgr));}\r\n +\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, modal:p.modal});\r\n \t\t\t\t$(".fm-button:not(.ui-state-disabled)","#"+frmtb+"_2").hover(\r\n -\t\t\t\t function(){$(this).addClass(\'ui-state-hover\');},\r\n -\t\t\t\t function(){$(this).removeClass(\'ui-state-hover\');}\r\n +\t\t\t\t\tfunction(){$(this).addClass(\'ui-state-hover\');},\r\n +\t\t\t\t\tfunction(){$(this).removeClass(\'ui-state-hover\');}\r\n \t\t\t\t);\r\n \t\t\t\tfocusaref();\r\n -\t\t\t\t$("#cData", "#"+frmtb+"_2").click(function(e){\r\n -\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: p.onClose});\r\n +\t\t\t\t$("#cData", "#"+frmtb+"_2").click(function(){\r\n +\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: p.onClose});\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\t$("#nData", "#"+frmtb+"_2").click(function(e){\r\n +\t\t\t\t$("#nData", "#"+frmtb+"_2").click(function(){\r\n \t\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n \t\t\t\t\tvar npos = getCurrPos();\r\n \t\t\t\t\tnpos[0] = parseInt(npos[0],10);\r\n \t\t\t\t\tif(npos[0] != -1 && npos[1][npos[0]+1]) {\r\n \t\t\t\t\t\tif($.isFunction(p.onclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.onclickPgButtons(\'next\',$("#"+frmgr),npos[1][npos[0]]);\r\n +\t\t\t\t\t\t\tp.onclickPgButtons.call($t,\'next\',$("#"+frmgr),npos[1][npos[0]]);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tfillData(npos[1][npos[0]+1],$t);\r\n \t\t\t\t\t\t$($t).jqGrid("setSelection",npos[1][npos[0]+1]);\r\n \t\t\t\t\t\tif($.isFunction(p.afterclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.afterclickPgButtons(\'next\',$("#"+frmgr),npos[1][npos[0]+1]);\r\n +\t\t\t\t\t\t\tp.afterclickPgButtons.call($t,\'next\',$("#"+frmgr),npos[1][npos[0]+1]);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tupdateNav(npos[0]+1,npos[1].length-1);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfocusaref();\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\t$("#pData", "#"+frmtb+"_2").click(function(e){\r\n +\t\t\t\t$("#pData", "#"+frmtb+"_2").click(function(){\r\n \t\t\t\t\t$("#FormError","#"+frmtb).hide();\r\n \t\t\t\t\tvar ppos = getCurrPos();\r\n \t\t\t\t\tif(ppos[0] != -1 && ppos[1][ppos[0]-1]) {\r\n \t\t\t\t\t\tif($.isFunction(p.onclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.onclickPgButtons(\'prev\',$("#"+frmgr),ppos[1][ppos[0]]);\r\n +\t\t\t\t\t\t\tp.onclickPgButtons.call($t,\'prev\',$("#"+frmgr),ppos[1][ppos[0]]);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tfillData(ppos[1][ppos[0]-1],$t);\r\n \t\t\t\t\t\t$($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);\r\n \t\t\t\t\t\tif($.isFunction(p.afterclickPgButtons)) {\r\n -\t\t\t\t\t\t\tp.afterclickPgButtons(\'prev\',$("#"+frmgr),ppos[1][ppos[0]-1]);\r\n +\t\t\t\t\t\t\tp.afterclickPgButtons.call($t,\'prev\',$("#"+frmgr),ppos[1][ppos[0]-1]);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tupdateNav(ppos[0]-1,ppos[1].length-1);\r\n \t\t\t\t\t}\r\n @@ -8312,12 +8503,13 @@ $.jgrid.extend({\r\n \t\t\tonBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,\r\n \t\t\tgID = $t.p.id, onCS = {},\r\n \t\t\tshowFrm = true,\r\n -\t\t\tdtbl = "DelTbl_"+gID,postd, idname, opers, oper,\r\n +\t\t\tdtbl = "DelTbl_"+$.jgrid.jqID(gID),postd, idname, opers, oper,\r\n +\t\t\tdtbl_id = "DelTbl_" + gID,\r\n \t\t\tIDs = {themodal:\'delmod\'+gID,modalhead:\'delhd\'+gID,modalcontent:\'delcnt\'+gID, scrollelm: dtbl};\r\n \t\t\tif (jQuery.isArray(rowids)) {rowids = rowids.join();}\r\n -\t\t\tif ( $("#"+IDs.themodal).html() !== null ) {\r\n +\t\t\tif ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {\r\n \t\t\t\tif(onBeforeInit) {\r\n -\t\t\t\t\tshowFrm = onBeforeInit( $("#"+dtbl));\r\n +\t\t\t\t\tshowFrm = onBeforeInit.call($t,$("#"+dtbl));\r\n \t\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n \t\t\t\t\t\tshowFrm = true;\r\n \t\t\t\t\t}\r\n @@ -8329,12 +8521,12 @@ $.jgrid.extend({\r\n \t\t\t\t\trp_ge[$t.p.id].processing=false;\r\n \t\t\t\t\t$("#dData", "#"+dtbl).removeClass(\'ui-state-active\');\r\n \t\t\t\t}\r\n -\t\t\t\tif(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm($("#"+dtbl));}\r\n -\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:rp_ge[$t.p.id].jqModal,jqM: false, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});\r\n -\t\t\t\tif(onAfterShow) {rp_ge[$t.p.id].afterShowForm($("#"+dtbl));}\r\n +\t\t\t\tif(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));}\r\n +\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal,jqM: false, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});\r\n +\t\t\t\tif(onAfterShow) {rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));}\r\n \t\t\t} else {\r\n \t\t\t\tvar dh = isNaN(rp_ge[$t.p.id].dataheight) ? rp_ge[$t.p.id].dataheight : rp_ge[$t.p.id].dataheight+"px";\r\n -\t\t\t\tvar tbl = "<div id=\'"+dtbl+"\' class=\'formdata\' style=\'width:100%;overflow:auto;position:relative;height:"+dh+";\'>";\r\n +\t\t\t\tvar tbl = "<div id=\'"+dtbl_id+"\' class=\'formdata\' style=\'width:100%;overflow:auto;position:relative;height:"+dh+";\'>";\r\n \t\t\t\ttbl += "<table class=\'DelTable\'><tbody>";\r\n \t\t\t\t// error data\r\n \t\t\t\ttbl += "<tr id=\'DelError\' style=\'display:none\'><td class=\'ui-state-error\'></td></tr>";\r\n @@ -8345,11 +8537,11 @@ $.jgrid.extend({\r\n \t\t\t\tvar bS = "<a href=\'javascript:void(0)\' id=\'dData\' class=\'fm-button ui-state-default ui-corner-all\'>"+p.bSubmit+"</a>",\r\n \t\t\t\tbC = "<a href=\'javascript:void(0)\' id=\'eData\' class=\'fm-button ui-state-default ui-corner-all\'>"+p.bCancel+"</a>";\r\n \t\t\t\ttbl += "<table cellspacing=\'0\' cellpadding=\'0\' border=\'0\' class=\'EditTable\' id=\'"+dtbl+"_2\'><tbody><tr><td><hr class=\'ui-widget-content\' style=\'margin:1px\'/></td></tr><tr><td class=\'DelButton EditButton\'>"+bS+" "+bC+"</td></tr></tbody></table>";\r\n -\t\t\t\tp.gbox = "#gbox_"+gID;\r\n -\t\t\t\t$.jgrid.createModal(IDs,tbl,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]);\r\n +\t\t\t\tp.gbox = "#gbox_"+$.jgrid.jqID(gID);\r\n +\t\t\t\t$.jgrid.createModal(IDs,tbl,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);\r\n \r\n \t\t\t\tif(onBeforeInit) {\r\n -\t\t\t\t\tshowFrm = onBeforeInit( $("#"+dtbl) );\r\n +\t\t\t\t\tshowFrm = onBeforeInit.call($t,$("#"+dtbl));\r\n \t\t\t\t\tif(typeof(showFrm) == "undefined") {\r\n \t\t\t\t\t\tshowFrm = true;\r\n \t\t\t\t\t}\r\n @@ -8357,8 +8549,8 @@ $.jgrid.extend({\r\n \t\t\t\tif(showFrm === false) {return;}\r\n \r\n \t\t\t\t$(".fm-button","#"+dtbl+"_2").hover(\r\n -\t\t\t\t function(){$(this).addClass(\'ui-state-hover\');},\r\n -\t\t\t\t function(){$(this).removeClass(\'ui-state-hover\');}\r\n +\t\t\t\t\tfunction(){$(this).addClass(\'ui-state-hover\');},\r\n +\t\t\t\t\tfunction(){$(this).removeClass(\'ui-state-hover\');}\r\n \t\t\t\t);\r\n \t\t\t\tp.delicon = $.extend([true,"left","ui-icon-scissors"],rp_ge[$t.p.id].delicon);\r\n \t\t\t\tp.cancelicon = $.extend([true,"left","ui-icon-cancel"],rp_ge[$t.p.id].cancelicon);\r\n @@ -8370,36 +8562,36 @@ $.jgrid.extend({\r\n \t\t\t\t\t$("#eData","#"+dtbl+"_2").addClass(p.cancelicon[1] == "right" ? \'fm-button-icon-right\' : \'fm-button-icon-left\')\r\n \t\t\t\t\t.append("<span class=\'ui-icon "+p.cancelicon[2]+"\'></span>");\r\n \t\t\t\t}\r\n -\t\t\t\t$("#dData","#"+dtbl+"_2").click(function(e){\r\n +\t\t\t\t$("#dData","#"+dtbl+"_2").click(function(){\r\n \t\t\t\t\tvar ret=[true,""];onCS = {};\r\n \t\t\t\t\tvar postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,...\r\n -\t\t\t\t\tif( $.isFunction( rp_ge[$t.p.id].onclickSubmit ) ) {onCS = rp_ge[$t.p.id].onclickSubmit(rp_ge[$t.p.id], postdata) || {};}\r\n -\t\t\t\t\tif( $.isFunction( rp_ge[$t.p.id].beforeSubmit ) ) {ret = rp_ge[$t.p.id].beforeSubmit(postdata);}\r\n +\t\t\t\t\tif( $.isFunction( rp_ge[$t.p.id].onclickSubmit ) ) {onCS = rp_ge[$t.p.id].onclickSubmit.call($t,rp_ge[$t.p.id], postdata) || {};}\r\n +\t\t\t\t\tif( $.isFunction( rp_ge[$t.p.id].beforeSubmit ) ) {ret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata);}\r\n \t\t\t\t\tif(ret[0] && !rp_ge[$t.p.id].processing) {\r\n \t\t\t\t\t\trp_ge[$t.p.id].processing = true;\r\n -\t\t\t\t\t\t$(this).addClass(\'ui-state-active\');\r\n \t\t\t\t\t\topers = $t.p.prmNames;\r\n \t\t\t\t\t\tpostd = $.extend({},rp_ge[$t.p.id].delData, onCS);\r\n \t\t\t\t\t\toper = opers.oper;\r\n \t\t\t\t\t\tpostd[oper] = opers.deloper;\r\n \t\t\t\t\t\tidname = opers.id;\r\n -\t\t\t\t\t\tpostdata = postdata.split(",");\r\n +\t\t\t\t\t\tpostdata = String(postdata).split(",");\r\n +\t\t\t\t\t\tif(!postdata.length) { return false; }\r\n \t\t\t\t\t\tfor( var pk in postdata) {\r\n \t\t\t\t\t\t\tif(postdata.hasOwnProperty(pk)) {\r\n \t\t\t\t\t\t\t\tpostdata[pk] = $.jgrid.stripPref($t.p.idPrefix, postdata[pk]);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tpostd[idname] = postdata.join();\r\n -\t\t\t\t\t\t\r\n +\t\t\t\t\t\t$(this).addClass(\'ui-state-active\');\r\n \t\t\t\t\t\tvar ajaxOptions = $.extend({\r\n \t\t\t\t\t\t\turl: rp_ge[$t.p.id].url ? rp_ge[$t.p.id].url : $($t).jqGrid(\'getGridParam\',\'editurl\'),\r\n \t\t\t\t\t\t\ttype: rp_ge[$t.p.id].mtype,\r\n -\t\t\t\t\t\t\tdata: $.isFunction(rp_ge[$t.p.id].serializeDelData) ? rp_ge[$t.p.id].serializeDelData(postd) : postd,\r\n +\t\t\t\t\t\t\tdata: $.isFunction(rp_ge[$t.p.id].serializeDelData) ? rp_ge[$t.p.id].serializeDelData.call($t,postd) : postd,\r\n \t\t\t\t\t\t\tcomplete:function(data,Status){\r\n \t\t\t\t\t\t\t\tif(Status != "success") {\r\n \t\t\t\t\t\t\t\t\tret[0] = false;\r\n \t\t\t\t\t\t\t\t\tif ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {\r\n -\t\t\t\t\t\t\t\t\t\tret[1] = rp_ge[$t.p.id].errorTextFormat(data);\r\n +\t\t\t\t\t\t\t\t\t\tret[1] = rp_ge[$t.p.id].errorTextFormat.call($t,data);\r\n \t\t\t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t\t\tret[1] = Status + " Status: \'" + data.statusText + "\'. Error code: " + data.status;\r\n \t\t\t\t\t\t\t\t\t}\r\n @@ -8407,7 +8599,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\t// data is posted successful\r\n \t\t\t\t\t\t\t\t\t// execute aftersubmit with the returned data from server\r\n \t\t\t\t\t\t\t\t\tif( $.isFunction( rp_ge[$t.p.id].afterSubmit ) ) {\r\n -\t\t\t\t\t\t\t\t\t\tret = rp_ge[$t.p.id].afterSubmit(data,postd);\r\n +\t\t\t\t\t\t\t\t\t\tret = rp_ge[$t.p.id].afterSubmit.call($t,data,postd);\r\n \t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\tif(ret[0] === false) {\r\n @@ -8417,27 +8609,48 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\tif(rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype != "local") {\r\n \t\t\t\t\t\t\t\t\t\t$($t).trigger("reloadGrid");\r\n \t\t\t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t\t\tvar toarr = [];\r\n -\t\t\t\t\t\t\t\t\t\ttoarr = postdata.split(",");\r\n \t\t\t\t\t\t\t\t\t\tif($t.p.treeGrid===true){\r\n -\t\t\t\t\t\t\t\t\t\t\t\ttry {$($t).jqGrid("delTreeNode",$t.p.idPrefix+toarr[0]);} catch(e){}\r\n +\t\t\t\t\t\t\t\t\t\t\t\ttry {$($t).jqGrid("delTreeNode",$t.p.idPrefix+postdata[0]);} catch(e){}\r\n \t\t\t\t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t\t\t\tfor(var i=0;i<toarr.length;i++) {\r\n -\t\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("delRowData",$t.p.idPrefix+ toarr[i]);\r\n +\t\t\t\t\t\t\t\t\t\t\tfor(var i=0;i<postdata.length;i++) {\r\n +\t\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("delRowData",$t.p.idPrefix+ postdata[i]);\r\n \t\t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t\t$t.p.selrow = null;\r\n \t\t\t\t\t\t\t\t\t\t$t.p.selarrrow = [];\r\n \t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\tif($.isFunction(rp_ge[$t.p.id].afterComplete)) {\r\n -\t\t\t\t\t\t\t\t\t\tsetTimeout(function(){rp_ge[$t.p.id].afterComplete(data,postdata);},500);\r\n +\t\t\t\t\t\t\t\t\t\tsetTimeout(function(){rp_ge[$t.p.id].afterComplete.call($t,data,postdata);},500);\r\n \t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\trp_ge[$t.p.id].processing=false;\r\n \t\t\t\t\t\t\t\t$("#dData", "#"+dtbl+"_2").removeClass(\'ui-state-active\');\r\n -\t\t\t\t\t\t\t\tif(ret[0]) {$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}\r\n +\t\t\t\t\t\t\t\tif(ret[0]) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}\r\n \t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxDelOptions);\r\n +\t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +\t\t\t\t\t}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxDelOptions);\r\n \r\n \r\n \t\t\t\t\t\tif (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {\r\n @@ -8457,7 +8670,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\tret[0] = false;\r\n \t\t\t\t\t\t\t\t\tret[1] = dpret[1] || "Error deleting the selected row!" ;\r\n \t\t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\telse {$.ajax(ajaxOptions);}\r\n @@ -8470,16 +8683,16 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\t$("#eData", "#"+dtbl+"_2").click(function(e){\r\n -\t\t\t\t\t$.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:rp_ge[$t.p.id].jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n +\t\t\t\t$("#eData", "#"+dtbl+"_2").click(function(){\r\n +\t\t\t\t\t$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal, onClose: rp_ge[$t.p.id].onClose});\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n -\t\t\t\tif(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm($("#"+dtbl));}\r\n -\t\t\t\t$.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:rp_ge[$t.p.id].jqModal, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});\r\n -\t\t\t\tif(onAfterShow) {rp_ge[$t.p.id].afterShowForm($("#"+dtbl));}\r\n +\t\t\t\tif(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));}\r\n +\t\t\t\t$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});\r\n +\t\t\t\tif(onAfterShow) {rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));}\r\n \t\t\t}\r\n \t\t\tif(rp_ge[$t.p.id].closeOnEscape===true) {\r\n -\t\t\t\tsetTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+IDs.modalhead).focus();},0);\r\n +\t\t\t\tsetTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).focus();},0);\r\n \t\t\t}\r\n \t\t});\r\n \t},\r\n @@ -8514,7 +8727,7 @@ $.jgrid.extend({\r\n \t\t\tvar alertIDs = {themodal:\'alertmod\',modalhead:\'alerthd\',modalcontent:\'alertcnt\'},\r\n \t\t\t$t = this, twd, tdw;\r\n \t\t\tif(!$t.grid || typeof elem != \'string\') {return;}\r\n -\t\t\tif ($("#"+alertIDs.themodal).html() === null) {\r\n +\t\t\tif ($("#"+alertIDs.themodal)[0] === undefined) {\r\n \t\t\t\tif(!o.alerttop && !o.alertleft) {\r\n \t\t\t\t\tif (typeof window.innerWidth != \'undefined\') {\r\n \t\t\t\t\t\to.alertleft = window.innerWidth;\r\n @@ -8529,7 +8742,7 @@ $.jgrid.extend({\r\n \t\t\t\t\to.alertleft = o.alertleft/2 - parseInt(o.alertwidth,10)/2;\r\n \t\t\t\t\to.alerttop = o.alerttop/2-25;\r\n \t\t\t\t}\r\n -\t\t\t\t$.jgrid.createModal(alertIDs,"<div>"+o.alerttext+"</div><span tabindex=\'0\'><span tabindex=\'-1\' id=\'jqg_alrt\'></span></span>",{gbox:"#gbox_"+$t.p.id,jqModal:true,drag:true,resize:true,caption:o.alertcap,top:o.alerttop,left:o.alertleft,width:o.alertwidth,height: o.alertheight,closeOnEscape:o.closeOnEscape, zIndex: o.alertzIndex},"","",true);\r\n +\t\t\t\t$.jgrid.createModal(alertIDs,"<div>"+o.alerttext+"</div><span tabindex=\'0\'><span tabindex=\'-1\' id=\'jqg_alrt\'></span></span>",{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqModal:true,drag:true,resize:true,caption:o.alertcap,top:o.alerttop,left:o.alertleft,width:o.alertwidth,height: o.alertheight,closeOnEscape:o.closeOnEscape, zIndex: o.alertzIndex},"","",true);\r\n \t\t\t}\r\n \t\t\tvar clone = 1;\r\n \t\t\tif(o.cloneToTop && $t.p.toppager) {clone = 2;}\r\n @@ -8560,7 +8773,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t.click(function(){\r\n \t\t\t\t\t\tif (!$(this).hasClass(\'ui-state-disabled\')) {\r\n \t\t\t\t\t\t\tif ($.isFunction( o.addfunc )) {\r\n -\t\t\t\t\t\t\t\to.addfunc();\r\n +\t\t\t\t\t\t\t\to.addfunc.call($t);\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t$($t).jqGrid("editGridRow","new",pAdd);\r\n \t\t\t\t\t\t\t}\r\n @@ -8588,12 +8801,12 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tvar sr = $t.p.selrow;\r\n \t\t\t\t\t\t\tif (sr) {\r\n \t\t\t\t\t\t\t\tif($.isFunction( o.editfunc ) ) {\r\n -\t\t\t\t\t\t\t\t\to.editfunc(sr);\r\n +\t\t\t\t\t\t\t\t\to.editfunc.call($t, sr);\r\n \t\t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t\t$($t).jqGrid("editGridRow",sr,pEdit);\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true});\r\n +\t\t\t\t\t\t\t\t$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});\r\n \t\t\t\t\t\t\t\t$("#jqg_alrt").focus();\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n @@ -8620,12 +8833,12 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tvar sr = $t.p.selrow;\r\n \t\t\t\t\t\t\tif (sr) {\r\n \t\t\t\t\t\t\t\tif($.isFunction( o.viewfunc ) ) {\r\n -\t\t\t\t\t\t\t\t\to.viewfunc(sr);\r\n +\t\t\t\t\t\t\t\t\to.viewfunc.call($t, sr);\r\n \t\t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t\t$($t).jqGrid("viewGridRow",sr,pView);\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true});\r\n +\t\t\t\t\t\t\t\t$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});\r\n \t\t\t\t\t\t\t\t$("#jqg_alrt").focus();\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n @@ -8657,13 +8870,13 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\tdr = $t.p.selrow;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif(dr){\r\n -\t\t\t\t\t\t\t\tif("function" == typeof o.delfunc){\r\n -\t\t\t\t\t\t\t\t\to.delfunc(dr);\r\n +\t\t\t\t\t\t\t\tif($.isFunction( o.delfunc )){\r\n +\t\t\t\t\t\t\t\t\to.delfunc.call($t, dr);\r\n \t\t\t\t\t\t\t\t}else{\r\n \t\t\t\t\t\t\t\t\t$($t).jqGrid("delGridRow",dr,pDel);\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();\r\n +\t\t\t\t\t\t\t\t$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\treturn false;\r\n @@ -8687,7 +8900,11 @@ $.jgrid.extend({\r\n \t\t\t\t\t.attr({"title":o.searchtitle || "",id:pSearch.id || "search_"+elemids})\r\n \t\t\t\t\t.click(function(){\r\n \t\t\t\t\t\tif (!$(this).hasClass(\'ui-state-disabled\')) {\r\n -\t\t\t\t\t\t\t$($t).jqGrid("searchGrid",pSearch);\r\n +\t\t\t\t\t\t\tif($.isFunction( o.searchfunc )) {\r\n +\t\t\t\t\t\t\t\to.searchfunc.call($t, pSearch);\r\n +\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t$($t).jqGrid("searchGrid",pSearch);\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t}).hover(\r\n @@ -8711,23 +8928,23 @@ $.jgrid.extend({\r\n \t\t\t\t\t.attr({"title":o.refreshtitle || "",id: "refresh_"+elemids})\r\n \t\t\t\t\t.click(function(){\r\n \t\t\t\t\t\tif (!$(this).hasClass(\'ui-state-disabled\')) {\r\n -\t\t\t\t\t\t\tif($.isFunction(o.beforeRefresh)) {o.beforeRefresh();}\r\n +\t\t\t\t\t\t\tif($.isFunction(o.beforeRefresh)) {o.beforeRefresh.call($t);}\r\n \t\t\t\t\t\t\t$t.p.search = false;\r\n \t\t\t\t\t\t\ttry {\r\n \t\t\t\t\t\t\t\tvar gID = $t.p.id;\r\n \t\t\t\t\t\t\t\t$t.p.postData.filters ="";\r\n -\t\t\t\t\t\t\t\t$("#fbox_"+gID).jqFilter(\'resetFilter\');\r\n -\t\t\t\t\t\t\t if($.isFunction($t.clearToolbar)) {$t.clearToolbar(false);}\r\n +\t\t\t\t\t\t\t\t$("#fbox_"+$.jgrid.jqID(gID)).jqFilter(\'resetFilter\');\r\n +\t\t\t\t\t\t\t\tif($.isFunction($t.clearToolbar)) {$t.clearToolbar.call($t,false);}\r\n \t\t\t\t\t\t\t} catch (e) {}\r\n \t\t\t\t\t\t\tswitch (o.refreshstate) {\r\n \t\t\t\t\t\t\t\tcase \'firstpage\':\r\n -\t\t\t\t\t\t\t\t $($t).trigger("reloadGrid", [{page:1}]);\r\n +\t\t\t\t\t\t\t\t\t$($t).trigger("reloadGrid", [{page:1}]);\r\n \t\t\t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t\t\t\tcase \'current\':\r\n -\t\t\t\t\t\t\t\t $($t).trigger("reloadGrid", [{current:true}]);\r\n +\t\t\t\t\t\t\t\t\t$($t).trigger("reloadGrid", [{current:true}]);\r\n \t\t\t\t\t\t\t\t\tbreak;\r\n \t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\tif($.isFunction(o.afterRefresh)) {o.afterRefresh();}\r\n +\t\t\t\t\t\t\tif($.isFunction(o.afterRefresh)) {o.afterRefresh.call($t);}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t}).hover(\r\n @@ -8768,10 +8985,10 @@ $.jgrid.extend({\r\n \t\t}, p ||{});\r\n \t\treturn this.each(function() {\r\n \t\t\tif( !this.grid) {return;}\r\n -\t\t\tif( elem.indexOf("#") !== 0) {elem = "#"+elem;}\r\n +\t\t\tif( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}\r\n \t\t\tvar findnav = $(".navtable",elem)[0], $t = this;\r\n \t\t\tif (findnav) {\r\n -\t\t\t\tif( p.id && $("#"+p.id, findnav).html() !== null ) {return;}\r\n +\t\t\t\tif( p.id && $("#"+$.jgrid.jqID(p.id), findnav)[0] !== undefined ) {return;}\r\n \t\t\t\tvar tbd = $("<td></td>");\r\n \t\t\t\tif(p.buttonicon.toString().toUpperCase() == "NONE") {\r\n $(tbd).addClass(\'ui-pg-button ui-corner-all\').append("<div class=\'ui-pg-div\'>"+p.caption+"</div>");\r\n @@ -8814,7 +9031,7 @@ $.jgrid.extend({\r\n \t\t}, p ||{});\r\n \t\treturn this.each(function() {\r\n \t\t\tif( !this.grid) {return;}\r\n -\t\t\tif( elem.indexOf("#") !== 0) {elem = "#"+elem;}\r\n +\t\t\tif( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}\r\n \t\t\tvar findnav = $(".navtable",elem)[0];\r\n \t\t\tif(findnav) {\r\n \t\t\t\tvar sep = "<td class=\'ui-pg-button ui-state-disabled\' style=\'width:4px;\'><span class=\'"+p.sepclass+"\'></span>"+p.sepcontent+"</td>";\r\n @@ -8881,7 +9098,7 @@ $.jgrid.extend({\r\n \t\t// Compatible mode old versions\r\n \t\tvar o={}, args = $.makeArray(arguments).slice(1);\r\n \r\n -\t\tif( $.jgrid.realType(args[0]) === "Object" ) {\r\n +\t\tif( $.type(args[0]) === "object" ) {\r\n \t\t\to = args[0];\r\n \t\t} else {\r\n \t\t\tif (typeof keys !== "undefined") { o.keys = keys; }\r\n @@ -8924,7 +9141,7 @@ $.jgrid.extend({\r\n \t\t\t\t\tif(treeg) { tmp = $("span:first",this).html();}\r\n \t\t\t\t\telse {\r\n \t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\ttmp = $.unformat(this,{rowId:rowid, colModel:cm[i]},i);\r\n +\t\t\t\t\t\t\ttmp = $.unformat.call($t,this,{rowId:rowid, colModel:cm[i]},i);\r\n \t\t\t\t\t\t} catch (_) {\r\n \t\t\t\t\t\t\ttmp = ( cm[i].edittype && cm[i].edittype == \'textarea\' ) ? $(this).text() : $(this).html();\r\n \t\t\t\t\t\t}\r\n @@ -8939,7 +9156,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tvar opt = $.extend({},cm[i].editoptions || {},{id:rowid+"_"+nm,name:nm});\r\n \t\t\t\t\t\t\tif(!cm[i].edittype) { cm[i].edittype = "text"; }\r\n \t\t\t\t\t\t\tif(tmp == " " || tmp == " " || (tmp.length==1 && tmp.charCodeAt(0)==160) ) {tmp=\'\';}\r\n -\t\t\t\t\t\t\tvar elc = $.jgrid.createEl(cm[i].edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));\r\n +\t\t\t\t\t\t\tvar elc = $.jgrid.createEl.call($t,cm[i].edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));\r\n \t\t\t\t\t\t\t$(elc).addClass("editable");\r\n \t\t\t\t\t\t\tif(treeg) { $("span:first",this).append(elc); }\r\n \t\t\t\t\t\t\telse { $(this).append(elc); }\r\n @@ -8958,17 +9175,29 @@ $.jgrid.extend({\r\n \t\t\t\t\tif(o.keys===true) {\r\n \t\t\t\t\t\t$(ind).bind("keydown",function(e) {\r\n \t\t\t\t\t\t\tif (e.keyCode === 27) {\r\n -\t\t\t\t\t\t\t\t$($t).jqGrid("restoreRow",rowid, afterrestorefunc);\r\n +\t\t\t\t\t\t\t\t$($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);\r\n +\t\t\t\t\t\t\t\tif($t.p._inlinenav) {\r\n +\t\t\t\t\t\t\t\t\ttry {\r\n +\t\t\t\t\t\t\t\t\t\t$($t).jqGrid(\'showAddEditButtons\');\r\n +\t\t\t\t\t\t\t\t\t} catch (eer1) {}\r\n +\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif (e.keyCode === 13) {\r\n \t\t\t\t\t\t\t\tvar ta = e.target;\r\n \t\t\t\t\t\t\t\tif(ta.tagName == \'TEXTAREA\') { return true; }\r\n -\t\t\t\t\t\t\t\t$($t).jqGrid("saveRow", rowid, o );\r\n +\t\t\t\t\t\t\t\tif( $($t).jqGrid("saveRow", rowid, o ) ) {\r\n +\t\t\t\t\t\t\t\t\tif($t.p._inlinenav) {\r\n +\t\t\t\t\t\t\t\t\t\ttry {\r\n +\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid(\'showAddEditButtons\');\r\n +\t\t\t\t\t\t\t\t\t\t} catch (eer2) {}\r\n +\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t});\r\n \t\t\t\t\t}\r\n +\t\t\t\t\t$($t).triggerHandler("jqGridInlineEditRow", [rowid, o]);\r\n \t\t\t\t\tif( $.isFunction(o.oneditfunc)) { o.oneditfunc.call($t, rowid); }\r\n \t\t\t\t}\r\n \t\t\t}\r\n @@ -8978,7 +9207,7 @@ $.jgrid.extend({\r\n \t\t// Compatible mode old versions\r\n \t\tvar args = $.makeArray(arguments).slice(1), o = {};\r\n \r\n -\t\tif( $.jgrid.realType(args[0]) === "Object" ) {\r\n +\t\tif( $.type(args[0]) === "object" ) {\r\n \t\t\to = args[0];\r\n \t\t} else {\r\n \t\t\tif ($.isFunction(successfunc)) { o.successfunc = successfunc; }\r\n @@ -9102,11 +9331,12 @@ $.jgrid.extend({\r\n \t\t\t\t\tif( $t.p.savedRow[k].id == rowid) {fr = k; break;}\r\n \t\t\t\t}\r\n \t\t\t\tif(fr >= 0) { $t.p.savedRow.splice(fr,1); }\r\n -\t\t\t\tif( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid,resp); }\r\n +\t\t\t\t$($t).triggerHandler("jqGridInlineAfterSaveRow", [rowid, resp, tmp, o]);\r\n +\t\t\t\tif( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid,resp, o); }\r\n \t\t\t\tsuccess = true;\r\n \t\t\t\t$(ind).unbind("keydown");\r\n \t\t\t} else {\r\n -\t\t\t\t$("#lui_"+$t.p.id).show();\r\n +\t\t\t\t$("#lui_"+$.jgrid.jqID($t.p.id)).show();\r\n \t\t\t\ttmp3 = $.extend({},tmp,tmp3);\r\n \t\t\t\ttmp3[idname] = $.jgrid.stripPref($t.p.idPrefix, tmp3[idname]);\r\n \t\t\t\t$.ajax($.extend({\r\n @@ -9115,18 +9345,18 @@ $.jgrid.extend({\r\n \t\t\t\t\ttype: o.mtype,\r\n \t\t\t\t\tasync : false, //?!?\r\n \t\t\t\t\tcomplete: function(res,stat){\r\n -\t\t\t\t\t\t$("#lui_"+$t.p.id).hide();\r\n +\t\t\t\t\t\t$("#lui_"+$.jgrid.jqID($t.p.id)).hide();\r\n \t\t\t\t\t\tif (stat === "success"){\r\n \t\t\t\t\t\t\tvar ret = true, sucret;\r\n -\t\t\t\t\t\t\tif( $.isFunction(o.successfunc)) { \r\n -\t\t\t\t\t\t\t\tsucret = o.successfunc.call($t, res);\r\n -\t\t\t\t\t\t\t\tif($.isArray(sucret)) {\r\n -\t\t\t\t\t\t\t\t\t// expect array - status, data, rowid\r\n -\t\t\t\t\t\t\t\t\tret = sucret[0];\r\n -\t\t\t\t\t\t\t\t\ttmp = sucret[1] ? sucret[1] : tmp;\r\n -\t\t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t\tret = sucret;\r\n -\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\tsucret = $($t).triggerHandler("jqGridInlineSuccessSaveRow", [res, rowid, o]);\r\n +\t\t\t\t\t\t\tif (!$.isArray(sucret)) {sucret = [true, tmp];}\r\n +\t\t\t\t\t\t\tif (sucret[0] && $.isFunction(o.successfunc)) {sucret = o.successfunc.call($t, res);}\t\t\t\t\t\t\t\r\n +\t\t\t\t\t\t\tif($.isArray(sucret)) {\r\n +\t\t\t\t\t\t\t\t// expect array - status, data, rowid\r\n +\t\t\t\t\t\t\t\tret = sucret[0];\r\n +\t\t\t\t\t\t\t\ttmp = sucret[1] ? sucret[1] : tmp;\r\n +\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\tret = sucret;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif (ret===true) {\r\n \t\t\t\t\t\t\t\tif($t.p.autoencode) {\r\n @@ -9141,12 +9371,14 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\tif( $t.p.savedRow[k].id == rowid) {fr = k; break;}\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\tif(fr >= 0) { $t.p.savedRow.splice(fr,1); }\r\n +\t\t\t\t\t\t\t\t$($t).triggerHandler("jqGridInlineAfterSaveRow", [rowid, res, tmp, o]);\r\n \t\t\t\t\t\t\t\tif( $.isFunction(o.aftersavefunc) ) { o.aftersavefunc.call($t, rowid,res); }\r\n \t\t\t\t\t\t\t\tsuccess = true;\r\n \t\t\t\t\t\t\t\t$(ind).unbind("keydown");\r\n \t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t$($t).triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, null, o]);\r\n \t\t\t\t\t\t\t\tif($.isFunction(o.errorfunc) ) {\r\n -\t\t\t\t\t\t\t\t\to.errorfunc.call($t, rowid, res, stat);\r\n +\t\t\t\t\t\t\t\t\to.errorfunc.call($t, rowid, res, stat, null);\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\tif(o.restoreAfterError === true) {\r\n \t\t\t\t\t\t\t\t\t$($t).jqGrid("restoreRow",rowid, o.afterrestorefunc);\r\n @@ -9154,15 +9386,17 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t},\r\n -\t\t\t\t\terror:function(res,stat){\r\n -\t\t\t\t\t\t$("#lui_"+$t.p.id).hide();\r\n +\t\t\t\t\terror:function(res,stat,err){\r\n +\t\t\t\t\t\t$("#lui_"+$.jgrid.jqID($t.p.id)).hide();\r\n +\t\t\t\t\t\t$($t).triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, err, o]);\r\n \t\t\t\t\t\tif($.isFunction(o.errorfunc) ) {\r\n -\t\t\t\t\t\t\to.errorfunc.call($t, rowid, res, stat);\r\n +\t\t\t\t\t\t\to.errorfunc.call($t, rowid, res, stat, err);\r\n \t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\tvar rT = res.responseText || res.statusText;\r\n \t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t$.jgrid.info_dialog($.jgrid.errors.errcap,\'<div class="ui-state-error">\'+ res.responseText +\'</div>\', $.jgrid.edit.bClose,{buttonalign:\'right\'});\r\n +\t\t\t\t\t\t\t\t$.jgrid.info_dialog($.jgrid.errors.errcap,\'<div class="ui-state-error">\'+ rT +\'</div>\', $.jgrid.edit.bClose,{buttonalign:\'right\'});\r\n \t\t\t\t\t\t\t} catch(e) {\r\n -\t\t\t\t\t\t\t\talert(res.responseText);\r\n +\t\t\t\t\t\t\t\talert(rT);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(o.restoreAfterError === true) {\r\n @@ -9178,7 +9412,7 @@ $.jgrid.extend({\r\n \t\t// Compatible mode old versions\r\n \t\tvar args = $.makeArray(arguments).slice(1), o={};\r\n \r\n -\t\tif( $.jgrid.realType(args[0]) === "Object" ) {\r\n +\t\tif( $.type(args[0]) === "object" ) {\r\n \t\t\to = args[0];\r\n \t\t} else {\r\n \t\t\tif ($.isFunction(afterrestorefunc)) { o.afterrestorefunc = afterrestorefunc; }\r\n @@ -9201,8 +9435,8 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t$("input.hasDatepicker","#"+$.jgrid.jqID(ind.id)).datepicker(\'hide\');\r\n \t\t\t\t\t} catch (e) {}\r\n \t\t\t\t}\r\n -\t\t\t\t$.each($t.p.colModel, function(i,n){\r\n -\t\t\t\t\tif(this.editable === true && this.name in $t.p.savedRow[fr] && !$(this).hasClass(\'not-editable-cell\')) {\r\n +\t\t\t\t$.each($t.p.colModel, function(){\r\n +\t\t\t\t\tif(this.editable === true && this.name in $t.p.savedRow[fr] ) {\r\n \t\t\t\t\t\tares[this.name] = $t.p.savedRow[fr][this.name];\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n @@ -9213,6 +9447,7 @@ $.jgrid.extend({\r\n \t\t\t\t\tsetTimeout(function(){$($t).jqGrid("delRowData",rowid);},0);\r\n \t\t\t\t}\r\n \t\t\t}\r\n +\t\t\t$($t).triggerHandler("jqGridInlineAfterRestoreRow", [rowid]);\r\n \t\t\tif ($.isFunction(o.afterrestorefunc))\r\n \t\t\t{\r\n \t\t\t\to.afterrestorefunc.call($t, rowid);\r\n @@ -9232,7 +9467,7 @@ $.jgrid.extend({\r\n \t\t\tif (!this.grid ) { return; }\r\n \t\t\tvar $t = this;\r\n \t\t\tif(p.useDefValues === true) {\r\n -\t\t\t\t$($t.p.colModel).each(function(i){\r\n +\t\t\t\t$($t.p.colModel).each(function(){\r\n \t\t\t\t\tif( this.editoptions && this.editoptions.defaultValue ) {\r\n \t\t\t\t\t\tvar opt = this.editoptions.defaultValue,\r\n \t\t\t\t\t\ttmp = $.isFunction(opt) ? opt.call($t) : opt;\r\n @@ -9241,6 +9476,7 @@ $.jgrid.extend({\r\n \t\t\t\t});\r\n \t\t\t}\r\n \t\t\t$($t).jqGrid(\'addRowData\', p.rowID, p.initdata, p.position);\r\n +\t\t\tp.rowID = $t.p.idPrefix + p.rowID;\r\n \t\t\t$("#"+$.jgrid.jqID(p.rowID), "#"+$.jgrid.jqID($t.p.id)).addClass("jqgrid-new-row");\r\n \t\t\tif(p.useFormatter) {\r\n \t\t\t\t$("#"+$.jgrid.jqID(p.rowID)+" .ui-inline-edit", "#"+$.jgrid.jqID($t.p.id)).click();\r\n @@ -9263,12 +9499,14 @@ $.jgrid.extend({\r\n \t\t\tsaveicon:"ui-icon-disk",\r\n \t\t\tcancel: true,\r\n \t\t\tcancelicon:"ui-icon-cancel",\r\n -\t\t\taddParams : {useFormatter : false},\r\n -\t\t\teditParams : {}\r\n +\t\t\taddParams : {useFormatter : false,rowID : "new_row"},\r\n +\t\t\teditParams : {},\r\n +\t\t\trestoreAfterSelect : true\r\n \t\t}, $.jgrid.nav, o ||{});\r\n \t\treturn this.each(function(){\r\n \t\t\tif (!this.grid ) { return; }\r\n -\t\t\tvar $t = this;\r\n +\t\t\tvar $t = this, onSelect, gID = $.jgrid.jqID($t.p.id);\r\n +\t\t\t$t.p._inlinenav = true;\r\n \t\t\t// detect the formatactions column\r\n \t\t\tif(o.addParams.useFormatter === true) {\r\n \t\t\t\tvar cm = $t.p.colModel,i;\r\n @@ -9307,13 +9545,13 @@ $.jgrid.extend({\r\n \t\t\t\t\ttitle : o.addtitle,\r\n \t\t\t\t\tbuttonicon : o.addicon,\r\n \t\t\t\t\tid : $t.p.id+"_iladd",\r\n -\t\t\t\t\tonClickButton : function ( e ) {\r\n +\t\t\t\t\tonClickButton : function () {\r\n \t\t\t\t\t\t$($t).jqGrid(\'addRow\', o.addParams);\r\n \t\t\t\t\t\tif(!o.addParams.useFormatter) {\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilsave").removeClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilcancel").removeClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_iladd").addClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_iledit").addClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_ilsave").removeClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_ilcancel").removeClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_iladd").addClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_iledit").addClass(\'ui-state-disabled\');\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n @@ -9324,16 +9562,16 @@ $.jgrid.extend({\r\n \t\t\t\t\ttitle : o.edittitle,\r\n \t\t\t\t\tbuttonicon : o.editicon,\r\n \t\t\t\t\tid : $t.p.id+"_iledit",\r\n -\t\t\t\t\tonClickButton : function ( e ) {\r\n +\t\t\t\t\tonClickButton : function () {\r\n \t\t\t\t\t\tvar sr = $($t).jqGrid(\'getGridParam\',\'selrow\');\r\n \t\t\t\t\t\tif(sr) {\r\n \t\t\t\t\t\t\t$($t).jqGrid(\'editRow\', sr, o.editParams);\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilsave").removeClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilcancel").removeClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_iladd").addClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_iledit").addClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_ilsave").removeClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_ilcancel").removeClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_iladd").addClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$("#"+gID+"_iledit").addClass(\'ui-state-disabled\');\r\n \t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();\t\t\t\t\t\t\t\r\n +\t\t\t\t\t\t\t$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();\t\t\t\t\t\t\t\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n @@ -9344,29 +9582,28 @@ $.jgrid.extend({\r\n \t\t\t\t\ttitle : o.savetitle || \'Save row\',\r\n \t\t\t\t\tbuttonicon : o.saveicon,\r\n \t\t\t\t\tid : $t.p.id+"_ilsave",\r\n -\t\t\t\t\tonClickButton : function ( e ) {\r\n +\t\t\t\t\tonClickButton : function () {\r\n \t\t\t\t\t\tvar sr = $t.p.savedRow[0].id;\r\n \t\t\t\t\t\tif(sr) {\r\n -\t\t\t\t\t\t\tif($("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID($t.p.id) ).hasClass("jqgrid-new-row")) {\r\n -\t\t\t\t\t\t\t\tvar opers = $t.p.prmNames,\r\n -\t\t\t\t\t\t\t\toper = opers.oper;\r\n -\t\t\t\t\t\t\t\tif(!o.editParams.extraparam) {\r\n -\t\t\t\t\t\t\t\t\to.editParams.extraparam = {};\r\n -\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\tvar opers = $t.p.prmNames,\r\n +\t\t\t\t\t\t\toper = opers.oper;\r\n +\t\t\t\t\t\t\tif(!o.editParams.extraparam) {\r\n +\t\t\t\t\t\t\t\to.editParams.extraparam = {};\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\tif($("#"+$.jgrid.jqID(sr), "#"+gID ).hasClass("jqgrid-new-row")) {\r\n \t\t\t\t\t\t\t\to.editParams.extraparam[oper] = opers.addoper;\r\n +\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\to.editParams.extraparam[oper] = opers.editoper;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif( $($t).jqGrid(\'saveRow\', sr, o.editParams) ) {\r\n -\t\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilsave").addClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilcancel").addClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t\t$("#"+$t.p.id+"_iladd").removeClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t\t$("#"+$t.p.id+"_iledit").removeClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t\t$($t).jqGrid(\'showAddEditButtons\');\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();\t\t\t\t\t\t\t\r\n +\t\t\t\t\t\t\t$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();\t\t\t\t\t\t\t\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n -\t\t\t\t$("#"+$t.p.id+"_ilsave").addClass(\'ui-state-disabled\');\r\n +\t\t\t\t$("#"+gID+"_ilsave").addClass(\'ui-state-disabled\');\r\n \t\t\t}\r\n \t\t\tif(o.cancel) {\r\n \t\t\t\t$($t).jqGrid(\'navButtonAdd\', elem,{\r\n @@ -9374,21 +9611,51 @@ $.jgrid.extend({\r\n \t\t\t\t\ttitle : o.canceltitle || \'Cancel row editing\',\r\n \t\t\t\t\tbuttonicon : o.cancelicon,\r\n \t\t\t\t\tid : $t.p.id+"_ilcancel",\r\n -\t\t\t\t\tonClickButton : function ( e ) {\r\n +\t\t\t\t\tonClickButton : function () {\r\n \t\t\t\t\t\tvar sr = $t.p.savedRow[0].id;\r\n \t\t\t\t\t\tif(sr) {\r\n \t\t\t\t\t\t\t$($t).jqGrid(\'restoreRow\', sr, o.editParams);\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilsave").addClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_ilcancel").addClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_iladd").removeClass(\'ui-state-disabled\');\r\n -\t\t\t\t\t\t\t$("#"+$t.p.id+"_iledit").removeClass(\'ui-state-disabled\');\r\n +\t\t\t\t\t\t\t$($t).jqGrid(\'showAddEditButtons\');\r\n \t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+$t.p.id,jqm:true});$("#jqg_alrt").focus();\t\t\t\t\t\t\t\r\n +\t\t\t\t\t\t\t$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+gID,jqm:true});$("#jqg_alrt").focus();\t\t\t\t\t\t\t\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t});\r\n -\t\t\t\t$("#"+$t.p.id+"_ilcancel").addClass(\'ui-state-disabled\');\r\n +\t\t\t\t$("#"+gID+"_ilcancel").addClass(\'ui-state-disabled\');\r\n +\t\t\t}\r\n +\t\t\tif(o.restoreAfterSelect === true) {\r\n +\t\t\t\tif($.isFunction($t.p.beforeSelectRow)) {\r\n +\t\t\t\t\tonSelect = $t.p.beforeSelectRow;\r\n +\t\t\t\t} else {\r\n +\t\t\t\t\tonSelect = false;\r\n +\t\t\t\t}\r\n +\t\t\t\t$t.p.beforeSelectRow = function(id, stat) {\r\n +\t\t\t\t\tvar ret = true;\r\n +\t\t\t\t\tif($t.p.savedRow.length > 0 && $t.p._inlinenav===true && ( id !== $t.p.selrow && $t.p.selrow !==null) ) {\r\n +\t\t\t\t\t\tif($t.p.selrow == o.addParams.rowID ) {\r\n +\t\t\t\t\t\t\t$($t).jqGrid(\'delRowData\', $t.p.selrow);\r\n +\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t$($t).jqGrid(\'restoreRow\', $t.p.selrow, o.editParams);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t$($t).jqGrid(\'showAddEditButtons\');\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tif(onSelect) {\r\n +\t\t\t\t\t\tret = onSelect.call($t, id, stat);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\treturn ret;\r\n +\t\t\t\t};\r\n \t\t\t}\r\n +\r\n +\t\t});\r\n +\t},\r\n +\tshowAddEditButtons : function() {\r\n +\t\treturn this.each(function(){\r\n +\t\t\tif (!this.grid ) { return; }\r\n +\t\t\tvar gID = $.jgrid.jqID(this.p.id);\r\n +\t\t\t$("#"+gID+"_ilsave").addClass(\'ui-state-disabled\');\r\n +\t\t\t$("#"+gID+"_ilcancel").addClass(\'ui-state-disabled\');\r\n +\t\t\t$("#"+gID+"_iladd").removeClass(\'ui-state-disabled\');\r\n +\t\t\t$("#"+gID+"_iledit").removeClass(\'ui-state-disabled\');\r\n \t\t});\r\n \t}\r\n //end inline edit\r\n @@ -9423,6 +9690,7 @@ $.jgrid.extend({\r\n * cellurl\r\n * ajaxCellOptions\r\n * */\r\n +"use strict";\r\n $.jgrid.extend({\r\n \teditCell : function (iRow,iCol, ed){\r\n \t\treturn this.each(function (){\r\n @@ -9443,7 +9711,7 @@ $.jgrid.extend({\r\n \t\t\t\t// save the cell\r\n \t\t\t\t$($t).jqGrid("saveCell",$t.p.savedRow[0].id,$t.p.savedRow[0].ic);\r\n \t\t\t} else {\r\n -\t\t\t\twindow.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0);\r\n +\t\t\t\twindow.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},0);\r\n \t\t\t}\r\n \t\t\tcm = $t.p.colModel[iCol];\r\n \t\t\tnm = cm.name;\r\n @@ -9457,26 +9725,27 @@ $.jgrid.extend({\r\n \t\t\t\t$(cc).addClass("edit-cell ui-state-highlight");\r\n \t\t\t\t$($t.rows[iRow]).addClass("selected-row ui-state-hover");\r\n \t\t\t\ttry {\r\n -\t\t\t\t\ttmp = $.unformat(cc,{rowId: $t.rows[iRow].id, colModel:cm},iCol);\r\n +\t\t\t\t\ttmp = $.unformat.call($t,cc,{rowId: $t.rows[iRow].id, colModel:cm},iCol);\r\n \t\t\t\t} catch (_) {\r\n \t\t\t\t\ttmp = ( cm.edittype && cm.edittype == \'textarea\' ) ? $(cc).text() : $(cc).html();\r\n \t\t\t\t}\r\n \t\t\t\tif($t.p.autoencode) { tmp = $.jgrid.htmlDecode(tmp); }\r\n \t\t\t\tif (!cm.edittype) {cm.edittype = "text";}\r\n \t\t\t\t$t.p.savedRow.push({id:iRow,ic:iCol,name:nm,v:tmp});\r\n -\t\t\t\tif(tmp == " " || tmp == " " || (tmp.length==1 && tmp.charCodeAt(0)==160) ) {tmp=\'\';}\r\n +\t\t\t\tif(tmp === " " || tmp === " " || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp=\'\';}\r\n \t\t\t\tif($.isFunction($t.p.formatCell)) {\r\n \t\t\t\t\tvar tmp2 = $t.p.formatCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);\r\n \t\t\t\t\tif(tmp2 !== undefined ) {tmp = tmp2;}\r\n \t\t\t\t}\r\n \t\t\t\tvar opt = $.extend({}, cm.editoptions || {} ,{id:iRow+"_"+nm,name:nm});\r\n -\t\t\t\tvar elc = $.jgrid.createEl(cm.edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));\r\n +\t\t\t\tvar elc = $.jgrid.createEl.call($t,cm.edittype,opt,tmp,true,$.extend({},$.jgrid.ajaxOptions,$t.p.ajaxSelectOptions || {}));\r\n +\t\t\t\t$($t).triggerHandler("jqGridBeforeEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);\r\n \t\t\t\tif ($.isFunction($t.p.beforeEditCell)) {\r\n \t\t\t\t\t$t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);\r\n \t\t\t\t}\r\n \t\t\t\t$(cc).html("").append(elc).attr("tabindex","0");\r\n \t\t\t\twindow.setTimeout(function () { $(elc).focus();},0);\r\n -\t\t\t\t$("input, select, textarea",cc).bind("keydown",function(e) { \r\n +\t\t\t\t$("input, select, textarea",cc).bind("keydown",function(e) {\r\n \t\t\t\t\tif (e.keyCode === 27) {\r\n \t\t\t\t\t\tif($("input.hasDatepicker",cc).length >0) {\r\n \t\t\t\t\t\t\tif( $(".ui-datepicker").is(":hidden") ) { $($t).jqGrid("restoreCell",iRow,iCol); }\r\n @@ -9485,8 +9754,12 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t$($t).jqGrid("restoreCell",iRow,iCol);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t} //ESC\r\n -\t\t\t\t\tif (e.keyCode === 13) {$($t).jqGrid("saveCell",iRow,iCol);}//Enter\r\n -\t\t\t\t\tif (e.keyCode == 9) {\r\n +\t\t\t\t\tif (e.keyCode === 13) {\r\n +\t\t\t\t\t\t$($t).jqGrid("saveCell",iRow,iCol);\r\n +\t\t\t\t\t\t// Prevent default action\r\n +\t\t\t\t\t\treturn false;\r\n +\t\t\t\t\t} //Enter\r\n +\t\t\t\t\tif (e.keyCode === 9) {\r\n \t\t\t\t\t\tif(!$t.grid.hDiv.loading ) {\r\n \t\t\t\t\t\t\tif (e.shiftKey) {$($t).jqGrid("prevCell",iRow,iCol);} //Shift TAb\r\n \t\t\t\t\t\t\telse {$($t).jqGrid("nextCell",iRow,iCol);} //Tab\r\n @@ -9496,6 +9769,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t}\r\n \t\t\t\t\te.stopPropagation();\r\n \t\t\t\t});\r\n +\t\t\t\t$($t).triggerHandler("jqGridAfterEditCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);\r\n \t\t\t\tif ($.isFunction($t.p.afterEditCell)) {\r\n \t\t\t\t\t$t.p.afterEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);\r\n \t\t\t\t}\r\n @@ -9505,9 +9779,10 @@ $.jgrid.extend({\r\n \t\t\t\t\t$($t.rows[$t.p.iRow]).removeClass("selected-row ui-state-hover");\r\n \t\t\t\t}\r\n \t\t\t\tcc.addClass("edit-cell ui-state-highlight");\r\n -\t\t\t\t$($t.rows[iRow]).addClass("selected-row ui-state-hover"); \r\n +\t\t\t\t$($t.rows[iRow]).addClass("selected-row ui-state-hover");\r\n +\t\t\t\ttmp = cc.html().replace(/\\ \\;/ig,\'\');\r\n +\t\t\t\t$($t).triggerHandler("jqGridSelectCell", [$t.rows[iRow].id, nm, tmp, iRow, iCol]);\r\n \t\t\t\tif ($.isFunction($t.p.onSelectCell)) {\r\n -\t\t\t\t\ttmp = cc.html().replace(/\\ \\;/ig,\'\');\r\n \t\t\t\t\t$t.p.onSelectCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);\r\n \t\t\t\t}\r\n \t\t\t}\r\n @@ -9525,8 +9800,8 @@ $.jgrid.extend({\r\n \t\t\t\tswitch (cm.edittype) {\r\n \t\t\t\t\tcase "select":\r\n \t\t\t\t\t\tif(!cm.editoptions.multiple) {\r\n -\t\t\t\t\t\t\tv = $("#"+iRow+"_"+nmjq+">option:selected",$t.rows[iRow]).val();\r\n -\t\t\t\t\t\t\tv2 = $("#"+iRow+"_"+nmjq+">option:selected",$t.rows[iRow]).text();\r\n +\t\t\t\t\t\t\tv = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).val();\r\n +\t\t\t\t\t\t\tv2 = $("#"+iRow+"_"+nmjq+" option:selected",$t.rows[iRow]).text();\r\n \t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\tvar sel = $("#"+iRow+"_"+nmjq,$t.rows[iRow]), selectedText = [];\r\n \t\t\t\t\t\t\tv = $(sel).val();\r\n @@ -9570,13 +9845,15 @@ $.jgrid.extend({\r\n \t\t\t\t}\r\n \t\t\t\t// The common approach is if nothing changed do not do anything\r\n \t\t\t\tif (v2 !== $t.p.savedRow[fr].v){\r\n +\t\t\t\t\tvar vvv = $($t).triggerHandler("jqGridBeforeSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);\r\n +\t\t\t\t\tif (vvv) {v = vvv; v2=vvv;}\r\n \t\t\t\t\tif ($.isFunction($t.p.beforeSaveCell)) {\r\n \t\t\t\t\t\tvar vv = $t.p.beforeSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);\r\n \t\t\t\t\t\tif (vv) {v = vv; v2=vv;}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tvar cv = $.jgrid.checkValues(v,iCol,$t);\r\n \t\t\t\t\tif(cv[0] === true) {\r\n -\t\t\t\t\t\tvar addpost = {};\r\n +\t\t\t\t\t\tvar addpost = $($t).triggerHandler("jqGridBeforeSubmitCell", [$t.rows[iRow].id, nm, v, iRow, iCol]) || {};\r\n \t\t\t\t\t\tif ($.isFunction($t.p.beforeSubmitCell)) {\r\n \t\t\t\t\t\t\taddpost = $t.p.beforeSubmitCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);\r\n \t\t\t\t\t\t\tif (!addpost) {addpost={};}\r\n @@ -9594,7 +9871,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\tpostdata[idname] = $.jgrid.stripPref($t.p.idPrefix, $t.rows[iRow].id);\r\n \t\t\t\t\t\t\t\tpostdata[oper] = opers.editoper;\r\n \t\t\t\t\t\t\t\tpostdata = $.extend(addpost,postdata);\r\n -\t\t\t\t\t\t\t\t$("#lui_"+$t.p.id).show();\r\n +\t\t\t\t\t\t\t\t$("#lui_"+$.jgrid.jqID($t.p.id)).show();\r\n \t\t\t\t\t\t\t\t$t.grid.hDiv.loading = true;\r\n \t\t\t\t\t\t\t\t$.ajax( $.extend( {\r\n \t\t\t\t\t\t\t\t\turl: $t.p.cellurl,\r\n @@ -9604,38 +9881,32 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t\t\t$("#lui_"+$t.p.id).hide();\r\n \t\t\t\t\t\t\t\t\t\t$t.grid.hDiv.loading = false;\r\n \t\t\t\t\t\t\t\t\t\tif (stat == \'success\') {\r\n -\t\t\t\t\t\t\t\t\t\t\tif ($.isFunction($t.p.afterSubmitCell)) {\r\n -\t\t\t\t\t\t\t\t\t\t\t\tvar ret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol);\r\n -\t\t\t\t\t\t\t\t\t\t\t\tif(ret[0] === true) {\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$(cc).empty();\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true);\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$(cc).addClass("dirty-cell");\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$($t.rows[iRow]).addClass("edited");\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\tif ($.isFunction($t.p.afterSaveCell)) {\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t\t$t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$t.p.savedRow.splice(0,1);\r\n -\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$.jgrid.info_dialog($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose);\r\n -\t\t\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("restoreCell",iRow,iCol);\r\n -\t\t\t\t\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t\t\t\tvar ret = $($t).triggerHandler("jqGridAfterSubmitCell", [$t, result, postdata.id, nm, v, iRow, iCol]) || [true, \'\'];\r\n +\t\t\t\t\t\t\t\t\t\t\tif (ret[0] === true && $.isFunction($t.p.afterSubmitCell)) {\r\n +\t\t\t\t\t\t\t\t\t\t\t\tret = $t.p.afterSubmitCell.call($t, result,postdata.id,nm,v,iRow,iCol);\r\n +\t\t\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t\t\t\tif(ret[0] === true){\r\n \t\t\t\t\t\t\t\t\t\t\t\t$(cc).empty();\r\n \t\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("setCell",$t.rows[iRow].id, iCol, v2, false, false, true);\r\n \t\t\t\t\t\t\t\t\t\t\t\t$(cc).addClass("dirty-cell");\r\n \t\t\t\t\t\t\t\t\t\t\t\t$($t.rows[iRow]).addClass("edited");\r\n +\t\t\t\t\t\t\t\t\t\t\t\t$($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);\r\n \t\t\t\t\t\t\t\t\t\t\t\tif ($.isFunction($t.p.afterSaveCell)) {\r\n \t\t\t\t\t\t\t\t\t\t\t\t\t$t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);\r\n \t\t\t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t\t\t\t$t.p.savedRow.splice(0,1);\r\n +\t\t\t\t\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t\t\t\t\t$.jgrid.info_dialog($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose);\r\n +\t\t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("restoreCell",iRow,iCol);\r\n \t\t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t},\r\n -\t\t\t\t\t\t\t\t\terror:function(res,stat) {\r\n -\t\t\t\t\t\t\t\t\t\t$("#lui_"+$t.p.id).hide();\r\n +\t\t\t\t\t\t\t\t\terror:function(res,stat,err) {\r\n +\t\t\t\t\t\t\t\t\t\t$("#lui_"+$.jgrid.jqID($t.p.id)).hide();\r\n \t\t\t\t\t\t\t\t\t\t$t.grid.hDiv.loading = false;\r\n +\t\t\t\t\t\t\t\t\t\t$($t).triggerHandler("jqGridErrorCell", [res, stat, err]);\r\n \t\t\t\t\t\t\t\t\t\tif ($.isFunction($t.p.errorCell)) {\r\n -\t\t\t\t\t\t\t\t\t\t\t$t.p.errorCell.call($t, res,stat);\r\n +\t\t\t\t\t\t\t\t\t\t\t$t.p.errorCell.call($t, res,stat,err);\r\n \t\t\t\t\t\t\t\t\t\t\t$($t).jqGrid("restoreCell",iRow,iCol);\r\n \t\t\t\t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\t\t\t\t$.jgrid.info_dialog($.jgrid.errors.errcap,res.status+" : "+res.statusText+"<br/>"+stat,$.jgrid.edit.bClose);\r\n @@ -9655,6 +9926,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t$($t).jqGrid("setCell",$t.rows[iRow].id,iCol, v2, false, false, true);\r\n \t\t\t\t\t\t\t$(cc).addClass("dirty-cell");\r\n \t\t\t\t\t\t\t$($t.rows[iRow]).addClass("edited");\r\n +\t\t\t\t\t\t\t$($t).triggerHandler("jqGridAfterSaveCell", [$t.rows[iRow].id, nm, v, iRow, iCol]);\r\n \t\t\t\t\t\t\tif ($.isFunction($t.p.afterSaveCell)) {\r\n \t\t\t\t\t\t\t\t$t.p.afterSaveCell.call($t, $t.rows[iRow].id,nm, v, iRow,iCol);\r\n \t\t\t\t\t\t\t}\r\n @@ -9671,9 +9943,9 @@ $.jgrid.extend({\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif ($.browser.opera) {\r\n -\t\t\t\t$("#"+$t.p.knv).attr("tabindex","-1").focus();\r\n +\t\t\t\t$("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();\r\n \t\t\t} else {\r\n -\t\t\t\twindow.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0);\r\n +\t\t\t\twindow.setTimeout(function () { $("#"+$.jgrid.jqID($t.p.knv)).attr("tabindex","-1").focus();},0);\r\n \t\t\t}\r\n \t\t});\r\n \t},\r\n @@ -9692,6 +9964,7 @@ $.jgrid.extend({\r\n \t\t\t\t}\r\n \t\t\t\t$(cc).empty().attr("tabindex","-1");\r\n \t\t\t\t$($t).jqGrid("setCell",$t.rows[iRow].id, iCol, $t.p.savedRow[fr].v, false, false, true);\r\n +\t\t\t\t$($t).triggerHandler("jqGridAfterRestoreCell", [$t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol]);\r\n \t\t\t\tif ($.isFunction($t.p.afterRestoreCell)) {\r\n \t\t\t\t\t$t.p.afterRestoreCell.call($t, $t.rows[iRow].id, $t.p.savedRow[fr].v, iRow, iCol);\r\n \t\t\t\t}\t\t\t\t\r\n @@ -9744,54 +10017,8 @@ $.jgrid.extend({\r\n \t\t\tif (!$t.grid || $t.p.cellEdit !== true ) {return;}\r\n \t\t\t// trick to process keydown on non input elements\r\n \t\t\t$t.p.knv = $t.p.id + "_kn";\r\n -\t\t\tvar selection = $("<span style=\'width:0px;height:0px;background-color:black;\' tabindex=\'0\'><span tabindex=\'-1\' style=\'width:0px;height:0px;background-color:grey\' id=\'"+$t.p.knv+"\'></span></span>"),\r\n +\t\t\tvar selection = $("<div style=\'position:absolute;top:-1000000px;width:1px;height:1px;\' tabindex=\'0\'><div tabindex=\'-1\' style=\'width:1px;height:1px;\' id=\'"+$t.p.knv+"\'></div></div>"),\r\n \t\t\ti, kdir;\r\n -\t\t\t$(selection).insertBefore($t.grid.cDiv);\r\n -\t\t\t$("#"+$t.p.knv)\r\n -\t\t\t.focus()\r\n -\t\t\t.keydown(function (e){\r\n -\t\t\t\tkdir = e.keyCode;\r\n -\t\t\t\tif($t.p.direction == "rtl") {\r\n -\t\t\t\t\tif(kdir==37) { kdir = 39;}\r\n -\t\t\t\t\telse if (kdir==39) { kdir = 37; }\r\n -\t\t\t\t}\r\n -\t\t\t\tswitch (kdir) {\r\n -\t\t\t\t\tcase 38:\r\n -\t\t\t\t\t\tif ($t.p.iRow-1 >0 ) {\r\n -\t\t\t\t\t\t\tscrollGrid($t.p.iRow-1,$t.p.iCol,\'vu\');\r\n -\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow-1,$t.p.iCol,false);\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\tbreak;\r\n -\t\t\t\t\tcase 40 :\r\n -\t\t\t\t\t\tif ($t.p.iRow+1 <= $t.rows.length-1) {\r\n -\t\t\t\t\t\t\tscrollGrid($t.p.iRow+1,$t.p.iCol,\'vd\');\r\n -\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow+1,$t.p.iCol,false);\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\tbreak;\r\n -\t\t\t\t\tcase 37 :\r\n -\t\t\t\t\t\tif ($t.p.iCol -1 >= 0) {\r\n -\t\t\t\t\t\t\ti = findNextVisible($t.p.iCol-1,\'lft\');\r\n -\t\t\t\t\t\t\tscrollGrid($t.p.iRow, i,\'h\');\r\n -\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow, i,false);\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\tbreak;\r\n -\t\t\t\t\tcase 39 :\r\n -\t\t\t\t\t\tif ($t.p.iCol +1 <= $t.p.colModel.length-1) {\r\n -\t\t\t\t\t\t\ti = findNextVisible($t.p.iCol+1,\'rgt\');\r\n -\t\t\t\t\t\t\tscrollGrid($t.p.iRow,i,\'h\');\r\n -\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow,i,false);\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\tbreak;\r\n -\t\t\t\t\tcase 13:\r\n -\t\t\t\t\t\tif (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) {\r\n -\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow,$t.p.iCol,true);\r\n -\t\t\t\t\t\t}\r\n -\t\t\t\t\tbreak;\r\n -\t\t\t\t\tdefault :\r\n -\t\t\t\t\t\treturn true;\r\n -\t\t\t\t}\r\n -\t\t\t\treturn false;\r\n -\t\t\t});\r\n \t\t\tfunction scrollGrid(iR, iC, tp){\r\n \t\t\t\tif (tp.substr(0,1)==\'v\') {\r\n \t\t\t\t\tvar ch = $($t.grid.bDiv)[0].clientHeight,\r\n @@ -9843,6 +10070,53 @@ $.jgrid.extend({\r\n \t\t\t\t}\r\n \t\t\t\treturn ind;\r\n \t\t\t}\r\n +\r\n +\t\t\t$(selection).insertBefore($t.grid.cDiv);\r\n +\t\t\t$("#"+$t.p.knv)\r\n +\t\t\t.focus()\r\n +\t\t\t.keydown(function (e){\r\n +\t\t\t\tkdir = e.keyCode;\r\n +\t\t\t\tif($t.p.direction == "rtl") {\r\n +\t\t\t\t\tif(kdir===37) { kdir = 39;}\r\n +\t\t\t\t\telse if (kdir===39) { kdir = 37; }\r\n +\t\t\t\t}\r\n +\t\t\t\tswitch (kdir) {\r\n +\t\t\t\t\tcase 38:\r\n +\t\t\t\t\t\tif ($t.p.iRow-1 >0 ) {\r\n +\t\t\t\t\t\t\tscrollGrid($t.p.iRow-1,$t.p.iCol,\'vu\');\r\n +\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow-1,$t.p.iCol,false);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\tbreak;\r\n +\t\t\t\t\tcase 40 :\r\n +\t\t\t\t\t\tif ($t.p.iRow+1 <= $t.rows.length-1) {\r\n +\t\t\t\t\t\t\tscrollGrid($t.p.iRow+1,$t.p.iCol,\'vd\');\r\n +\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow+1,$t.p.iCol,false);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\tbreak;\r\n +\t\t\t\t\tcase 37 :\r\n +\t\t\t\t\t\tif ($t.p.iCol -1 >= 0) {\r\n +\t\t\t\t\t\t\ti = findNextVisible($t.p.iCol-1,\'lft\');\r\n +\t\t\t\t\t\t\tscrollGrid($t.p.iRow, i,\'h\');\r\n +\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow, i,false);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\tbreak;\r\n +\t\t\t\t\tcase 39 :\r\n +\t\t\t\t\t\tif ($t.p.iCol +1 <= $t.p.colModel.length-1) {\r\n +\t\t\t\t\t\t\ti = findNextVisible($t.p.iCol+1,\'rgt\');\r\n +\t\t\t\t\t\t\tscrollGrid($t.p.iRow,i,\'h\');\r\n +\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow,i,false);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\tbreak;\r\n +\t\t\t\t\tcase 13:\r\n +\t\t\t\t\t\tif (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) {\r\n +\t\t\t\t\t\t\t$($t).jqGrid("editCell",$t.p.iRow,$t.p.iCol,true);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\tbreak;\r\n +\t\t\t\t\tdefault :\r\n +\t\t\t\t\t\treturn true;\r\n +\t\t\t\t}\r\n +\t\t\t\treturn false;\r\n +\t\t\t});\r\n \t\t});\r\n \t},\r\n \tgetChangedCells : function (mthd) {\r\n @@ -9860,14 +10134,14 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\tif (mthd==\'dirty\') {\r\n \t\t\t\t\t\t\t\tif ($(this).hasClass(\'dirty-cell\')) {\r\n \t\t\t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t\t\tres[nm] = $.unformat(this,{rowId:$t.rows[j].id, colModel:$t.p.colModel[i]},i);\r\n +\t\t\t\t\t\t\t\t\t\tres[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id, colModel:$t.p.colModel[i]},i);\r\n \t\t\t\t\t\t\t\t\t} catch (e){\r\n \t\t\t\t\t\t\t\t\t\tres[nm] = $.jgrid.htmlDecode($(this).html());\r\n \t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t\tres[nm] = $.unformat(this,{rowId:$t.rows[j].id,colModel:$t.p.colModel[i]},i);\r\n +\t\t\t\t\t\t\t\t\tres[nm] = $.unformat.call($t,this,{rowId:$t.rows[j].id,colModel:$t.p.colModel[i]},i);\r\n \t\t\t\t\t\t\t\t} catch (e) {\r\n \t\t\t\t\t\t\t\t\tres[nm] = $.jgrid.htmlDecode($(this).html());\r\n \t\t\t\t\t\t\t\t}\r\n @@ -9893,6 +10167,7 @@ $.jgrid.extend({\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl-2.0.html\r\n **/\r\n +"use strict";\r\n $.jgrid.extend({\r\n setSubGrid : function () {\r\n \treturn this.each(function (){\r\n @@ -9966,13 +10241,13 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t\t});\r\n \t\t\t}\r\n \t\t\tvar pID = $("table:first",ts.grid.bDiv).attr("id")+"_";\r\n -\t\t\t$("#"+pID+sbid).append(dummy);\r\n +\t\t\t$("#"+$.jgrid.jqID(pID+sbid)).append(dummy);\r\n \t\t\tts.grid.hDiv.loading = false;\r\n -\t\t\t$("#load_"+ts.p.id).hide();\r\n +\t\t\t$("#load_"+$.jgrid.jqID(ts.p.id)).hide();\r\n \t\t\treturn false;\r\n \t\t};\r\n \t\tvar subGridJson = function(sjxml, sbid){\r\n -\t\t\tvar tddiv,result , i,cur, sgmap,j,\r\n +\t\t\tvar tddiv,result,i,cur, sgmap,j,\r\n \t\t\tdummy = $("<table cellspacing=\'0\' cellpadding=\'0\' border=\'0\'><tbody></tbody></table>"),\r\n \t\t\ttrdiv = $("<tr></tr>");\r\n \t\t\tfor (i = 0; i<ts.p.subGridModel[0].name.length; i++) {\r\n @@ -9984,7 +10259,7 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t$(dummy).append(trdiv);\r\n \t\t\tif (sjxml){\r\n \t\t\t\tsgmap = ts.p.jsonReader.subgrid;\r\n -\t\t\t\tresult = sjxml[sgmap.root];\r\n +\t\t\t\tresult = $.jgrid.getAccessor(sjxml, sgmap.root);\r\n \t\t\t\tif ( typeof result !== \'undefined\' ) {\r\n \t\t\t\t\tfor (i=0;i<result.length;i++) {\r\n \t\t\t\t\t\tcur = result[i];\r\n @@ -10007,9 +10282,9 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tvar pID = $("table:first",ts.grid.bDiv).attr("id")+"_";\r\n -\t\t\t$("#"+pID+sbid).append(dummy);\r\n +\t\t\t$("#"+$.jgrid.jqID(pID+sbid)).append(dummy);\r\n \t\t\tts.grid.hDiv.loading = false;\r\n -\t\t\t$("#load_"+ts.p.id).hide();\r\n +\t\t\t$("#load_"+$.jgrid.jqID(ts.p.id)).hide();\r\n \t\t\treturn false;\r\n \t\t};\r\n \t\tvar populatesubgrid = function( rd )\r\n @@ -10022,7 +10297,7 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\tif(ts.p.subGridModel[0].params) {\r\n \t\t\t\tfor(j=0; j < ts.p.subGridModel[0].params.length; j++) {\r\n \t\t\t\t\tfor(i=0; i<ts.p.colModel.length; i++) {\r\n -\t\t\t\t\t\tif(ts.p.colModel[i].name == ts.p.subGridModel[0].params[j]) {\r\n +\t\t\t\t\t\tif(ts.p.colModel[i].name === ts.p.subGridModel[0].params[j]) {\r\n \t\t\t\t\t\t\tdp[ts.p.colModel[i].name]= $("td:eq("+i+")",rd).text().replace(/\\ \\;/ig,\'\');\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n @@ -10030,31 +10305,8 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t}\r\n \t\t\tif(!ts.grid.hDiv.loading) {\r\n \t\t\t\tts.grid.hDiv.loading = true;\r\n -\t\t\t\t$("#load_"+ts.p.id).show();\r\n -\t\t\t\tif(!ts.p.subgridtype) - -]]></string> </value> - </item> - <item> - <key> <string>next</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="7" aka="AAAAAAAAAAc="> - <pickle> - <global name="Pdata" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>data</string> </key> - <value> <string encoding="cdata"><![CDATA[ - - { ts.p.subgridtype = ts.p.datatype; }\r\n +\t\t\t\t$("#load_"+$.jgrid.jqID(ts.p.id)).show();\r\n +\t\t\t\tif(!ts.p.subgridtype) { ts.p.subgridtype = ts.p.datatype; }\r\n \t\t\t\tif($.isFunction(ts.p.subgridtype)) {\r\n \t\t\t\t\tts.p.subgridtype.call(ts, dp);\r\n \t\t\t\t} else {\r\n @@ -10069,7 +10321,7 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t\t\t\tdataType:ts.p.subgridtype,\r\n \t\t\t\t\t\tdata: $.isFunction(ts.p.serializeSubGridData)? ts.p.serializeSubGridData.call(ts, dp) : dp,\r\n \t\t\t\t\t\tcomplete: function(sxml) {\r\n -\t\t\t\t\t\t\tif(ts.p.subgridtype == "xml") {\r\n +\t\t\t\t\t\t\tif(ts.p.subgridtype === "xml") {\r\n \t\t\t\t\t\t\t\tsubGridXml(sxml.responseXML, sid);\r\n \t\t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\t\tsubGridJson($.jgrid.parse(sxml.responseText),sid);\r\n @@ -10083,8 +10335,8 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\treturn false;\r\n \t\t};\r\n \t\tvar _id, pID,atd, nhc=0, bfsc, r;\r\n -\t\t$.each(ts.p.colModel,function(i,v){\r\n -\t\t\tif(this.hidden === true || this.name == \'rn\' || this.name == \'cb\') {\r\n +\t\t$.each(ts.p.colModel,function(){\r\n +\t\t\tif(this.hidden === true || this.name === \'rn\' || this.name === \'cb\') {\r\n \t\t\t\tnhc++;\r\n \t\t\t}\r\n \t\t});\r\n @@ -10095,7 +10347,7 @@ addSubGrid : function( pos, sind ) {\r\n \t\t}\r\n \t\twhile(i < len) {\r\n \t\t\tif($(ts.rows[i]).hasClass(\'jqgrow\')) {\r\n -\t\t\t\t$(ts.rows[i].cells[pos]).bind(\'click\', function(e) {\r\n +\t\t\t\t$(ts.rows[i].cells[pos]).bind(\'click\', function() {\r\n \t\t\t\t\tvar tr = $(this).parent("tr")[0];\r\n \t\t\t\t\tr = tr.nextSibling;\r\n \t\t\t\t\tif($(this).hasClass("sgcollapsed")) {\r\n @@ -10103,12 +10355,14 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t\t\t\t_id = tr.id;\r\n \t\t\t\t\t\tif(ts.p.subGridOptions.reloadOnExpand === true || ( ts.p.subGridOptions.reloadOnExpand === false && !$(r).hasClass(\'ui-subgrid\') ) ) {\r\n \t\t\t\t\t\t\tatd = pos >=1 ? "<td colspan=\'"+pos+"\'> </td>":"";\r\n -\t\t\t\t\t\t\tbfsc =true;\r\n -\t\t\t\t\t\t\tif($.isFunction(ts.p.subGridBeforeExpand)) {\r\n +\t\t\t\t\t\t\tbfsc = $(ts).triggerHandler("jqGridSubGridBeforeExpand", [pID + "_" + _id, _id]);\r\n +\t\t\t\t\t\t\tbfsc = (bfsc === false || bfsc === \'stop\') ? false : true;\r\n +\t\t\t\t\t\t\tif(bfsc && $.isFunction(ts.p.subGridBeforeExpand)) {\r\n \t\t\t\t\t\t\t\tbfsc = ts.p.subGridBeforeExpand.call(ts, pID+"_"+_id,_id);\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\tif(bfsc === false) {return false;}\r\n -\t\t\t\t\t\t\t\t$(tr).after( "<tr role=\'row\' class=\'ui-subgrid\'>"+atd+"<td class=\'ui-widget-content subgrid-cell\'><span class=\'ui-icon "+ts.p.subGridOptions.openicon+"\'></span></td><td colspan=\'"+parseInt(ts.p.colNames.length-1-nhc,10)+"\' class=\'ui-widget-content subgrid-data\'><div id="+pID+"_"+_id+" class=\'tablediv\'></div></td></tr>" );\r\n +\t\t\t\t\t\t\t$(tr).after( "<tr role=\'row\' class=\'ui-subgrid\'>"+atd+"<td class=\'ui-widget-content subgrid-cell\'><span class=\'ui-icon "+ts.p.subGridOptions.openicon+"\'></span></td><td colspan=\'"+parseInt(ts.p.colNames.length-1-nhc,10)+"\' class=\'ui-widget-content subgrid-data\'><div id="+pID+"_"+_id+" class=\'tablediv\'></div></td></tr>" );\r\n +\t\t\t\t\t\t\t$(ts).triggerHandler("jqGridSubGridRowExpanded", [pID + "_" + _id, _id]);\r\n \t\t\t\t\t\t\tif( $.isFunction(ts.p.subGridRowExpanded)) {\r\n \t\t\t\t\t\t\t\tts.p.subGridRowExpanded.call(ts, pID+"_"+ _id,_id);\r\n \t\t\t\t\t\t\t} else {\r\n @@ -10122,27 +10376,30 @@ addSubGrid : function( pos, sind ) {\r\n \t\t\t\t\t\t\t$(ts).jqGrid(\'setSelection\',_id);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t} else if($(this).hasClass("sgexpanded")) {\r\n -\t\t\t\t\t\tbfsc = true;\r\n -\t\t\t\t\t\tif( $.isFunction(ts.p.subGridRowColapsed)) {\r\n +\t\t\t\t\t\tbfsc = $(ts).triggerHandler("jqGridSubGridRowColapsed", [pID + "_" + _id, _id]);\r\n +\t\t\t\t\t\tbfsc = (bfsc === false || bfsc === \'stop\') ? false : true;\r\n +\t\t\t\t\t\tif( bfsc && $.isFunction(ts.p.subGridRowColapsed)) {\r\n \t\t\t\t\t\t\t_id = tr.id;\r\n \t\t\t\t\t\t\tbfsc = ts.p.subGridRowColapsed.call(ts, pID+"_"+_id,_id );\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(bfsc===false) {return false;}\r\n -\t\t\t\t\t\t\tif(ts.p.subGridOptions.reloadOnExpand === true) {\r\n -\t\t\t\t\t\t\t\t$(r).remove(".ui-subgrid");\r\n -\t\t\t\t\t\t\t} else if($(r).hasClass(\'ui-subgrid\')) { // incase of dynamic deleting\r\n -\t\t\t\t\t\t\t\t$(r).hide();\r\n -\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t$(this).html("<a href=\'javascript:void(0);\'><span class=\'ui-icon "+ts.p.subGridOptions.plusicon+"\'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");\r\n +\t\t\t\t\t\tif(ts.p.subGridOptions.reloadOnExpand === true) {\r\n +\t\t\t\t\t\t\t$(r).remove(".ui-subgrid");\r\n +\t\t\t\t\t\t} else if($(r).hasClass(\'ui-subgrid\')) { // incase of dynamic deleting\r\n +\t\t\t\t\t\t\t$(r).hide();\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t$(this).html("<a href=\'javascript:void(0);\'><span class=\'ui-icon "+ts.p.subGridOptions.plusicon+"\'></span></a>").removeClass("sgexpanded").addClass("sgcollapsed");\r\n \t\t\t\t\t}\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t});\r\n \t\t\t}\r\n -\t\t\tif(ts.p.subGridOptions.expandOnLoad === true) {\r\n -\t\t\t\t$(ts.rows[i].cells[pos]).trigger(\'click\');\r\n -\t\t\t\t}\r\n \t\t\ti++;\r\n \t\t}\r\n +\t\tif(ts.p.subGridOptions.expandOnLoad === true) {\r\n +\t\t\t$(ts.rows).filter(\'.jqgrow\').each(function(index,row){\r\n +\t\t\t\t$(row.cells[0]).click();\r\n +\t\t\t});\r\n +\t\t}\r\n \t\tts.subGridXml = function(xml,sid) {subGridXml(xml,sid);};\r\n \t\tts.subGridJson = function(json,sid) {subGridJson(json,sid);};\r\n \t});\r\n @@ -10210,6 +10467,7 @@ toggleSubGridRow : function(rowid) {\r\n \r\n /*global document, jQuery, $ */\r\n (function($) {\r\n +"use strict";\r\n $.jgrid.extend({\r\n \tsetTreeNode : function(i, len){\r\n \t\treturn this.each(function(){\r\n @@ -10231,7 +10489,30 @@ $.jgrid.extend({\r\n \t\t\t\t\tlft = parseInt(ldat[$t.p.treeReader.left_field],10);\r\n \t\t\t\t\trgt = parseInt(ldat[$t.p.treeReader.right_field],10);\r\n \t\t\t\t\t// NS Model\r\n -\t\t\t\t\t\tldat[isLeaf] = (rgt === lft+1) ? \'true\' : \'false\';\r\n +\t\t\t\t\t\tldat[isLeaf] = (rgt === lft+1) ? \' + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +true\' : \'false\';\r\n \t\t\t\t\t\t$t.rows[i].cells[$t.p._treeleafpos].innerHTML = ldat[isLeaf];\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n @@ -10368,11 +10649,11 @@ $.jgrid.extend({\r\n \t\t\t\t\ti++;\r\n \t\t\t\t\t//\r\n \t\t\t\t\tfor(var tkey in $t.p.treeReader) {\r\n -\t\t\t\t\t\tif($t.p.treeReader[tkey] == nm)\r\n +\t\t\t\t\t\tif($t.p.treeReader[tkey] == nm) {\r\n \t\t\t\t\t\t\tdupcols.push(nm);\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n \t\t\t\t}\r\n -\r\n -\t\t\t}\r\n \t\t\t}\r\n \t\t\t$.each($t.p.treeReader,function(j,n){\r\n \t\t\t\tif(n && $.inArray(n, dupcols) === -1){\r\n @@ -10390,10 +10671,11 @@ $.jgrid.extend({\r\n \t\t\tif(!$t.grid || !$t.p.treeGrid) {return;}\r\n \t\t\tvar childern = $($t).jqGrid("getNodeChildren",record),\r\n \t\t\t//if ($($t).jqGrid("isVisibleNode",record)) {\r\n -\t\t\texpanded = $t.p.treeReader.expanded_field;\r\n -\t\t\t$(childern).each(function(i){\r\n +\t\t\texpanded = $t.p.treeReader.expanded_field,\r\n +\t\t\trows = $t.rows;\r\n +\t\t\t$(childern).each(function(){\r\n \t\t\t\tvar id = $.jgrid.getAccessor(this,$t.p.localReader.id);\r\n -\t\t\t\t$("#"+id,$t.grid.bDiv).css("display","");\r\n +\t\t\t\t$(rows.namedItem(id)).css("display","");\r\n \t\t\t\tif(this[expanded]) {\r\n \t\t\t\t\t$($t).jqGrid("expandRow",this);\r\n \t\t\t\t}\r\n @@ -10406,10 +10688,11 @@ $.jgrid.extend({\r\n \t\t\tvar $t = this;\r\n \t\t\tif(!$t.grid || !$t.p.treeGrid) {return;}\r\n \t\t\tvar childern = $($t).jqGrid("getNodeChildren",record),\r\n -\t\t\texpanded = $t.p.treeReader.expanded_field;\r\n -\t\t\t$(childern).each(function(i){\r\n +\t\t\texpanded = $t.p.treeReader.expanded_field,\r\n +\t\t\trows = $t.rows;\r\n +\t\t\t$(childern).each(function(){\r\n \t\t\t\tvar id = $.jgrid.getAccessor(this,$t.p.localReader.id);\r\n -\t\t\t\t$("#"+id,$t.grid.bDiv).css("display","none");\r\n +\t\t\t\t$(rows.namedItem(id)).css("display","none");\r\n \t\t\t\tif(this[expanded]){\r\n \t\t\t\t\t$($t).jqGrid("collapseRow",this);\r\n \t\t\t\t}\r\n @@ -10425,7 +10708,7 @@ $.jgrid.extend({\r\n \t\t\tswitch ($t.p.treeGridModel) {\r\n \t\t\t\tcase \'nested\' :\r\n \t\t\t\t\tvar level = $t.p.treeReader.level_field;\r\n -\t\t\t\t\t$($t.p.data).each(function(i){\r\n +\t\t\t\t\t$($t.p.data).each(function(){\r\n \t\t\t\t\t\tif(parseInt(this[level],10) === parseInt($t.p.tree_root_level,10)) {\r\n \t\t\t\t\t\t\tresult.push(this);\r\n \t\t\t\t\t\t}\r\n @@ -10433,7 +10716,7 @@ $.jgrid.extend({\r\n \t\t\t\t\tbreak;\r\n \t\t\t\tcase \'adjacency\' :\r\n \t\t\t\t\tvar parent_id = $t.p.treeReader.parent_id_field;\r\n -\t\t\t\t\t$($t.p.data).each(function(i){\r\n +\t\t\t\t\t$($t.p.data).each(function(){\r\n \t\t\t\t\t\tif(this[parent_id] === null || String(this[parent_id]).toLowerCase() == "null") {\r\n \t\t\t\t\t\t\tresult.push(this);\r\n \t\t\t\t\t\t}\r\n @@ -10481,7 +10764,7 @@ $.jgrid.extend({\r\n \t\t\t\tcase \'adjacency\' :\r\n \t\t\t\t\tvar parent_id = $t.p.treeReader.parent_id_field,\r\n \t\t\t\t\tdtid = $t.p.localReader.id;\r\n -\t\t\t\t\t$(this.p.data).each(function(i,val){\r\n +\t\t\t\t\t$(this.p.data).each(function(){\r\n \t\t\t\t\t\tif(this[dtid] == rc[parent_id] ) {\r\n \t\t\t\t\t\t\tresult = this;\r\n \t\t\t\t\t\t\treturn false;\r\n @@ -10503,7 +10786,7 @@ $.jgrid.extend({\r\n \t\t\t\t\trgtc = $t.p.treeReader.right_field,\r\n \t\t\t\t\tlevelc = $t.p.treeReader.level_field,\r\n \t\t\t\t\tlft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);\r\n -\t\t\t\t\t$(this.p.data).each(function(i){\r\n +\t\t\t\t\t$(this.p.data).each(function(){\r\n \t\t\t\t\t\tif(parseInt(this[levelc],10) === level+1 && parseInt(this[lftc],10) > lft && parseInt(this[rgtc],10) < rgt) {\r\n \t\t\t\t\t\t\tresult.push(this);\r\n \t\t\t\t\t\t}\r\n @@ -10512,7 +10795,7 @@ $.jgrid.extend({\r\n \t\t\t\tcase \'adjacency\' :\r\n \t\t\t\t\tvar parent_id = $t.p.treeReader.parent_id_field,\r\n \t\t\t\t\tdtid = $t.p.localReader.id;\r\n -\t\t\t\t\t$(this.p.data).each(function(i,val){\r\n +\t\t\t\t\t$(this.p.data).each(function(){\r\n \t\t\t\t\t\tif(this[parent_id] == rc[dtid]) {\r\n \t\t\t\t\t\t\tresult.push(this);\r\n \t\t\t\t\t\t}\r\n @@ -10533,7 +10816,7 @@ $.jgrid.extend({\r\n \t\t\t\t\trgtc = $t.p.treeReader.right_field,\r\n \t\t\t\t\tlevelc = $t.p.treeReader.level_field,\r\n \t\t\t\t\tlft = parseInt(rc[lftc],10), rgt = parseInt(rc[rgtc],10), level = parseInt(rc[levelc],10);\r\n -\t\t\t\t\t$(this.p.data).each(function(i){\r\n +\t\t\t\t\t$(this.p.data).each(function(){\r\n \t\t\t\t\t\tif(parseInt(this[levelc],10) >= level && parseInt(this[lftc],10) >= lft && parseInt(this[lftc],10) <= rgt) {\r\n \t\t\t\t\t\t\tresult.push(this);\r\n \t\t\t\t\t\t}\r\n @@ -10618,12 +10901,12 @@ $.jgrid.extend({\r\n \r\n \t\t\tif(!rc[expanded]) {\r\n \t\t\t\tvar id = $.jgrid.getAccessor(rc,this.p.localReader.id);\r\n -\t\t\t\tvar rc1 = $("#"+id,this.grid.bDiv)[0];\r\n +\t\t\t\tvar rc1 = $("#"+$.jgrid.jqID(id),this.grid.bDiv)[0];\r\n \t\t\t\tvar position = this.p._index[id];\r\n \t\t\t\tif( $(this).jqGrid("isNodeLoaded",this.p.data[position]) ) {\r\n \t\t\t\t\trc[expanded] = true;\r\n \t\t\t\t\t$("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus");\r\n -\t\t\t\t} else {\r\n +\t\t\t\t} else if (!this.grid.hDiv.loading) {\r\n \t\t\t\t\trc[expanded] = true;\r\n \t\t\t\t\t$("div.treeclick",rc1).removeClass(this.p.treeIcons.plus+" tree-plus").addClass(this.p.treeIcons.minus+" tree-minus");\r\n \t\t\t\t\tthis.p.treeANode = rc1.rowIndex;\r\n @@ -10651,7 +10934,7 @@ $.jgrid.extend({\r\n \t\t\tif(rc[expanded]) {\r\n \t\t\t\trc[expanded] = false;\r\n \t\t\t\tvar id = $.jgrid.getAccessor(rc,this.p.localReader.id);\r\n -\t\t\t\tvar rc1 = $("#"+id,this.grid.bDiv)[0];\r\n +\t\t\t\tvar rc1 = $("#"+$.jgrid.jqID(id),this.grid.bDiv)[0];\r\n \t\t\t\t$("div.treeclick",rc1).removeClass(this.p.treeIcons.minus+" tree-minus").addClass(this.p.treeIcons.plus+" tree-plus");\r\n \t\t\t}\r\n \t\t});\r\n @@ -10673,9 +10956,9 @@ $.jgrid.extend({\r\n \t\t\t\trecords.push(rec);\r\n \t\t\t\t$(this).jqGrid("collectChildrenSortTree",records, rec, sortname, newDir,st, datefmt);\r\n \t\t\t}\r\n -\t\t\t$.each(records, function(index, row) {\r\n +\t\t\t$.each(records, function(index) {\r\n \t\t\t\tvar id = $.jgrid.getAccessor(this,$t.p.localReader.id);\r\n -\t\t\t\t$(\'#\'+$t.p.id+ \' tbody tr:eq(\'+index+\')\').after($(\'tr#\'+id,$t.grid.bDiv));\r\n +\t\t\t\t$(\'#\'+$.jgrid.jqID($t.p.id)+ \' tbody tr:eq(\'+index+\')\').after($(\'tr#\'+$.jgrid.jqID(id),$t.grid.bDiv));\r\n \t\t\t});\r\n \t\t\tquery = null;roots=null;records=null;\r\n \t\t});\r\n @@ -10730,15 +11013,19 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t.select();\r\n \t\t\t\t\tif(res.length) {\r\n \t\t\t\t\t\tfor( key in res) {\r\n -\t\t\t\t\t\t\tres[key][left] = parseInt(res[key][left],10) - width ;\r\n -\t\t\t}\r\n +\t\t\t\t\t\t\tif(res.hasOwnProperty(key)) {\r\n +\t\t\t\t\t\t\t\tres[key][left] = parseInt(res[key][left],10) - width ;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tres = $.jgrid.from($t.p.data)\r\n \t\t\t\t\t\t.greater(right,myright,{stype:\'integer\'})\r\n \t\t\t\t\t\t.select();\r\n \t\t\t\t\tif(res.length) {\r\n \t\t\t\t\t\tfor( key in res) {\r\n -\t\t\t\t\t\t\tres[key][right] = parseInt(res[key][right],10) - width ;\r\n +\t\t\t\t\t\t\tif(res.hasOwnProperty(key)) {\r\n +\t\t\t\t\t\t\t\tres[key][right] = parseInt(res[key][right],10) - width ;\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n @@ -10753,7 +11040,7 @@ $.jgrid.extend({\r\n \t\t\tvar expanded = $t.p.treeReader.expanded_field,\r\n \t\t\tisLeaf = $t.p.treeReader.leaf_field,\r\n \t\t\tlevel = $t.p.treeReader.level_field,\r\n -\t\t\ticon = $t.p.treeReader.icon_field,\r\n +\t\t\t//icon = $t.p.treeReader.icon_field,\r\n \t\t\tparent = $t.p.treeReader.parent_id_field,\r\n \t\t\tleft = $t.p.treeReader.left_field,\r\n \t\t\tright = $t.p.treeReader.right_field,\r\n @@ -10825,8 +11112,10 @@ $.jgrid.extend({\r\n \t\t\t\t\tres = query.select();\r\n \t\t\t\t\tif(res.length) {\r\n \t\t\t\t\t\tfor( key in res) {\r\n -\t\t\t\t\t\t\tres[key][left] = res[key][left] > maxright ? parseInt(res[key][left],10) +2 : res[key][left];\r\n -\t\t\t\t\t\t\tres[key][right] = res[key][right] >= maxright ? parseInt(res[key][right],10) +2 : res[key][right];\r\n +\t\t\t\t\t\t\tif(res.hasOwnProperty(key)) {\r\n +\t\t\t\t\t\t\t\tres[key][left] = res[key][left] > maxright ? parseInt(res[key][left],10) +2 : res[key][left];\r\n +\t\t\t\t\t\t\t\tres[key][right] = res[key][right] >= maxright ? parseInt(res[key][right],10) +2 : res[key][right];\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tdata[left] = maxright;\r\n @@ -10838,7 +11127,9 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t.select();\r\n \t\t\t\t\tif(res.length) {\r\n \t\t\t\t\t\tfor( key in res) {\r\n -\t\t\t\t\t\t\tres[key][left] = parseInt(res[key][left],10) +2 ;\r\n +\t\t\t\t\t\t\tif(res.hasOwnProperty(key)) {\r\n +\t\t\t\t\t\t\t\tres[key][left] = parseInt(res[key][left],10) +2 ;\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tres = $.jgrid.from($t.p.data)\r\n @@ -10846,7 +11137,9 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t.select();\r\n \t\t\t\t\tif(res.length) {\r\n \t\t\t\t\t\tfor( key in res) {\r\n -\t\t\t\t\t\t\tres[key][right] = parseInt(res[key][right],10) +2 ;\r\n +\t\t\t\t\t\t\tif(res.hasOwnProperty(key)) {\r\n +\t\t\t\t\t\t\t\tres[key][right] = parseInt(res[key][right],10) +2 ;\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t\tdata[left] = maxright+1;\r\n @@ -10869,6 +11162,29 @@ $.jgrid.extend({\r\n })(jQuery);\r\n // Grouping module\r\n ;(function($){\r\n +"use strict";\r\n +$.extend($.jgrid,{\r\n +\ttemplate : function(format){ //jqgformat\r\n +\t\tvar args = $.makeArray(arguments).slice(1), j = 1;\r\n +\t\tif(format===undefined) { format = ""; }\r\n +\t\treturn format.replace(/\\{([\\w\\-]+)(?:\\:([\\w\\.]*)(?:\\((.*?)?\\))?)?\\}/g, function(m,i){\r\n +\t\t\tif(!isNaN(parseInt(i,10))) {\r\n +\t\t\t\tj++;\r\n +\t\t\t\treturn args[parseInt(i,10)];\r\n +\t\t\t} else {\r\n +\t\t\t\tvar nmarr = args[ j ],\r\n +\t\t\t\tk = nmarr.length;\r\n +\t\t\t\twhile(k--) {\r\n +\t\t\t\t\tif(i===nmarr[k].nm) {\r\n +\t\t\t\t\t\treturn nmarr[k].v;\r\n +\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t\tj++;\r\n +\t\t\t}\r\n +\t\t});\r\n +\t}\r\n +});\r\n $.jgrid.extend({\r\n \tgroupingSetup : function () {\r\n \t\treturn this.each(function (){\r\n @@ -10878,9 +11194,13 @@ $.jgrid.extend({\r\n \t\t\t\tif(!grp.groupField.length) {\r\n \t\t\t\t\t$t.p.grouping = false;\r\n \t\t\t\t} else {\r\n -\t\t\t\t\tif ( typeof(grp.visibiltyOnNextGrouping) == \'undefined\') {\r\n +\t\t\t\t\tif ( typeof(grp.visibiltyOnNextGrouping) === \'undefined\') {\r\n \t\t\t\t\t\tgrp.visibiltyOnNextGrouping = [];\r\n \t\t\t\t\t}\r\n +\r\n +\t\t\t\t\tgrp.lastvalues=[];\r\n +\t\t\t\t\tgrp.groups =[];\r\n +\t\t\t\t\tgrp.counters =[];\r\n \t\t\t\t\tfor(var i=0;i<grp.groupField.length;i++) {\r\n \t\t\t\t\t\tif(!grp.groupOrder[i]) {\r\n \t\t\t\t\t\t\tgrp.groupOrder[i] = \'asc\';\r\n @@ -10888,69 +11208,103 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tif(!grp.groupText[i]) {\r\n \t\t\t\t\t\t\tgrp.groupText[i] = \'{0}\';\r\n \t\t\t\t\t\t}\r\n -\t\t\t\t\t\tif( typeof(grp.groupColumnShow[i]) != \'boolean\') {\r\n +\t\t\t\t\t\tif( typeof(grp.groupColumnShow[i]) !== \'boolean\') {\r\n \t\t\t\t\t\t\tgrp.groupColumnShow[i] = true;\r\n \t\t\t\t\t\t}\r\n -\t\t\t\t\t\tif( typeof(grp.groupSummary[i]) != \'boolean\') {\r\n +\t\t\t\t\t\tif( typeof(grp.groupSummary[i]) !== \'boolean\') {\r\n \t\t\t\t\t\t\tgrp.groupSummary[i] = false;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(grp.groupColumnShow[i] === true) {\r\n \t\t\t\t\t\t\tgrp.visibiltyOnNextGrouping[i] = true;\r\n \t\t\t\t\t\t\t$($t).jqGrid(\'showCol\',grp.groupField[i]);\r\n \t\t\t\t\t\t} else {\r\n -\t\t\t\t\t\t\tgrp.visibiltyOnNextGrouping[i] = $("#"+$t.p.id+"_"+grp.groupField[i]).is(":visible");\r\n +\t\t\t\t\t\t\tgrp.visibiltyOnNextGrouping[i] = $("#"+$.jgrid.jqID($t.p.id+"_"+grp.groupField[i])).is(":visible");\r\n \t\t\t\t\t\t\t$($t).jqGrid(\'hideCol\',grp.groupField[i]);\r\n \t\t\t\t\t\t}\r\n -\t\t\t\t\t\tgrp.sortitems[i] = [];\r\n -\t\t\t\t\t\tgrp.sortnames[i] = [];\r\n -\t\t\t\t\t\tgrp.summaryval[i] = [];\r\n -\t\t\t\t\t\tif(grp.groupSummary[i]) {\r\n -\t\t\t\t\t\t\tgrp.summary[i] =[];\r\n -\t\t\t\t\t\t\tvar cm = $t.p.colModel;\r\n -\t\t\t\t\t\t\tfor(var j=0, cml = cm.length; j < cml; j++) {\r\n -\t\t\t\t\t\t\t\tif(cm[j].summaryType) {\r\n -\t\t\t\t\t\t\t\t\tgrp.summary[i].push({nm:cm[j].name,st:cm[j].summaryType, v:\'\'});\r\n -\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tgrp.summary =[];\r\n +\t\t\t\t\tvar cm = $t.p.colModel;\r\n +\t\t\t\t\tfor(var j=0, cml = cm.length; j < cml; j++) {\r\n +\t\t\t\t\t\tif(cm[j].summaryType) {\r\n +\t\t\t\t\t\t\tgrp.summary.push({nm:cm[j].name,st:cm[j].summaryType, v: \'\', sr: cm[j].summaryRound, srt: cm[j].summaryRoundType || \'round\'});\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n -\t\t\t\t\t$t.p.scroll = false;\r\n -\t\t\t\t\t$t.p.rownumbers = false;\r\n -\t\t\t\t\t$t.p.subGrid = false;\r\n -\t\t\t\t\t$t.p.treeGrid = false;\r\n -\t\t\t\t\t$t.p.gridview = true;\r\n \t\t\t\t}\r\n \t\t\t} else {\r\n \t\t\t\t$t.p.grouping = false;\r\n \t\t\t}\r\n \t\t});\r\n \t},\r\n -\tgroupingPrepare : function (rData, items, gdata, record) {\r\n +\tgroupingPrepare : function (rData, gdata, record, irow) {\r\n \t\tthis.each(function(){\r\n -\t\t\t// currently only one level\r\n -\t\t\t// Is this a good idea to do it so!!!!?????\r\n -\t\t\titems[0] += "";\r\n -\t\t\tvar itm = items[0].toString().split(\' \').join(\'\');\r\n -\t\t\t\r\n \t\t\tvar grp = this.p.groupingView, $t= this;\r\n -\t\t\tif(gdata.hasOwnProperty(itm)) {\r\n -\t\t\t\tgdata[itm].push(rData);\r\n -\t\t\t} else {\r\n -\t\t\t\tgdata[itm] = [];\r\n -\t\t\t\tgdata[itm].push(rData);\r\n -\t\t\t\tgrp.sortitems[0].push(itm);\r\n -\t\t\t\tgrp.sortnames[0].push($.trim(items[0].toString()));\r\n -\t\t\t\tgrp.summaryval[0][itm] = $.extend(true,[],grp.summary[0]);\r\n -\t\t\t}\r\n -\t\t\tif(grp.groupSummary[0]) {\r\n -\t\t\t\t$.each(grp.summaryval[0][itm],function() {\r\n -\t\t\t\t\tif ($.isFunction(this.st)) {\r\n -\t\t\t\t\t\tthis.v = this.st.call($t, this.v, this.nm, record);\r\n +\t\t\tvar grlen = grp.groupField.length, \r\n +\t\t\tfieldName,\r\n +\t\t\tv,\r\n +\t\t\tchanged = 0;\r\n +\t\t\tfor(var i=0;i<grlen;i++) {\r\n +\t\t\t\tfieldName = grp.groupField[i];\r\n +\t\t\t\tv = record[fieldName];\r\n +\t\t\t\tif( v !== undefined ) {\r\n +\t\t\t\t\tif(irow === 0 ) {\r\n +\t\t\t\t\t\t// First record always starts a new group\r\n +\t\t\t\t\t\tgrp.groups.push({idx:i,dataIndex:fieldName,value:v, startRow: irow, cnt:1, summary : [] } );\r\n +\t\t\t\t\t\tgrp.lastvalues[i] = v;\r\n +\t\t\t\t\t\tgrp.counters[i] = {cnt:1, pos:grp.groups.length-1, summary: $.extend(true,[],grp.summary)};\r\n +\t\t\t\t\t\t$.each(grp.counters[i].summary,function() {\r\n +\t\t\t\t\t\t\tif ($.isFunction(this.st)) {\r\n +\t\t\t\t\t\t\t\tthis.v = this.st.call($t, this.v, this.nm, record);\r\n +\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\tthis.v = $($t).jqGrid(\'groupingCalculations.handler\',this.st, this.v, this.nm, this.sr, this.srt, record);\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t});\r\n +\t\t\t\t\t\tgrp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;\r\n \t\t\t\t\t} else {\r\n -\t\t\t\t\t\tthis.v = $($t).jqGrid(\'groupingCalculations.\'+this.st, this.v, this.nm, record);\r\n +\t\t\t\t\t\tif( (typeof(v) !== "object" && (grp.lastvalues[i] !== v) ) ) {\r\n +\t\t\t\t\t\t\t// This record is not in same group as previous one\r\n +\t\t\t\t\t\t\tgrp.groups.push({idx:i,dataIndex:fieldName,value:v, startRow: irow, cnt:1, summary : [] } );\r\n +\t\t\t\t\t\t\tgrp.lastvalues[i] = v;\r\n +\t\t\t\t\t\t\tchanged = 1;\r\n +\t\t\t\t\t\t\tgrp.counters[i] = {cnt:1, pos:grp.groups.length-1, summary: $.extend(true,[],grp.summary)};\r\n +\t\t\t\t\t\t\t$.each(grp.counters[i].summary,function() {\r\n +\t\t\t\t\t\t\t\tif ($.isFunction(this.st)) {\r\n +\t\t\t\t\t\t\t\t\tthis.v = this.st.call($t, this.v, this.nm, record);\r\n +\t\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t\tthis.v = $($t).jqGrid(\'groupingCalculations.handler\',this.st, this.v, this.nm, this.sr, this.srt, record);\r\n +\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t});\r\n +\t\t\t\t\t\t\tgrp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;\r\n +\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\tif (changed === 1) {\r\n +\t\t\t\t\t\t\t\t// This group has changed because an earlier group changed.\r\n +\t\t\t\t\t\t\t\tgrp.groups.push({idx:i,dataIndex:fieldName,value:v, startRow: irow, cnt:1, summary : [] } );\r\n +\t\t\t\t\t\t\t\tgrp.lastvalues[i] = v;\r\n +\t\t\t\t\t\t\t\tgrp.counters[i] = {cnt:1, pos:grp.groups.length-1, summary: $.extend(true,[],grp.summary)};\r\n +\t\t\t\t\t\t\t\t$.each(grp.counters[i].summary,function() {\r\n +\t\t\t\t\t\t\t\t\tif ($.isFunction(this.st)) {\r\n +\t\t\t\t\t\t\t\t\t\tthis.v = this.st.call($t, this.v, this.nm, record);\r\n +\t\t\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t\t\tthis.v = $($t).jqGrid(\'groupingCalculations.handler\',this.st, this.v, this.nm, this.sr, this.srt, record);\r\n +\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t});\r\n +\t\t\t\t\t\t\t\tgrp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;\r\n +\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\tgrp.counters[i].cnt += 1;\r\n +\t\t\t\t\t\t\t\tgrp.groups[grp.counters[i].pos].cnt = grp.counters[i].cnt;\r\n +\t\t\t\t\t\t\t\t$.each(grp.counters[i].summary,function() {\r\n +\t\t\t\t\t\t\t\t\tif ($.isFunction(this.st)) {\r\n +\t\t\t\t\t\t\t\t\t\tthis.v = this.st.call($t, this.v, this.nm, record);\r\n +\t\t\t\t\t\t\t\t\t} else {\r\n +\t\t\t\t\t\t\t\t\t\tthis.v = $($t).jqGrid(\'groupingCalculations.handler\',this.st, this.v, this.nm, this.sr, this.srt, record);\r\n +\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t});\r\n +\t\t\t\t\t\t\t\tgrp.groups[grp.counters[i].pos].summary = grp.counters[i].summary;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n -\t\t\t\t});\r\n +\t\t\t\t}\r\n \t\t\t}\r\n +\t\t\tgdata.push( rData );\r\n \t\t});\r\n \t\treturn gdata;\r\n \t},\r\n @@ -10958,20 +11312,27 @@ $.jgrid.extend({\r\n \t\tthis.each(function(){\r\n \t\t\tvar $t = this,\r\n \t\t\tgrp = $t.p.groupingView,\r\n -\t\t\tstrpos = hid.lastIndexOf(\'_\'),\r\n -\t\t\tuid = hid.substring(0,strpos+1),\r\n -\t\t\tnum = parseInt(hid.substring(strpos+1),10)+1,\r\n +\t\t\tstrpos = hid.split(\'_\'),\r\n +\t\t\t//uid = hid.substring(0,strpos+1),\r\n +\t\t\tnum = parseInt(strpos[strpos.length-2], 10);\r\n +\t\t\tstrpos.splice(strpos.length-2,2);\r\n +\t\t\tvar uid = strpos.join("_"),\r\n \t\t\tminus = grp.minusicon,\r\n \t\t\tplus = grp.plusicon,\r\n -\t\t\ttar = $("#"+hid),\r\n +\t\t\ttar = $("#"+$.jgrid.jqID(hid)),\r\n \t\t\tr = tar.length ? tar[0].nextSibling : null,\r\n -\t\t\ttarspan = $("#"+hid+" span."+"tree-wrap-"+$t.p.direction),\r\n -\t\t\tcollapsed = false;\r\n +\t\t\ttarspan = $("#"+$.jgrid.jqID(hid)+" span."+"tree-wrap-"+$t.p.direction),\r\n +\t\t\tcollapsed = false, tspan;\r\n \t\t\tif( tarspan.hasClass(minus) ) {\r\n -\t\t\t\tif(grp.showSummaryOnHide && grp.groupSummary[0]) {\r\n +\t\t\t\tif(grp.showSummaryOnHide) {\r\n \t\t\t\t\tif(r){\r\n \t\t\t\t\t\twhile(r) {\r\n -\t\t\t\t\t\t\tif($(r).hasClass(\'jqfoot\') ) { break; }\r\n +\t\t\t\t\t\t\tif($(r).hasClass(\'jqfoot\') ) {\r\n +\t\t\t\t\t\t\t\tvar lv = parseInt($(r).attr("jqfootlevel"),10);\r\n +\t\t\t\t\t\t\t\tif( lv <= num) {\r\n +\t\t\t\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t$(r).hide();\r\n \t\t\t\t\t\t\tr = r.nextSibling;\r\n \t\t\t\t\t\t}\r\n @@ -10979,10 +11340,10 @@ $.jgrid.extend({\r\n \t\t\t\t} else {\r\n \t\t\t\t\tif(r){\r\n \t\t\t\t\t\twhile(r) {\r\n -\t\t\t\t\t\t\tif($(r).attr(\'id\') ==uid+String(num) ) { break; }\r\n +\t\t\t\t\t\t\tif( $(r).hasClass(uid+"_"+String(num) ) || $(r).hasClass(uid+"_"+String(num-1))) { break; }\r\n \t\t\t\t\t\t\t$(r).hide();\r\n \t\t\t\t\t\t\tr = r.nextSibling;\r\n -\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\ttarspan.removeClass(minus).addClass(plus);\r\n @@ -10990,13 +11351,18 @@ $.jgrid.extend({\r\n \t\t\t} else {\r\n \t\t\t\tif(r){\r\n \t\t\t\t\twhile(r) {\r\n -\t\t\t\t\t\tif($(r).attr(\'id\') ==uid+String(num) ) { break; }\r\n +\t\t\t\t\t\tif($(r).hasClass(uid+"_"+String(num)) || $(r).hasClass(uid+"_"+String(num-1)) ) { break; }\r\n \t\t\t\t\t\t$(r).show();\r\n +\t\t\t\t\t\ttspan = $(r).find("span."+"tree-wrap-"+$t.p.direction);\r\n +\t\t\t\t\t\tif( tspan && $(tspan).hasClass(plus) ) {\r\n +\t\t\t\t\t\t\t$(tspan).removeClass(plus).addClass(minus);\r\n +\t\t\t\t\t\t}\r\n \t\t\t\t\t\tr = r.nextSibling;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\ttarspan.removeClass(plus).addClass(minus);\r\n \t\t\t}\r\n +\t\t\t$($t).triggerHandler("jqGridGroupingClickGroup", [hid , collapsed]);\r\n \t\t\tif( $.isFunction($t.p.onClickGroup)) { $t.p.onClickGroup.call($t, hid , collapsed); }\r\n \r\n \t\t});\r\n @@ -11006,76 +11372,100 @@ $.jgrid.extend({\r\n \t\treturn this.each(function(){\r\n \t\t\tvar $t = this,\r\n \t\t\tgrp = $t.p.groupingView,\r\n -\t\t\tstr = "", icon = "", hid, pmrtl = grp.groupCollapse ? grp.plusicon : grp.minusicon, gv, cp, ii;\r\n -\t\t\t//only one level for now\r\n -\t\t\tif(!grp.groupDataSorted) {\r\n -\t\t\t\t// ???? TO BE IMPROVED\r\n -\t\t\t\tgrp.sortitems[0].sort();\r\n -\t\t\t\tgrp.sortnames[0].sort();\r\n -\t\t\t\tif(grp.groupOrder[0].toLowerCase() == \'desc\')\r\n -\t\t\t\t{\r\n -\t\t\t\t\tgrp.sortitems[0].reverse();\r\n -\t\t\t\t\tgrp.sortnames[0].reverse();\r\n -\t\t\t\t}\r\n -\t\t\t} \r\n +\t\t\tstr = "", icon = "", hid, clid, pmrtl = grp.groupCollapse ? grp.plusicon : grp.minusicon, gv, cp=[], ii, len =grp.groupField.length;\r\n \t\t\tpmrtl += " tree-wrap-"+$t.p.direction; \r\n \t\t\tii = 0;\r\n -\t\t\twhile(ii < colspans) {\r\n -\t\t\t\tif($t.p.colModel[ii].name == grp.groupField[0]) {\r\n -\t\t\t\t\tcp = ii;\r\n -\t\t\t\t\tbreak;\r\n +\t\t\t$.each($t.p.colModel, function (i,n){\r\n +\t\t\t\tfor(var ii=0;ii<len;ii++) {\r\n +\t\t\t\t\tif(grp.groupField[ii] === n.name ) {\r\n +\t\t\t\t\t\tcp[ii] = i;\r\n +\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t});\r\n +\t\t\tvar toEnd = 0;\r\n +\t\t\tfunction findGroupIdx( ind , offset, grp) {\r\n +\t\t\t\tif(offset===0) {\r\n +\t\t\t\t\treturn grp[ind];\r\n +\t\t\t\t} else {\r\n +\t\t\t\t\tvar id = grp[ind].idx;\r\n +\t\t\t\t\tif(id===0) { return grp[ind]; }\r\n +\t\t\t\t\tfor(var i=ind;i >= 0; i--) {\r\n +\t\t\t\t\t\tif(grp[i].idx === id-offset) {\r\n +\t\t\t\t\t\t\treturn grp[i];\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t}\r\n \t\t\t\t}\r\n -\t\t\t\tii++;\r\n \t\t\t}\r\n -\t\t\t$.each(grp.sortitems[0],function(i,n){\r\n -\t\t\t\thid = $t.p.id+"ghead_"+i;\r\n -\t\t\t\ticon = "<span style=\'cursor:pointer;\' class=\'ui-icon "+pmrtl+"\' onclick=\\"jQuery(\'#"+$t.p.id+"\').jqGrid(\'groupingToggle\',\'"+hid+"\');return false;\\"></span>";\r\n +\t\t\tvar sumreverse = $.makeArray(grp.groupSummary);\r\n +\t\t\tsumreverse.reverse();\r\n +\t\t\t$.each(grp.groups,function(i,n){\r\n +\t\t\t\ttoEnd++;\r\n +\t\t\t\tclid = $t.p.id+"ghead_"+n.idx;\r\n +\t\t\t\thid = clid+"_"+i;\r\n +\t\t\t\ticon = "<span style=\'cursor:pointer;\' class=\'ui-icon "+pmrtl+"\' onclick=\\"jQuery(\'#"+$.jgrid.jqID($t.p.id)+"\').jqGrid(\'groupingToggle\',\'"+hid+"\');return false;\\"></span>";\r\n \t\t\t\ttry {\r\n -\t\t\t\t\tgv = $t.formatter(hid, grp.sortnames[0][i], cp, grp.sortitems[0] );\r\n +\t\t\t\t\tgv = $t.formatter(hid, n.value, cp[n.idx], n.value );\r\n \t\t\t\t} catch (egv) {\r\n -\t\t\t\t\tgv = grp.sortnames[0][i];\r\n -\t\t\t\t}\r\n -\t\t\t\tstr += "<tr id=\\""+hid+"\\" role=\\"row\\" class= \\"ui-widget-content jqgroup ui-row-"+$t.p.direction+"\\"><td colspan=\\""+colspans+"\\">"+icon+$.jgrid.format(grp.groupText[0], gv, grdata[n].length)+"</td></tr>";\r\n -\t\t\t\tfor(var kk=0;kk<grdata[n].length;kk++) {\r\n -\t\t\t\t\tstr += grdata[n][kk].join(\'\');\r\n -\t\t\t\t}\r\n -\t\t\t\tif(grp.groupSummary[0]) {\r\n -\t\t\t\t\tvar hhdr = "";\r\n -\t\t\t\t\tif(grp.groupCollapse && !grp.showSummaryOnHide) {\r\n -\t\t\t\t\t\thhdr = " style=\\"display:none;\\"";\r\n -\t\t\t\t\t}\r\n -\t\t\t\t\tstr += "<tr"+hhdr+" role=\\"row\\" class=\\"ui-widget-content jqfoot ui-row-"+$t.p.direction+"\\">";\r\n -\t\t\t\t\tvar fdata = grp.summaryval[0][n],\r\n -\t\t\t\t\tcm = $t.p.colModel,\r\n -\t\t\t\t\tvv, grlen = grdata[n].length;\r\n -\t\t\t\t\tfor(var k=0; k<colspans;k++) {\r\n -\t\t\t\t\t\tvar tmpdata = "<td "+$t.formatCol(k,1,\'\')+"> </td>",\r\n -\t\t\t\t\t\ttplfld = "{0}";\r\n -\t\t\t\t\t\t$.each(fdata,function(){\r\n -\t\t\t\t\t\t\tif(this.nm == cm[k].name) {\r\n -\t\t\t\t\t\t\t\tif(cm[k].summaryTpl) {\r\n -\t\t\t\t\t\t\t\t\ttplfld = cm[k].summaryTpl;\r\n -\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\tif(this.st == \'avg\') {\r\n -\t\t\t\t\t\t\t\t\tif(this.v && grlen > 0) {\r\n -\t\t\t\t\t\t\t\t\t\tthis.v = (this.v/grlen);\r\n +\t\t\t\t\tgv = n.value;\r\n +\t\t\t\t}\r\n +\t\t\t\tstr += "<tr id=\\""+hid+"\\" role=\\"row\\" class= \\"ui-widget-content jqgroup ui-row-"+$t.p.direction+" "+clid+"\\"><td style=\\"padding-left:"+(n.idx * 12) + "px;"+"\\" colspan=\\""+colspans+"\\">"+icon+$.jgrid.template(grp.groupText[n.idx], gv, n.cnt, n.summary)+"</td></tr>";\r\n +\t\t\t\tvar leaf = len-1 === n.idx; \r\n +\t\t\t\tif( leaf ) {\r\n +\t\t\t\t\tvar gg = grp.groups[i+1];\r\n +\t\t\t\t\tvar end = gg !== undefined ? grp.groups[i+1].startRow : grdata.length;\r\n +\t\t\t\t\tfor(var kk=n.startRow;kk<end;kk++) {\r\n +\t\t\t\t\t\tstr += grdata[kk].join(\'\');\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tvar jj;\r\n +\t\t\t\t\tif (gg !== undefined) {\r\n +\t\t\t\t\t\tfor (jj = 0; jj < grp.groupField.length; jj++) {\r\n +\t\t\t\t\t\t\tif (gg.dataIndex === grp.groupField[jj]) {\r\n +\t\t\t\t\t\t\t\tbreak;\r\n +\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\ttoEnd = grp.groupField.length - jj;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\tfor (var ik = 0; ik < toEnd; ik++) {\r\n +\t\t\t\t\t\tif(!sumreverse[ik]) { continue; }\r\n +\t\t\t\t\t\tvar hhdr = "";\r\n +\t\t\t\t\t\tif(grp.groupCollapse && !grp.showSummaryOnHide) {\r\n +\t\t\t\t\t\t\thhdr = " style=\\"display:none;\\"";\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\tstr += "<tr"+hhdr+" jqfootlevel=\\""+(n.idx-ik)+"\\" role=\\"row\\" class=\\"ui-widget-content jqfoot ui-row-"+$t.p.direction+"\\">";\r\n +\t\t\t\t\t\tvar fdata = findGroupIdx(i, ik, grp.groups),\r\n +\t\t\t\t\t\tcm = $t.p.colModel,\r\n +\t\t\t\t\t\tvv, grlen = fdata.cnt;\r\n +\t\t\t\t\t\tfor(var k=0; k<colspans;k++) {\r\n +\t\t\t\t\t\t\tvar tmpdata = "<td "+$t.formatCol(k,1,\'\')+"> </td>",\r\n +\t\t\t\t\t\t\ttplfld = "{0}";\r\n +\t\t\t\t\t\t\t$.each(fdata.summary,function(){\r\n +\t\t\t\t\t\t\t\tif(this.nm === cm[k].name) {\r\n +\t\t\t\t\t\t\t\t\tif(cm[k].summaryTpl) {\r\n +\t\t\t\t\t\t\t\t\t\ttplfld = cm[k].summaryTpl;\r\n \t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t\tif(typeof(this.st) === \'string\' && this.st.toLowerCase() === \'avg\') {\r\n +\t\t\t\t\t\t\t\t\t\tif(this.v && grlen > 0) {\r\n +\t\t\t\t\t\t\t\t\t\t\tthis.v = (this.v/grlen);\r\n +\t\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t\ttry {\r\n +\t\t\t\t\t\t\t\t\t\tvv = $t.formatter(\'\', this.v, k, this);\r\n +\t\t\t\t\t\t\t\t\t} catch (ef) {\r\n +\t\t\t\t\t\t\t\t\t\tvv = this.v;\r\n +\t\t\t\t\t\t\t\t\t}\r\n +\t\t\t\t\t\t\t\t\ttmpdata= "<td "+$t.formatCol(k,1,\'\')+">"+$.jgrid.format(tplfld,vv)+ "</td>";\r\n +\t\t\t\t\t\t\t\t\treturn false;\r\n \t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\ttry {\r\n -\t\t\t\t\t\t\t\t\tvv = $t.formatter(\'\', this.v, k, this);\r\n -\t\t\t\t\t\t\t\t} catch (ef) {\r\n -\t\t\t\t\t\t\t\t\tvv = this.v;\r\n -\t\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t\t\ttmpdata= "<td "+$t.formatCol(k,1,\'\')+">"+$.jgrid.format(tplfld,vv)+ "</td>";\r\n -\t\t\t\t\t\t\t\treturn false;\r\n -\t\t\t\t\t\t\t}\r\n -\t\t\t\t\t\t});\r\n -\t\t\t\t\t\tstr += tmpdata;\r\n +\t\t\t\t\t\t\t});\r\n +\t\t\t\t\t\t\tstr += tmpdata;\r\n +\t\t\t\t\t\t}\r\n +\t\t\t\t\t\tstr += "</tr>";\r\n \t\t\t\t\t}\r\n -\t\t\t\t\tstr += "</tr>";\r\n +\t\t\t\t\ttoEnd = jj;\r\n \t\t\t\t}\r\n \t\t\t});\r\n -\t\t\t$("#"+$t.p.id+" tbody:first").append(str);\r\n +\t\t\t$("#"+$.jgrid.jqID($t.p.id)+" tbody:first").append(str);\r\n \t\t\t// free up memory\r\n \t\t\tstr = null;\r\n \t\t});\r\n @@ -11083,14 +11473,14 @@ $.jgrid.extend({\r\n \tgroupingGroupBy : function (name, options ) {\r\n \t\treturn this.each(function(){\r\n \t\t\tvar $t = this;\r\n -\t\t\tif(typeof(name) == "string") {\r\n +\t\t\tif(typeof(name) === "string") {\r\n \t\t\t\tname = [name];\r\n \t\t\t}\r\n \t\t\tvar grp = $t.p.groupingView;\r\n \t\t\t$t.p.grouping = true;\r\n \r\n \t\t\t//Set default, in case visibilityOnNextGrouping is undefined \r\n -\t\t\tif (typeof grp.visibiltyOnNextGrouping == "undefined") {\r\n +\t\t\tif (typeof grp.visibiltyOnNextGrouping === "undefined") {\r\n \t\t\t\tgrp.visibiltyOnNextGrouping = [];\r\n \t\t\t}\r\n \t\t\tvar i;\r\n @@ -11102,7 +11492,7 @@ $.jgrid.extend({\r\n \t\t\t}\r\n \t\t\t// set visibility status of current group columns on next grouping\r\n \t\t\tfor(i=0;i<name.length;i++) {\r\n -\t\t\t\tgrp.visibiltyOnNextGrouping[i] = $("#"+$t.p.id+"_"+name[i]).is(":visible");\r\n +\t\t\t\tgrp.visibiltyOnNextGrouping[i] = $("#"+$.jgrid.jqID($t.p.id)+"_"+$.jgrid.jqID(name[i])).is(":visible");\r\n \t\t\t}\r\n \t\t\t$t.p.groupingView = $.extend($t.p.groupingView, options || {});\r\n \t\t\tgrp.groupField = name;\r\n @@ -11112,53 +11502,79 @@ $.jgrid.extend({\r\n \tgroupingRemove : function (current) {\r\n \t\treturn this.each(function(){\r\n \t\t\tvar $t = this;\r\n -\t\t\tif(typeof(current) == \'undefined\') {\r\n +\t\t\tif(typeof(current) === \'undefined\') {\r\n \t\t\t\tcurrent = true;\r\n \t\t\t}\r\n \t\t\t$t.p.grouping = false;\r\n \t\t\tif(current===true) {\r\n - var grp = $t.p.groupingView;\r\n - // show previous hidden groups if they are hidden and weren\'t removed yet\r\n - for(var i=0;i<grp.groupField.length;i++) {\r\n - if (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {\r\n - $($t).jqGrid(\'showCol\', grp.groupField);\r\n - }\r\n - }\r\n -\t\t\t\t$("tr.jqgroup, tr.jqfoot","#"+$t.p.id+" tbody:first").remove();\r\n -\t\t\t\t$("tr.jqgrow:hidden","#"+$t.p.id+" tbody:first").show();\r\n +\t\t\t\tvar grp = $t.p.groupingView;\r\n +\t\t\t\t// show previous hidden groups if they are hidden and weren\'t removed yet\r\n +\t\t\t\tfor(var i=0;i<grp.groupField.length;i++) {\r\n +\t\t\t\tif (!grp.groupColumnShow[i] && grp.visibiltyOnNextGrouping[i]) {\r\n +\t\t\t\t\t\t$($t).jqGrid(\'showCol\', grp.groupField);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t}\r\n +\t\t\t\t$("tr.jqgroup, tr.jqfoot","#"+$.jgrid.jqID($t.p.id)+" tbody:first").remove();\r\n +\t\t\t\t$("tr.jqgrow:hidden","#"+$.jgrid.jqID($t.p.id)+" tbody:first").show();\r\n \t\t\t} else {\r\n \t\t\t\t$($t).trigger("reloadGrid");\r\n \t\t\t}\r\n \t\t});\r\n \t},\r\n \tgroupingCalculations : {\r\n -\t\t"sum" : function(v, field, rc) {\r\n -\t\t\treturn parseFloat(v||0) + parseFloat((rc[field]||0));\r\n -\t\t},\r\n -\t\t"min" : function(v, field, rc) {\r\n -\t\t\tif(v==="") {\r\n -\t\t\t\treturn parseFloat(rc[field]||0);\r\n +\t\thandler: function(fn, v, field, round, roundType, rc) {\r\n +\t\t\tvar funcs = {\r\n +\t\t\t\tsum: function() {\r\n +\t\t\t\t\treturn parseFloat(v||0) + parseFloat((rc[field]||0));\r\n +\t\t\t\t},\r\n +\r\n +\t\t\t\tmin: function() {\r\n +\t\t\t\t\tif(v==="") {\r\n +\t\t\t\t\t\treturn parseFloat(rc[field]||0);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\treturn Math.min(parseFloat(v),parseFloat(rc[field]||0));\r\n +\t\t\t\t},\r\n +\r\n +\t\t\t\tmax: function() {\r\n +\t\t\t\t\tif(v==="") {\r\n +\t\t\t\t\t\treturn parseFloat(rc[field]||0);\r\n +\t\t\t\t\t}\r\n +\t\t\t\t\treturn Math.max(parseFloat(v),parseFloat(rc[field]||0));\r\n +\t\t\t\t},\r\n +\r\n +\t\t\t\tcount: function() {\r\n +\t\t\t\t\tif(v==="") {v=0;}\r\n +\t\t\t\t\tif(rc.hasOwnProperty(field)) {\r\n +\t\t\t\t\t\treturn v+1;\r\n +\t\t\t\t\t} else {\r\n +\t\t\t\t\t\treturn 0;\r\n +\t\t\t\t\t}\r\n +\t\t\t\t},\r\n +\r\n +\t\t\t\tavg: function() {\r\n +\t\t\t\t\t// the same as sum, but at end we divide it\r\n +\t\t\t\t\t// so use sum instead of duplicating the code (?)\r\n +\t\t\t\t\treturn funcs.sum();\r\n +\t\t\t\t}\r\n \t\t\t}\r\n -\t\t\treturn Math.min(parseFloat(v),parseFloat(rc[field]||0));\r\n -\t\t},\r\n -\t\t"max" : function(v, field, rc) {\r\n -\t\t\tif(v==="") {\r\n -\t\t\t\treturn parseFloat(rc[field]||0);\r\n +\r\n +\t\t\tif(!funcs[fn]) {\r\n +\t\t\t\tthrow ("jqGrid Grouping No such method: " + fn);\r\n \t\t\t}\r\n -\t\t\treturn Math.max(parseFloat(v),parseFloat(rc[field]||0));\r\n -\t\t},\r\n -\t\t"count" : function(v, field, rc) {\r\n -\t\t\tif(v==="") {v=0;}\r\n -\t\t\tif(rc.hasOwnProperty(field)) {\r\n -\t\t\t\treturn v+1;\r\n -\t\t\t} else {\r\n -\t\t\t\treturn 0;\r\n +\t\t\tvar res = funcs[fn]();\r\n +\r\n +\t\t\tif (round != null) {\r\n +\t\t\t\tif (roundType == \'fixed\')\r\n +\t\t\t\t\tres = res.toFixed(round);\r\n +\t\t\t\telse {\r\n +\t\t\t\t\tvar mul = Math.pow(10, round);\r\n +\r\n +\t\t\t\t\tres = Math.round(res * mul) / mul;\r\n +\t\t\t\t}\r\n \t\t\t}\r\n -\t\t},\r\n -\t\t"avg" : function(v, field, rc) {\r\n -\t\t\t// the same as sum, but at end we divide it\r\n -\t\t\treturn parseFloat(v||0) + parseFloat((rc[field]||0));\r\n -\t\t}\r\n +\r\n +\t\t\treturn res;\r\n +\t\t}\t\r\n \t}\r\n });\r\n })(jQuery);\r\n @@ -11171,6 +11587,10 @@ $.jgrid.extend({\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl-2.0.html\r\n **/ \r\n +//jsHint options\r\n +/*global jQuery, $, alert, xmlJsonClass */\r\n +\r\n +"use strict";\r\n $.jgrid.extend({\r\n jqGridImport : function(o) {\r\n o = $.extend({\r\n @@ -11191,7 +11611,7 @@ $.jgrid.extend({\r\n }, o || {});\r\n return this.each(function(){\r\n var $t = this;\r\n - var XmlConvert = function (xml,o) {\r\n + var xmlConvert = function (xml,o) {\r\n var cnfg = $(o.xmlGrid.config,xml)[0];\r\n var xmldata = $(o.xmlGrid.data,xml)[0], jstr, jstr1;\r\n if(xmlJsonClass.xml2json && $.jgrid.parse) {\r\n @@ -11216,9 +11636,15 @@ $.jgrid.extend({\r\n alert("xml2json or parse are not present");\r\n }\r\n };\r\n - var JsonConvert = function (jsonstr,o){\r\n + var jsonConvert = function (jsonstr,o){\r\n if (jsonstr && typeof jsonstr == \'string\') {\r\n +\t\t\t\t\t\tvar _jsonparse = false;\r\n +\t\t\t\t\t\tif($.jgrid.useJSON) {\r\n +\t\t\t\t\t\t\t$.jgrid.useJSON = false;\r\n +\t\t\t\t\t\t\t_jsonparse = true;\r\n +\t\t\t\t\t\t}\r\n var json = $.jgrid.parse(jsonstr);\r\n +\t\t\t\t\t\tif(_jsonparse) { $.jgrid.useJSON = true; }\r\n var gprm = json[o.jsonGrid.config];\r\n var jdata = json[o.jsonGrid.data];\r\n if(jdata) {\r\n @@ -11240,7 +11666,8 @@ $.jgrid.extend({\r\n dataType:"xml",\r\n complete: function(xml,stat) {\r\n if(stat == \'success\') {\r\n - XmlConvert(xml.responseXML,o);\r\n + xmlConvert(xml.responseXML,o);\r\n + $($t).triggerHandler("jqGridImportComplete", [xml, o]);\r\n if($.isFunction(o.importComplete)) {\r\n o.importComplete(xml);\r\n }\r\n @@ -11254,7 +11681,8 @@ $.jgrid.extend({\r\n if(o.impstring && typeof o.impstring == \'string\') {\r\n var xmld = $.jgrid.stringToDoc(o.impstring);\r\n if(xmld) {\r\n - XmlConvert(xmld,o);\r\n + xmlConvert(xmld,o);\r\n + $($t).triggerHandler("jqGridImportComplete", [xmld, o]);\r\n if($.isFunction(o.importComplete)) {\r\n o.importComplete(xmld);\r\n }\r\n @@ -11269,20 +11697,22 @@ $.jgrid.extend({\r\n type:o.mtype,\r\n data: o.impData,\r\n dataType:"json",\r\n - complete: function(json,stat) {\r\n - if(stat == \'success\') {\r\n - JsonConvert(json.responseText,o );\r\n + complete: function(json) {\r\n + try {\r\n + jsonConvert(json.responseText,o );\r\n + $($t).triggerHandler("jqGridImportComplete", [json, o]);\r\n if($.isFunction(o.importComplete)) {\r\n o.importComplete(json);\r\n }\r\n - }\r\n + } catch (ee){}\r\n json=null;\r\n }\r\n }, o.ajaxOptions ));\r\n break;\r\n case \'jsonstring\' :\r\n if(o.impstring && typeof o.impstring == \'string\') {\r\n - JsonConvert(o.impstring,o );\r\n + jsonConvert(o.impstring,o );\r\n + $($t).triggerHandler("jqGridImportComplete", [o.impstring, o]);\r\n if($.isFunction(o.importComplete)) {\r\n o.importComplete(o.impstring);\r\n }\r\n @@ -11301,7 +11731,7 @@ $.jgrid.extend({\r\n var ret = null;\r\n this.each(function () {\r\n if(!this.grid) { return;}\r\n - var gprm = $.extend({},$(this).jqGrid("getGridParam"));\r\n + var gprm = $.extend(true, {},$(this).jqGrid("getGridParam"));\r\n // we need to check for:\r\n // 1.multiselect, 2.subgrid 3. treegrid and remove the unneded columns from colNames\r\n if(gprm.rownumbers) {\r\n @@ -11416,7 +11846,7 @@ $.jgrid.extend({\r\n \tsortableColumns : function (tblrow)\r\n \t{\r\n \t\treturn this.each(function (){\r\n -\t\t\tvar ts = this, tid= ts.p.id;\r\n +\t\t\tvar ts = this, tid= $.jgrid.jqID( ts.p.id );\r\n \t\t\tfunction start() {ts.p.disableClick = true;}\r\n \t\t\tvar sortable_opts = {\r\n \t\t\t\t"tolerance" : "pointer",\r\n @@ -11442,7 +11872,7 @@ $.jgrid.extend({\r\n \t\t\t\t\tcmMap = {}, tid= ts.p.id+"_";\r\n \t\t\t\t\t$.each(colModel, function(i) { cmMap[this.name]=i; });\r\n \t\t\t\t\tvar permutation = [];\r\n -\t\t\t\t\tth.each(function(i) {\r\n +\t\t\t\t\tth.each(function() {\r\n \t\t\t\t\t\tvar id = $(">div", this).get(0).id.replace(/^jqgh_/, "").replace(tid,"");\r\n \t\t\t\t\t\t\tif (id in cmMap) {\r\n \t\t\t\t\t\t\t\tpermutation.push(cmMap[id]);\r\n @@ -11478,7 +11908,7 @@ $.jgrid.extend({\r\n \t},\r\n columnChooser : function(opts) {\r\n var self = this;\r\n -\t\tif($("#colchooser_"+self[0].p.id).length ) { return; }\r\n +\t\tif($("#colchooser_"+$.jgrid.jqID(self[0].p.id)).length ) { return; }\r\n var selector = $(\'<div id="colchooser_\'+self[0].p.id+\'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>\');\r\n var select = $(\'select\', selector);\r\n \t\t\r\n @@ -11511,7 +11941,9 @@ $.jgrid.extend({\r\n "destroy")\r\n */\r\n "dlog" : "dialog",\r\n -\r\n +\t\t\t"dialog_opts" : {\r\n +\t\t\t\t"minWidth": 470\r\n +\t\t\t},\r\n /* dlog_opts is either an option object to be passed \r\n to "dlog", or (more likely) a function that creates\r\n the options object.\r\n @@ -11526,7 +11958,7 @@ $.jgrid.extend({\r\n buttons[opts.bCancel] = function() {\r\n opts.cleanup(true);\r\n };\r\n - return {\r\n + return $.extend(true, {\r\n "buttons": buttons,\r\n "close": function() {\r\n opts.cleanup(true);\r\n @@ -11534,12 +11966,12 @@ $.jgrid.extend({\r\n \t\t\t\t\t"modal" : opts.modal ? opts.modal : false,\r\n \t\t\t\t\t"resizable": opts.resizable ? opts.resizable : true,\r\n "width": opts.width+20\r\n - };\r\n + }, opts.dialog_opts || {});\r\n },\r\n /* Function to get the permutation array, and pass it to the\r\n "done" function */\r\n "apply_perm" : function() {\r\n - $(\'option\',select).each(function(i) {\r\n + $(\'option\',select).each(function() {\r\n if (this.selected) {\r\n self.jqGrid("showCol", colModel[this.value].name);\r\n } else {\r\n @@ -11614,7 +12046,7 @@ $.jgrid.extend({\r\n }\r\n \r\n select.append("<option value=\'"+i+"\' "+\r\n - (this.hidden?"":"selected=\'selected\'")+">"+colNames[i]+"</option>");\r\n + (this.hidden?"":"selected=\'selected\'")+">"+jQuery.jgrid.stripHtml(colNames[i])+"</option>");\r\n });\r\n function call(fn, obj) {\r\n if (!fn) { return; }\r\n @@ -11698,7 +12130,7 @@ $.jgrid.extend({\r\n \t\t $("tr.jqgrow:not(.ui-draggable)",$t).draggable($.isFunction(datadnd.drag) ? datadnd.drag.call($($t),datadnd) : datadnd.drag);\r\n \t\t}\r\n \t\tvar appender = "<table id=\'jqgrid_dnd\' class=\'ui-jqgrid-dnd\'></table>";\r\n -\t\tif($("#jqgrid_dnd").html() === null) {\r\n +\t\tif($("#jqgrid_dnd")[0] === undefined) {\r\n \t\t\t$(\'body\').append(appender);\r\n \t\t}\r\n \r\n @@ -11734,6 +12166,7 @@ $.jgrid.extend({\r\n \t\t\t\t\tstop :function(ev,ui) {\r\n \t\t\t\t\t\tif(ui.helper.dropped && !opts.dragcopy) {\r\n \t\t\t\t\t\t\tvar ids = $(ui.helper).attr("id");\r\n +\t\t\t\t\t\t\tif(ids === undefined) { ids = $(this).attr("id"); }\r\n \t\t\t\t\t\t\t$($t).jqGrid(\'delRowData\',ids );\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\t// if we have a empty row inserted from start event try to delete it\r\n @@ -11751,7 +12184,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tvar tid = $(d).closest("table.ui-jqgrid-btable");\r\n \t\t\t\t\t\tif(tid.length > 0 && $.data(tid[0],"dnd") !== undefined) {\r\n \t\t\t\t\t\t var cn = $.data(tid[0],"dnd").connectWith;\r\n -\t\t\t\t\t\t return $.inArray(\'#\'+this.id,cn) != -1 ? true : false;\r\n +\t\t\t\t\t\t return $.inArray(\'#\'+$.jgrid.jqID(this.id),cn) != -1 ? true : false;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\treturn false;\r\n \t\t\t\t\t},\r\n @@ -11760,13 +12193,15 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tvar accept = $(ui.draggable).attr("id");\r\n \t\t\t\t\t\tvar getdata = ui.draggable.parent().parent().jqGrid(\'getRowData\',accept);\r\n \t\t\t\t\t\tif(!opts.dropbyname) {\r\n -\t\t\t\t\t\t\tvar j =0, tmpdata = {}, dropname;\r\n -\t\t\t\t\t\t\tvar dropmodel = $("#"+this.id).jqGrid(\'getGridParam\',\'colModel\');\r\n +\t\t\t\t\t\t\tvar j =0, tmpdata = {}, nm;\r\n +\t\t\t\t\t\t\tvar dropmodel = $("#"+$.jgrid.jqID(this.id)).jqGrid(\'getGridParam\',\'colModel\');\r\n \t\t\t\t\t\t\ttry {\r\n \t\t\t\t\t\t\t\tfor (var key in getdata) {\r\n -\t\t\t\t\t\t\t\t\tif(getdata.hasOwnProperty(key) && dropmodel[j]) {\r\n -\t\t\t\t\t\t\t\t\t\tdropname = dropmodel[j].name;\r\n -\t\t\t\t\t\t\t\t\t\ttmpdata[dropname] = getdata[key];\r\n +\t\t\t\t\t\t\t\t\tnm = dropmodel[j].name;\r\n +\t\t\t\t\t\t\t\t\tif( !(nm == \'cb\' || nm ==\'rn\' || nm == \'subgrid\' )) {\r\n +\t\t\t\t\t\t\t\t\t\tif(getdata.hasOwnProperty(key) && dropmodel[j]) {\r\n +\t\t\t\t\t\t\t\t\t\t\ttmpdata[nm] = getdata[key];\r\n +\t\t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t\t\tj++;\r\n \t\t\t\t\t\t\t\t}\r\n @@ -11777,7 +12212,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\tif(opts.beforedrop && $.isFunction(opts.beforedrop) ) {\r\n \t\t\t\t\t\t\t//parameters to this callback - event, element, data to be inserted, sender, reciever\r\n \t\t\t\t\t\t\t// should return object which will be inserted into the reciever\r\n -\t\t\t\t\t\t\tvar datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$(\'#\'+$t.id),$(this));\r\n +\t\t\t\t\t\t\tvar datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$(\'#\'+$.jgrid.jqID($t.p.id)),$(this));\r\n \t\t\t\t\t\t\tif (typeof datatoinsert != "undefined" && datatoinsert !== null && typeof datatoinsert == "object") { getdata = datatoinsert; }\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(ui.helper.dropped) {\r\n @@ -11791,7 +12226,7 @@ $.jgrid.extend({\r\n \t\t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\t// NULL is interpreted as undefined while null as object\r\n -\t\t\t\t\t\t\t$("#"+this.id).jqGrid(\'addRowData\',grid,getdata,opts.droppos);\r\n +\t\t\t\t\t\t\t$("#"+$.jgrid.jqID(this.id)).jqGrid(\'addRowData\',grid,getdata,opts.droppos);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tif(opts.ondrop && $.isFunction(opts.ondrop) ) { opts.ondrop.call(this,ev,ui, getdata); }\r\n \t\t\t\t\t}}, opts.drop_opts || {});\r\n @@ -11835,7 +12270,7 @@ $.jgrid.extend({\r\n \t},\r\n \tgridResize : function(opts) {\r\n \t\treturn this.each(function(){\r\n -\t\t\tvar $t = this;\r\n +\t\t\tvar $t = this, gID = $.jgrid.jqID($t.p.id);\r\n \t\t\tif(!$t.grid || !$.fn.resizable) { return; }\r\n \t\t\topts = $.extend({}, opts || {});\r\n \t\t\tif(opts.alsoResize ) {\r\n @@ -11851,18 +12286,18 @@ $.jgrid.extend({\r\n \t\t\t\topts._stop_ = false;\r\n \t\t\t}\r\n \t\t\topts.stop = function (ev, ui) {\r\n -\t\t\t\t$($t).jqGrid(\'setGridParam\',{height:$("#gview_"+$t.p.id+" .ui-jqgrid-bdiv").height()});\r\n +\t\t\t\t$($t).jqGrid(\'setGridParam\',{height:$("#gview_"+gID+" .ui-jqgrid-bdiv").height()});\r\n \t\t\t\t$($t).jqGrid(\'setGridWidth\',ui.size.width,opts.shrinkToFit);\r\n \t\t\t\tif(opts._stop_) { opts._stop_.call($t,ev,ui); }\r\n \t\t\t};\r\n \t\t\tif(opts._alsoResize_) {\r\n -\t\t\t\tvar optstest = "{\\\'#gview_"+$t.p.id+" .ui-jqgrid-bdiv\\\':true,\'" +opts._alsoResize_+"\':true}";\r\n +\t\t\t\tvar optstest = "{\\\'#gview_"+gID+" .ui-jqgrid-bdiv\\\':true,\'" +opts._alsoResize_+"\':true}";\r\n \t\t\t\topts.alsoResize = eval(\'(\'+optstest+\')\'); // the only way that I found to do this\r\n \t\t\t} else {\r\n -\t\t\t\topts.alsoResize = $(".ui-jqgrid-bdiv","#gview_"+$t.p.id);\r\n +\t\t\t\topts.alsoResize = $(".ui-jqgrid-bdiv","#gview_"+gID);\r\n \t\t\t}\r\n \t\t\tdelete opts._alsoResize_;\r\n -\t\t\t$("#gbox_"+$t.p.id).resizable(opts);\r\n +\t\t\t$("#gbox_"+gID).resizable(opts);\r\n \t\t});\r\n \t}\r\n });\r\n diff --git a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/ui.jqgrid.css.xml b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/ui.jqgrid.css.xml index f5c0e30f40580061bdf0fc066f1228a32ccb3c3e..0cfd40528576918d9ff742e2e77efa73dcc48134 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/ui.jqgrid.css.xml +++ b/bt5/erp5_jquery_plugin_jqgrid/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqgrid/ui.jqgrid.css.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts30690424.51</string> </value> + <value> <string>ts58176310.37</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -25,8 +25,8 @@ <item> <key> <string>data</string> </key> <value> <string>/*Grid*/\r\n -.ui-jqgrid {position: relative; font-size:11px;}\r\n -.ui-jqgrid .ui-jqgrid-view {position: relative;left:0px; top: 0px; padding: .0em;}\r\n +.ui-jqgrid {position: relative;}\r\n +.ui-jqgrid .ui-jqgrid-view {position: relative;left:0px; top: 0px; padding: .0em; font-size:11px;}\r\n /* caption*/\r\n .ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; border-left: 0px none;border-right: 0px none; border-top: 0px none;}\r\n .ui-jqgrid .ui-jqgrid-title { float: left; margin: .1em 0 .2em; }\r\n @@ -66,7 +66,7 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n .ui-jqgrid tr.ui-row-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;}\r\n .ui-jqgrid tr.ui-row-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;}\r\n .ui-jqgrid td.jqgrid-rownum { padding: 0 2px 0 2px; margin: 0px; border: 0px none;}\r\n -.ui-jqgrid .ui-jqgrid-resize-mark { width:2px; left:0; background-color:#777; cursor: e-resize; cursor: col-resize; position:absolute; top:0; height:100px; overflow:hidden; display:none;\tborder:0 none;}\r\n +.ui-jqgrid .ui-jqgrid-resize-mark { width:2px; left:0; background-color:#777; cursor: e-resize; cursor: col-resize; position:absolute; top:0; height:100px; overflow:hidden; display:none; border:0 none; z-index: 99999;}\r\n /* footer */\r\n .ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0em;padding: 0em; overflow: hidden; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;}\r\n .ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0em;}\r\n @@ -74,7 +74,7 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n .ui-jqgrid tr.footrow-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;}\r\n .ui-jqgrid tr.footrow-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;}\r\n /* Pager*/\r\n -.ui-jqgrid .ui-jqgrid-pager { border-left: 0px none !important;border-right: 0px none !important; border-bottom: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;}\r\n +.ui-jqgrid .ui-jqgrid-pager { border-left: 0px none !important;border-right: 0px none !important; border-bottom: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;font-size:11px;}\r\n .ui-jqgrid .ui-pager-control {position: relative;}\r\n .ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0em;}\r\n .ui-jqgrid .ui-pg-table td {font-weight:normal; vertical-align:middle; padding:1px;}\r\n @@ -86,12 +86,15 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n .ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0em;}\r\n .ui-jqgrid .ui-separator {height: 18px; border-left: 1px solid #ccc ; border-right: 1px solid #ccc ; margin: 1px; float: right;}\r\n .ui-jqgrid .ui-paging-info {font-weight: normal;height:19px; margin-top:3px;margin-right:4px;}\r\n -.ui-jqgrid .ui-jqgrid-pager .ui-pg-div {padding:1px 0;float:left;list-style-image:none;list-style-position:outside;list-style-type:none;position:relative;}\r\n +.ui-jqgrid .ui-jqgrid-pager .ui-pg-div {padding:1px 0;float:left;position:relative;}\r\n .ui-jqgrid .ui-jqgrid-pager .ui-pg-button { cursor:pointer; }\r\n .ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon {float:left;margin:0 2px;}\r\n .ui-jqgrid td input, .ui-jqgrid td select .ui-jqgrid td textarea { margin: 0em;}\r\n .ui-jqgrid td textarea {width:auto;height:auto;}\r\n .ui-jqgrid .ui-jqgrid-toppager {border-left: 0px none !important;border-right: 0px none !important; border-top: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;}\r\n +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div {padding:1px 0;float:left;position:relative;}\r\n +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button { cursor:pointer; }\r\n +.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div span.ui-icon {float:left;margin:0 2px;}\r\n /*subgrid*/\r\n .ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;}\r\n .ui-jqgrid .ui-subgrid {margin:0em;padding:0em; width:100%;}\r\n @@ -101,7 +104,7 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n .ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0px 0px 1px 0px;}\r\n .ui-jqgrid .ui-th-subgrid {height:20px;}\r\n /* loading */\r\n -.ui-jqgrid .loading {position: absolute; top: 45%;left: 45%;width: auto;z-index:101;padding: 6px; margin: 5px;text-align: center;font-weight: bold;display: none;border-width: 2px !important;}\r\n +.ui-jqgrid .loading {position: absolute; top: 45%;left: 45%;width: auto;z-index:101;padding: 6px; margin: 5px;text-align: center;font-weight: bold;display: none;border-width: 2px !important; font-size:11px;}\r\n .ui-jqgrid .jqgrid-overlay {display:none;z-index:100;}\r\n * html .jqgrid-overlay {width: expression(this.parentNode.offsetWidth+\'px\');height: expression(this.parentNode.offsetHeight+\'px\');}\r\n * .jqgrid-overlay iframe {position:absolute;top:0;left:0;z-index:-1;width: expression(this.parentNode.offsetWidth+\'px\');height: expression(this.parentNode.offsetHeight+\'px\');}\r\n @@ -130,7 +133,7 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n .ui-jqdialog-content input.FormElement {padding:.3em}\r\n .ui-jqdialog-content .data-line {padding-top:.1em;border: 0px none;}\r\n \r\n -.ui-jqdialog-content .CaptionTD {text-align: left; vertical-align: middle;border: 0px none; padding: 2px;white-space: nowrap;}\r\n +.ui-jqdialog-content .CaptionTD {vertical-align: middle;border: 0px none; padding: 2px;white-space: nowrap;}\r\n .ui-jqdialog-content .DataTD {padding: 2px; border: 0px none; vertical-align: top;}\r\n .ui-jqdialog-content .form-view-data {white-space:pre}\r\n .fm-button { display: inline-block; margin:0 4px 0 0; padding: .4em .5em; text-decoration:none !important; cursor:pointer; position: relative; text-align: center; zoom: 1; }\r\n @@ -142,6 +145,11 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n /* End Eorm edit */\r\n /*.ui-jqgrid .edit-cell {}*/\r\n .ui-jqgrid .selected-row, div.ui-jqgrid .selected-row td {font-style : normal;border-left: 0px none;}\r\n +/* inline edit actions button*/\r\n +.ui-inline-del.ui-state-hover span, .ui-inline-edit.ui-state-hover span,\r\n +.ui-inline-save.ui-state-hover span, .ui-inline-cancel.ui-state-hover span {\r\n + margin: -1px;\r\n +}\r\n /* Tree Grid */\r\n .ui-jqgrid .tree-wrap {float: left; position: relative;height: 18px;white-space: nowrap;overflow: hidden;}\r\n .ui-jqgrid .tree-minus {position: absolute; height: 18px; width: 18px; overflow: hidden;}\r\n @@ -159,7 +167,7 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n .ui-jqgrid .ui-sort-rtl {left:0px;}\r\n .ui-jqgrid .tree-wrap-ltr {float: left;}\r\n .ui-jqgrid .tree-wrap-rtl {float: right;}\r\n -.ui-jqgrid .ui-ellipsis {text-overflow:ellipsis; -moz-binding:url(\'ellipsis-xbl.xml#ellipsis\');}\r\n +.ui-jqgrid .ui-ellipsis {text-overflow:ellipsis;}\r\n </string> </value> </item> <item> @@ -168,7 +176,7 @@ tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n </item> <item> <key> <string>size</string> </key> - <value> <int>11841</int> </value> + <value> <int>12198</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_plugin_jqgrid/bt/description b/bt5/erp5_jquery_plugin_jqgrid/bt/description index e448e7c65db4a0a0db77a6ffc5d8f53e6a69eafb..479d0f77a04b78c24bae98d741beff9ba1f7ec6d 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/bt/description +++ b/bt5/erp5_jquery_plugin_jqgrid/bt/description @@ -1 +1,2 @@ -This Business Template contains only static files of JQuery's jqGrid Plugin. \ No newline at end of file +This Business Template contains only static files of JQuery's jqGrid Plugin 4.4.1. +* http://www.trirand.com/blog/ \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jqgrid/bt/license b/bt5/erp5_jquery_plugin_jqgrid/bt/license index 3a3e12bcad97e4b3bdd6a8bb499fd23a4bcb0819..e6816b9c6b675e710f6fada261827c20bde2fc18 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/bt/license +++ b/bt5/erp5_jquery_plugin_jqgrid/bt/license @@ -1 +1 @@ -GPL \ No newline at end of file +MIT/GPL \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jqgrid/bt/revision b/bt5/erp5_jquery_plugin_jqgrid/bt/revision index d8263ee9860594d2806b0dfd1bfd17528b0ba2a4..e440e5c842586965a7fb77deda2eca68612b1f53 100644 --- a/bt5/erp5_jquery_plugin_jqgrid/bt/revision +++ b/bt5/erp5_jquery_plugin_jqgrid/bt/revision @@ -1 +1 @@ -2 \ No newline at end of file +3 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json.xml b/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json.xml new file mode 100644 index 0000000000000000000000000000000000000000..0dee5fd32d9d18c284208f9a77bb059a16487566 --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>json</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json/jquery.json.js.xml b/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json/jquery.json.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..1b56ad60e437abe3e5206573e633f6da5a7e6624 --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json/jquery.json.js.xml @@ -0,0 +1,247 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58170054.11</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery.json.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/**\n + * jQuery JSON plugin 2.4.0\n + *\n + * @author Brantley Harris, 2009-2011\n + * @author Timo Tijhof, 2011-2012\n + * @source This plugin is heavily influenced by MochiKit\'s serializeJSON, which is\n + * copyrighted 2005 by Bob Ippolito.\n + * @source Brantley Harris wrote this plugin. It is based somewhat on the JSON.org\n + * website\'s http://www.json.org/json2.js, which proclaims:\n + * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that\n + * I uphold.\n + * @license MIT License <http://www.opensource.org/licenses/mit-license.php>\n + */\n +(function ($) {\n +\t\'use strict\';\n +\n +\tvar escape = /["\\\\\\x00-\\x1f\\x7f-\\x9f]/g,\n +\t\tmeta = {\n +\t\t\t\'\\b\': \'\\\\b\',\n +\t\t\t\'\\t\': \'\\\\t\',\n +\t\t\t\'\\n\': \'\\\\n\',\n +\t\t\t\'\\f\': \'\\\\f\',\n +\t\t\t\'\\r\': \'\\\\r\',\n +\t\t\t\'"\' : \'\\\\"\',\n +\t\t\t\'\\\\\': \'\\\\\\\\\'\n +\t\t},\n +\t\thasOwn = Object.prototype.hasOwnProperty;\n +\n +\t/**\n +\t * jQuery.toJSON\n +\t * Converts the given argument into a JSON representation.\n +\t *\n +\t * @param o {Mixed} The json-serializable *thing* to be converted\n +\t *\n +\t * If an object has a toJSON prototype, that will be used to get the representation.\n +\t * Non-integer/string keys are skipped in the object, as are keys that point to a\n +\t * function.\n +\t *\n +\t */\n +\t$.toJSON = typeof JSON === \'object\' && JSON.stringify ? JSON.stringify : function (o) {\n +\t\tif (o === null) {\n +\t\t\treturn \'null\';\n +\t\t}\n +\n +\t\tvar pairs, k, name, val,\n +\t\t\ttype = $.type(o);\n +\n +\t\tif (type === \'undefined\') {\n +\t\t\treturn undefined;\n +\t\t}\n +\n +\t\t// Also covers instantiated Number and Boolean objects,\n +\t\t// which are typeof \'object\' but thanks to $.type, we\n +\t\t// catch them here. I don\'t know whether it is right\n +\t\t// or wrong that instantiated primitives are not\n +\t\t// exported to JSON as an {"object":..}.\n +\t\t// We choose this path because that\'s what the browsers did.\n +\t\tif (type === \'number\' || type === \'boolean\') {\n +\t\t\treturn String(o);\n +\t\t}\n +\t\tif (type === \'string\') {\n +\t\t\treturn $.quoteString(o);\n +\t\t}\n +\t\tif (typeof o.toJSON === \'function\') {\n +\t\t\treturn $.toJSON(o.toJSON());\n +\t\t}\n +\t\tif (type === \'date\') {\n +\t\t\tvar month = o.getUTCMonth() + 1,\n +\t\t\t\tday = o.getUTCDate(),\n +\t\t\t\tyear = o.getUTCFullYear(),\n +\t\t\t\thours = o.getUTCHours(),\n +\t\t\t\tminutes = o.getUTCMinutes(),\n +\t\t\t\tseconds = o.getUTCSeconds(),\n +\t\t\t\tmilli = o.getUTCMilliseconds();\n +\n +\t\t\tif (month < 10) {\n +\t\t\t\tmonth = \'0\' + month;\n +\t\t\t}\n +\t\t\tif (day < 10) {\n +\t\t\t\tday = \'0\' + day;\n +\t\t\t}\n +\t\t\tif (hours < 10) {\n +\t\t\t\thours = \'0\' + hours;\n +\t\t\t}\n +\t\t\tif (minutes < 10) {\n +\t\t\t\tminutes = \'0\' + minutes;\n +\t\t\t}\n +\t\t\tif (seconds < 10) {\n +\t\t\t\tseconds = \'0\' + seconds;\n +\t\t\t}\n +\t\t\tif (milli < 100) {\n +\t\t\t\tmilli = \'0\' + milli;\n +\t\t\t}\n +\t\t\tif (milli < 10) {\n +\t\t\t\tmilli = \'0\' + milli;\n +\t\t\t}\n +\t\t\treturn \'"\' + year + \'-\' + month + \'-\' + day + \'T\' +\n +\t\t\t\thours + \':\' + minutes + \':\' + seconds +\n +\t\t\t\t\'.\' + milli + \'Z"\';\n +\t\t}\n +\n +\t\tpairs = [];\n +\n +\t\tif ($.isArray(o)) {\n +\t\t\tfor (k = 0; k < o.length; k++) {\n +\t\t\t\tpairs.push($.toJSON(o[k]) || \'null\');\n +\t\t\t}\n +\t\t\treturn \'[\' + pairs.join(\',\') + \']\';\n +\t\t}\n +\n +\t\t// Any other object (plain object, RegExp, ..)\n +\t\t// Need to do typeof instead of $.type, because we also\n +\t\t// want to catch non-plain objects.\n +\t\tif (typeof o === \'object\') {\n +\t\t\tfor (k in o) {\n +\t\t\t\t// Only include own properties,\n +\t\t\t\t// Filter out inherited prototypes\n +\t\t\t\tif (hasOwn.call(o, k)) {\n +\t\t\t\t\t// Keys must be numerical or string. Skip others\n +\t\t\t\t\ttype = typeof k;\n +\t\t\t\t\tif (type === \'number\') {\n +\t\t\t\t\t\tname = \'"\' + k + \'"\';\n +\t\t\t\t\t} else if (type === \'string\') {\n +\t\t\t\t\t\tname = $.quoteString(k);\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tcontinue;\n +\t\t\t\t\t}\n +\t\t\t\t\ttype = typeof o[k];\n +\n +\t\t\t\t\t// Invalid values like these return undefined\n +\t\t\t\t\t// from toJSON, however those object members\n +\t\t\t\t\t// shouldn\'t be included in the JSON string at all.\n +\t\t\t\t\tif (type !== \'function\' && type !== \'undefined\') {\n +\t\t\t\t\t\tval = $.toJSON(o[k]);\n +\t\t\t\t\t\tpairs.push(name + \':\' + val);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn \'{\' + pairs.join(\',\') + \'}\';\n +\t\t}\n +\t};\n +\n +\t/**\n +\t * jQuery.evalJSON\n +\t * Evaluates a given json string.\n +\t *\n +\t * @param str {String}\n +\t */\n +\t$.evalJSON = typeof JSON === \'object\' && JSON.parse ? JSON.parse : function (str) {\n +\t\t/*jshint evil: true */\n +\t\treturn eval(\'(\' + str + \')\');\n +\t};\n +\n +\t/**\n +\t * jQuery.secureEvalJSON\n +\t * Evals JSON in a way that is *more* secure.\n +\t *\n +\t * @param str {String}\n +\t */\n +\t$.secureEvalJSON = typeof JSON === \'object\' && JSON.parse ? JSON.parse : function (str) {\n +\t\tvar filtered =\n +\t\t\tstr\n +\t\t\t.replace(/\\\\["\\\\\\/bfnrtu]/g, \'@\')\n +\t\t\t.replace(/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \']\')\n +\t\t\t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, \'\');\n +\n +\t\tif (/^[\\],:{}\\s]*$/.test(filtered)) {\n +\t\t\t/*jshint evil: true */\n +\t\t\treturn eval(\'(\' + str + \')\');\n +\t\t}\n +\t\tthrow new SyntaxError(\'Error parsing JSON, source is not valid.\');\n +\t};\n +\n +\t/**\n +\t * jQuery.quoteString\n +\t * Returns a string-repr of a string, escaping quotes intelligently.\n +\t * Mostly a support function for toJSON.\n +\t * Examples:\n +\t * >>> jQuery.quoteString(\'apple\')\n +\t * "apple"\n +\t *\n +\t * >>> jQuery.quoteString(\'"Where are we going?", she asked.\')\n +\t * "\\"Where are we going?\\", she asked."\n +\t */\n +\t$.quoteString = function (str) {\n +\t\tif (str.match(escape)) {\n +\t\t\treturn \'"\' + str.replace(escape, function (a) {\n +\t\t\t\tvar c = meta[a];\n +\t\t\t\tif (typeof c === \'string\') {\n +\t\t\t\t\treturn c;\n +\t\t\t\t}\n +\t\t\t\tc = a.charCodeAt();\n +\t\t\t\treturn \'\\\\u00\' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);\n +\t\t\t}) + \'"\';\n +\t\t}\n +\t\treturn \'"\' + str + \'"\';\n +\t};\n +\n +}(jQuery));\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>5230</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json/jquery.json.min.js.xml b/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json/jquery.json.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..485c5dc186e22ec076ae76a47882d9ce50fae43c --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/json/jquery.json.min.js.xml @@ -0,0 +1,70 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58170082.7</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery.json.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery JSON plugin 2.4.0 | code.google.com/p/jquery-json */\n +(function($){\'use strict\';var escape=/["\\\\\\x00-\\x1f\\x7f-\\x9f]/g,meta={\'\\b\':\'\\\\b\',\'\\t\':\'\\\\t\',\'\\n\':\'\\\\n\',\'\\f\':\'\\\\f\',\'\\r\':\'\\\\r\',\'"\':\'\\\\"\',\'\\\\\':\'\\\\\\\\\'},hasOwn=Object.prototype.hasOwnProperty;$.toJSON=typeof JSON===\'object\'&&JSON.stringify?JSON.stringify:function(o){if(o===null){return\'null\';}\n +var pairs,k,name,val,type=$.type(o);if(type===\'undefined\'){return undefined;}\n +if(type===\'number\'||type===\'boolean\'){return String(o);}\n +if(type===\'string\'){return $.quoteString(o);}\n +if(typeof o.toJSON===\'function\'){return $.toJSON(o.toJSON());}\n +if(type===\'date\'){var month=o.getUTCMonth()+1,day=o.getUTCDate(),year=o.getUTCFullYear(),hours=o.getUTCHours(),minutes=o.getUTCMinutes(),seconds=o.getUTCSeconds(),milli=o.getUTCMilliseconds();if(month<10){month=\'0\'+month;}\n +if(day<10){day=\'0\'+day;}\n +if(hours<10){hours=\'0\'+hours;}\n +if(minutes<10){minutes=\'0\'+minutes;}\n +if(seconds<10){seconds=\'0\'+seconds;}\n +if(milli<100){milli=\'0\'+milli;}\n +if(milli<10){milli=\'0\'+milli;}\n +return\'"\'+year+\'-\'+month+\'-\'+day+\'T\'+\n +hours+\':\'+minutes+\':\'+seconds+\'.\'+milli+\'Z"\';}\n +pairs=[];if($.isArray(o)){for(k=0;k<o.length;k++){pairs.push($.toJSON(o[k])||\'null\');}\n +return\'[\'+pairs.join(\',\')+\']\';}\n +if(typeof o===\'object\'){for(k in o){if(hasOwn.call(o,k)){type=typeof k;if(type===\'number\'){name=\'"\'+k+\'"\';}else if(type===\'string\'){name=$.quoteString(k);}else{continue;}\n +type=typeof o[k];if(type!==\'function\'&&type!==\'undefined\'){val=$.toJSON(o[k]);pairs.push(name+\':\'+val);}}}\n +return\'{\'+pairs.join(\',\')+\'}\';}};$.evalJSON=typeof JSON===\'object\'&&JSON.parse?JSON.parse:function(str){return eval(\'(\'+str+\')\');};$.secureEvalJSON=typeof JSON===\'object\'&&JSON.parse?JSON.parse:function(str){var filtered=str.replace(/\\\\["\\\\\\/bfnrtu]/g,\'@\').replace(/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\']\').replace(/(?:^|:|,)(?:\\s*\\[)+/g,\'\');if(/^[\\],:{}\\s]*$/.test(filtered)){return eval(\'(\'+str+\')\');}\n +throw new SyntaxError(\'Error parsing JSON, source is not valid.\');};$.quoteString=function(str){if(str.match(escape)){return\'"\'+str.replace(escape,function(a){var c=meta[a];if(typeof c===\'string\'){return c;}\n +c=a.charCodeAt();return\'\\\\u00\'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+\'"\';}\n +return\'"\'+str+\'"\';};}(jQuery)); + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>2259</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_json/bt/change_log b/bt5/erp5_jquery_plugin_json/bt/change_log new file mode 100644 index 0000000000000000000000000000000000000000..d294f760abaf2916b987592a99601d7491b8eccf --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/change_log @@ -0,0 +1,2 @@ +2013-01-14 Kazuhiko +* initial commit \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/copyright_list b/bt5/erp5_jquery_plugin_json/bt/copyright_list new file mode 100644 index 0000000000000000000000000000000000000000..bdf92d4e6ddd570cb93b51f800b971fc5bbc953d --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/copyright_list @@ -0,0 +1 @@ +2013 © Nexedi SA \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/dependency_list b/bt5/erp5_jquery_plugin_json/bt/dependency_list new file mode 100644 index 0000000000000000000000000000000000000000..a3d3a39331b4f672bbc4a7c088691cfaab593b1c --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/dependency_list @@ -0,0 +1 @@ +erp5_jquery \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/description b/bt5/erp5_jquery_plugin_json/bt/description new file mode 100644 index 0000000000000000000000000000000000000000..bcbb93e6e96e245ab9a162f082e92916718763ed --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/description @@ -0,0 +1,2 @@ +This Business Template contains only static files of jquery-json Plugin 2.4. +* https://code.google.com/p/jquery-json/ \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/license b/bt5/erp5_jquery_plugin_json/bt/license new file mode 100644 index 0000000000000000000000000000000000000000..8ab70c0254878ca8a5a15e98c7d32b4f7c5710c9 --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/license @@ -0,0 +1 @@ +MIT \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/maintainer_list b/bt5/erp5_jquery_plugin_json/bt/maintainer_list new file mode 100644 index 0000000000000000000000000000000000000000..91fac13497f89ca1de121ab52e2be6d076c5c252 --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/maintainer_list @@ -0,0 +1 @@ +kazuhiko \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/revision b/bt5/erp5_jquery_plugin_json/bt/revision new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/revision @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/template_format_version b/bt5/erp5_jquery_plugin_json/bt/template_format_version new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/template_format_version @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/template_path_list b/bt5/erp5_jquery_plugin_json/bt/template_path_list new file mode 100644 index 0000000000000000000000000000000000000000..416d85724d554d1d17b0386dc3a98834b5fa8d1b --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/template_path_list @@ -0,0 +1,2 @@ +portal_skins/erp5_jquery/jquery/plugin/json +portal_skins/erp5_jquery/jquery/plugin/json/** \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/title b/bt5/erp5_jquery_plugin_json/bt/title new file mode 100644 index 0000000000000000000000000000000000000000..7cc9980d53823303544e213250e725ebeac79b2f --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/title @@ -0,0 +1 @@ +erp5_jquery_plugin_json \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_json/bt/version b/bt5/erp5_jquery_plugin_json/bt/version new file mode 100644 index 0000000000000000000000000000000000000000..48360de846a2e022a0b981d250895f20d3480d34 --- /dev/null +++ b/bt5/erp5_jquery_plugin_json/bt/version @@ -0,0 +1 @@ +5.4.7 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_jstorage/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jstorage/jquery.json-2.3.js.xml b/bt5/erp5_jquery_plugin_jstorage/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jstorage/jquery.json-2.3.js.xml deleted file mode 100644 index 674cfecc0ad49c9ea14bd9576f300eab9ca1fedd..0000000000000000000000000000000000000000 --- a/bt5/erp5_jquery_plugin_jstorage/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jstorage/jquery.json-2.3.js.xml +++ /dev/null @@ -1,237 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="File" module="OFS.Image"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts33529183.71</string> </value> - </item> - <item> - <key> <string>__name__</string> </key> - <value> <string>jquery.json-2.3.js</string> </value> - </item> - <item> - <key> <string>content_type</string> </key> - <value> <string>application/javascript</string> </value> - </item> - <item> - <key> <string>data</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -/**\n - * jQuery JSON Plugin\n - * version: 2.3 (2011-09-17)\n - *\n - * This document is licensed as free software under the terms of the\n - * MIT License: http://www.opensource.org/licenses/mit-license.php\n - *\n - * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org\n - * website\'s http://www.json.org/json2.js, which proclaims:\n - * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that\n - * I uphold.\n - *\n - * It is also influenced heavily by MochiKit\'s serializeJSON, which is\n - * copyrighted 2005 by Bob Ippolito.\n - */\n -\n -(function( $ ) {\n -\n -\tvar\tescapeable = /["\\\\\\x00-\\x1f\\x7f-\\x9f]/g,\n -\t\tmeta = {\n -\t\t\t\'\\b\': \'\\\\b\',\n -\t\t\t\'\\t\': \'\\\\t\',\n -\t\t\t\'\\n\': \'\\\\n\',\n -\t\t\t\'\\f\': \'\\\\f\',\n -\t\t\t\'\\r\': \'\\\\r\',\n -\t\t\t\'"\' : \'\\\\"\',\n -\t\t\t\'\\\\\': \'\\\\\\\\\'\n -\t\t};\n -\n -\t/**\n -\t * jQuery.toJSON\n -\t * Converts the given argument into a JSON respresentation.\n -\t *\n -\t * @param o {Mixed} The json-serializble *thing* to be converted\n -\t *\n -\t * If an object has a toJSON prototype, that will be used to get the representation.\n -\t * Non-integer/string keys are skipped in the object, as are keys that point to a\n -\t * function.\n -\t *\n -\t */\n -\t$.toJSON = typeof JSON === \'object\' && JSON.stringify\n -\t\t? JSON.stringify\n -\t\t: function( o ) {\n -\n -\t\tif ( o === null ) {\n -\t\t\treturn \'null\';\n -\t\t}\n -\n -\t\tvar type = typeof o;\n -\n -\t\tif ( type === \'undefined\' ) {\n -\t\t\treturn undefined;\n -\t\t}\n -\t\tif ( type === \'number\' || type === \'boolean\' ) {\n -\t\t\treturn \'\' + o;\n -\t\t}\n -\t\tif ( type === \'string\') {\n -\t\t\treturn $.quoteString( o );\n -\t\t}\n -\t\tif ( type === \'object\' ) {\n -\t\t\tif ( typeof o.toJSON === \'function\' ) {\n -\t\t\t\treturn $.toJSON( o.toJSON() );\n -\t\t\t}\n -\t\t\tif ( o.constructor === Date ) {\n -\t\t\t\tvar\tmonth = o.getUTCMonth() + 1,\n -\t\t\t\t\tday = o.getUTCDate(),\n -\t\t\t\t\tyear = o.getUTCFullYear(),\n -\t\t\t\t\thours = o.getUTCHours(),\n -\t\t\t\t\tminutes = o.getUTCMinutes(),\n -\t\t\t\t\tseconds = o.getUTCSeconds(),\n -\t\t\t\t\tmilli = o.getUTCMilliseconds();\n -\n -\t\t\t\tif ( month < 10 ) {\n -\t\t\t\t\tmonth = \'0\' + month;\n -\t\t\t\t}\n -\t\t\t\tif ( day < 10 ) {\n -\t\t\t\t\tday = \'0\' + day;\n -\t\t\t\t}\n -\t\t\t\tif ( hours < 10 ) {\n -\t\t\t\t\thours = \'0\' + hours;\n -\t\t\t\t}\n -\t\t\t\tif ( minutes < 10 ) {\n -\t\t\t\t\tminutes = \'0\' + minutes;\n -\t\t\t\t}\n -\t\t\t\tif ( seconds < 10 ) {\n -\t\t\t\t\tseconds = \'0\' + seconds;\n -\t\t\t\t}\n -\t\t\t\tif ( milli < 100 ) {\n -\t\t\t\t\tmilli = \'0\' + milli;\n -\t\t\t\t}\n -\t\t\t\tif ( milli < 10 ) {\n -\t\t\t\t\tmilli = \'0\' + milli;\n -\t\t\t\t}\n -\t\t\t\treturn \'"\' + year + \'-\' + month + \'-\' + day + \'T\' +\n -\t\t\t\t\thours + \':\' + minutes + \':\' + seconds +\n -\t\t\t\t\t\'.\' + milli + \'Z"\';\n -\t\t\t}\n -\t\t\tif ( o.constructor === Array ) {\n -\t\t\t\tvar ret = [];\n -\t\t\t\tfor ( var i = 0; i < o.length; i++ ) {\n -\t\t\t\t\tret.push( $.toJSON( o[i] ) || \'null\' );\n -\t\t\t\t}\n -\t\t\t\treturn \'[\' + ret.join(\',\') + \']\';\n -\t\t\t}\n -\t\t\tvar\tname,\n -\t\t\t\tval,\n -\t\t\t\tpairs = [];\n -\t\t\tfor ( var k in o ) {\n -\t\t\t\ttype = typeof k;\n -\t\t\t\tif ( type === \'number\' ) {\n -\t\t\t\t\tname = \'"\' + k + \'"\';\n -\t\t\t\t} else if (type === \'string\') {\n -\t\t\t\t\tname = $.quoteString(k);\n -\t\t\t\t} else {\n -\t\t\t\t\t// Keys must be numerical or string. Skip others\n -\t\t\t\t\tcontinue;\n -\t\t\t\t}\n -\t\t\t\ttype = typeof o[k];\n -\n -\t\t\t\tif ( type === \'function\' || type === \'undefined\' ) {\n -\t\t\t\t\t// Invalid values like these return undefined\n -\t\t\t\t\t// from toJSON, however those object members\n -\t\t\t\t\t// shouldn\'t be included in the JSON string at all.\n -\t\t\t\t\tcontinue;\n -\t\t\t\t}\n -\t\t\t\tval = $.toJSON( o[k] );\n -\t\t\t\tpairs.push( name + \':\' + val );\n -\t\t\t}\n -\t\t\treturn \'{\' + pairs.join( \',\' ) + \'}\';\n -\t\t}\n -\t};\n -\n -\t/**\n -\t * jQuery.evalJSON\n -\t * Evaluates a given piece of json source.\n -\t *\n -\t * @param src {String}\n -\t */\n -\t$.evalJSON = typeof JSON === \'object\' && JSON.parse\n -\t\t? JSON.parse\n -\t\t: function( src ) {\n -\t\treturn eval(\'(\' + src + \')\');\n -\t};\n -\n -\t/**\n -\t * jQuery.secureEvalJSON\n -\t * Evals JSON in a way that is *more* secure.\n -\t *\n -\t * @param src {String}\n -\t */\n -\t$.secureEvalJSON = typeof JSON === \'object\' && JSON.parse\n -\t\t? JSON.parse\n -\t\t: function( src ) {\n -\n -\t\tvar filtered = \n -\t\t\tsrc\n -\t\t\t.replace( /\\\\["\\\\\\/bfnrtu]/g, \'@\' )\n -\t\t\t.replace( /"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \']\')\n -\t\t\t.replace( /(?:^|:|,)(?:\\s*\\[)+/g, \'\');\n -\n -\t\tif ( /^[\\],:{}\\s]*$/.test( filtered ) ) {\n -\t\t\treturn eval( \'(\' + src + \')\' );\n -\t\t} else {\n -\t\t\tthrow new SyntaxError( \'Error parsing JSON, source is not valid.\' );\n -\t\t}\n -\t};\n -\n -\t/**\n -\t * jQuery.quoteString\n -\t * Returns a string-repr of a string, escaping quotes intelligently.\n -\t * Mostly a support function for toJSON.\n -\t * Examples:\n -\t * >>> jQuery.quoteString(\'apple\')\n -\t * "apple"\n -\t *\n -\t * >>> jQuery.quoteString(\'"Where are we going?", she asked.\')\n -\t * "\\"Where are we going?\\", she asked."\n -\t */\n -\t$.quoteString = function( string ) {\n -\t\tif ( string.match( escapeable ) ) {\n -\t\t\treturn \'"\' + string.replace( escapeable, function( a ) {\n -\t\t\t\tvar c = meta[a];\n -\t\t\t\tif ( typeof c === \'string\' ) {\n -\t\t\t\t\treturn c;\n -\t\t\t\t}\n -\t\t\t\tc = a.charCodeAt();\n -\t\t\t\treturn \'\\\\u00\' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);\n -\t\t\t}) + \'"\';\n -\t\t}\n -\t\treturn \'"\' + string + \'"\';\n -\t};\n -\n -})( jQuery );\n - - -]]></string> </value> - </item> - <item> - <key> <string>precondition</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>size</string> </key> - <value> <int>4712</int> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>Added for backwards compatability for IE6/7, add it to use jStorage with it</string> </value> - </item> - </dictionary> - </pickle> - </record> -</ZopeData> diff --git a/bt5/erp5_jquery_plugin_jstorage/bt/revision b/bt5/erp5_jquery_plugin_jstorage/bt/revision index 56a6051ca2b02b04ef92d5150c9ef600403cb1de..d8263ee9860594d2806b0dfd1bfd17528b0ba2a4 100644 --- a/bt5/erp5_jquery_plugin_jstorage/bt/revision +++ b/bt5/erp5_jquery_plugin_jstorage/bt/revision @@ -1 +1 @@ -1 \ No newline at end of file +2 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.js.xml b/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.js.xml index 05578380ebeeacc821dcea99277eaa3774ab920c..c4f4e20d795a263811e5e2e3446cd17c419fff1c 100644 --- a/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.js.xml +++ b/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts49355317.03</string> </value> + <value> <string>ts58177410.64</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -38,16 +38,10 @@ // still it\'s possible to override this and use explicit gadget rendering\n var RENDERJS_ENABLE_IMPLICIT_GADGET_RENDERING = true;\n \n -// by default RenderJs will examin and bind all interaction gadgets\n -// available\n +// by default RenderJs will examine and bind all interaction gadgets\n +// available \n var RENDERJS_ENABLE_IMPLICIT_INTERACTION_BIND = true;\n \n -if (typeof require !== \'undefined\') {\n - // example of how we can use requirejs to load external libraries\n - //require(["../../../../lib/jstorage/jstorage.js"], function (util) {\n - //});\n -}\n -\n // fallback for IE\n if (typeof console === "undefined" || typeof console.log === "undefined") {\n console = {};\n @@ -59,19 +53,52 @@ var RenderJs = (function () {\n var is_ready = false;\n \n return {\n +\n + init: function () {\n + /*\n + * Do all initialization\n + */\n + if (RENDERJS_ENABLE_IMPLICIT_GADGET_RENDERING) {\n + RenderJs.bootstrap($(\'body\'));\n + }\n + if (RENDERJS_ENABLE_IMPLICIT_INTERACTION_BIND) {\n + var root_gadget = RenderJs.GadgetIndex.getRootGadget();\n + // We might have a page without gadgets.\n + // Be careful, right now we can be in this case because\n + // asynchronous gadget loading is not finished\n + if (root_gadget !== undefined) {\n + RenderJs.bindReady(\n + function () {\n + // examine all Intaction Gadgets and bind accordingly\n + $("div[data-gadget-connection]").each( function (index, element) {\n + RenderJs.InteractionGadget.bind($(element));\n + })\n + });\n + }\n + };\n + },\n +\n bootstrap: function (root) {\n - /* initial load application gadget */\n - var gadget_id;\n + /*\n + * Load all gadgets for this DOM element\n + * (including recursively contained ones)\n + */\n + var gadget_id, is_gadget;\n gadget_id = root.attr("id");\n - if (gadget_id!==undefined) {\n + is_gadget = root.attr("data-gadget") !== undefined;\n + // this will make RenderJs fire "ready" event when all gadgets are loaded.\n + RenderJs.setReady(false);\n + if (is_gadget && gadget_id !== undefined ) {\n // bootstart root gadget only if it is indeed a gadget\n - RenderJs.loadGadgetFromUrl(root);\n + RenderJs.loadGadget(root);\n }\n - RenderJs.load(root);\n + RenderJs.loadRecursiveGadget(root);\n },\n \n - load: function (root) {\n - /* Load gadget layout by traversing DOM */\n + loadRecursiveGadget: function (root) {\n + /*\n + * Load all contained gadgets inside passed DOM element.\n + */\n var gadget_list, gadget, gadget_id, gadget_js;\n gadget_list = root.find("[data-gadget]");\n \n @@ -86,25 +113,30 @@ var RenderJs = (function () {\n \n // Load chilren\n gadget_list.each(function () {\n - RenderJs.loadGadgetFromUrl($(this));\n + RenderJs.loadGadget($(this));\n });\n },\n \n - updateAndRecurse: function (gadget, data) {\n - /* Update current gadget and recurse down */\n + setGadgetAndRecurse: function (gadget, data) {\n + /*\n + * Set gadget data and recursively load it in case it holds another\n + * gadgets.\n + */\n gadget.append(data);\n // a gadget may contain sub gadgets\n - this.load(gadget);\n + RenderJs.loadRecursiveGadget(gadget);\n },\n \n - loadGadgetFromUrl: function (gadget) {\n - /* Load gadget\'s SPECs from URL */\n + loadGadget: function (gadget) {\n + /*\n + * Load gadget\'s SPECs from URL\n + */\n var url, gadget_id, gadget_property, cacheable, cache_id,\n - app_cache, data, gadget_js;\n + app_cache, data, gadget_js, is_update_gadget_data_running;\n url = gadget.attr("data-gadget");\n gadget_id = gadget.attr("id");\n gadget_js = RenderJs.GadgetIndex.getGadgetById(gadget_id);\n - if (gadget_js===undefined) {\n + if (gadget_js === undefined) {\n // register gadget in javascript namespace if not already registered\n gadget_js = new RenderJs.Gadget(gadget_id, gadget);\n RenderJs.GadgetIndex.registerGadget(gadget_js);\n @@ -144,16 +176,18 @@ var RenderJs = (function () {\n RenderJs.Cache.set(cache_id, data);\n RenderJs.GadgetIndex.getGadgetById(gadget_id).\n setReady();\n - RenderJs.updateAndRecurse(gadget, data);\n + RenderJs.setGadgetAndRecurse(gadget, data);\n RenderJs.checkAndTriggerReady();\n + RenderJs.updateGadgetData(gadget);\n }\n });\n } else {\n // get from cache\n data = app_cache;\n gadget_js.setReady();\n - this.updateAndRecurse(gadget, data);\n + this.setGadgetAndRecurse(gadget, data);\n this.checkAndTriggerReady();\n + RenderJs.updateGadgetData(gadget);\n }\n } else {\n // not to be cached\n @@ -164,19 +198,28 @@ var RenderJs = (function () {\n gadget_id = this.yourCustomData.gadget_id;\n RenderJs.GadgetIndex.getGadgetById(gadget_id).\n setReady();\n - RenderJs.updateAndRecurse(gadget, data);\n + RenderJs.setGadgetAndRecurse(gadget, data);\n RenderJs.checkAndTriggerReady();\n + RenderJs.updateGadgetData(gadget);\n }\n });\n }\n - } else {\n - // gadget is an inline one so no need to load it from network\n - gadget_js.setReady();\n + }\n + else {\n + // gadget is an inline (InteractorGadget or one using\n + // data-gadget-source / data-gadget-handler) so no need\n + // to load it from network\n + is_update_gadget_data_running = RenderJs.updateGadgetData(gadget);\n + if (!is_update_gadget_data_running) {\n + // no update is running so gadget is basically ready\n + // if update is running then it should take care and set status\n + gadget_js.setReady();\n + }\n RenderJs.checkAndTriggerReady();\n }\n },\n \n - isReady: function (value) {\n + isReady: function () {\n /*\n * Get rendering status\n */\n @@ -210,29 +253,18 @@ var RenderJs = (function () {\n trigger("ready");\n // trigger ready on root body element\n $("body").trigger("ready");\n + // this set will make sure we fire this event only once\n RenderJs.setReady(true);\n }\n }\n return is_gadget_list_loaded;\n },\n -\n - update: function (root) {\n - /* update gadget with data from remote source */\n - root.find("[gadget]").each(function (i, v) {\n - RenderJs.updateGadgetData($(this));\n - });\n - },\n -\n - updateGadgetWithDataHandler: function (result) {\n - var data_handler;\n - data_handler = this.yourCustomData.data_handler;\n - if (data_handler !== undefined) {\n - eval(data_handler + "(result)");\n - }\n - },\n \n updateGadgetData: function (gadget) {\n - /* Do real gagdet update here */\n + /*\n + * Gadget can be updated from "data-gadget-source" (i.e. a json)\n + * and "data-gadget-handler" attributes (i.e. a namespace Javascript) \n + */\n var data_source, data_handler;\n data_source = gadget.attr("data-gadget-source");\n data_handler = gadget.attr("data-gadget-handler");\n @@ -241,13 +273,30 @@ var RenderJs = (function () {\n $.ajax({\n url: data_source,\n dataType: "json",\n - yourCustomData: {"data_handler": data_handler},\n - success: RenderJs.updateGadgetWithDataHandler\n + yourCustomData: {"data_handler": data_handler,\n + "gadget_id": gadget.attr("id")},\n + success: function (result) {\n + var data_handler, gadget_id;\n + data_handler = this.yourCustomData.data_handler;\n + gadget_id = this.yourCustomData.gadget_id;\n + if (data_handler !== undefined) {\n + // eval is not nice to use\n + eval(data_handler + "(result)");\n + gadget = RenderJs.GadgetIndex.getGadgetById(gadget_id);\n + // mark gadget as loaded and fire a check\n + // to see if all gadgets are loaded\n + gadget.setReady();\n + RenderJs.checkAndTriggerReady();\n + }\n + }\n });\n + // asynchronous update happens and respective thread will update status\n + return true;\n }\n + return false;\n },\n \n - addGadget: function (dom_id, gadget, gadget_data_handler,\n + addGadget: function (dom_id, gadget_id, gadget, gadget_data_handler,\n gadget_data_source) {\n /*\n * add new gadget and render it\n @@ -256,7 +305,7 @@ var RenderJs = (function () {\n tab_container = $(\'#\' + dom_id);\n tab_container.empty();\n html_string = [\n - \'<div class="gadget" \',\n + \'<div id="\' + gadget_id + \'"\',\n \'data-gadget="\' + gadget + \'"\',\n \'data-gadget-handler="\' + gadget_data_handler + \'" \',\n \'data-gadget-source="\' + gadget_data_source + \'"></div>\'\n @@ -264,19 +313,10 @@ var RenderJs = (function () {\n \n tab_container.append(html_string);\n tab_gadget = tab_container.find(".gadget");\n +\n // render new gadget\n - RenderJs.setReady(false);\n - RenderJs.loadGadgetFromUrl(tab_gadget);\n - // clear previous events\n - RenderJs.GadgetIndex.getRootGadget().getDom().bind(\n - "ready",\n - function () {\n - if (!is_ready) {\n - RenderJs.updateGadgetData(tab_gadget);\n - is_ready = true;\n - }\n - }\n - );\n + RenderJs.bootstrap(tab_container);\n +\n return tab_gadget;\n },\n \n @@ -406,6 +446,16 @@ var RenderJs = (function () {\n */\n this.is_ready = true;\n };\n +\n + this.remove = function () {\n + /*\n + * Remove gadget (including its DOM element).\n + */\n + // unregister from GadgetIndex\n + RenderJs.GadgetIndex.unregisterGadget(this);\n + // remove its DOM element\n + $(this.getDom()).remove();\n + };\n }),\n \n TabbularGadget: (function () {\n @@ -423,14 +473,14 @@ var RenderJs = (function () {\n visible_dom.removeClass("not_selected");\n },\n \n - addNewTabGadget: function (dom_id, gadget, gadget_data_handler,\n + addNewTabGadget: function (dom_id, gadget_id, gadget, gadget_data_handler,\n gadget_data_source) {\n /*\n * add new gadget and render it\n */\n var tab_gadget;\n tab_gadget = RenderJs.addGadget(\n - dom_id, gadget, gadget_data_handler, gadget_data_source\n + dom_id, gadget_id, gadget, gadget_data_handler, gadget_data_source\n );\n // XXX: we should unregister all gadgets (if any we replace now in DOM)\n }\n @@ -444,6 +494,26 @@ var RenderJs = (function () {\n var gadget_list = [];\n \n return {\n +\n + getGadgetIdListFromDom: function (dom) {\n + /*\n + * Get list of all gadget\'s ID from DOM\n + */\n + var gadget_id_list = [];\n + $.each(dom.find(\'[data-gadget]\'),\n + function (index, value) {\n + gadget_id_list.push($(value).attr("id"));}\n + );\n + return gadget_id_list;\n + },\n +\n + setGadgetList: function (gadget_list_value) {\n + /*\n + * Set list of registered gadgets\n + */\n + gadget_list = gadget_list_value;\n + },\n +\n getGadgetList: function () {\n /*\n * Return list of registered gadgets\n @@ -519,18 +589,19 @@ var RenderJs = (function () {\n /*\n * Bind event between gadgets.\n */\n - var gadget_id, gadget_connection_list,\n + var gadget_id, gadget_connection_list, \n createMethodInteraction = function (\n original_source_method_id, source_gadget_id,\n source_method_id, destination_gadget_id,\n destination_method_id) {\n var interaction = function () {\n + // execute source method\n RenderJs.GadgetIndex.getGadgetById(\n source_gadget_id)[original_source_method_id].\n apply(null, arguments);\n + // call trigger so bind can be asynchronously called\n RenderJs.GadgetIndex.getGadgetById(\n - destination_gadget_id)[destination_method_id].\n - apply(null, arguments);\n + destination_gadget_id).dom.trigger(source_method_id);\n };\n return interaction;\n },\n @@ -577,6 +648,14 @@ var RenderJs = (function () {\n destination_gadget_id,\n destination_method_id\n );\n + // we use html custom events for asyncronous method call so\n + // bind destination_gadget to respective event\n + destination_gadget.dom.bind(\n + source_method_id,\n + createTriggerInteraction(\n + destination_gadget_id, destination_method_id\n + )\n + );\n }\n else {\n // this is a custom event attached to HTML gadget\n @@ -596,26 +675,10 @@ var RenderJs = (function () {\n }());\n \n // impliticly call RenderJs bootstrap\n -$(document).ready(function () {\n - if (RENDERJS_ENABLE_IMPLICIT_GADGET_RENDERING) {\n - RenderJs.bootstrap($(\'body\'));\n - }\n - if (RENDERJS_ENABLE_IMPLICIT_INTERACTION_BIND) {\n - var root_gadget = RenderJs.GadgetIndex.getRootGadget();\n - // We might have a page without gadgets.\n - // Be careful, right now we can be in this case because\n - // asynchronous gadget loading is not finished\n - if (root_gadget !== undefined) {\n - RenderJs.bindReady(\n - function () {\n - // examine all Intaction Gadgets and bind accordingly\n - $("div[data-gadget-connection]").each( function(index, element) {\n - RenderJs.InteractionGadget.bind($(element));\n - })\n - });\n - }\n - }\n -}); +// $(document).ready(function () {\n +// RenderJs.init();\n +// });\n + ]]></string> </value> </item> @@ -625,7 +688,7 @@ $(document).ready(function () {\n </item> <item> <key> <string>size</string> </key> - <value> <int>22925</int> </value> + <value> <int>26111</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.min.js.xml b/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..e71037a228b56d834895d52a6e4cb927ad8b2ddf --- /dev/null +++ b/bt5/erp5_jquery_plugin_renderjs/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/renderjs/renderjs.min.js.xml @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58177449.44</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>renderjs.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*global console, require, $, localStorage, document */"use strict";var RENDERJS_ENABLE_IMPLICIT_GADGET_RENDERING=!0,RENDERJS_ENABLE_IMPLICIT_INTERACTION_BIND=!0;if(typeof console=="undefined"||typeof console.log=="undefined")console={},console.log=function(){};var RenderJs=function(){var is_ready=!1;return{init:function(){RENDERJS_ENABLE_IMPLICIT_GADGET_RENDERING&&RenderJs.bootstrap($("body"));if(RENDERJS_ENABLE_IMPLICIT_INTERACTION_BIND){var a=RenderJs.GadgetIndex.getRootGadget();a!==undefined&&RenderJs.bindReady(function(){$("div[data-gadget-connection]").each(function(a,b){RenderJs.InteractionGadget.bind($(b))})})}},bootstrap:function(a){var b,c;b=a.attr("id"),c=a.attr("data-gadget")!==undefined,RenderJs.setReady(!1),c&&b!==undefined&&RenderJs.loadGadget(a),RenderJs.loadRecursiveGadget(a)},loadRecursiveGadget:function(a){var b,c,d,e;b=a.find("[data-gadget]"),b.each(function(){c=$(this),d=c.attr("id"),e=new RenderJs.Gadget(d,c),RenderJs.GadgetIndex.registerGadget(e)}),b.each(function(){RenderJs.loadGadget($(this))})},setGadgetAndRecurse:function(a,b){a.append(b),RenderJs.loadRecursiveGadget(a)},loadGadget:function(a){var b,c,d,e,f,g,h,i,j;b=a.attr("data-gadget"),c=a.attr("id"),i=RenderJs.GadgetIndex.getGadgetById(c),i===undefined&&(i=new RenderJs.Gadget(c,a),RenderJs.GadgetIndex.registerGadget(i)),d=a.attr("data-gadget-property"),d!==undefined&&(d=$.parseJSON(d),$.each(d,function(a,b){i[a]=b})),b!==undefined&&b!==""?(e=a.attr("data-gadget-cacheable"),f=a.attr("data-gadget-cache-id"),e!==undefined&&f!==undefined&&(e=Boolean(parseInt(e,10))),e?(g=RenderJs.Cache.get(f,undefined),g===undefined||g===null?$.ajax({url:b,yourCustomData:{gadget_id:c,cache_id:f},success:function(b){f=this.yourCustomData.cache_id,c=this.yourCustomData.gadget_id,RenderJs.Cache.set(f,b),RenderJs.GadgetIndex.getGadgetById(c).setReady(),RenderJs.setGadgetAndRecurse(a,b),RenderJs.checkAndTriggerReady(),RenderJs.updateGadgetData(a)}}):(h=g,i.setReady(),this.setGadgetAndRecurse(a,h),this.checkAndTriggerReady(),RenderJs.updateGadgetData(a))):$.ajax({url:b,yourCustomData:{gadget_id:c},success:function(b){c=this.yourCustomData.gadget_id,RenderJs.GadgetIndex.getGadgetById(c).setReady(),RenderJs.setGadgetAndRecurse(a,b),RenderJs.checkAndTriggerReady(),RenderJs.updateGadgetData(a)}})):(j=RenderJs.updateGadgetData(a),j||i.setReady(),RenderJs.checkAndTriggerReady())},isReady:function(){return is_ready},setReady:function(a){is_ready=a},bindReady:function(a){$("body").one("ready",a)},checkAndTriggerReady:function(){var a;return a=RenderJs.GadgetIndex.isGadgetListLoaded(),a&&(RenderJs.isReady()||(RenderJs.GadgetIndex.getRootGadget().getDom().trigger("ready"),$("body").trigger("ready"),RenderJs.setReady(!0))),a},updateGadgetData:function(gadget){var data_source,data_handler;return data_source=gadget.attr("data-gadget-source"),data_handler=gadget.attr("data-gadget-handler"),data_source!==undefined&&data_source!==""?($.ajax({url:data_source,dataType:"json",yourCustomData:{data_handler:data_handler,gadget_id:gadget.attr("id")},success:function(result){var data_handler,gadget_id;data_handler=this.yourCustomData.data_handler,gadget_id=this.yourCustomData.gadget_id,data_handler!==undefined&&(eval(data_handler+"(result)"),gadget=RenderJs.GadgetIndex.getGadgetById(gadget_id),gadget.setReady(),RenderJs.checkAndTriggerReady())}}),!0):!1},addGadget:function(a,b,c,d,e){var f,g,h;return g=$("#"+a),g.empty(),f=[\'<div id="\'+b+\'"\',\'data-gadget="\'+c+\'"\',\'data-gadget-handler="\'+d+\'" \',\'data-gadget-source="\'+e+\'"></div>\'].join("\\n"),g.append(f),h=g.find(".gadget"),RenderJs.bootstrap(g),h},Cache:function(){return{ROOT_CACHE_ID:"APP_CACHE",getCacheId:function(a){return this.ROOT_CACHE_ID+a},hasLocalStorage:function(){var a;a="localstorage_test_12345678";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}},get:function(a,b){return a=this.getCacheId(a),this.hasLocalStorage()?this.LocalStorageCachePlugin.get(a,b):this.NameSpaceStorageCachePlugin.get(a,b)},set:function(a,b){a=this.getCacheId(a),this.hasLocalStorage()?this.LocalStorageCachePlugin.set(a,b):this.NameSpaceStorageCachePlugin.set(a,b)},LocalStorageCachePlugin:function(){return{get:function(a,b){return a in localStorage?JSON.parse(localStorage.getItem(a)):b},set:function(a,b){localStorage.setItem(a,JSON.stringify(b))}}}(),NameSpaceStorageCachePlugin:function(){var a={};return{get:function(b,c){return a[b]},set:function(b,c){a[b]=c}}}()}}(),Gadget:function(a,b){this.id=a,this.dom=b,this.is_ready=!1,this.getId=function(){return this.id},this.getDom=function(){return this.dom},this.isReady=function(){return this.is_ready},this.setReady=function(){this.is_ready=!0},this.remove=function(){RenderJs.GadgetIndex.unregisterGadget(this),$(this.getDom()).remove()}},TabbularGadget:function(){return{toggleVisibility:function(a){$(".selected").addClass("not_selected"),$(".selected").removeClass("selected"),a.addClass("selected"),a.removeClass("not_selected")},addNewTabGadget:function(a,b,c,d,e){var f;f=RenderJs.addGadget(a,b,c,d,e)}}}(),GadgetIndex:function(){var a=[];return{getGadgetIdListFromDom:function(a){var b=[];return $.each(a.find("[data-gadget]"),function(a,c){b.push($(c).attr("id"))}),b},setGadgetList:function(b){a=b},getGadgetList:function(){return a},registerGadget:function(b){a.push(b)},unregisterGadget:function(b){var c=$.inArray(b,a);c!==-1&&a.splice(c,1)},getGadgetById:function(a){var b;return b=undefined,$(RenderJs.GadgetIndex.getGadgetList()).each(function(c,d){d.getId()===a&&(b=d)}),b},getRootGadget:function(){return this.getGadgetList()[0]},isGadgetListLoaded:function(){var a;return a=!0,$(this.getGadgetList()).each(function(b,c){c.isReady()===!1&&(a=!1)}),a}}}(),InteractionGadget:function(){return{bind:function(a){var b,c,d=function(a,b,c,d,e){var f=function(){RenderJs.GadgetIndex.getGadgetById(b)[a].apply(null,arguments),RenderJs.GadgetIndex.getGadgetById(d).dom.trigger(c)};return f},e=function(a,b){var c=function(){RenderJs.GadgetIndex.getGadgetById(a)[b].apply(null,arguments)};return c};b=a.attr("id"),c=a.attr("data-gadget-connection"),c=$.parseJSON(c),$.each(c,function(a,b){var c,f,g,h,i,j,k,l,m;c=b.source.split("."),f=c[0],g=c[1],h=RenderJs.GadgetIndex.getGadgetById(f),i=b.destination.split("."),j=i[0],k=i[1],l=RenderJs.GadgetIndex.getGadgetById(j),h.hasOwnProperty(g)?(m="original_"+g,h[m]=h[g],h[g]=d(m,f,g,j,k),l.dom.bind(g,e(j,k))):h.dom.bind(g,e(j,k))})}}}()}}(); + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>6425</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>renderjs.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_renderjs/bt/copyright_list b/bt5/erp5_jquery_plugin_renderjs/bt/copyright_list index f9342e8df2a0698ef2d21a0ce817c2a24f98f75e..29a5a3d3745a63195d89a5e7a92a6819a12be1e6 100644 --- a/bt5/erp5_jquery_plugin_renderjs/bt/copyright_list +++ b/bt5/erp5_jquery_plugin_renderjs/bt/copyright_list @@ -1 +1 @@ -2012 (c) Nexedi SA \ No newline at end of file +2012-2013 © Nexedi SA \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_renderjs/bt/dependency_list b/bt5/erp5_jquery_plugin_renderjs/bt/dependency_list index 91a26d4bc82cbbcd9a86aba36aefefda394b1f96..20e0723f0a33e3abff51dafa1dba1fb495db52db 100644 --- a/bt5/erp5_jquery_plugin_renderjs/bt/dependency_list +++ b/bt5/erp5_jquery_plugin_renderjs/bt/dependency_list @@ -1,2 +1,2 @@ erp5_jquery -erp5_jquery_plugin_jstorage \ No newline at end of file +erp5_jquery_plugin_json \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_renderjs/bt/description b/bt5/erp5_jquery_plugin_renderjs/bt/description index 92b1860305790cccacead09b02644cb9bce5d004..25c97618e6c8b5dfe48fb5e0c0970addd657f5d7 100644 --- a/bt5/erp5_jquery_plugin_renderjs/bt/description +++ b/bt5/erp5_jquery_plugin_renderjs/bt/description @@ -1 +1,2 @@ -This Business Template contains only static files of RenderJS library. \ No newline at end of file +This Business Template contains only static files of RenderJS library. +* http://www.renderjs.org/ \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_renderjs/bt/revision b/bt5/erp5_jquery_plugin_renderjs/bt/revision index b5045cc4046dbc1d7cafa4c603fd3cdf35dc5dde..8fdd954df9831dfd29ceec0d74829b02f3f5d8c3 100644 --- a/bt5/erp5_jquery_plugin_renderjs/bt/revision +++ b/bt5/erp5_jquery_plugin_renderjs/bt/revision @@ -1 +1 @@ -21 \ No newline at end of file +22 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox.xml b/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5f6cea3d791ff77da81bbeada990aa28a826281 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>selectbox</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox/selectbox.js.xml b/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox/selectbox.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..c9c6a8742b8bb9249bb638613a1688c944bc411c --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox/selectbox.js.xml @@ -0,0 +1,460 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55758072.43</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>selectbox.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*!\n + * jQuery Selectbox plugin 0.1.3\n + *\n + * Copyright 2011, Dimitar Ivanov (http://www.bulgaria-web-developers.com/projects/javascript/selectbox/)\n + * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n + * \n + * Date: Wed Jul 29 23:20:57 2011 +0200\n + */\n +(function ($, undefined) {\n +\tvar PROP_NAME = \'selectbox\',\n +\t\tFALSE = false,\n +\t\tTRUE = true;\n +\t/**\n +\t * Selectbox manager.\n +\t * Use the singleton instance of this class, $.selectbox, to interact with the select box.\n +\t * Settings for (groups of) select boxes are maintained in an instance object,\n +\t * allowing multiple different settings on the same page\n +\t */\n +\tfunction Selectbox() {\n +\t\tthis._state = [];\n +\t\tthis._defaults = { // Global defaults for all the select box instances\n +\t\t\tclassHolder: "sbHolder",\n +\t\t\tclassHolderDisabled: "sbHolderDisabled",\n +\t\t\tclassSelector: "sbSelector",\n +\t\t\tclassOptions: "sbOptions",\n +\t\t\tclassGroup: "sbGroup",\n +\t\t\tclassSub: "sbSub",\n +\t\t\tclassDisabled: "sbDisabled",\n +\t\t\tclassToggleOpen: "sbToggleOpen",\n +\t\t\tclassToggle: "sbToggle",\n +\t\t\tspeed: 200,\n +\t\t\teffect: "slide", // "slide" or "fade"\n +\t\t\tonChange: null, //Define a callback function when the selectbox is changed\n +\t\t\tonOpen: null, //Define a callback function when the selectbox is open\n +\t\t\tonClose: null //Define a callback function when the selectbox is closed\n +\t\t};\n +\t}\n +\t\n +\t$.extend(Selectbox.prototype, {\n +\t\t/**\n +\t\t * Is the first field in a jQuery collection open as a selectbox\n +\t\t * \n +\t\t * @param {Object} target\n +\t\t * @return {Boolean}\n +\t\t */\n +\t\t_isOpenSelectbox: function (target) {\n +\t\t\tif (!target) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\treturn inst.isOpen;\n +\t\t},\n +\t\t/**\n +\t\t * Is the first field in a jQuery collection disabled as a selectbox\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t * @return {Boolean}\n +\t\t */\n +\t\t_isDisabledSelectbox: function (target) {\n +\t\t\tif (!target) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\treturn inst.isDisabled;\n +\t\t},\n +\t\t/**\n +\t\t * Attach the select box to a jQuery selection.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t * @param {Object} settings\n +\t\t */\n +\t\t_attachSelectbox: function (target, settings) {\n +\t\t\tif (this._getInst(target)) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\tvar $target = $(target),\n +\t\t\t\tself = this,\n +\t\t\t\tinst = self._newInst($target),\n +\t\t\t\tsbHolder, sbSelector, sbToggle, sbOptions,\n +\t\t\t\ts = FALSE, optGroup = $target.find("optgroup"), opts = $target.find("option"), olen = opts.length;\n +\t\t\t\t\n +\t\t\t$target.attr("sb", inst.uid);\n +\t\t\t\t\n +\t\t\t$.extend(inst.settings, self._defaults, settings);\n +\t\t\tself._state[inst.uid] = FALSE;\n +\t\t\t$target.hide();\n +\t\t\t\n +\t\t\tfunction closeOthers() {\n +\t\t\t\tvar key, uid = this.attr("id").split("_")[1];\n +\t\t\t\tfor (key in self._state) {\n +\t\t\t\t\tif (key !== uid) {\n +\t\t\t\t\t\tif (self._state.hasOwnProperty(key)) {\n +\t\t\t\t\t\t\tif ($(":input[sb=\'" + key + "\']")[0]) {\n +\t\t\t\t\t\t\t\tself._closeSelectbox($(":input[sb=\'" + key + "\']")[0]);\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\t\n +\t\t\tsbHolder = $("<div>", {\n +\t\t\t\t"id": "sbHolder_" + inst.uid,\n +\t\t\t\t"class": inst.settings.classHolder\n +\t\t\t});\n +\t\t\t\n +\t\t\tsbSelector = $("<a>", {\n +\t\t\t\t"id": "sbSelector_" + inst.uid,\n +\t\t\t\t"href": "#",\n +\t\t\t\t"class": inst.settings.classSelector,\n +\t\t\t\t"click": function (e) {\n +\t\t\t\t\te.preventDefault();\n +\t\t\t\t\tcloseOthers.apply($(this), []);\n +\t\t\t\t\tvar uid = $(this).attr("id").split("_")[1];\n +\t\t\t\t\tif (self._state[uid]) {\n +\t\t\t\t\t\tself._closeSelectbox(target);\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tself._openSelectbox(target);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t\n +\t\t\tsbToggle = $("<a>", {\n +\t\t\t\t"id": "sbToggle_" + inst.uid,\n +\t\t\t\t"href": "#",\n +\t\t\t\t"class": inst.settings.classToggle,\n +\t\t\t\t"click": function (e) {\n +\t\t\t\t\te.preventDefault();\n +\t\t\t\t\tcloseOthers.apply($(this), []);\n +\t\t\t\t\tvar uid = $(this).attr("id").split("_")[1];\n +\t\t\t\t\tif (self._state[uid]) {\n +\t\t\t\t\t\tself._closeSelectbox(target);\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tself._openSelectbox(target);\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\tsbToggle.appendTo(sbHolder);\n +\n +\t\t\tsbOptions = $("<ul>", {\n +\t\t\t\t"id": "sbOptions_" + inst.uid,\n +\t\t\t\t"class": inst.settings.classOptions,\n +\t\t\t\t"css": {\n +\t\t\t\t\t"display": "none"\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t\n +\t\t\t$target.children().each(function(i) {\n +\t\t\t\tvar that = $(this), li, config = {};\n +\t\t\t\tif (that.is("option")) {\n +\t\t\t\t\tgetOptions(that);\n +\t\t\t\t} else if (that.is("optgroup")) {\n +\t\t\t\t\tli = $("<li>");\n +\t\t\t\t\t$("<span>", {\n +\t\t\t\t\t\t"text": that.attr("label")\n +\t\t\t\t\t}).addClass(inst.settings.classGroup).appendTo(li);\n +\t\t\t\t\tli.appendTo(sbOptions);\n +\t\t\t\t\tif (that.is(":disabled")) {\n +\t\t\t\t\t\tconfig.disabled = true;\n +\t\t\t\t\t}\n +\t\t\t\t\tconfig.sub = true;\n +\t\t\t\t\tgetOptions(that.find("option"), config);\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t\n +\t\t\tfunction getOptions () {\n +\t\t\t\tvar sub = arguments[1] && arguments[1].sub ? true : false,\n +\t\t\t\t\tdisabled = arguments[1] && arguments[1].disabled ? true : false;\n +\t\t\t\targuments[0].each(function (i) {\n +\t\t\t\t\tvar that = $(this),\n +\t\t\t\t\t\tli = $("<li>"),\n +\t\t\t\t\t\tchild;\n +\t\t\t\t\tif (that.is(":selected")) {\n +\t\t\t\t\t\tsbSelector.text(that.text());\n +\t\t\t\t\t\ts = TRUE;\n +\t\t\t\t\t}\n +\t\t\t\t\tif (i === olen - 1) {\n +\t\t\t\t\t\tli.addClass("last");\n +\t\t\t\t\t}\n +\t\t\t\t\tif (!that.is(":disabled") && !disabled) {\n +\t\t\t\t\t\tchild = $("<a>", {\n +\t\t\t\t\t\t\t"href": "#" + that.val(),\n +\t\t\t\t\t\t\t"rel": that.val(), \n +\t\t\t\t\t\t\t"text": that.text(),\n +\t\t\t\t\t\t\t"click": function (e) {\n +\t\t\t\t\t\t\t\te.preventDefault();\n +\t\t\t\t\t\t\t\tvar t = sbToggle,\n +\t\t\t\t\t\t\t\t\tuid = t.attr("id").split("_")[1];\n +\t\t\t\t\t\t\t\tself._changeSelectbox(target, $(this).attr("rel"), $(this).text());\n +\t\t\t\t\t\t\t\tself._closeSelectbox(target);\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t});\n +\t\t\t\t\t\tif (sub) {\n +\t\t\t\t\t\t\tchild.addClass(inst.settings.classSub);\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tchild.appendTo(li);\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tchild = $("<span>", {\n +\t\t\t\t\t\t\t"text": that.text()\n +\t\t\t\t\t\t}).addClass(inst.settings.classDisabled);\n +\t\t\t\t\t\tif (sub) {\n +\t\t\t\t\t\t\tchild.addClass(inst.settings.classSub);\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tchild.appendTo(li);\n +\t\t\t\t\t}\n +\t\t\t\t\tli.appendTo(sbOptions);\n +\t\t\t\t});\n +\t\t\t}\n +\t\t\t\n +\t\t\tif (!s) {\n +\t\t\t\tsbSelector.text(opts.first().text());\n +\t\t\t}\n +\t\t\t\n +\t\t\t$.data(target, PROP_NAME, inst);\n +\t\t\t\n +\t\t\tsbSelector.appendTo(sbHolder);\n +\t\t\tsbOptions.appendTo(sbHolder);\t\t\t\n +\t\t\tsbHolder.insertAfter($target);\n +\t\t},\n +\t\t/**\n +\t\t * Remove the selectbox functionality completely. This will return the element back to its pre-init state.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t */\n +\t\t_detachSelectbox: function (target) {\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\tif (!inst) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\t$("#sbHolder_" + inst.uid).remove();\n +\t\t\t$.data(target, PROP_NAME, null);\n +\t\t\t$(target).show();\t\t\t\n +\t\t},\n +\t\t/**\n +\t\t * Change selected attribute of the selectbox.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t * @param {String} value\n +\t\t * @param {String} text\n +\t\t */\n +\t\t_changeSelectbox: function (target, value, text) {\n +\t\t\tvar inst = this._getInst(target),\n +\t\t\t\tonChange = this._get(inst, \'onChange\');\n +\t\t\t$("#sbSelector_" + inst.uid).text(text);\n +\t\t\t$(target).find("option[value=\'" + value + "\']").attr("selected", TRUE);\n +\t\t\tif (onChange) {\n +\t\t\t\tonChange.apply((inst.input ? inst.input[0] : null), [value, inst]);\n +\t\t\t} else if (inst.input) {\n +\t\t\t\tinst.input.trigger(\'change\');\n +\t\t\t}\n +\t\t},\n +\t\t/**\n +\t\t * Enable the selectbox.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t */\n +\t\t_enableSelectbox: function (target) {\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\tif (!inst || !inst.isDisabled) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\t$("#sbHolder_" + inst.uid).removeClass(inst.settings.classHolderDisabled);\n +\t\t\tinst.isDisabled = FALSE;\n +\t\t\t$.data(target, PROP_NAME, inst);\n +\t\t},\n +\t\t/**\n +\t\t * Disable the selectbox.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t */\n +\t\t_disableSelectbox: function (target) {\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\tif (!inst || inst.isDisabled) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\t$("#sbHolder_" + inst.uid).addClass(inst.settings.classHolderDisabled);\n +\t\t\tinst.isDisabled = TRUE;\n +\t\t\t$.data(target, PROP_NAME, inst);\n +\t\t},\n +\t\t/**\n +\t\t * Get or set any selectbox option. If no value is specified, will act as a getter.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t * @param {String} name\n +\t\t * @param {Object} value\n +\t\t */\n +\t\t_optionSelectbox: function (target, name, value) {\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\tif (!inst) {\n +\t\t\t\treturn FALSE;\n +\t\t\t}\n +\t\t\t//TODO check name\n +\t\t\tinst[name] = value;\n +\t\t\t$.data(target, PROP_NAME, inst);\n +\t\t},\n +\t\t/**\n +\t\t * Call up attached selectbox\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t */\n +\t\t_openSelectbox: function (target) {\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\t//if (!inst || this._state[inst.uid] || inst.isDisabled) {\n +\t\t\tif (!inst || inst.isOpen || inst.isDisabled) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\tvar\tel = $("#sbOptions_" + inst.uid),\n +\t\t\t\tviewportHeight = parseInt($(window).height(), 10),\n +\t\t\t\toffset = $("#sbHolder_" + inst.uid).offset(),\n +\t\t\t\tscrollTop = $(window).scrollTop(),\n +\t\t\t\theight = el.prev().height(),\n +\t\t\t\tdiff = viewportHeight - (offset.top - scrollTop) - height / 2,\n +\t\t\t\tonOpen = this._get(inst, \'onOpen\');\n +\t\t\tel.css({\n +\t\t\t\t"top": height + "px",\n +\t\t\t\t"maxHeight": (diff - height) + "px"\n +\t\t\t});\n +\t\t\tinst.settings.effect === "fade" ? el.fadeIn(inst.settings.speed) : el.slideDown(inst.settings.speed);\n +\t\t\t$("#sbToggle_" + inst.uid).addClass(inst.settings.classToggleOpen);\n +\t\t\tthis._state[inst.uid] = TRUE;\n +\t\t\tinst.isOpen = TRUE;\n +\t\t\tif (onOpen) {\n +\t\t\t\tonOpen.apply((inst.input ? inst.input[0] : null), [inst]);\n +\t\t\t}\n +\t\t\t$.data(target, PROP_NAME, inst);\n +\t\t},\n +\t\t/**\n +\t\t * Close opened selectbox\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t */\n +\t\t_closeSelectbox: function (target) {\n +\t\t\tvar inst = this._getInst(target);\n +\t\t\t//if (!inst || !this._state[inst.uid]) {\n +\t\t\tif (!inst || !inst.isOpen) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\tvar onClose = this._get(inst, \'onClose\');\n +\t\t\tinst.settings.effect === "fade" ? $("#sbOptions_" + inst.uid).fadeOut(inst.settings.speed) : $("#sbOptions_" + inst.uid).slideUp(inst.settings.speed);\n +\t\t\t$("#sbToggle_" + inst.uid).removeClass(inst.settings.classToggleOpen);\n +\t\t\tthis._state[inst.uid] = FALSE;\n +\t\t\tinst.isOpen = FALSE;\n +\t\t\tif (onClose) {\n +\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null), [inst]);\n +\t\t\t}\n +\t\t\t$.data(target, PROP_NAME, inst);\n +\t\t},\n +\t\t/**\n +\t\t * Create a new instance object\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t * @return {Object}\n +\t\t */\n +\t\t_newInst: function(target) {\n +\t\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, \'\\\\\\\\$1\');\n +\t\t\treturn {\n +\t\t\t\tid: id, \n +\t\t\t\tinput: target, \n +\t\t\t\tuid: Math.floor(Math.random() * 99999999),\n +\t\t\t\tisOpen: FALSE,\n +\t\t\t\tisDisabled: FALSE,\n +\t\t\t\tsettings: {}\n +\t\t\t}; \n +\t\t},\n +\t\t/**\n +\t\t * Retrieve the instance data for the target control.\n +\t\t * \n +\t\t * @param {HTMLElement} target\n +\t\t * @return {Object} - the associated instance data\n +\t\t * @throws error if a jQuery problem getting data\n +\t\t */\n +\t\t_getInst: function(target) {\n +\t\t\ttry {\n +\t\t\t\treturn $.data(target, PROP_NAME);\n +\t\t\t}\n +\t\t\tcatch (err) {\n +\t\t\t\tthrow \'Missing instance data for this selectbox\';\n +\t\t\t}\n +\t\t},\n +\t\t/**\n +\t\t * Get a setting value, defaulting if necessary\n +\t\t * \n +\t\t * @param {Object} inst\n +\t\t * @param {String} name\n +\t\t * @return {Mixed}\n +\t\t */\n +\t\t_get: function(inst, name) {\n +\t\t\treturn inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name];\n +\t\t}\n +\t});\n +\n +\t/**\n +\t * Invoke the selectbox functionality.\n +\t * \n +\t * @param {Object|String} options\n +\t * @return {Object}\n +\t */\n +\t$.fn.selectbox = function (options) {\n +\t\t\n +\t\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n +\t\tif (typeof options == \'string\' && options == \'isDisabled\') {\n +\t\t\treturn $.selectbox[\'_\' + options + \'Selectbox\'].apply($.selectbox, [this[0]].concat(otherArgs));\n +\t\t}\n +\t\t\n +\t\tif (options == \'option\' && arguments.length == 2 && typeof arguments[1] == \'string\') {\n +\t\t\treturn $.selectbox[\'_\' + options + \'Selectbox\'].apply($.selectbox, [this[0]].concat(otherArgs));\n +\t\t}\n +\t\t\n +\t\treturn this.each(function() {\n +\t\t\ttypeof options == \'string\' ?\n +\t\t\t\t$.selectbox[\'_\' + options + \'Selectbox\'].apply($.selectbox, [this].concat(otherArgs)) :\n +\t\t\t\t$.selectbox._attachSelectbox(this, options);\n +\t\t});\n +\t};\n +\t\n +\t$.selectbox = new Selectbox(); // singleton instance\n +\t$.selectbox.version = "0.1.3";\n +})(jQuery); + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>11612</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>selectbox.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox/selectbox.min.js.xml b/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox/selectbox.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..83bfdd09f31fac5ba47b3f3530ebc84b0091919c --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/selectbox/selectbox.min.js.xml @@ -0,0 +1,44 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55758350.11</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>selectbox.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +(function($,undefined){var PROP_NAME=\'selectbox\',FALSE=false,TRUE=true;function Selectbox(){this._state=[];this._defaults={classHolder:"sbHolder",classHolderDisabled:"sbHolderDisabled",classSelector:"sbSelector",classOptions:"sbOptions",classGroup:"sbGroup",classSub:"sbSub",classDisabled:"sbDisabled",classToggleOpen:"sbToggleOpen",classToggle:"sbToggle",speed:200,effect:"slide",onChange:null,onOpen:null,onClose:null}}$.extend(Selectbox.prototype,{_isOpenSelectbox:function(target){if(!target){return FALSE}var inst=this._getInst(target);return inst.isOpen},_isDisabledSelectbox:function(target){if(!target){return FALSE}var inst=this._getInst(target);return inst.isDisabled},_attachSelectbox:function(target,settings){if(this._getInst(target)){return FALSE}var $target=$(target),self=this,inst=self._newInst($target),sbHolder,sbSelector,sbToggle,sbOptions,s=FALSE,optGroup=$target.find("optgroup"),opts=$target.find("option"),olen=opts.length;$target.attr("sb",inst.uid);$.extend(inst.settings,self._defaults,settings);self._state[inst.uid]=FALSE;$target.hide();function closeOthers(){var key,uid=this.attr("id").split("_")[1];for(key in self._state){if(key!==uid){if(self._state.hasOwnProperty(key)){if($(":input[sb=\'"+key+"\']")[0]){self._closeSelectbox($(":input[sb=\'"+key+"\']")[0])}}}}}sbHolder=$("<div>",{"id":"sbHolder_"+inst.uid,"class":inst.settings.classHolder});sbSelector=$("<a>",{"id":"sbSelector_"+inst.uid,"href":"#","class":inst.settings.classSelector,"click":function(e){e.preventDefault();closeOthers.apply($(this),[]);var uid=$(this).attr("id").split("_")[1];if(self._state[uid]){self._closeSelectbox(target)}else{self._openSelectbox(target)}}});sbToggle=$("<a>",{"id":"sbToggle_"+inst.uid,"href":"#","class":inst.settings.classToggle,"click":function(e){e.preventDefault();closeOthers.apply($(this),[]);var uid=$(this).attr("id").split("_")[1];if(self._state[uid]){self._closeSelectbox(target)}else{self._openSelectbox(target)}}});sbToggle.appendTo(sbHolder);sbOptions=$("<ul>",{"id":"sbOptions_"+inst.uid,"class":inst.settings.classOptions,"css":{"display":"none"}});$target.children().each(function(i){var that=$(this),li,config={};if(that.is("option")){getOptions(that)}else if(that.is("optgroup")){li=$("<li>");$("<span>",{"text":that.attr("label")}).addClass(inst.settings.classGroup).appendTo(li);li.appendTo(sbOptions);if(that.is(":disabled")){config.disabled=true}config.sub=true;getOptions(that.find("option"),config)}});function getOptions(){var sub=arguments[1]&&arguments[1].sub?true:false,disabled=arguments[1]&&arguments[1].disabled?true:false;arguments[0].each(function(i){var that=$(this),li=$("<li>"),child;if(that.is(":selected")){sbSelector.text(that.text());s=TRUE}if(i===olen-1){li.addClass("last")}if(!that.is(":disabled")&&!disabled){child=$("<a>",{"href":"#"+that.val(),"rel":that.val(),"text":that.text(),"click":function(e){e.preventDefault();var t=sbToggle,uid=t.attr("id").split("_")[1];self._changeSelectbox(target,$(this).attr("rel"),$(this).text());self._closeSelectbox(target)}});if(sub){child.addClass(inst.settings.classSub)}child.appendTo(li)}else{child=$("<span>",{"text":that.text()}).addClass(inst.settings.classDisabled);if(sub){child.addClass(inst.settings.classSub)}child.appendTo(li)}li.appendTo(sbOptions)})}if(!s){sbSelector.text(opts.first().text())}$.data(target,PROP_NAME,inst);sbSelector.appendTo(sbHolder);sbOptions.appendTo(sbHolder);sbHolder.insertAfter($target)},_detachSelectbox:function(target){var inst=this._getInst(target);if(!inst){return FALSE}$("#sbHolder_"+inst.uid).remove();$.data(target,PROP_NAME,null);$(target).show()},_changeSelectbox:function(target,value,text){var inst=this._getInst(target),onChange=this._get(inst,\'onChange\');$("#sbSelector_"+inst.uid).text(text);$(target).find("option[value=\'"+value+"\']").attr("selected",TRUE);if(onChange){onChange.apply((inst.input?inst.input[0]:null),[value,inst])}else if(inst.input){inst.input.trigger(\'change\')}},_enableSelectbox:function(target){var inst=this._getInst(target);if(!inst||!inst.isDisabled){return FALSE}$("#sbHolder_"+inst.uid).removeClass(inst.settings.classHolderDisabled);inst.isDisabled=FALSE;$.data(target,PROP_NAME,inst)},_disableSelectbox:function(target){var inst=this._getInst(target);if(!inst||inst.isDisabled){return FALSE}$("#sbHolder_"+inst.uid).addClass(inst.settings.classHolderDisabled);inst.isDisabled=TRUE;$.data(target,PROP_NAME,inst)},_optionSelectbox:function(target,name,value){var inst=this._getInst(target);if(!inst){return FALSE}inst[name]=value;$.data(target,PROP_NAME,inst)},_openSelectbox:function(target){var inst=this._getInst(target);if(!inst||inst.isOpen||inst.isDisabled){return}var el=$("#sbOptions_"+inst.uid),viewportHeight=parseInt($(window).height(),10),offset=$("#sbHolder_"+inst.uid).offset(),scrollTop=$(window).scrollTop(),height=el.prev().height(),diff=viewportHeight-(offset.top-scrollTop)-height/2,onOpen=this._get(inst,\'onOpen\');el.css({"top":height+"px","maxHeight":(diff-height)+"px"});inst.settings.effect==="fade"?el.fadeIn(inst.settings.speed):el.slideDown(inst.settings.speed);$("#sbToggle_"+inst.uid).addClass(inst.settings.classToggleOpen);this._state[inst.uid]=TRUE;inst.isOpen=TRUE;if(onOpen){onOpen.apply((inst.input?inst.input[0]:null),[inst])}$.data(target,PROP_NAME,inst)},_closeSelectbox:function(target){var inst=this._getInst(target);if(!inst||!inst.isOpen){return}var onClose=this._get(inst,\'onClose\');inst.settings.effect==="fade"?$("#sbOptions_"+inst.uid).fadeOut(inst.settings.speed):$("#sbOptions_"+inst.uid).slideUp(inst.settings.speed);$("#sbToggle_"+inst.uid).removeClass(inst.settings.classToggleOpen);this._state[inst.uid]=FALSE;inst.isOpen=FALSE;if(onClose){onClose.apply((inst.input?inst.input[0]:null),[inst])}$.data(target,PROP_NAME,inst)},_newInst:function(target){var id=target[0].id.replace(/([^A-Za-z0-9_-])/g,\'\\\\\\\\$1\');return{id:id,input:target,uid:Math.floor(Math.random()*99999999),isOpen:FALSE,isDisabled:FALSE,settings:{}}},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw\'Missing instance data for this selectbox\';}},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]}});$.fn.selectbox=function(options){var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options==\'string\'&&options==\'isDisabled\'){return $.selectbox[\'_\'+options+\'Selectbox\'].apply($.selectbox,[this[0]].concat(otherArgs))}if(options==\'option\'&&arguments.length==2&&typeof arguments[1]==\'string\'){return $.selectbox[\'_\'+options+\'Selectbox\'].apply($.selectbox,[this[0]].concat(otherArgs))}return this.each(function(){typeof options==\'string\'?$.selectbox[\'_\'+options+\'Selectbox\'].apply($.selectbox,[this].concat(otherArgs)):$.selectbox._attachSelectbox(this,options)})};$.selectbox=new Selectbox();$.selectbox.version="0.1.3"})(jQuery); + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>6834</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>selectbox.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/change_log b/bt5/erp5_jquery_plugin_selectbox/bt/change_log new file mode 100644 index 0000000000000000000000000000000000000000..c6d8da018f77573d33ce6dcebdaa8e9c28a23f77 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/change_log @@ -0,0 +1,2 @@ +2012-12-17 lingnan +* Initial commit \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/copyright_list b/bt5/erp5_jquery_plugin_selectbox/bt/copyright_list new file mode 100644 index 0000000000000000000000000000000000000000..f9342e8df2a0698ef2d21a0ce817c2a24f98f75e --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/copyright_list @@ -0,0 +1 @@ +2012 (c) Nexedi SA \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/dependency_list b/bt5/erp5_jquery_plugin_selectbox/bt/dependency_list new file mode 100644 index 0000000000000000000000000000000000000000..a3d3a39331b4f672bbc4a7c088691cfaab593b1c --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/dependency_list @@ -0,0 +1 @@ +erp5_jquery \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/description b/bt5/erp5_jquery_plugin_selectbox/bt/description new file mode 100644 index 0000000000000000000000000000000000000000..dee65603ef7e209a02e1b2dfdb5557568bc9e2fd --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/description @@ -0,0 +1,2 @@ +This Business Template contains only static files of selectbox library 0.1.3 +* http://www.bulgaria-web-developers.com/projects/javascript/selectbox/ \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/license b/bt5/erp5_jquery_plugin_selectbox/bt/license new file mode 100644 index 0000000000000000000000000000000000000000..e6816b9c6b675e710f6fada261827c20bde2fc18 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/license @@ -0,0 +1 @@ +MIT/GPL \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/maintainer_list b/bt5/erp5_jquery_plugin_selectbox/bt/maintainer_list new file mode 100644 index 0000000000000000000000000000000000000000..23166f16ce7fb5bceee41fa1e7758a22463f3127 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/maintainer_list @@ -0,0 +1 @@ +lingnan \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/revision b/bt5/erp5_jquery_plugin_selectbox/bt/revision new file mode 100644 index 0000000000000000000000000000000000000000..d8263ee9860594d2806b0dfd1bfd17528b0ba2a4 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/revision @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/template_format_version b/bt5/erp5_jquery_plugin_selectbox/bt/template_format_version new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/template_format_version @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/template_path_list b/bt5/erp5_jquery_plugin_selectbox/bt/template_path_list new file mode 100644 index 0000000000000000000000000000000000000000..ec050be5ad1853b20474e2d16e80ba0435c03652 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/template_path_list @@ -0,0 +1,2 @@ +portal_skins/erp5_jquery/jquery/plugin/selectbox +portal_skins/erp5_jquery/jquery/plugin/selectbox/** \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/title b/bt5/erp5_jquery_plugin_selectbox/bt/title new file mode 100644 index 0000000000000000000000000000000000000000..d5b2ea9ff47edf73e95ff9a096f73c8e28a28639 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/title @@ -0,0 +1 @@ +erp5_jquery_plugin_selectbox \ No newline at end of file diff --git a/bt5/erp5_jquery_plugin_selectbox/bt/version b/bt5/erp5_jquery_plugin_selectbox/bt/version new file mode 100644 index 0000000000000000000000000000000000000000..48360de846a2e022a0b981d250895f20d3480d34 --- /dev/null +++ b/bt5/erp5_jquery_plugin_selectbox/bt/version @@ -0,0 +1 @@ +5.4.7 \ No newline at end of file diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_0_aaaaaa_40x100.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_0_aaaaaa_40x100.png.xml index 01b2362bf66101b5fd3c65ee4e7d50e1b22cc99f..eee8da19349353dcd13515d5f628b1a719ce163d 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_0_aaaaaa_40x100.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_0_aaaaaa_40x100.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624880.19</string> </value> + <value> <string>ts58256037.46</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -24,9 +24,10 @@ </item> <item> <key> <string>data</string> </key> - <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAXElEQVRo3u3OMQ0AAAgDsPmXMpNg -g5Ae/Zu2c1kEBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF -BQUFBQUFBQUFBQUFvwQXQyiz05YjDDkAAAAASUVORK5CYII=</string> </value> + <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAe0lEQVRoge3OMQHAIBAAMcC/kjdZ +JHTI0A4XBdkz86wfO18H3hRUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFV +UBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUF8O8A8WdY6opAAAA +AElFTkSuQmCC</string> </value> </item> <item> <key> <string>height</string> </key> @@ -38,7 +39,7 @@ BQUFBQUFBQUFBQUFvwQXQyiz05YjDDkAAAAASUVORK5CYII=</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>149</int> </value> + <value> <int>180</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_75_e3eafa_40x100.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_75_e3eafa_40x100.png.xml index 4434547ddddff4c49e80521cdf85aa3b7c20f59d..b7b23995ef6e0e268c303488b0156b8056603a52 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_75_e3eafa_40x100.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_flat_75_e3eafa_40x100.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624890.48</string> </value> + <value> <string>ts58255718.3</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -24,9 +24,10 @@ </item> <item> <key> <string>data</string> </key> - <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAGDY0LsAAAAZ0lEQVRo3u3OoQ0AMAhFQfZfs44R -alqPwBNOYMjPy8XJ++qFp2f7NDQ0NDRcOhQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUHBkEBAQEBAQE -BAQEBAQEBAQEBAQEBAQEBAQEBAQEBARcAfxPn/knx13hBgAAAABJRU5ErkJggg==</string> </value> + <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAGDY0LsAAAAnElEQVRoge3XMQqDQBQA0Zj739LO +I9gkdcRCmJ9CfFMu33F2BcVl3fbP68D7uPCgxcWB/HJ6IJevNninQc/aoMEHD15+AYzfmZCQkJCQ +kPDvQh96QkJCQkJCQkJCQkJCQsI7Csf/6KcZ3/E0AisCKwIrAisCKwIrAisCKwIrAisCKwIrAisC +KwIrAisCKwIrAisCKwIrAisCKwIrX1OvG9y6+zfEAAAAAElFTkSuQmCC</string> </value> </item> <item> <key> <string>height</string> </key> @@ -38,7 +39,7 @@ BAQEBAQEBAQEBAQEBAQEBAQEBAQEBARcAfxPn/knx13hBgAAAABJRU5ErkJggg==</string> </valu </item> <item> <key> <string>size</string> </key> - <value> <int>160</int> </value> + <value> <int>213</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_glass_75_d0e0f6_1x400.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_glass_75_d0e0f6_1x400.png.xml index 658864ca1d89b284511915539feec602415774c3..36e3ec952bf824b6ca48b3de692f38da725211f9 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_glass_75_d0e0f6_1x400.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-bg_glass_75_d0e0f6_1x400.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624907.99</string> </value> + <value> <string>ts58256052.02</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -24,9 +24,9 @@ </item> <item> <key> <string>data</string> </key> - <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAAEYXzpNAAAAZElEQVQ4y+3UOw6AIBgD4N7/dGqM -McYHiBjxsQK61MUr6D/g8u1Nm6JzkZAiU55ol0jY4/oa0eSl8cS4n+klF6XQnqhtIIZVZnVSpNt5 -uuTKP5OvpkA0cyB6Fwm9RcIIvc/Pi9yoJuFbfrTHoAAAAABJRU5ErkJggg==</string> </value> + <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAQ0lEQVQ4je3PoQ2AQABD0f+7/4oM +gEZwCjAcigEIqXlJm1SUZR1nAEopv2XbDyIQnV0CiZLIJDP6dOq9jX7hTCnljQtFvQnqrH32ZgAA +AABJRU5ErkJggg==</string> </value> </item> <item> <key> <string>height</string> </key> @@ -38,7 +38,7 @@ uuTKP5OvpkA0cyB6Fwm9RcIIvc/Pi9yoJuFbfrTHoAAAAABJRU5ErkJggg==</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>157</int> </value> + <value> <int>124</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_222222_256x240.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_222222_256x240.png.xml index fdbc25b229c42dc806d80506be1bdf70bc940ab0..53bf238c4614d15eba396addaa784e9a15906aeb 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_222222_256x240.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_222222_256x240.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624922.02</string> </value> + <value> <string>ts58256068.49</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -30,74 +30,77 @@ IiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQk IiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQk IiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiTww4gUAAAA TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN -qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAO1klEQVR42u1dC2PbthEGyIhq6JiSLWtJ -7FprMnvzkmxr126tmi2p3XRJ1+X+/88ZQIrE3eElWjIt2/jk1xF84D4egLsDSAuRkJCwA5AgH7j+ -sOMMbFw9CWH9JWZA7zwsIcwCQYMSwOtDynWpxFsAbBUDF2DH138OahLcAm0CJK8PKed30CKAH25f -wNpZDsiAVX+3CoFym0ERNCAINYjVzjK403YbOLdgu4r8BtsWErzDtgUEKjC8BbhJCdzCoAU7d7D6 -gJAJDt8H3PYowJvQ8KNAcoQSEhISEhISEm7NE7xlP0ha0Rpw510GFALgAb7slQ+wEkLq7INS4qiA -RYC1A9+dhovSugAnQAaDx0GDIav+7hoHih0ZFRk4XERSgFATAMM1cHCmgPw1luvkA2SQz1j64PbD -YQk3mQ+QsSa4a+HwfR8FEhISEhISEhJu0dPa3Jnf6PxwuwrYoU9QoWsEStDv+jahEDkbhLfY6rFi -sHehh4OvzH2BYAUcpeHru84QIsgqt04GMQJJhYDtAY4T2vUBr4Lgul7o+na4DDECIBhvg4jw6zo8 -sAtVcLU3eAkCYZ0wyJ/biEMmFGxATgthjDsOD5to/Ap91Iu2cccaIgiXR87IbgdEb0jkAhDs90BE -mvDwo8ANHx8fJhMSEhISEhIeKjZflrqhmyEdq9H9p3T5odGpqsjl+1VgrQuE43lYowKoXODJqTW8 -Or0zBEIX1/R+LEUQvL4jvuUKRNIPgYxEM7FoKLJr61jsLoMERNaGu80sxECQPwkQMy9XQgh4OAw4 -mg1YkBUOO6Jx65ENsUYF3KXu6BggEM+Dwwb8h1sEWDWwq0fLeROLE+CugPcWrlUMEIyfw12EcM3Q -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</string> </value> +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</string> </value> </item> <item> <key> <string>height</string> </key> @@ -109,7 +112,7 @@ R35ALzal+U5I2HH8H8nmcxxRUAcPAAAAAElFTkSuQmCC</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>4194</int> </value> + <value> <int>4369</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_2e83ff_256x240.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_2e83ff_256x240.png.xml index 5b5376b2f9669120810608e94e0889d878474b48..336cdd10ef19843feaf1d2c24b18ccbdd6c01312 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_2e83ff_256x240.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_2e83ff_256x240.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624928.95</string> </value> + <value> <string>ts58256079.52</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -30,74 +30,77 @@ gvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvws gvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvws gvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvzLrJBNAAAA TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN -qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAO1klEQVR42u1dC2PbthEGyIhq6JiSLWtJ -7FprMnvzkmxr126tmi2p3XRJ1+X+/88ZQIrE3eElWjIt2/jk1xF84D4egLsDSAuRkJCwA5AgH7j+ -sOMMbFw9CWH9JWZA7zwsIcwCQYMSwOtDynWpxFsAbBUDF2DH138OahLcAm0CJK8PKed30CKAH25f -wNpZDsiAVX+3CoFym0ERNCAINYjVzjK403YbOLdgu4r8BtsWErzDtgUEKjC8BbhJCdzCoAU7d7D6 -gJAJDt8H3PYowJvQ8KNAcoQSEhISEhISEm7NE7xlP0ha0Rpw510GFALgAb7slQ+wEkLq7INS4qiA -RYC1A9+dhovSugAnQAaDx0GDIav+7hoHih0ZFRk4XERSgFATAMM1cHCmgPw1luvkA2SQz1j64PbD -YQk3mQ+QsSa4a+HwfR8FEhISEhISEhJu0dPa3Jnf6PxwuwrYoU9QoWsEStDv+jahEDkbhLfY6rFi -sHehh4OvzH2BYAUcpeHru84QIsgqt04GMQJJhYDtAY4T2vUBr4Lgul7o+na4DDECIBhvg4jw6zo8 -sAtVcLU3eAkCYZ0wyJ/biEMmFGxATgthjDsOD5to/Ap91Iu2cccaIgiXR87IbgdEb0jkAhDs90BE -mvDwo8ANHx8fJhMSEhISEhIeKjZflrqhmyEdq9H9p3T5odGpqsjl+1VgrQuE43lYowKoXODJqTW8 -Or0zBEIX1/R+LEUQvL4jvuUKRNIPgYxEM7FoKLJr61jsLoMERNaGu80sxECQPwkQMy9XQgh4OAw4 -mg1YkBUOO6Jx65ENsUYF3KXu6BggEM+Dwwb8h1sEWDWwq0fLeROLE+CugPcWrlUMEIyfw12EcM3Q -By2INAHWRKJNwN3KpXcPaS95sRUItBGHgbEmLqwZ+ggBMpIPkOE+ANz9augehYvDY4mjDcfHXYC1 -hznY+XyAhLRCIiEhISEhQfSIQLc6DIcHZnBG0FvVD3pN4G/56tL1tDuO/pxHSAh7jn0yKGyuChwK -Q6h8c/pdz88D0SX0dDjEbqlrNtziD+ixEORnqwyAzYDg7zcQgfcDuPIZdL5arDH9KoAdC77Dt05A -G276CJAQCZ+d09fBctfsNHgtwrkzbJEC6aih/UQI+O94bL7ZToiIWB9gEcCbxNbDO9Op6WSCFZ3R -5/sd5f4m7jCJ4CNEa3SKNzEw0oyODOUD4tFrbBFQLP8Qzh8lPychISEhIWGnkN3xgczhdkBouop7 -w9fRf5emApzTLNT7yqKzgZCJnt6e3FUL6OItQ08GGQqGaHyXQWMBgAkMP3IAOzVbBe7l27hc6U+i -M6ABfNMGaLgn2HQ4oNfF7RYBAJHqaGUyR6wHVibDGxvibbJrYvLuWIC1P12x0RDksQC+XqGle6fm -Q8N9QOj2ttF5ZqyE9wHgtLjdGgWDo4Czy6cDBASXiQVfTnFH/IDoCbL195X3MPrvo39CQkJCwsNC -rv2EfP39H40UHg1Vu0JVblyE9vgi4rnB48ZVykP64+I8zMcjUQKU4hE7ATpiT4l7wiPzQvFkBXZA -qxLsV1WBnL3678JydSf+p6mnKw2nRN+uxly2Zrb2VuVtrUcljEZQjpibBv7ozZ66pI7dxHXFLkir -qiprwAgZEwIQA6BNdATcAqadJ32g0LnS0FqAb767OZ054QhGh4c5YAJms1n4CQwB4BScBOwRAkGr -jjYoQiQmpKkgJfxIw2cBUAD6pS+86gMAVZDU+Kg+/MgQcDjf+x0h4OnTp9byeL/MNnACtP7PMAHU -pEDpDzZFGUr7wVMNrwUcaNWhODB5gLy2/44AfX6UYmtOZ06omsDz57gJzIS6Bepnd0Bef65JgNb/ -yfEzPwGSbVBbpDyQKISB+Xzu7wPgQDGg9McE1F8dAXUniAg40UefnLQbDptO8NDb5h0ECPt5CkrA -lzg/MZk+UT8rHwHWIyp7NdAFT09PwZioZQH5QVGoH6YJ1LKfgNMGqw2yhHlZLqCUhIAc9YK/rz9Y -3xEnYMQIAGIBE6N/gIDudF/VYCY3GvksID+okYNHBt3HFkDaZFl2o0DZXr/0WoBNQKwJ4PKmD6yE -RUBOr8f8APgi5gesOQw29ZnQHExuhm6wFY50elN8eXsDJ6BmoNqmo5dPa+TXPwVzXdbK425Q472t -6p+QkJCQsON48SJcnkEwr93856do1qMbBl/Ww9RLnHHAMfZkJU9YeLa3tizEH1h9quC4pqKtI7ZJ -DdtY/zw3DIy1F3lWFijYUVWePAbjZ3uyHkh/gRhQB2uwmSbq2ZTaFVxbbu5Hp0GlnbmsG9szze0E -39NzgHOmv3aU5kZ/7Zt30a90O2IonIc/qs8+rlCu7nOO9idzg9bj738SF+LPOL4tlVASWVD5aHSE -ZF3/6dRXQVg5+0ANDlmcquw0M65jk7HooiubABYOg3h18vrN8UmB738hcrEuAX+Bv6rPGCuoXX8m -4+BDxcajkvu+gFowXqHCrveiFVE/MIb9qeKgER63GZvHPgJWvQCygH34G7wArD9K2cUt4Gvxjfi7 -SSmdMgs4ZRZwyixgSmIP1QKaTqqLb9n1vm2kb7sK1sE8jh1A9wFotXyUgFcnX+6pj1v/laeOCcig -zjq18tfwnfr8A62YIG28lnMmo/K6/SrseQhoo7uMNhFqP4FeHkaFmJN4kRGQM4aZ/t2KCEoAkk++ -eTp++s/vV/IB0KRoTJ7Su2c3gZWMxfNzI2vb7/KdTgKsUVCdIwssaedJ7perCr/EBFjrDUzCSTV3 -drqwLJj+dgCfkTVrr39Q3d/kh9cdAar9Z4HjLUUnVifKHvHhSX7mB/C0N5Ndb4AJyVOuPx8GRbOo -yxTXMwJPKuGzIIbyLrp6VY8An/hACQkJCQm3gAInprUrB6ciEpDfIEo8DeHzda5/+gyW6ucSD81n -eGriGRTFjz/C96g6+/j4xTG8egXHC+KJ5oKnG9p8QyfzDQVzfJD+46J4Sxjo9bp/e6BV5ypRtAmK -gSX3xufG8/qXxr+NK7os1AmmVnBDolPHOlQ6l2v2Ua5jroIdMznYFJjgSjvGS3gLWyNAu1roCK17 -/U0NwBDw7p0Q796Z+hQCqime2eEEkCUjUCej0IKHTDSpisz42rnOxyAC3ui5OnzBpWbdR0BkPb09 -lVUCbVPLWl7y4IX63mby9b1enIHcVRixBRn0+HoeFO0AOvBU8ZzAFjCZ4PXq5WKhw0tDgNJfFP4M -kCPj4gr3qYljd3PJ9M/J9OR39fQzvEd+LTkejsIEHKo/D/VXW3xWT77OkQWw6PXNm4M3CzjrTvhW -1268PQK4BfxUy+dUf6Nguawxp4cbwtQtPTo6IgSQNj9XOFFfbMHD0tsHLBa6AeBO8G1RjLfYCbI+ -4KdVH3BuMnAVCUcXur5zc/hyH84QA/pEh6jba5M3rX5ffbX6Ygbi7QOKfLFYwAICw+C2R4FznZg1 -9eGh23Iy+RZdrFJfmWEArDBd/7nXbuDDYG0RNTx9gBp1FTABccdjQz/gvE5NZ570AX/ETFnL2ww9 -pwdw+UrS17oIvGRllOuUXj4S1/UDbh+HV1eH2IL2NVeKA0/Cx145mZCQkLBZdIpXRx//rLuYn48f -kP4fAD50wi9tr/vLg9H/uVb3eXv/oZ1pAmMDM5jhA/7jWmi3vZVns5r/2ZAGoBzN1gQ+GgI++hwh -lx9RGUqsqQe+gcsw02P6LHj+mzUAfc3nPLYJve474xsqYxSRhZta/jT6RGdnAw9ADNID6BD6A7k4 -rcMET4w1+o+J7Vd49bG9dHeaTbF+n9SPT2SH2S0SULX3u/ITULEmD3CR4bKKzCbbBGTEZOqF5iMS -ThMCcpjNZsN5ukZhPwH2MRmxfdIpbmwBw3aCtQE0D83UOlwZAq68FmBbUOVv8r37gGGjNd7pvTbi -a28nSMSKD4objwKDvl9vZhRuanDZipci0Ad4RsCt3Zbb9It+1WlZeP/rbdYhvWExISEhIeEBoYKQ -eOOD7rgSlp9zo67o48eWOx0Qh/CGKQWEgLoswztU40z/AMpf94KBJnSuxv7wtmK+c2UVQz1DNmQ8 -SCigBDRlXZ3r26PU4zsQAnC5TYDrSV9bhGEJwIuBOQF1+mNVyfrX2JofHxMCxsEMj09jIsLQBAxo -AWsRMLAFDNsHuFIKt9oHDDwK2PmOWx4FHrwfkJCQkJDwsBF+juy+I/uvgN9OMuKonD2g9+Tq50jh -two9z1BW7x0PULS+CX//QV9557CE/ykCBFqdrFkZWwxYL5PPryfvngFcCPFbJS7w09bLuYpo6fO1 -RpHR0Uh9dcu34YiuZ9cyUHmkP6MddW/z1br5M3OHyino1fb7HgLqV6PJA9m9bQ+k1Bta+UB/zPv3 -dLnaIg9ghy1A4QLfcd0vLIGq3xHwfYPOxHvKO4dxPQZO0ZoXFYwWMC88BNy7TrAEuDi7wN1+k46o -gKp/fyPU8oO6Px9KkZCQkJDwEMGfD4jJfBFVX7nv9TaVY+DPB8Rkvoyur9z3epvK0ftv1gkeryPz -hZR95b7X21SOgj8f8NGcoJUvtW94uZKvunelNUtpr8z+SBbe8o+m/KP3+gKC5bMma4PLBa+/wM87 -BLNhbHE0Xzpb/7q8xLPDsf3tcmt/M0XuKsezZ+7fQOojPn/+LGh96ieS1yWA/OGQdeu9ZBUWENhf -WAqF92cEROuDXx/vkheN/tsjYIreQecgwPW7j0LR6zssJGQB+m0jC+hBQLwJ6Ldv9THxWBOBGIHB -JiVcFoX3XzT6r0cAfz7A0am1neCVt5MCLvs7VWcnya/PO1la3vLjk3UboM87hDD0MLbpMNpXjmNo -R2ZTR6qvHMfQruymrnRfOSEhISEhISEWDgDcmLz7BNC3tcXle0gAhAmoPySCDhMgQNwtAup/zxaQ -GUEgyGJqWwaRLCD1AXeJgIc+CiQkJCQkJCRsG/LueALRVZCQ91/oKtn/B9rpeyXkxgTw+32X9N+G -BXB975T+1ALq5e31x0OA6/8N6P25/ve2D8hbUP2lpb98MBbQ7H939d/UAu68/puOAh79H6ofYPS/ -R35ALzal+U5I2HH8H8nmcxxRUAcPAAAAAElFTkSuQmCC</string> </value> +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</string> </value> </item> <item> <key> <string>height</string> </key> @@ -109,7 +112,7 @@ R35ALzal+U5I2HH8H8nmcxxRUAcPAAAAAElFTkSuQmCC</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>4194</int> </value> + <value> <int>4369</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_454545_256x240.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_454545_256x240.png.xml index fc612ce67a49e0234fad0d80d383e40704090a64..7610ea806c7fa221608a1f21b3b962adaf97f787 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_454545_256x240.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_454545_256x240.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624935.34</string> </value> + <value> <string>ts58256084.61</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -30,74 +30,77 @@ RkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRE RkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRE RkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkQfbf86AAAA TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN -qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAO1klEQVR42u1dC2PbthEGyIhq6JiSLWtJ -7FprMnvzkmxr126tmi2p3XRJ1+X+/88ZQIrE3eElWjIt2/jk1xF84D4egLsDSAuRkJCwA5AgH7j+ -sOMMbFw9CWH9JWZA7zwsIcwCQYMSwOtDynWpxFsAbBUDF2DH138OahLcAm0CJK8PKed30CKAH25f -wNpZDsiAVX+3CoFym0ERNCAINYjVzjK403YbOLdgu4r8BtsWErzDtgUEKjC8BbhJCdzCoAU7d7D6 -gJAJDt8H3PYowJvQ8KNAcoQSEhISEhISEm7NE7xlP0ha0Rpw510GFALgAb7slQ+wEkLq7INS4qiA -RYC1A9+dhovSugAnQAaDx0GDIav+7hoHih0ZFRk4XERSgFATAMM1cHCmgPw1luvkA2SQz1j64PbD -YQk3mQ+QsSa4a+HwfR8FEhISEhISEhJu0dPa3Jnf6PxwuwrYoU9QoWsEStDv+jahEDkbhLfY6rFi -sHehh4OvzH2BYAUcpeHru84QIsgqt04GMQJJhYDtAY4T2vUBr4Lgul7o+na4DDECIBhvg4jw6zo8 -sAtVcLU3eAkCYZ0wyJ/biEMmFGxATgthjDsOD5to/Ap91Iu2cccaIgiXR87IbgdEb0jkAhDs90BE -mvDwo8ANHx8fJhMSEhISEhIeKjZflrqhmyEdq9H9p3T5odGpqsjl+1VgrQuE43lYowKoXODJqTW8 -Or0zBEIX1/R+LEUQvL4jvuUKRNIPgYxEM7FoKLJr61jsLoMERNaGu80sxECQPwkQMy9XQgh4OAw4 -mg1YkBUOO6Jx65ENsUYF3KXu6BggEM+Dwwb8h1sEWDWwq0fLeROLE+CugPcWrlUMEIyfw12EcM3Q -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</string> </value> +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</string> </value> </item> <item> <key> <string>height</string> </key> @@ -109,7 +112,7 @@ R35ALzal+U5I2HH8H8nmcxxRUAcPAAAAAElFTkSuQmCC</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>4194</int> </value> + <value> <int>4369</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_888888_256x240.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_888888_256x240.png.xml index 6af7b4967e453146e8866d5efe3a3afafd226968..d48a86298a69d932137d2ecb50c9c0a29fb9778b 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_888888_256x240.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_888888_256x240.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624942.05</string> </value> + <value> <string>ts58256089.37</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -30,74 +30,77 @@ ioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyM ioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyM ioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMiozJxoFPAAAA TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN -qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAO1klEQVR42u1dC2PbthEGyIhq6JiSLWtJ -7FprMnvzkmxr126tmi2p3XRJ1+X+/88ZQIrE3eElWjIt2/jk1xF84D4egLsDSAuRkJCwA5AgH7j+ -sOMMbFw9CWH9JWZA7zwsIcwCQYMSwOtDynWpxFsAbBUDF2DH138OahLcAm0CJK8PKed30CKAH25f -wNpZDsiAVX+3CoFym0ERNCAINYjVzjK403YbOLdgu4r8BtsWErzDtgUEKjC8BbhJCdzCoAU7d7D6 -gJAJDt8H3PYowJvQ8KNAcoQSEhISEhISEm7NE7xlP0ha0Rpw510GFALgAb7slQ+wEkLq7INS4qiA -RYC1A9+dhovSugAnQAaDx0GDIav+7hoHih0ZFRk4XERSgFATAMM1cHCmgPw1luvkA2SQz1j64PbD -YQk3mQ+QsSa4a+HwfR8FEhISEhISEhJu0dPa3Jnf6PxwuwrYoU9QoWsEStDv+jahEDkbhLfY6rFi -sHehh4OvzH2BYAUcpeHru84QIsgqt04GMQJJhYDtAY4T2vUBr4Lgul7o+na4DDECIBhvg4jw6zo8 -sAtVcLU3eAkCYZ0wyJ/biEMmFGxATgthjDsOD5to/Ap91Iu2cccaIgiXR87IbgdEb0jkAhDs90BE -mvDwo8ANHx8fJhMSEhISEhIeKjZflrqhmyEdq9H9p3T5odGpqsjl+1VgrQuE43lYowKoXODJqTW8 -Or0zBEIX1/R+LEUQvL4jvuUKRNIPgYxEM7FoKLJr61jsLoMERNaGu80sxECQPwkQMy9XQgh4OAw4 -mg1YkBUOO6Jx65ENsUYF3KXu6BggEM+Dwwb8h1sEWDWwq0fLeROLE+CugPcWrlUMEIyfw12EcM3Q -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</string> </value> +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</string> </value> </item> <item> <key> <string>height</string> </key> @@ -109,7 +112,7 @@ R35ALzal+U5I2HH8H8nmcxxRUAcPAAAAAElFTkSuQmCC</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>4194</int> </value> + <value> <int>4369</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_cd0a0a_256x240.png.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_cd0a0a_256x240.png.xml index 0e43b5c535dce867c3d26050ec6d596775496be4..de2c5a6cf85f10ecf9895d6b4310b9b96949d3cc 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_cd0a0a_256x240.png.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/images/ui-icons_cd0a0a_256x240.png.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts43624952.15</string> </value> + <value> <string>ts58256094.94</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -30,74 +30,77 @@ CgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzM CgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzM CgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzrDkZjAAAA TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN -qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAO1klEQVR42u1dC2PbthEGyIhq6JiSLWtJ -7FprMnvzkmxr126tmi2p3XRJ1+X+/88ZQIrE3eElWjIt2/jk1xF84D4egLsDSAuRkJCwA5AgH7j+ -sOMMbFw9CWH9JWZA7zwsIcwCQYMSwOtDynWpxFsAbBUDF2DH138OahLcAm0CJK8PKed30CKAH25f -wNpZDsiAVX+3CoFym0ERNCAINYjVzjK403YbOLdgu4r8BtsWErzDtgUEKjC8BbhJCdzCoAU7d7D6 -gJAJDt8H3PYowJvQ8KNAcoQSEhISEhISEm7NE7xlP0ha0Rpw510GFALgAb7slQ+wEkLq7INS4qiA -RYC1A9+dhovSugAnQAaDx0GDIav+7hoHih0ZFRk4XERSgFATAMM1cHCmgPw1luvkA2SQz1j64PbD -YQk3mQ+QsSa4a+HwfR8FEhISEhISEhJu0dPa3Jnf6PxwuwrYoU9QoWsEStDv+jahEDkbhLfY6rFi -sHehh4OvzH2BYAUcpeHru84QIsgqt04GMQJJhYDtAY4T2vUBr4Lgul7o+na4DDECIBhvg4jw6zo8 -sAtVcLU3eAkCYZ0wyJ/biEMmFGxATgthjDsOD5to/Ap91Iu2cccaIgiXR87IbgdEb0jkAhDs90BE -mvDwo8ANHx8fJhMSEhISEhIeKjZflrqhmyEdq9H9p3T5odGpqsjl+1VgrQuE43lYowKoXODJqTW8 -Or0zBEIX1/R+LEUQvL4jvuUKRNIPgYxEM7FoKLJr61jsLoMERNaGu80sxECQPwkQMy9XQgh4OAw4 -mg1YkBUOO6Jx65ENsUYF3KXu6BggEM+Dwwb8h1sEWDWwq0fLeROLE+CugPcWrlUMEIyfw12EcM3Q -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</string> </value> +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</string> </value> </item> <item> <key> <string>height</string> </key> @@ -109,7 +112,7 @@ R35ALzal+U5I2HH8H8nmcxxRUAcPAAAAAElFTkSuQmCC</string> </value> </item> <item> <key> <string>size</string> </key> - <value> <int>4194</int> </value> + <value> <int>4369</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.css.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.css.xml index 162ca84321425d7baa13b2f1b7e65dacdf58aba8..b9d6bc369b94ec2a740f765b658b90acef2b9ab2 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.css.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.css.xml @@ -30,20 +30,16 @@ <key> <string>raw</string> </key> <value> <string encoding="cdata"><![CDATA[ -/*!\n - * jQuery UI CSS Framework 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Theming/API\n - */\n +/*! jQuery UI - v1.9.2 - 2013-01-15\n +* http://jqueryui.com\n +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=dae6f6&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=3d6474&fcHeader=222222&iconColorHeader=222222&bgColorContent=e3eafa&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=3d6474&fcContent=222222&iconColorContent=222222&bgColorDefault=dae6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=3d6474&fcDefault=555555&iconColorDefault=888888&bgColorHover=d0e0f6&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=4589a5&fcHover=212121&iconColorHover=454545&bgColorActive=e3eafa&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=3d6474&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px&ctl=themeroller\n +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */\n \n /* Layout helpers\n ----------------------------------*/\n .ui-helper-hidden { display: none; }\n -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }\n +.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }\n .ui-helper-clearfix:after { clear: both; }\n @@ -68,20 +64,199 @@ \n /* Overlays */\n .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n +.ui-resizable { position: relative;}\n +.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n +.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n +.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n +.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n +.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n +.ui-autocomplete {\n +\tposition: absolute;\n +\ttop: 0;\n +\tleft: 0;\n +\tcursor: default;\n +}\n \n +/* workarounds */\n +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n +.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\n +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n +.ui-button-icons-only { width: 3.4em; } \n +button.ui-button-icons-only { width: 3.7em; } \n \n -/*!\n - * jQuery UI CSS Framework 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Theming/API\n - *\n - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ctl=themeroller&ctl=themeroller&ctl=themeroller&ctl=themeroller&ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=DAE6F6&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=3D6474&fcHeader=222222&iconColorHeader=222222&bgColorContent=E3EAFA&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=3D6474&fcContent=222222&iconColorContent=222222&bgColorDefault=DAE6F6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=3D6474&fcDefault=555555&iconColorDefault=888888&bgColorHover=d0e0f6&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=4589a5&fcHover=212121&iconColorHover=454545&bgColorActive=E3EAFA&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=3D6474&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px\n - */\n +/*button text element */\n +.ui-button .ui-button-text { display: block; line-height: 1.4; }\n +.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n +/* no icon support for input elements, provide padding by default */\n +input.ui-button { padding: .4em 1em; }\n \n +/*button icon element(s) */\n +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n +\n +/*button sets*/\n +.ui-buttonset { margin-right: 7px; }\n +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n +\n +/* workarounds */\n +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n +.ui-datepicker .ui-datepicker-prev { left:2px; }\n +.ui-datepicker .ui-datepicker-next { right:2px; }\n +.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n +.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }\n +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n +.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n +.ui-datepicker select.ui-datepicker-month, \n +.ui-datepicker select.ui-datepicker-year { width: 49%;}\n +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }\n +.ui-datepicker td { border: 0; padding: 1px; }\n +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n +\n +/* with multiple calendars */\n +.ui-datepicker.ui-datepicker-multi { width:auto; }\n +.ui-datepicker-multi .ui-datepicker-group { float:left; }\n +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n +\n +/* RTL support */\n +.ui-datepicker-rtl { direction: rtl; }\n +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n +.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n +\n +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n +.ui-datepicker-cover {\n + position: absolute; /*must have*/\n + z-index: -1; /*must have*/\n + filter: mask(); /*must have*/\n + top: -4px; /*must have*/\n + left: -4px; /*must have*/\n + width: 200px; /*must have*/\n + height: 200px; /*must have*/\n +}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }\n +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n +.ui-draggable .ui-dialog-titlebar { cursor: move; }\n +.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n +.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n +.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n +.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n +.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n +.ui-menu .ui-menu-item a.ui-state-focus,\n +.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n +\n +.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n +.ui-menu .ui-state-disabled a { cursor: default; }\n +\n +/* icon support */\n +.ui-menu-icons { position: relative; }\n +.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n +\n +/* left-aligned */\n +.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n +\n +/* right-aligned */\n +.ui-menu .ui-menu-icon { position: static; float: right; }\n +.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n +\n +.ui-slider-horizontal { height: .8em; }\n +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n +.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n +.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n +\n +.ui-slider-vertical { width: .8em; height: 100px; }\n +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n +.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n +.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n +.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n +.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n +.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n +.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n +.ui-spinner-up { top: 0; }\n +.ui-spinner-down { bottom: 0; }\n +\n +/* TR overrides */\n +.ui-spinner .ui-icon-triangle-1-s {\n +\t/* need to fix icons sprite */\n +\tbackground-position:-65px -16px;\n +}\n +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n +.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n +.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n +.ui-tooltip {\n +\tpadding: 8px;\n +\tposition: absolute;\n +\tz-index: 9999;\n +\tmax-width: 300px;\n +\t-webkit-box-shadow: 0 0 5px #aaa;\n +\tbox-shadow: 0 0 5px #aaa;\n +}\n +/* Fades and background-images don\'t work well together in IE6, drop the image */\n +* html .ui-tooltip {\n +\tbackground-image: none;\n +}\n +body .ui-tooltip { border-width: 2px; }\n \n /* Component containers\n ----------------------------------*/\n @@ -98,10 +273,9 @@ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #3d6474; background: #dae6f6 url(images/ui-bg_glass_75_dae6f6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }\n .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }\n .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #4589a5; background: #d0e0f6 url(images/ui-bg_glass_75_d0e0f6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n -.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }\n +.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }\n .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #3d6474; background: #e3eafa url(images/ui-bg_glass_65_e3eafa_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }\n -.ui-widget :active { outline: none; }\n \n /* Interaction Cues\n ----------------------------------*/\n @@ -113,6 +287,7 @@ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n +.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n \n /* Icons\n ----------------------------------*/\n @@ -254,8 +429,8 @@ .ui-icon-help { background-position: -48px -144px; }\n .ui-icon-check { background-position: -64px -144px; }\n .ui-icon-bullet { background-position: -80px -144px; }\n -.ui-icon-radio-off { background-position: -96px -144px; }\n -.ui-icon-radio-on { background-position: -112px -144px; }\n +.ui-icon-radio-on { background-position: -96px -144px; }\n +.ui-icon-radio-off { background-position: -112px -144px; }\n .ui-icon-pin-w { background-position: -128px -144px; }\n .ui-icon-pin-s { background-position: -144px -144px; }\n .ui-icon-play { background-position: 0 -160px; }\n @@ -315,284 +490,8 @@ .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n \n /* Overlays */\n -.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }\n -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*!\n - * jQuery UI Resizable 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Resizable#theming\n - */\n -.ui-resizable { position: relative;}\n -.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!\n - * jQuery UI Selectable 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Selectable#theming\n - */\n -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n -/*!\n - * jQuery UI Accordion 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Accordion#theming\n - */\n -/* IE/Win - Fix animation bug - #4615 */\n -.ui-accordion { width: 100%; }\n -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }\n -.ui-accordion .ui-accordion-li-fix { display: inline; }\n -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }\n -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }\n -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }\n -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }\n -.ui-accordion .ui-accordion-content-active { display: block; }\n -/*!\n - * jQuery UI Autocomplete 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Autocomplete#theming\n - */\n -.ui-autocomplete { position: absolute; cursor: default; }\t\n -\n -/* workarounds */\n -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n -\n -/*\n - * jQuery UI Menu 1.8.22\n - *\n - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Menu#theming\n - */\n -.ui-menu {\n -\tlist-style:none;\n -\tpadding: 2px;\n -\tmargin: 0;\n -\tdisplay:block;\n -\tfloat: left;\n -}\n -.ui-menu .ui-menu {\n -\tmargin-top: -3px;\n -}\n -.ui-menu .ui-menu-item {\n -\tmargin:0;\n -\tpadding: 0;\n -\tzoom: 1;\n -\tfloat: left;\n -\tclear: left;\n -\twidth: 100%;\n -}\n -.ui-menu .ui-menu-item a {\n -\ttext-decoration:none;\n -\tdisplay:block;\n -\tpadding:.2em .4em;\n -\tline-height:1.5;\n -\tzoom:1;\n -}\n -.ui-menu .ui-menu-item a.ui-state-hover,\n -.ui-menu .ui-menu-item a.ui-state-active {\n -\tfont-weight: normal;\n -\tmargin: -1px;\n -}\n -/*!\n - * jQuery UI Button 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Button#theming\n - */\n -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\n -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n -.ui-button-icons-only { width: 3.4em; } \n -button.ui-button-icons-only { width: 3.7em; } \n -\n -/*button text element */\n -.ui-button .ui-button-text { display: block; line-height: 1.4; }\n -.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n -/* no icon support for input elements, provide padding by default */\n -input.ui-button { padding: .4em 1em; }\n -\n -/*button icon element(s) */\n -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n -\n -/*button sets*/\n -.ui-buttonset { margin-right: 7px; }\n -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n -\n -/* workarounds */\n -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n -/*!\n - * jQuery UI Dialog 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Dialog#theming\n - */\n -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }\n -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }\n -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } \n -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n -.ui-draggable .ui-dialog-titlebar { cursor: move; }\n -/*!\n - * jQuery UI Slider 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Slider#theming\n - */\n -.ui-slider { position: relative; text-align: left; }\n -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n -\n -.ui-slider-horizontal { height: .8em; }\n -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n -.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n -.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n -\n -.ui-slider-vertical { width: .8em; height: 100px; }\n -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n -.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n -.ui-slider-vertical .ui-slider-range-max { top: 0; }/*!\n - * jQuery UI Tabs 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Tabs#theming\n - */\n -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }\n -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }\n -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }\n -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n -.ui-tabs .ui-tabs-hide { display: none !important; }\n -/*!\n - * jQuery UI Datepicker 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Datepicker#theming\n - */\n -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n -.ui-datepicker .ui-datepicker-prev { left:2px; }\n -.ui-datepicker .ui-datepicker-next { right:2px; }\n -.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n -.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }\n -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n -.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n -.ui-datepicker select.ui-datepicker-month, \n -.ui-datepicker select.ui-datepicker-year { width: 49%;}\n -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }\n -.ui-datepicker td { border: 0; padding: 1px; }\n -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n -\n -/* with multiple calendars */\n -.ui-datepicker.ui-datepicker-multi { width:auto; }\n -.ui-datepicker-multi .ui-datepicker-group { float:left; }\n -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n -\n -/* RTL support */\n -.ui-datepicker-rtl { direction: rtl; }\n -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n -.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n -\n -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n -.ui-datepicker-cover {\n - position: absolute; /*must have*/\n - z-index: -1; /*must have*/\n - filter: mask(); /*must have*/\n - top: -4px; /*must have*/\n - left: -4px; /*must have*/\n - width: 200px; /*must have*/\n - height: 200px; /*must have*/\n -}/*!\n - * jQuery UI Progressbar 1.8.22\n - *\n - * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Progressbar#theming\n - */\n -.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }\n +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } ]]></string> </value> </item> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.min.css.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.min.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..c9cce6fa14e2838a04cedaaf3189798f13dda7df --- /dev/null +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/css/erp5-theme/jquery-ui.min.css.xml @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="DTMLMethod" module="OFS.DTMLMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-ui.min.css</string> </value> + </item> + <item> + <key> <string>_vars</string> </key> + <value> + <dictionary/> + </value> + </item> + <item> + <key> <string>globals</string> </key> + <value> + <dictionary/> + </value> + </item> + <item> + <key> <string>raw</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery UI - v1.9.2 - 2013-01-15\n +* http://jqueryui.com\n +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=dae6f6&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=3d6474&fcHeader=222222&iconColorHeader=222222&bgColorContent=e3eafa&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=3d6474&fcContent=222222&iconColorContent=222222&bgColorDefault=dae6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=3d6474&fcDefault=555555&iconColorDefault=888888&bgColorHover=d0e0f6&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=4589a5&fcHover=212121&iconColorHover=454545&bgColorActive=e3eafa&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=3d6474&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px&ctl=themeroller\n +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #3d6474;background:#e3eafa url(images/ui-bg_flat_75_e3eafa_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #3d6474;background:#dae6f6 url(images/ui-bg_highlight-soft_75_dae6f6_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #3d6474;background:#dae6f6 url(images/ui-bg_glass_75_dae6f6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #4589a5;background:#d0e0f6 url(images/ui-bg_glass_75_d0e0f6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #3d6474;background:#e3eafa url(images/ui-bg_glass_65_e3eafa_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px} + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.js.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.js.xml index 562a542548d80ecfb5aefc105a592be4d30b98f9..0487c47a7356e453c7ed5538e80b543b88b65996 100644 --- a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.js.xml +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts31202524.54</string> </value> + <value> <string>ts58256119.12</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -34,11 +34,11 @@ </item> <item> <key> <string>size</string> </key> - <value> <int>210423</int> </value> + <value> <int>450133</int> </value> </item> <item> <key> <string>title</string> </key> - <value> <string>jquery-ui-1.8.18.custom.min.js</string> </value> + <value> <string>jquery-ui-1.9.2.custom.js</string> </value> </item> </dictionary> </pickle> @@ -53,108 +53,3818 @@ <key> <string>data</string> </key> <value> <string encoding="cdata"><![CDATA[ -/*!\n - * jQuery UI 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI\n - */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*!\n - * jQuery UI Widget 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Widget\n - */(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!\n - * jQuery UI Mouse 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Mouse\n - *\n - * Depends:\n - *\tjquery.ui.widget.js\n - */(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*\n - * jQuery UI Position 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Position\n - */(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1];return this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]!==e){var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0}},top:function(b,c){if(c.at[1]!==e){var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);/*\n - * jQuery UI Draggable 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Draggables\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a(\'<div class="ui-draggable-iframeFix" style="background: #fff;"></div>\').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.18"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);/*\n - * jQuery UI Droppable 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Droppables\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.widget.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.draggable.js\n - */(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance)){e=!0;return!1}});if(e)return!1;if(this.accept.call(this.element[0],d.currentItem||d.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d));return this.element}return!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.18"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g<d.length;g++){if(d[g].options.disabled||b&&!d[g].accept.call(d[g].element[0],b.currentItem||b.element))continue;for(var h=0;h<f.length;h++)if(f[h]==d[g].element[0]){d[g].proportions.height=0;continue droppablesLoop}d[g].visible=d[g].element.css("display")!="none";if(!d[g].visible)continue;e=="mousedown"&&d[g]._activate.call(d[g],c),d[g].offset=d[g].element.offset(),d[g].proportions={width:d[g].element[0].offsetWidth,height:d[g].element[0].offsetHeight}}},drop:function(b,c){var d=!1;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){!this.options||(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c)))});return d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))}})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);/*\n - * jQuery UI Resizable 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Resizables\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a(\'<div class="ui-wrapper" style="overflow: hidden;"></div>\').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a(\'<div class="ui-resizable-handle \'+g+\'"></div>\');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a(\'<div style="overflow:hidden;"></div>\');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);/*\n - * jQuery UI Selectable 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Selectables\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class=\'ui-selectable-helper\'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}});return!1}},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove();return!1}}),a.extend(a.ui.selectable,{version:"1.8.18"})})(jQuery);/*\n - * jQuery UI Sortable 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Sortables\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();if(!e)return!1;return this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1)},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).c +/*! jQuery UI - v1.9.2 - 2013-01-15\n +* http://jqueryui.com\n +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.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\n +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */\n +\n +(function( $, undefined ) {\n +\n +var uuid = 0,\n +\truniqueId = /^ui-id-\\d+$/;\n +\n +// prevent duplicate loading\n +// this is only a problem because we proxy existing functions\n +// and we don\'t want to double proxy them\n +$.ui = $.ui || {};\n +if ( $.ui.version ) {\n +\treturn;\n +}\n +\n +$.extend( $.ui, {\n +\tversion: "1.9.2",\n +\n +\tkeyCode: {\n +\t\tBACKSPACE: 8,\n +\t\tCOMMA: 188,\n +\t\tDELETE: 46,\n +\t\tDOWN: 40,\n +\t\tEND: 35,\n +\t\tENTER: 13,\n +\t\tESCAPE: 27,\n +\t\tHOME: 36,\n +\t\tLEFT: 37,\n +\t\tNUMPAD_ADD: 107,\n +\t\tNUMPAD_DECIMAL: 110,\n +\t\tNUMPAD_DIVIDE: 111,\n +\t\tNUMPAD_ENTER: 108,\n +\t\tNUMPAD_MULTIPLY: 106,\n +\t\tNUMPAD_SUBTRACT: 109,\n +\t\tPAGE_DOWN: 34,\n +\t\tPAGE_UP: 33,\n +\t\tPERIOD: 190,\n +\t\tRIGHT: 39,\n +\t\tSPACE: 32,\n +\t\tTAB: 9,\n +\t\tUP: 38\n +\t}\n +});\n +\n +// plugins\n +$.fn.extend({\n +\t_focus: $.fn.focus,\n +\tfocus: function( delay, fn ) {\n +\t\treturn typeof delay === "number" ?\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar elem = this;\n +\t\t\t\tsetTimeout(function() {\n +\t\t\t\t\t$( elem ).focus();\n +\t\t\t\t\tif ( fn ) {\n +\t\t\t\t\t\tfn.call( elem );\n +\t\t\t\t\t}\n +\t\t\t\t}, delay );\n +\t\t\t}) :\n +\t\t\tthis._focus.apply( this, arguments );\n +\t},\n +\n +\tscrollParent: function() {\n +\t\tvar scrollParent;\n +\t\tif (($.ui.ie && (/(static|relative)/).test(this.css(\'position\'))) || (/absolute/).test(this.css(\'position\'))) {\n +\t\t\tscrollParent = this.parents().filter(function() {\n +\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,\'position\')) && (/(auto|scroll)/).test($.css(this,\'overflow\')+$.css(this,\'overflow-y\')+$.css(this,\'overflow-x\'));\n +\t\t\t}).eq(0);\n +\t\t} else {\n +\t\t\tscrollParent = this.parents().filter(function() {\n +\t\t\t\treturn (/(auto|scroll)/).test($.css(this,\'overflow\')+$.css(this,\'overflow-y\')+$.css(this,\'overflow-x\'));\n +\t\t\t}).eq(0);\n +\t\t}\n +\n +\t\treturn (/fixed/).test(this.css(\'position\')) || !scrollParent.length ? $(document) : scrollParent;\n +\t},\n +\n +\tzIndex: function( zIndex ) {\n +\t\tif ( zIndex !== undefined ) {\n +\t\t\treturn this.css( "zIndex", zIndex );\n +\t\t}\n +\n +\t\tif ( this.length ) {\n +\t\t\tvar elem = $( this[ 0 ] ), position, value;\n +\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n +\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n +\t\t\t\t// This makes behavior of this function consistent across browsers\n +\t\t\t\t// WebKit always returns auto if the element is positioned\n +\t\t\t\tposition = elem.css( "position" );\n +\t\t\t\tif ( position === "absolute" || position === "relative" || position === "fixed" ) {\n +\t\t\t\t\t// IE returns 0 when zIndex is not specified\n +\t\t\t\t\t// other browsers return a string\n +\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n +\t\t\t\t\t// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>\n +\t\t\t\t\tvalue = parseInt( elem.css( "zIndex" ), 10 );\n +\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n +\t\t\t\t\t\treturn value;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\telem = elem.parent();\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn 0;\n +\t},\n +\n +\tuniqueId: function() {\n +\t\treturn this.each(function() {\n +\t\t\tif ( !this.id ) {\n +\t\t\t\tthis.id = "ui-id-" + (++uuid);\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\tremoveUniqueId: function() {\n +\t\treturn this.each(function() {\n +\t\t\tif ( runiqueId.test( this.id ) ) {\n +\t\t\t\t$( this ).removeAttr( "id" );\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +// selectors\n +function focusable( element, isTabIndexNotNaN ) {\n +\tvar map, mapName, img,\n +\t\tnodeName = element.nodeName.toLowerCase();\n +\tif ( "area" === nodeName ) {\n +\t\tmap = element.parentNode;\n +\t\tmapName = map.name;\n +\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\timg = $( "img[usemap=#" + mapName + "]" )[0];\n +\t\treturn !!img && visible( img );\n +\t}\n +\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n +\t\t!element.disabled :\n +\t\t"a" === nodeName ?\n +\t\t\telement.href || isTabIndexNotNaN :\n +\t\t\tisTabIndexNotNaN) &&\n +\t\t// the element and all of its ancestors must be visible\n +\t\tvisible( element );\n +}\n +\n +function visible( element ) {\n +\treturn $.expr.filters.visible( element ) &&\n +\t\t!$( element ).parents().andSelf().filter(function() {\n +\t\t\treturn $.css( this, "visibility" ) === "hidden";\n +\t\t}).length;\n +}\n +\n +$.extend( $.expr[ ":" ], {\n +\tdata: $.expr.createPseudo ?\n +\t\t$.expr.createPseudo(function( dataName ) {\n +\t\t\treturn function( elem ) {\n +\t\t\t\treturn !!$.data( elem, dataName );\n +\t\t\t};\n +\t\t}) :\n +\t\t// support: jQuery <1.8\n +\t\tfunction( elem, i, match ) {\n +\t\t\treturn !!$.data( elem, match[ 3 ] );\n +\t\t},\n +\n +\tfocusable: function( element ) {\n +\t\treturn focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );\n +\t},\n +\n +\ttabbable: function( element ) {\n +\t\tvar tabIndex = $.attr( element, "tabindex" ),\n +\t\t\tisTabIndexNaN = isNaN( tabIndex );\n +\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n +\t}\n +});\n +\n +// support\n +$(function() {\n +\tvar body = document.body,\n +\t\tdiv = body.appendChild( div = document.createElement( "div" ) );\n +\n +\t// access offsetHeight before setting the style to prevent a layout bug\n +\t// in IE 9 which causes the element to continue to take up space even\n +\t// after it is removed from the DOM (#8026)\n +\tdiv.offsetHeight;\n +\n +\t$.extend( div.style, {\n +\t\tminHeight: "100px",\n +\t\theight: "auto",\n +\t\tpadding: 0,\n +\t\tborderWidth: 0\n +\t});\n +\n +\t$.support.minHeight = div.offsetHeight === 100;\n +\t$.support.selectstart = "onselectstart" in div;\n +\n +\t// set display to none to avoid a layout bug in IE\n +\t// http://dev.jquery.com/ticket/4014\n +\tbody.removeChild( div ).style.display = "none";\n +});\n +\n +// support: jQuery <1.8\n +if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {\n +\t$.each( [ "Width", "Height" ], function( i, name ) {\n +\t\tvar side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],\n +\t\t\ttype = name.toLowerCase(),\n +\t\t\torig = {\n +\t\t\t\tinnerWidth: $.fn.innerWidth,\n +\t\t\t\tinnerHeight: $.fn.innerHeight,\n +\t\t\t\touterWidth: $.fn.outerWidth,\n +\t\t\t\touterHeight: $.fn.outerHeight\n +\t\t\t};\n +\n +\t\tfunction reduce( elem, size, border, margin ) {\n +\t\t\t$.each( side, function() {\n +\t\t\t\tsize -= parseFloat( $.css( elem, "padding" + this ) ) || 0;\n +\t\t\t\tif ( border ) {\n +\t\t\t\t\tsize -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;\n +\t\t\t\t}\n +\t\t\t\tif ( margin ) {\n +\t\t\t\t\tsize -= parseFloat( $.css( elem, "margin" + this ) ) || 0;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\treturn size;\n +\t\t}\n +\n +\t\t$.fn[ "inner" + name ] = function( size ) {\n +\t\t\tif ( size === undefined ) {\n +\t\t\t\treturn orig[ "inner" + name ].call( this );\n +\t\t\t}\n +\n +\t\t\treturn this.each(function() {\n +\t\t\t\t$( this ).css( type, reduce( this, size ) + "px" );\n +\t\t\t});\n +\t\t};\n +\n +\t\t$.fn[ "outer" + name] = function( size, margin ) {\n +\t\t\tif ( typeof size !== "number" ) {\n +\t\t\t\treturn orig[ "outer" + name ].call( this, size );\n +\t\t\t}\n +\n +\t\t\treturn this.each(function() {\n +\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + "px" );\n +\t\t\t});\n +\t\t};\n +\t});\n +}\n +\n +// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\n +if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {\n +\t$.fn.removeData = (function( removeData ) {\n +\t\treturn function( key ) {\n +\t\t\tif ( arguments.length ) {\n +\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n +\t\t\t} else {\n +\t\t\t\treturn removeData.call( this );\n +\t\t\t}\n +\t\t};\n +\t})( $.fn.removeData );\n +}\n +\n +\n +\n +\n +\n +// deprecated\n +\n +(function() {\n +\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n +\t$.ui.ie = uaMatch.length ? true : false;\n +\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n +})();\n +\n +$.fn.extend({\n +\tdisableSelection: function() {\n +\t\treturn this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +\n +\t\t\t".ui-disableSelection", function( event ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t});\n +\t},\n +\n +\tenableSelection: function() {\n +\t\treturn this.unbind( ".ui-disableSelection" );\n +\t}\n +});\n +\n +$.extend( $.ui, {\n +\t// $.ui.plugin is deprecated. Use the proxy pattern instead.\n +\tplugin: {\n +\t\tadd: function( module, option, set ) {\n +\t\t\tvar i,\n +\t\t\t\tproto = $.ui[ module ].prototype;\n +\t\t\tfor ( i in set ) {\n +\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n +\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n +\t\t\t}\n +\t\t},\n +\t\tcall: function( instance, name, args ) {\n +\t\t\tvar i,\n +\t\t\t\tset = instance.plugins[ name ];\n +\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tfor ( i = 0; i < set.length; i++ ) {\n +\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n +\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tcontains: $.contains,\n +\n +\t// only used by resizable\n +\thasScroll: function( el, a ) {\n +\n +\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n +\t\tif ( $( el ).css( "overflow" ) === "hidden") {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\tvar scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",\n +\t\t\thas = false;\n +\n +\t\tif ( el[ scroll ] > 0 ) {\n +\t\t\treturn true;\n +\t\t}\n +\n +\t\t// TODO: determine which cases actually cause this to happen\n +\t\t// if the element doesn\'t have the scroll set, see if it\'s possible to\n +\t\t// set the scroll\n +\t\tel[ scroll ] = 1;\n +\t\thas = ( el[ scroll ] > 0 );\n +\t\tel[ scroll ] = 0;\n +\t\treturn has;\n +\t},\n +\n +\t// these are odd functions, fix the API or move into individual plugins\n +\tisOverAxis: function( x, reference, size ) {\n +\t\t//Determines when x coordinate is over "b" element axis\n +\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n +\t},\n +\tisOver: function( y, x, top, left, height, width ) {\n +\t\t//Determines when x, y coordinates is over "b" element\n +\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n +\t}\n +});\n +\n +})( jQuery );\n +(function( $, undefined ) {\n +\n +var uuid = 0,\n +\tslice = Array.prototype.slice,\n +\t_cleanData = $.cleanData;\n +$.cleanData = function( elems ) {\n +\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n +\t\ttry {\n +\t\t\t$( elem ).triggerHandler( "remove" );\n +\t\t// http://bugs.jquery.com/ticket/8235\n +\t\t} catch( e ) {}\n +\t}\n +\t_cleanData( elems );\n +};\n +\n +$.widget = function( name, base, prototype ) {\n +\tvar fullName, existingConstructor, constructor, basePrototype,\n +\t\tnamespace = name.split( "." )[ 0 ];\n +\n +\tname = name.split( "." )[ 1 ];\n +\tfullName = namespace + "-" + name;\n +\n +\tif ( !prototype ) {\n +\t\tprototype = base;\n +\t\tbase = $.Widget;\n +\t}\n +\n +\t// create selector for plugin\n +\t$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {\n +\t\treturn !!$.data( elem, fullName );\n +\t};\n +\n +\t$[ namespace ] = $[ namespace ] || {};\n +\texistingConstructor = $[ namespace ][ name ];\n +\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n +\t\t// allow instantiation without "new" keyword\n +\t\tif ( !this._createWidget ) {\n +\t\t\treturn new constructor( options, element );\n +\t\t}\n +\n +\t\t// allow instantiation without initializing for simple inheritance\n +\t\t// must use "new" keyword (the code above always passes args)\n +\t\tif ( arguments.length ) {\n +\t\t\tthis._createWidget( options, element );\n +\t\t}\n +\t};\n +\t// extend with the existing constructor to carry over any static properties\n +\t$.extend( constructor, existingConstructor, {\n +\t\tversion: prototype.version,\n +\t\t// copy the object used to create the prototype in case we need to\n +\t\t// redefine the widget later\n +\t\t_proto: $.extend( {}, prototype ),\n +\t\t// track widgets that inherit from this widget in case this widget is\n +\t\t// redefined after a widget inherits from it\n +\t\t_childConstructors: []\n +\t});\n +\n +\tbasePrototype = new base();\n +\t// we need to make the options hash a property directly on the new instance\n +\t// otherwise we\'ll modify the options hash on the prototype that we\'re\n +\t// inheriting from\n +\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n +\t$.each( prototype, function( prop, value ) {\n +\t\tif ( $.isFunction( value ) ) {\n +\t\t\tprototype[ prop ] = (function() {\n +\t\t\t\tvar _super = function() {\n +\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n +\t\t\t\t\t},\n +\t\t\t\t\t_superApply = function( args ) {\n +\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n +\t\t\t\t\t};\n +\t\t\t\treturn function() {\n +\t\t\t\t\tvar __super = this._super,\n +\t\t\t\t\t\t__superApply = this._superApply,\n +\t\t\t\t\t\treturnValue;\n +\n +\t\t\t\t\tthis._super = _super;\n +\t\t\t\t\tthis._superApply = _superApply;\n +\n +\t\t\t\t\treturnValue = value.apply( this, arguments );\n +\n +\t\t\t\t\tthis._super = __super;\n +\t\t\t\t\tthis._superApply = __superApply;\n +\n +\t\t\t\t\treturn returnValue;\n +\t\t\t\t};\n +\t\t\t})();\n +\t\t}\n +\t});\n +\tconstructor.prototype = $.widget.extend( basePrototype, {\n +\t\t// TODO: remove support for widgetEventPrefix\n +\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n +\t\t// don\'t prefix for widgets that aren\'t DOM-based\n +\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n +\t}, prototype, {\n +\t\tconstructor: constructor,\n +\t\tnamespace: namespace,\n +\t\twidgetName: name,\n +\t\t// TODO remove widgetBaseClass, see #8155\n +\t\twidgetBaseClass: fullName,\n +\t\twidgetFullName: fullName\n +\t});\n +\n +\t// If this widget is being redefined then we need to find all widgets that\n +\t// are inheriting from it and redefine all of them so that they inherit from\n +\t// the new version of this widget. We\'re essentially trying to replace one\n +\t// level in the prototype chain.\n +\tif ( existingConstructor ) {\n +\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n +\t\t\tvar childPrototype = child.prototype;\n +\n +\t\t\t// redefine the child widget using the same prototype that was\n +\t\t\t// originally used, but inherit from the new version of the base\n +\t\t\t$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );\n +\t\t});\n +\t\t// remove the list of existing child constructors from the old constructor\n +\t\t// so the old child constructors can be garbage collected\n +\t\tdelete existingConstructor._childConstructors;\n +\t} else {\n +\t\tbase._childConstructors.push( constructor );\n +\t}\n +\n +\t$.widget.bridge( name, constructor );\n +};\n +\n +$.widget.extend = function( target ) {\n +\tvar input = slice.call( arguments, 1 ),\n +\t\tinputIndex = 0,\n +\t\tinputLength = input.length,\n +\t\tkey,\n +\t\tvalue;\n +\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n +\t\tfor ( key in input[ inputIndex ] ) {\n +\t\t\tvalue = input[ inputIndex ][ key ];\n +\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n +\t\t\t\t// Clone objects\n +\t\t\t\tif ( $.isPlainObject( value ) ) {\n +\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n +\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n +\t\t\t\t\t\t// Don\'t extend strings, arrays, etc. with objects\n +\t\t\t\t\t\t$.widget.extend( {}, value );\n +\t\t\t\t// Copy everything else by reference\n +\t\t\t\t} else {\n +\t\t\t\t\ttarget[ key ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\treturn target;\n +};\n +\n +$.widget.bridge = function( name, object ) {\n +\tvar fullName = object.prototype.widgetFullName || name;\n +\t$.fn[ name ] = function( options ) {\n +\t\tvar isMethodCall = typeof options === "string",\n +\t\t\targs = slice.call( arguments, 1 ),\n +\t\t\treturnValue = this;\n +\n +\t\t// allow multiple hashes to be passed on init\n +\t\toptions = !isMethodCall && args.length ?\n +\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n +\t\t\toptions;\n +\n +\t\tif ( isMethodCall ) {\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar methodValue,\n +\t\t\t\t\tinstance = $.data( this, fullName );\n +\t\t\t\tif ( !instance ) {\n +\t\t\t\t\treturn $.error( "cannot call methods on " + name + " prior to initialization; " +\n +\t\t\t\t\t\t"attempted to call method \'" + options + "\'" );\n +\t\t\t\t}\n +\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {\n +\t\t\t\t\treturn $.error( "no such method \'" + options + "\' for " + name + " widget instance" );\n +\t\t\t\t}\n +\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n +\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n +\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n +\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n +\t\t\t\t\t\tmethodValue;\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t} else {\n +\t\t\tthis.each(function() {\n +\t\t\t\tvar instance = $.data( this, fullName );\n +\t\t\t\tif ( instance ) {\n +\t\t\t\t\tinstance.option( options || {} )._init();\n +\t\t\t\t} else {\n +\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\treturn returnValue;\n +\t};\n +};\n +\n +$.Widget = function( /* options, element */ ) {};\n +$.Widget._childConstructors = [];\n +\n +$.Widget.prototype = {\n +\twidgetName: "widget",\n +\twidgetEventPrefix: "",\n +\tdefaultElement: "<div>",\n +\toptions: {\n +\t\tdisabled: false,\n +\n +\t\t// callbacks\n +\t\tcreate: null\n +\t},\n +\t_createWidget: function( options, element ) {\n +\t\telement = $( element || this.defaultElement || this )[ 0 ];\n +\t\tthis.element = $( element );\n +\t\tthis.uuid = uuid++;\n +\t\tthis.eventNamespace = "." + this.widgetName + this.uuid;\n +\t\tthis.options = $.widget.extend( {},\n +\t\t\tthis.options,\n +\t\t\tthis._getCreateOptions(),\n +\t\t\toptions );\n +\n +\t\tthis.bindings = $();\n +\t\tthis.hoverable = $();\n +\t\tthis.focusable = $();\n +\n +\t\tif ( element !== this ) {\n +\t\t\t// 1.9 BC for #7810\n +\t\t\t// TODO remove dual storage\n +\t\t\t$.data( element, this.widgetName, this );\n +\t\t\t$.data( element, this.widgetFullName, this );\n +\t\t\tthis._on( true, this.element, {\n +\t\t\t\tremove: function( event ) {\n +\t\t\t\t\tif ( event.target === element ) {\n +\t\t\t\t\t\tthis.destroy();\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\tthis.document = $( element.style ?\n +\t\t\t\t// element within the document\n +\t\t\t\telement.ownerDocument :\n +\t\t\t\t// element is window or document\n +\t\t\t\telement.document || element );\n +\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n +\t\t}\n +\n +\t\tthis._create();\n +\t\tthis._trigger( "create", null, this._getCreateEventData() );\n +\t\tthis._init();\n +\t},\n +\t_getCreateOptions: $.noop,\n +\t_getCreateEventData: $.noop,\n +\t_create: $.noop,\n +\t_init: $.noop,\n +\n +\tdestroy: function() {\n +\t\tthis._destroy();\n +\t\t// we can probably remove the unbind calls in 2.0\n +\t\t// all event bindings should go through this._on()\n +\t\tthis.element\n +\t\t\t.unbind( this.eventNamespace )\n +\t\t\t// 1.9 BC for #7810\n +\t\t\t// TODO remove dual storage\n +\t\t\t.removeData( this.widgetName )\n +\t\t\t.removeData( this.widgetFullName )\n +\t\t\t// support: jquery <1.6.3\n +\t\t\t// http://bugs.jquery.com/ticket/9413\n +\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n +\t\tthis.widget()\n +\t\t\t.unbind( this.eventNamespace )\n +\t\t\t.removeAttr( "aria-disabled" )\n +\t\t\t.removeClass(\n +\t\t\t\tthis.widgetFullName + "-disabled " +\n +\t\t\t\t"ui-state-disabled" );\n +\n +\t\t// clean up events and states\n +\t\tthis.bindings.unbind( this.eventNamespace );\n +\t\tthis.hoverable.removeClass( "ui-state-hover" );\n +\t\tthis.focusable.removeClass( "ui-state-focus" );\n +\t},\n +\t_destroy: $.noop,\n +\n +\twidget: function() {\n +\t\treturn this.element;\n +\t},\n +\n +\toption: function( key, value ) {\n +\t\tvar options = key,\n +\t\t\tparts,\n +\t\t\tcurOption,\n +\t\t\ti;\n +\n +\t\tif ( arguments.length === 0 ) {\n +\t\t\t// don\'t return a reference to the internal hash\n +\t\t\treturn $.widget.extend( {}, this.options );\n +\t\t}\n +\n +\t\tif ( typeof key === "string" ) {\n +\t\t\t// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }\n +\t\t\toptions = {};\n +\t\t\tparts = key.split( "." );\n +\t\t\tkey = parts.shift();\n +\t\t\tif ( parts.length ) {\n +\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n +\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n +\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n +\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n +\t\t\t\t}\n +\t\t\t\tkey = parts.pop();\n +\t\t\t\tif ( value === undefined ) {\n +\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n +\t\t\t\t}\n +\t\t\t\tcurOption[ key ] = value;\n +\t\t\t} else {\n +\t\t\t\tif ( value === undefined ) {\n +\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n +\t\t\t\t}\n +\t\t\t\toptions[ key ] = value;\n +\t\t\t}\n +\t\t}\n +\n +\t\tthis._setOptions( options );\n +\n +\t\treturn this;\n +\t},\n +\t_setOptions: function( options ) {\n +\t\tvar key;\n +\n +\t\tfor ( key in options ) {\n +\t\t\tthis._setOption( key, options[ key ] );\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\t_setOption: function( key, value ) {\n +\t\tthis.options[ key ] = value;\n +\n +\t\tif ( key === "disabled" ) {\n +\t\t\tthis.widget()\n +\t\t\t\t.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )\n +\t\t\t\t.attr( "aria-disabled", value );\n +\t\t\tthis.hoverable.removeClass( "ui-state-hover" );\n +\t\t\tthis.focusable.removeClass( "ui-state-focus" );\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tenable: function() {\n +\t\treturn this._setOption( "disabled", false );\n +\t},\n +\tdisable: function() {\n +\t\treturn this._setOption( "disabled", true );\n +\t},\n +\n +\t_on: function( suppressDisabledCheck, element, handlers ) {\n +\t\tvar delegateElement,\n +\t\t\tinstance = this;\n +\n +\t\t// no suppressDisabledCheck flag, shuffle arguments\n +\t\tif ( typeof suppressDisabledCheck !== "boolean" ) {\n +\t\t\thandlers = element;\n +\t\t\telement = suppressDisabledCheck;\n +\t\t\tsuppressDisabledCheck = false;\n +\t\t}\n +\n +\t\t// no element argument, shuffle and use this.element\n +\t\tif ( !handlers ) {\n +\t\t\thandlers = element;\n +\t\t\telement = this.element;\n +\t\t\tdelegateElement = this.widget();\n +\t\t} else {\n +\t\t\t// accept selectors, DOM elements\n +\t\t\telement = delegateElement = $( element );\n +\t\t\tthis.bindings = this.bindings.add( element );\n +\t\t}\n +\n +\t\t$.each( handlers, function( event, handler ) {\n +\t\t\tfunction handlerProxy() {\n +\t\t\t\t// allow widgets to customize the disabled handling\n +\t\t\t\t// - disabled as an array instead of boolean\n +\t\t\t\t// - disabled class as method for disabling individual parts\n +\t\t\t\tif ( !suppressDisabledCheck &&\n +\t\t\t\t\t\t( instance.options.disabled === true ||\n +\t\t\t\t\t\t\t$( this ).hasClass( "ui-state-disabled" ) ) ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\treturn ( typeof handler === "string" ? instance[ handler ] : handler )\n +\t\t\t\t\t.apply( instance, arguments );\n +\t\t\t}\n +\n +\t\t\t// copy the guid so direct unbinding works\n +\t\t\tif ( typeof handler !== "string" ) {\n +\t\t\t\thandlerProxy.guid = handler.guid =\n +\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n +\t\t\t}\n +\n +\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n +\t\t\t\teventName = match[1] + instance.eventNamespace,\n +\t\t\t\tselector = match[2];\n +\t\t\tif ( selector ) {\n +\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n +\t\t\t} else {\n +\t\t\t\telement.bind( eventName, handlerProxy );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_off: function( element, eventName ) {\n +\t\teventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;\n +\t\telement.unbind( eventName ).undelegate( eventName );\n +\t},\n +\n +\t_delay: function( handler, delay ) {\n +\t\tfunction handlerProxy() {\n +\t\t\treturn ( typeof handler === "string" ? instance[ handler ] : handler )\n +\t\t\t\t.apply( instance, arguments );\n +\t\t}\n +\t\tvar instance = this;\n +\t\treturn setTimeout( handlerProxy, delay || 0 );\n +\t},\n +\n +\t_hoverable: function( element ) {\n +\t\tthis.hoverable = this.hoverable.add( element );\n +\t\tthis._on( element, {\n +\t\t\tmouseenter: function( event ) {\n +\t\t\t\t$( event.currentTarget ).addClass( "ui-state-hover" );\n +\t\t\t},\n +\t\t\tmouseleave: function( event ) {\n +\t\t\t\t$( event.currentTarget ).removeClass( "ui-state-hover" );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_focusable: function( element ) {\n +\t\tthis.focusable = this.focusable.add( element );\n +\t\tthis._on( element, {\n +\t\t\tfocusin: function( event ) {\n +\t\t\t\t$( event.currentTarget ).addClass( "ui-state-focus" );\n +\t\t\t},\n +\t\t\tfocusout: function( event ) {\n +\t\t\t\t$( event.currentTarget ).removeClass( "ui-state-focus" );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_trigger: function( type, event, data ) {\n +\t\tvar prop, orig,\n +\t\t\tcallback = this.options[ type ];\n +\n +\t\tdata = data || {};\n +\t\tevent = $.Event( event );\n +\t\tevent.type = ( type === this.widgetEventPrefix ?\n +\t\t\ttype :\n +\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n +\t\t// the original event may come from any element\n +\t\t// so we need to reset the target on the new event\n +\t\tevent.target = this.element[ 0 ];\n +\n +\t\t// copy original event properties over to the new event\n +\t\torig = event.originalEvent;\n +\t\tif ( orig ) {\n +\t\t\tfor ( prop in orig ) {\n +\t\t\t\tif ( !( prop in event ) ) {\n +\t\t\t\t\tevent[ prop ] = orig[ prop ];\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\n +\t\tthis.element.trigger( event, data );\n +\t\treturn !( $.isFunction( callback ) &&\n +\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n +\t\t\tevent.isDefaultPrevented() );\n +\t}\n +};\n +\n +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {\n +\t$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {\n +\t\tif ( typeof options === "string" ) {\n +\t\t\toptions = { effect: options };\n +\t\t}\n +\t\tvar hasOptions,\n +\t\t\teffectName = !options ?\n +\t\t\t\tmethod :\n +\t\t\t\toptions === true || typeof options === "number" ?\n +\t\t\t\t\tdefaultEffect :\n +\t\t\t\t\toptions.effect || defaultEffect;\n +\t\toptions = options || {};\n +\t\tif ( typeof options === "number" ) {\n +\t\t\toptions = { duration: options };\n +\t\t}\n +\t\thasOptions = !$.isEmptyObject( options );\n +\t\toptions.complete = callback;\n +\t\tif ( options.delay ) {\n +\t\t\telement.delay( options.delay );\n +\t\t}\n +\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n +\t\t\telement[ method ]( options );\n +\t\t} else if ( effectName !== method && element[ effectName ] ) {\n +\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n +\t\t} else {\n +\t\t\telement.queue(function( next ) {\n +\t\t\t\t$( this )[ method ]();\n +\t\t\t\tif ( callback ) {\n +\t\t\t\t\tcallback.call( element[ 0 ] );\n +\t\t\t\t}\n +\t\t\t\tnext();\n +\t\t\t});\n +\t\t}\n +\t};\n +});\n +\n +// DEPRECATED\n +if ( $.uiBackCompat !== false ) {\n +\t$.Widget.prototype._getCreateOptions = function() {\n +\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n +\t};\n +}\n +\n +})( jQuery );\n +(function( $, undefined ) {\n +\n +var mouseHandled = false;\n +$( document ).mouseup( function( e ) {\n +\tmouseHandled = false;\n +});\n +\n +$.widget("ui.mouse", {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\tcancel: \'input,textarea,button,select,option\',\n +\t\tdistance: 1,\n +\t\tdelay: 0\n +\t},\n +\t_mouseInit: function() {\n +\t\tvar that = this;\n +\n +\t\tthis.element\n +\t\t\t.bind(\'mousedown.\'+this.widgetName, function(event) {\n +\t\t\t\treturn that._mouseDown(event);\n +\t\t\t})\n +\t\t\t.bind(\'click.\'+this.widgetName, function(event) {\n +\t\t\t\tif (true === $.data(event.target, that.widgetName + \'.preventClickEvent\')) {\n +\t\t\t\t\t$.removeData(event.target, that.widgetName + \'.preventClickEvent\');\n +\t\t\t\t\tevent.stopImmediatePropagation();\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t});\n +\n +\t\tthis.started = false;\n +\t},\n +\n +\t// TODO: make sure destroying one instance of mouse doesn\'t mess with\n +\t// other instances of mouse\n +\t_mouseDestroy: function() {\n +\t\tthis.element.unbind(\'.\'+this.widgetName);\n +\t\tif ( this._mouseMoveDelegate ) {\n +\t\t\t$(document)\n +\t\t\t\t.unbind(\'mousemove.\'+this.widgetName, this._mouseMoveDelegate)\n +\t\t\t\t.unbind(\'mouseup.\'+this.widgetName, this._mouseUpDelegate);\n +\t\t}\n +\t},\n +\n +\t_mouseDown: function(event) {\n +\t\t// don\'t let more than one widget handle mouseStart\n +\t\tif( mouseHandled ) { return; }\n +\n +\t\t// we may have missed mouseup (out of window)\n +\t\t(this._mouseStarted && this._mouseUp(event));\n +\n +\t\tthis._mouseDownEvent = event;\n +\n +\t\tvar that = this,\n +\t\t\tbtnIsLeft = (event.which === 1),\n +\t\t\t// event.target.nodeName works around a bug in IE 8 with\n +\t\t\t// disabled inputs (#7620)\n +\t\t\telIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n +\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n +\t\t\treturn true;\n +\t\t}\n +\n +\t\tthis.mouseDelayMet = !this.options.delay;\n +\t\tif (!this.mouseDelayMet) {\n +\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n +\t\t\t\tthat.mouseDelayMet = true;\n +\t\t\t}, this.options.delay);\n +\t\t}\n +\n +\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n +\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n +\t\t\tif (!this._mouseStarted) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t\treturn true;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// Click event may never have fired (Gecko & Opera)\n +\t\tif (true === $.data(event.target, this.widgetName + \'.preventClickEvent\')) {\n +\t\t\t$.removeData(event.target, this.widgetName + \'.preventClickEvent\');\n +\t\t}\n +\n +\t\t// these delegates are required to keep context\n +\t\tthis._mouseMoveDelegate = function(event) {\n +\t\t\treturn that._mouseMove(event);\n +\t\t};\n +\t\tthis._mouseUpDelegate = function(event) {\n +\t\t\treturn that._mouseUp(event);\n +\t\t};\n +\t\t$(document)\n +\t\t\t.bind(\'mousemove.\'+this.widgetName, this._mouseMoveDelegate)\n +\t\t\t.bind(\'mouseup.\'+this.widgetName, this._mouseUpDelegate);\n +\n +\t\tevent.preventDefault();\n +\n +\t\tmouseHandled = true;\n +\t\treturn true;\n +\t},\n +\n +\t_mouseMove: function(event) {\n +\t\t// IE mouseup check - mouseup happened when mouse was out of window\n +\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n +\t\t\treturn this._mouseUp(event);\n +\t\t}\n +\n +\t\tif (this._mouseStarted) {\n +\t\t\tthis._mouseDrag(event);\n +\t\t\treturn event.preventDefault();\n +\t\t}\n +\n +\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n +\t\t\tthis._mouseStarted =\n +\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n +\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n +\t\t}\n +\n +\t\treturn !this._mouseStarted;\n +\t},\n +\n +\t_mouseUp: function(event) {\n +\t\t$(document)\n +\t\t\t.unbind(\'mousemove.\'+this.widgetName, this._mouseMoveDelegate)\n +\t\t\t.unbind(\'mouseup.\'+this.widgetName, this._mouseUpDelegate);\n +\n +\t\tif (this._mouseStarted) {\n +\t\t\tthis._mouseStarted = false;\n +\n +\t\t\tif (event.target === this._mouseDownEvent.target) {\n +\t\t\t\t$.data(event.target, this.widgetName + \'.preventClickEvent\', true);\n +\t\t\t}\n +\n +\t\t\tthis._mouseStop(event);\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\t_mouseDistanceMet: function(event) {\n +\t\treturn (Math.max(\n +\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n +\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n +\t\t\t) >= this.options.distance\n +\t\t);\n +\t},\n +\n +\t_mouseDelayMet: function(event) {\n +\t\treturn this.mouseDelayMet;\n +\t},\n +\n +\t// These are placeholder methods, to be overriden by extending plugin\n +\t_mouseStart: function(event) {},\n +\t_mouseDrag: function(event) {},\n +\t_mouseStop: function(event) {},\n +\t_mouseCapture: function(event) { return true; }\n +});\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.ui = $.ui || {};\n +\n +var cachedScrollbarWidth,\n +\tmax = Math.max,\n +\tabs = Math.abs,\n +\tround = Math.round,\n +\trhorizontal = /left|center|right/,\n +\trvertical = /top|center|bottom/,\n +\troffset = /[\\+\\-]\\d+%?/,\n +\trposition = /^\\w+/,\n +\trpercent = /%$/,\n +\t_position = $.fn.position;\n +\n +function getOffsets( offsets, width, height ) {\n +\treturn [\n +\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n +\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n +\t];\n +}\n +function parseCss( element, property ) {\n +\treturn parseInt( $.css( element, property ), 10 ) || 0;\n +}\n +\n +$.position = {\n +\tscrollbarWidth: function() {\n +\t\tif ( cachedScrollbarWidth !== undefined ) {\n +\t\t\treturn cachedScrollbarWidth;\n +\t\t}\n +\t\tvar w1, w2,\n +\t\t\tdiv = $( "<div style=\'display:block;width:50px;height:50px;overflow:hidden;\'><div style=\'height:100px;width:auto;\'></div></div>" ),\n +\t\t\tinnerDiv = div.children()[0];\n +\n +\t\t$( "body" ).append( div );\n +\t\tw1 = innerDiv.offsetWidth;\n +\t\tdiv.css( "overflow", "scroll" );\n +\n +\t\tw2 = innerDiv.offsetWidth;\n +\n +\t\tif ( w1 === w2 ) {\n +\t\t\tw2 = div[0].clientWidth;\n +\t\t}\n +\n +\t\tdiv.remove();\n +\n +\t\treturn (cachedScrollbarWidth = w1 - w2);\n +\t},\n +\tgetScrollInfo: function( within ) {\n +\t\tvar overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),\n +\t\t\toverflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),\n +\t\t\thasOverflowX = overflowX === "scroll" ||\n +\t\t\t\t( overflowX === "auto" && within.width < within.element[0].scrollWidth ),\n +\t\t\thasOverflowY = overflowY === "scroll" ||\n +\t\t\t\t( overflowY === "auto" && within.height < within.element[0].scrollHeight );\n +\t\treturn {\n +\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n +\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n +\t\t};\n +\t},\n +\tgetWithinInfo: function( element ) {\n +\t\tvar withinElement = $( element || window ),\n +\t\t\tisWindow = $.isWindow( withinElement[0] );\n +\t\treturn {\n +\t\t\telement: withinElement,\n +\t\t\tisWindow: isWindow,\n +\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n +\t\t\tscrollLeft: withinElement.scrollLeft(),\n +\t\t\tscrollTop: withinElement.scrollTop(),\n +\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n +\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n +\t\t};\n +\t}\n +};\n +\n +$.fn.position = function( options ) {\n +\tif ( !options || !options.of ) {\n +\t\treturn _position.apply( this, arguments );\n +\t}\n +\n +\t// make a copy, we don\'t want to modify arguments\n +\toptions = $.extend( {}, options );\n +\n +\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n +\t\ttarget = $( options.of ),\n +\t\twithin = $.position.getWithinInfo( options.within ),\n +\t\tscrollInfo = $.position.getScrollInfo( within ),\n +\t\ttargetElem = target[0],\n +\t\tcollision = ( options.collision || "flip" ).split( " " ),\n +\t\toffsets = {};\n +\n +\tif ( targetElem.nodeType === 9 ) {\n +\t\ttargetWidth = target.width();\n +\t\ttargetHeight = target.height();\n +\t\ttargetOffset = { top: 0, left: 0 };\n +\t} else if ( $.isWindow( targetElem ) ) {\n +\t\ttargetWidth = target.width();\n +\t\ttargetHeight = target.height();\n +\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n +\t} else if ( targetElem.preventDefault ) {\n +\t\t// force left top to allow flipping\n +\t\toptions.at = "left top";\n +\t\ttargetWidth = targetHeight = 0;\n +\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n +\t} else {\n +\t\ttargetWidth = target.outerWidth();\n +\t\ttargetHeight = target.outerHeight();\n +\t\ttargetOffset = target.offset();\n +\t}\n +\t// clone to reuse original targetOffset later\n +\tbasePosition = $.extend( {}, targetOffset );\n +\n +\t// force my and at to have valid horizontal and vertical positions\n +\t// if a value is missing or invalid, it will be converted to center\n +\t$.each( [ "my", "at" ], function() {\n +\t\tvar pos = ( options[ this ] || "" ).split( " " ),\n +\t\t\thorizontalOffset,\n +\t\t\tverticalOffset;\n +\n +\t\tif ( pos.length === 1) {\n +\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n +\t\t\t\tpos.concat( [ "center" ] ) :\n +\t\t\t\trvertical.test( pos[ 0 ] ) ?\n +\t\t\t\t\t[ "center" ].concat( pos ) :\n +\t\t\t\t\t[ "center", "center" ];\n +\t\t}\n +\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";\n +\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";\n +\n +\t\t// calculate offsets\n +\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n +\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n +\t\toffsets[ this ] = [\n +\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n +\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n +\t\t];\n +\n +\t\t// reduce to just the positions without the offsets\n +\t\toptions[ this ] = [\n +\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n +\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n +\t\t];\n +\t});\n +\n +\t// normalize collision option\n +\tif ( collision.length === 1 ) {\n +\t\tcollision[ 1 ] = collision[ 0 ];\n +\t}\n +\n +\tif ( options.at[ 0 ] === "right" ) {\n +\t\tbasePosition.left += targetWidth;\n +\t} else if ( options.at[ 0 ] === "center" ) {\n +\t\tbasePosition.left += targetWidth / 2;\n +\t}\n +\n +\tif ( options.at[ 1 ] === "bottom" ) {\n +\t\tbasePosition.top += targetHeight;\n +\t} else if ( options.at[ 1 ] === "center" ) {\n +\t\tbasePosition.top += targetHeight / 2;\n +\t}\n +\n +\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n +\tbasePosition.left += atOffset[ 0 ];\n +\tbasePosition.top += atOffset[ 1 ];\n +\n +\treturn this.each(function() {\n +\t\tvar collisionPosition, using,\n +\t\t\telem = $( this ),\n +\t\t\telemWidth = elem.outerWidth(),\n +\t\t\telemHeight = elem.outerHeight(),\n +\t\t\tmarginLeft = parseCss( this, "marginLeft" ),\n +\t\t\tmarginTop = parseCss( this, "marginTop" ),\n +\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,\n +\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,\n +\t\t\tposition = $.extend( {}, basePosition ),\n +\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n +\n +\t\tif ( options.my[ 0 ] === "right" ) {\n +\t\t\tposition.left -= elemWidth;\n +\t\t} else if ( options.my[ 0 ] === "center" ) {\n +\t\t\tposition.left -= elemWidth / 2;\n +\t\t}\n +\n +\t\tif ( options.my[ 1 ] === "bottom" ) {\n +\t\t\tposition.top -= elemHeight;\n +\t\t} else if ( options.my[ 1 ] === "center" ) {\n +\t\t\tposition.top -= elemHeight / 2;\n +\t\t}\n +\n +\t\tposition.left += myOffset[ 0 ];\n +\t\tposition.top += myOffset[ 1 ];\n +\n +\t\t// if the browser doesn\'t support fractions, then round for consistent results\n +\t\tif ( !$.support.offsetFractions ) {\n +\t\t\tposition.left = round( position.left );\n +\t\t\tposition.top = round( position.top );\n +\t\t}\n +\n +\t\tcollisionPosition = {\n +\t\t\tmarginLeft: marginLeft,\n +\t\t\tmarginTop: marginTop\n +\t\t};\n +\n +\t\t$.each( [ "left", "top" ], function( i, dir ) {\n +\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n +\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n +\t\t\t\t\ttargetWidth: targetWidth,\n +\t\t\t\t\ttargetHeight: targetHeight,\n +\t\t\t\t\telemWidth: elemWidth,\n +\t\t\t\t\telemHeight: elemHeight,\n +\t\t\t\t\tcollisionPosition: collisionPosition,\n +\t\t\t\t\tcollisionWidth: collisionWidth,\n +\t\t\t\t\tcollisionHeight: collisionHeight,\n +\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n +\t\t\t\t\tmy: options.my,\n +\t\t\t\t\tat: options.at,\n +\t\t\t\t\twithin: within,\n +\t\t\t\t\telem : elem\n +\t\t\t\t});\n +\t\t\t}\n +\t\t});\n +\n +\t\tif ( $.fn.bgiframe ) {\n +\t\t\telem.bgiframe();\n +\t\t}\n +\n +\t\tif ( options.using ) {\n +\t\t\t// adds feedback as second argument to using callback, if present\n +\t\t\tusing = function( props ) {\n +\t\t\t\tvar left = targetOffset.left - position.left,\n +\t\t\t\t\tright = left + targetWidth - elemWidth,\n +\t\t\t\t\ttop = targetOffset.top - position.top,\n +\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n +\t\t\t\t\tfeedback = {\n +\t\t\t\t\t\ttarget: {\n +\t\t\t\t\t\t\telement: target,\n +\t\t\t\t\t\t\tleft: targetOffset.left,\n +\t\t\t\t\t\t\ttop: targetOffset.top,\n +\t\t\t\t\t\t\twidth: targetWidth,\n +\t\t\t\t\t\t\theight: targetHeight\n +\t\t\t\t\t\t},\n +\t\t\t\t\t\telement: {\n +\t\t\t\t\t\t\telement: elem,\n +\t\t\t\t\t\t\tleft: position.left,\n +\t\t\t\t\t\t\ttop: position.top,\n +\t\t\t\t\t\t\twidth: elemWidth,\n +\t\t\t\t\t\t\theight: elemHeight\n +\t\t\t\t\t\t},\n +\t\t\t\t\t\thorizontal: right < 0 ? "left" : left > 0 ? "right" : "center",\n +\t\t\t\t\t\tvertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"\n +\t\t\t\t\t};\n +\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n +\t\t\t\t\tfeedback.horizontal = "center";\n +\t\t\t\t}\n +\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n +\t\t\t\t\tfeedback.vertical = "middle";\n +\t\t\t\t}\n +\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n +\t\t\t\t\tfeedback.important = "horizontal";\n +\t\t\t\t} else {\n +\t\t\t\t\tfeedback.important = "vertical";\n +\t\t\t\t}\n +\t\t\t\toptions.using.call( this, props, feedback );\n +\t\t\t};\n +\t\t}\n +\n +\t\telem.offset( $.extend( position, { using: using } ) );\n +\t});\n +};\n +\n +$.ui.position = {\n +\tfit: {\n +\t\tleft: function( position, data ) {\n +\t\t\tvar within = data.within,\n +\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n +\t\t\t\touterWidth = within.width,\n +\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n +\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n +\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n +\t\t\t\tnewOverRight;\n +\n +\t\t\t// element is wider than within\n +\t\t\tif ( data.collisionWidth > outerWidth ) {\n +\t\t\t\t// element is initially over the left side of within\n +\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n +\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n +\t\t\t\t\tposition.left += overLeft - newOverRight;\n +\t\t\t\t// element is initially over right side of within\n +\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n +\t\t\t\t\tposition.left = withinOffset;\n +\t\t\t\t// element is initially over both left and right sides of within\n +\t\t\t\t} else {\n +\t\t\t\t\tif ( overLeft > overRight ) {\n +\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tposition.left = withinOffset;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t// too far left -> align with left edge\n +\t\t\t} else if ( overLeft > 0 ) {\n +\t\t\t\tposition.left += overLeft;\n +\t\t\t// too far right -> align with right edge\n +\t\t\t} else if ( overRight > 0 ) {\n +\t\t\t\tposition.left -= overRight;\n +\t\t\t// adjust based on position and margin\n +\t\t\t} else {\n +\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n +\t\t\t}\n +\t\t},\n +\t\ttop: function( position, data ) {\n +\t\t\tvar within = data.within,\n +\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n +\t\t\t\touterHeight = data.within.height,\n +\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n +\t\t\t\toverTop = withinOffset - collisionPosTop,\n +\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n +\t\t\t\tnewOverBottom;\n +\n +\t\t\t// element is taller than within\n +\t\t\tif ( data.collisionHeight > outerHeight ) {\n +\t\t\t\t// element is initially over the top of within\n +\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n +\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n +\t\t\t\t\tposition.top += overTop - newOverBottom;\n +\t\t\t\t// element is initially over bottom of within\n +\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n +\t\t\t\t\tposition.top = withinOffset;\n +\t\t\t\t// element is initially over both top and bottom of within\n +\t\t\t\t} else {\n +\t\t\t\t\tif ( overTop > overBottom ) {\n +\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tposition.top = withinOffset;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t// too far up -> align with top\n +\t\t\t} else if ( overTop > 0 ) {\n +\t\t\t\tposition.top += overTop;\n +\t\t\t// too far down -> align with bottom edge\n +\t\t\t} else if ( overBottom > 0 ) {\n +\t\t\t\tposition.top -= overBottom;\n +\t\t\t// adjust based on position and margin\n +\t\t\t} else {\n +\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n +\t\t\t}\n +\t\t}\n +\t},\n +\tflip: {\n +\t\tleft: function( position, data ) {\n +\t\t\tvar within = data.within,\n +\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n +\t\t\t\touterWidth = within.width,\n +\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n +\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n +\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n +\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n +\t\t\t\tmyOffset = data.my[ 0 ] === "left" ?\n +\t\t\t\t\t-data.elemWidth :\n +\t\t\t\t\tdata.my[ 0 ] === "right" ?\n +\t\t\t\t\t\tdata.elemWidth :\n +\t\t\t\t\t\t0,\n +\t\t\t\tatOffset = data.at[ 0 ] === "left" ?\n +\t\t\t\t\tdata.targetWidth :\n +\t\t\t\t\tdata.at[ 0 ] === "right" ?\n +\t\t\t\t\t\t-data.targetWidth :\n +\t\t\t\t\t\t0,\n +\t\t\t\toffset = -2 * data.offset[ 0 ],\n +\t\t\t\tnewOverRight,\n +\t\t\t\tnewOverLeft;\n +\n +\t\t\tif ( overLeft < 0 ) {\n +\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n +\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n +\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\telse if ( overRight > 0 ) {\n +\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n +\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n +\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\ttop: function( position, data ) {\n +\t\t\tvar within = data.within,\n +\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n +\t\t\t\touterHeight = within.height,\n +\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n +\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n +\t\t\t\toverTop = collisionPosTop - offsetTop,\n +\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n +\t\t\t\ttop = data.my[ 1 ] === "top",\n +\t\t\t\tmyOffset = top ?\n +\t\t\t\t\t-data.elemHeight :\n +\t\t\t\t\tdata.my[ 1 ] === "bottom" ?\n +\t\t\t\t\t\tdata.elemHeight :\n +\t\t\t\t\t\t0,\n +\t\t\t\tatOffset = data.at[ 1 ] === "top" ?\n +\t\t\t\t\tdata.targetHeight :\n +\t\t\t\t\tdata.at[ 1 ] === "bottom" ?\n +\t\t\t\t\t\t-data.targetHeight :\n +\t\t\t\t\t\t0,\n +\t\t\t\toffset = -2 * data.offset[ 1 ],\n +\t\t\t\tnewOverTop,\n +\t\t\t\tnewOverBottom;\n +\t\t\tif ( overTop < 0 ) {\n +\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n +\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n +\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\telse if ( overBottom > 0 ) {\n +\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n +\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n +\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\tflipfit: {\n +\t\tleft: function() {\n +\t\t\t$.ui.position.flip.left.apply( this, arguments );\n +\t\t\t$.ui.position.fit.left.apply( this, arguments );\n +\t\t},\n +\t\ttop: function() {\n +\t\t\t$.ui.position.flip.top.apply( this, arguments );\n +\t\t\t$.ui.position.fit.top.apply( this, arguments );\n +\t\t}\n +\t}\n +};\n +\n +// fraction support test\n +(function () {\n +\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n +\t\tbody = document.getElementsByTagName( "body" )[ 0 ],\n +\t\tdiv = document.createElement( "div" );\n +\n +\t//Create a "fake body" for testing based on method used in jQuery.support\n +\ttestElement = document.createElement( body ? "div" : "body" );\n +\ttestElementStyle = {\n +\t\tvisibility: "hidden",\n +\t\twidth: 0,\n +\t\theight: 0,\n +\t\tborder: 0,\n +\t\tmargin: 0,\n +\t\tbackground: "none"\n +\t};\n +\tif ( body ) {\n +\t\t$.extend( testElementStyle, {\n +\t\t\tposition: "absolute",\n +\t\t\tleft: "-1000px",\n +\t\t\ttop: "-1000px"\n +\t\t});\n +\t}\n +\tfor ( i in testElementStyle ) {\n +\t\ttestElement.style[ i ] = testElementStyle[ i ];\n +\t}\n +\ttestElement.appendChild( div );\n +\ttestElementParent = body || document.documentElement;\n +\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n +\n +\tdiv.style.cssText = "position: absolute; left: 10.7432222px;";\n +\n +\toffsetLeft = $( div ).offset().left;\n +\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n +\n +\ttestElement.innerHTML = "";\n +\ttestElementParent.removeChild( testElement );\n +})();\n +\n +// DEPRECATED\n +if ( $.uiBackCompat !== false ) {\n +\t// offset option\n +\t(function( $ ) {\n +\t\tvar _position = $.fn.position;\n +\t\t$.fn.position = function( options ) {\n +\t\t\tif ( !options || !options.offset ) {\n +\t\t\t\treturn _position.call( this, options );\n +\t\t\t}\n +\t\t\tvar offset = options.offset.split( " " ),\n +\t\t\t\tat = options.at.split( " " );\n +\t\t\tif ( offset.length === 1 ) {\n +\t\t\t\toffset[ 1 ] = offset[ 0 ];\n +\t\t\t}\n +\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n +\t\t\t\toffset[ 0 ] = "+" + offset[ 0 ];\n +\t\t\t}\n +\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n +\t\t\t\toffset[ 1 ] = "+" + offset[ 1 ];\n +\t\t\t}\n +\t\t\tif ( at.length === 1 ) {\n +\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n +\t\t\t\t\tat[ 1 ] = "center";\n +\t\t\t\t} else {\n +\t\t\t\t\tat[ 1 ] = at[ 0 ];\n +\t\t\t\t\tat[ 0 ] = "center";\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn _position.call( this, $.extend( options, {\n +\t\t\t\tat: at[ 0 ] + offset[ 0 ] + " " + at[ 1 ] + offset[ 1 ],\n +\t\t\t\toffset: undefined\n +\t\t\t} ) );\n +\t\t};\n +\t}( jQuery ) );\n +}\n +\n +}( jQuery ) );\n +(function( $, undefined ) {\n +\n +$.widget("ui.draggable", $.ui.mouse, {\n +\tversion: "1.9.2",\n +\twidgetEventPrefix: "drag",\n +\toptions: {\n +\t\taddClasses: true,\n +\t\tappendTo: "parent",\n +\t\taxis: false,\n +\t\tconnectToSortable: false,\n +\t\tcontainment: false,\n +\t\tcursor: "auto",\n +\t\tcursorAt: false,\n +\t\tgrid: false,\n +\t\thandle: false,\n +\t\thelper: "original",\n +\t\tiframeFix: false,\n +\t\topacity: false,\n +\t\trefreshPositions: false,\n +\t\trevert: false,\n +\t\trevertDuration: 500,\n +\t\tscope: "default",\n +\t\tscroll: true,\n +\t\tscrollSensitivity: 20,\n +\t\tscrollSpeed: 20,\n +\t\tsnap: false,\n +\t\tsnapMode: "both",\n +\t\tsnapTolerance: 20,\n +\t\tstack: false,\n +\t\tzIndex: false\n +\t},\n +\t_create: function() {\n +\n +\t\tif (this.options.helper == \'original\' && !(/^(?:r|a|f)/).test(this.element.css("position")))\n +\t\t\tthis.element[0].style.position = \'relative\';\n +\n +\t\t(this.options.addClasses && this.element.addClass("ui-draggable"));\n +\t\t(this.options.disabled && this.element.addClass("ui-draggable-disabled"));\n +\n +\t\tthis._mouseInit();\n +\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );\n +\t\tthis._mouseDestroy();\n +\t},\n +\n +\t_mouseCapture: function(event) {\n +\n +\t\tvar o = this.options;\n +\n +\t\t// among others, prevent a drag on a resizable-handle\n +\t\tif (this.helper || o.disabled || $(event.target).is(\'.ui-resizable-handle\'))\n +\t\t\treturn false;\n +\n +\t\t//Quit if we\'re not on a valid handle\n +\t\tthis.handle = this._getHandle(event);\n +\t\tif (!this.handle)\n +\t\t\treturn false;\n +\n +\t\t$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {\n +\t\t\t$(\'<div class="ui-draggable-iframeFix" style="background: #fff;"></div>\')\n +\t\t\t.css({\n +\t\t\t\twidth: this.offsetWidth+"px", height: this.offsetHeight+"px",\n +\t\t\t\tposition: "absolute", opacity: "0.001", zIndex: 1000\n +\t\t\t})\n +\t\t\t.css($(this).offset())\n +\t\t\t.appendTo("body");\n +\t\t});\n +\n +\t\treturn true;\n +\n +\t},\n +\n +\t_mouseStart: function(event) {\n +\n +\t\tvar o = this.options;\n +\n +\t\t//Create and append the visible helper\n +\t\tthis.helper = this._createHelper(event);\n +\n +\t\tthis.helper.addClass("ui-draggable-dragging");\n +\n +\t\t//Cache the helper size\n +\t\tthis._cacheHelperProportions();\n +\n +\t\t//If ddmanager is used for droppables, set the global draggable\n +\t\tif($.ui.ddmanager)\n +\t\t\t$.ui.ddmanager.current = this;\n +\n +\t\t/*\n +\t\t * - Position generation -\n +\t\t * This block generates everything position related - it\'s the core of draggables.\n +\t\t */\n +\n +\t\t//Cache the margins of the original element\n +\t\tthis._cacheMargins();\n +\n +\t\t//Store the helper\'s css position\n +\t\tthis.cssPosition = this.helper.css("position");\n +\t\tthis.scrollParent = this.helper.scrollParent();\n +\n +\t\t//The element\'s absolute position on the page minus margins\n +\t\tthis.offset = this.positionAbs = this.element.offset();\n +\t\tthis.offset = {\n +\t\t\ttop: this.offset.top - this.margins.top,\n +\t\t\tleft: this.offset.left - this.margins.left\n +\t\t};\n +\n +\t\t$.extend(this.offset, {\n +\t\t\tclick: { //Where the click happened, relative to the element\n +\t\t\t\tleft: event.pageX - this.offset.left,\n +\t\t\t\ttop: event.pageY - this.offset.top\n +\t\t\t},\n +\t\t\tparent: this._getParentOffset(),\n +\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n +\t\t});\n +\n +\t\t//Generate the original position\n +\t\tthis.originalPosition = this.position = this._generatePosition(event);\n +\t\tthis.originalPageX = event.pageX;\n +\t\tthis.originalPageY = event.pageY;\n +\n +\t\t//Adjust the mouse offset relative to the helper if \'cursorAt\' is supplied\n +\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n +\n +\t\t//Set a containment if given in the options\n +\t\tif(o.containment)\n +\t\t\tthis._setContainment();\n +\n +\t\t//Trigger event + callbacks\n +\t\tif(this._trigger("start", event) === false) {\n +\t\t\tthis._clear();\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\t//Recache the helper size\n +\t\tthis._cacheHelperProportions();\n +\n +\t\t//Prepare the droppable offsets\n +\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n +\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n +\n +\n +\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n +\n +\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n +\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n +\n +\t\treturn true;\n +\t},\n +\n +\t_mouseDrag: function(event, noPropagation) {\n +\n +\t\t//Compute the helpers position\n +\t\tthis.position = this._generatePosition(event);\n +\t\tthis.positionAbs = this._convertPositionTo("absolute");\n +\n +\t\t//Call plugins and callbacks and use the resulting position if something is returned\n +\t\tif (!noPropagation) {\n +\t\t\tvar ui = this._uiHash();\n +\t\t\tif(this._trigger(\'drag\', event, ui) === false) {\n +\t\t\t\tthis._mouseUp({});\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\tthis.position = ui.position;\n +\t\t}\n +\n +\t\tif(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+\'px\';\n +\t\tif(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+\'px\';\n +\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n +\n +\t\treturn false;\n +\t},\n +\n +\t_mouseStop: function(event) {\n +\n +\t\t//If we are using droppables, inform the manager about the drop\n +\t\tvar dropped = false;\n +\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n +\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n +\n +\t\t//if a drop comes from outside (a sortable)\n +\t\tif(this.dropped) {\n +\t\t\tdropped = this.dropped;\n +\t\t\tthis.dropped = false;\n +\t\t}\n +\n +\t\t//if the original element is no longer in the DOM don\'t bother to continue (see #8269)\n +\t\tvar element = this.element[0], elementInDom = false;\n +\t\twhile ( element && (element = element.parentNode) ) {\n +\t\t\tif (element == document ) {\n +\t\t\t\telementInDom = true;\n +\t\t\t}\n +\t\t}\n +\t\tif ( !elementInDom && this.options.helper === "original" )\n +\t\t\treturn false;\n +\n +\t\tif((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n +\t\t\tvar that = this;\n +\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n +\t\t\t\tif(that._trigger("stop", event) !== false) {\n +\t\t\t\t\tthat._clear();\n +\t\t\t\t}\n +\t\t\t});\n +\t\t} else {\n +\t\t\tif(this._trigger("stop", event) !== false) {\n +\t\t\t\tthis._clear();\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\t_mouseUp: function(event) {\n +\t\t//Remove frame helpers\n +\t\t$("div.ui-draggable-iframeFix").each(function() {\n +\t\t\tthis.parentNode.removeChild(this);\n +\t\t});\n +\n +\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n +\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n +\n +\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n +\t},\n +\n +\tcancel: function() {\n +\n +\t\tif(this.helper.is(".ui-draggable-dragging")) {\n +\t\t\tthis._mouseUp({});\n +\t\t} else {\n +\t\t\tthis._clear();\n +\t\t}\n +\n +\t\treturn this;\n +\n +\t},\n +\n +\t_getHandle: function(event) {\n +\n +\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n +\t\t$(this.options.handle, this.element)\n +\t\t\t.find("*")\n +\t\t\t.andSelf()\n +\t\t\t.each(function() {\n +\t\t\t\tif(this == event.target) handle = true;\n +\t\t\t});\n +\n +\t\treturn handle;\n +\n +\t},\n +\n +\t_createHelper: function(event) {\n +\n +\t\tvar o = this.options;\n +\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == \'clone\' ? this.element.clone().removeAttr(\'id\') : this.element);\n +\n +\t\tif(!helper.parents(\'body\').length)\n +\t\t\thelper.appendTo((o.appendTo == \'parent\' ? this.element[0].parentNode : o.appendTo));\n +\n +\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))\n +\t\t\thelper.css("position", "absolute");\n +\n +\t\treturn helper;\n +\n +\t},\n +\n +\t_adjustOffsetFromHelper: function(obj) {\n +\t\tif (typeof obj == \'string\') {\n +\t\t\tobj = obj.split(\' \');\n +\t\t}\n +\t\tif ($.isArray(obj)) {\n +\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n +\t\t}\n +\t\tif (\'left\' in obj) {\n +\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n +\t\t}\n +\t\tif (\'right\' in obj) {\n +\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n +\t\t}\n +\t\tif (\'top\' in obj) {\n +\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n +\t\t}\n +\t\tif (\'bottom\' in obj) {\n +\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n +\t\t}\n +\t},\n +\n +\t_getParentOffset: function() {\n +\n +\t\t//Get the offsetParent and cache its position\n +\t\tthis.offsetParent = this.helper.offsetParent();\n +\t\tvar po = this.offsetParent.offset();\n +\n +\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n +\t\t// 1. The position of the helper is absolute, so it\'s position is calculated based on the next positioned parent\n +\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn\'t the document, which means that\n +\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n +\t\tif(this.cssPosition == \'absolute\' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n +\t\t\tpo.left += this.scrollParent.scrollLeft();\n +\t\t\tpo.top += this.scrollParent.scrollTop();\n +\t\t}\n +\n +\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n +\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == \'html\' && $.ui.ie)) //Ugly IE fix\n +\t\t\tpo = { top: 0, left: 0 };\n +\n +\t\treturn {\n +\t\t\ttop: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),\n +\t\t\tleft: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)\n +\t\t};\n +\n +\t},\n +\n +\t_getRelativeOffset: function() {\n +\n +\t\tif(this.cssPosition == "relative") {\n +\t\t\tvar p = this.element.position();\n +\t\t\treturn {\n +\t\t\t\ttop: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),\n +\t\t\t\tleft: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()\n +\t\t\t};\n +\t\t} else {\n +\t\t\treturn { top: 0, left: 0 };\n +\t\t}\n +\n +\t},\n +\n +\t_cacheMargins: function() {\n +\t\tthis.margins = {\n +\t\t\tleft: (parseInt(this.element.css("marginLeft"),10) || 0),\n +\t\t\ttop: (parseInt(this.element.css("marginTop"),10) || 0),\n +\t\t\tright: (parseInt(this.element.css("marginRight"),10) || 0),\n +\t\t\tbottom: (parseInt(this.element.css("marginBottom"),10) || 0)\n +\t\t};\n +\t},\n +\n +\t_cacheHelperProportions: function() {\n +\t\tthis.helperProportions = {\n +\t\t\twidth: this.helper.outerWidth(),\n +\t\t\theight: this.helper.outerHeight()\n +\t\t};\n +\t},\n +\n +\t_setContainment: function() {\n +\n +\t\tvar o = this.options;\n +\t\tif(o.containment == \'parent\') o.containment = this.helper[0].parentNode;\n +\t\tif(o.containment == \'document\' || o.containment == \'window\') this.containment = [\n +\t\t\to.containment == \'document\' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n +\t\t\to.containment == \'document\' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n +\t\t\t(o.containment == \'document\' ? 0 : $(window).scrollLeft()) + $(o.containment == \'document\' ? document : window).width() - this.helperProportions.width - this.margins.left,\n +\t\t\t(o.containment == \'document\' ? 0 : $(window).scrollTop()) + ($(o.containment == \'document\' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n +\t\t];\n +\n +\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n +\t\t\tvar c = $(o.containment);\n +\t\t\tvar ce = c[0]; if(!ce) return;\n +\t\t\tvar co = c.offset();\n +\t\t\tvar over = ($(ce).css("overflow") != \'hidden\');\n +\n +\t\t\tthis.containment = [\n +\t\t\t\t(parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),\n +\t\t\t\t(parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),\n +\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n +\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom\n +\t\t\t];\n +\t\t\tthis.relative_container = c;\n +\n +\t\t} else if(o.containment.constructor == Array) {\n +\t\t\tthis.containment = o.containment;\n +\t\t}\n +\n +\t},\n +\n +\t_convertPositionTo: function(d, pos) {\n +\n +\t\tif(!pos) pos = this.position;\n +\t\tvar mod = d == "absolute" ? 1 : -1;\n +\t\tvar o = this.options, scroll = this.cssPosition == \'absolute\' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n +\n +\t\treturn {\n +\t\t\ttop: (\n +\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t- ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n +\t\t\t),\n +\t\t\tleft: (\n +\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t- ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n +\t\t\t)\n +\t\t};\n +\n +\t},\n +\n +\t_generatePosition: function(event) {\n +\n +\t\tvar o = this.options, scroll = this.cssPosition == \'absolute\' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n +\t\tvar pageX = event.pageX;\n +\t\tvar pageY = event.pageY;\n +\n +\t\t/*\n +\t\t * - Position constraining -\n +\t\t * Constrain the position to a mix of grid, containment.\n +\t\t */\n +\n +\t\tif(this.originalPosition) { //If we are not dragging yet, we won\'t check for options\n +\t\t\tvar containment;\n +\t\t\tif(this.containment) {\n +\t\t\tif (this.relative_container){\n +\t\t\t\tvar co = this.relative_container.offset();\n +\t\t\t\tcontainment = [ this.containment[0] + co.left,\n +\t\t\t\t\tthis.containment[1] + co.top,\n +\t\t\t\t\tthis.containment[2] + co.left,\n +\t\t\t\t\tthis.containment[3] + co.top ];\n +\t\t\t}\n +\t\t\telse {\n +\t\t\t\tcontainment = this.containment;\n +\t\t\t}\n +\n +\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n +\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n +\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n +\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n +\t\t\t}\n +\n +\t\t\tif(o.grid) {\n +\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n +\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n +\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n +\n +\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n +\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n +\t\t\t}\n +\n +\t\t}\n +\n +\t\treturn {\n +\t\t\ttop: (\n +\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n +\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t+ ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n +\t\t\t),\n +\t\t\tleft: (\n +\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n +\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t+ ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n +\t\t\t)\n +\t\t};\n +\n +\t},\n +\n +\t_clear: function() {\n +\t\tthis.helper.removeClass("ui-draggable-dragging");\n +\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n +\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n +\t\tthis.helper = null;\n +\t\tthis.cancelHelperRemoval = false;\n +\t},\n +\n +\t// From now on bulk stuff - mainly helpers\n +\n +\t_trigger: function(type, event, ui) {\n +\t\tui = ui || this._uiHash();\n +\t\t$.ui.plugin.call(this, type, [event, ui]);\n +\t\tif(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins\n +\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n +\t},\n +\n +\tplugins: {},\n +\n +\t_uiHash: function(event) {\n +\t\treturn {\n +\t\t\thelper: this.helper,\n +\t\t\tposition: this.position,\n +\t\t\toriginalPosition: this.originalPosition,\n +\t\t\toffset: this.positionAbs\n +\t\t};\n +\t}\n +\n +});\n +\n +$.ui.plugin.add("draggable", "connectToSortable", {\n +\tstart: function(event, ui) {\n +\n +\t\tvar inst = $(this).data("draggable"), o = inst.options,\n +\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n +\t\tinst.sortables = [];\n +\t\t$(o.connectToSortable).each(function() {\n +\t\t\tvar sortable = $.data(this, \'sortable\');\n +\t\t\tif (sortable && !sortable.options.disabled) {\n +\t\t\t\tinst.sortables.push({\n +\t\t\t\t\tinstance: sortable,\n +\t\t\t\t\tshouldRevert: sortable.options.revert\n +\t\t\t\t});\n +\t\t\t\tsortable.refreshPositions();\t// Call the sortable\'s refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it\'s initialised as well as being kept in step with any changes that might have happened on the page).\n +\t\t\t\tsortable._trigger("activate", event, uiSortable);\n +\t\t\t}\n +\t\t});\n +\n +\t},\n +\tstop: function(event, ui) {\n +\n +\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n +\t\tvar inst = $(this).data("draggable"),\n +\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n +\n +\t\t$.each(inst.sortables, function() {\n +\t\t\tif(this.instance.isOver) {\n +\n +\t\t\t\tthis.instance.isOver = 0;\n +\n +\t\t\t\tinst.cancelHelperRemoval = true; //Don\'t remove the helper in the draggable instance\n +\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n +\n +\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: \'valid/invalid\'\n +\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n +\n +\t\t\t\t//Trigger the stop of the sortable\n +\t\t\t\tthis.instance._mouseStop(event);\n +\n +\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n +\n +\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n +\t\t\t\tif(inst.options.helper == \'original\')\n +\t\t\t\t\tthis.instance.currentItem.css({ top: \'auto\', left: \'auto\' });\n +\n +\t\t\t} else {\n +\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n +\t\t\t\tthis.instance._trigger("deactivate", event, uiSortable);\n +\t\t\t}\n +\n +\t\t});\n +\n +\t},\n +\tdrag: function(event, ui) {\n +\n +\t\tvar inst = $(this).data("draggable"), that = this;\n +\n +\t\tvar checkPos = function(o) {\n +\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n +\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n +\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n +\t\t\tvar itemTop = o.top, itemLeft = o.left;\n +\n +\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n +\t\t};\n +\n +\t\t$.each(inst.sortables, function(i) {\n +\n +\t\t\tvar innermostIntersecting = false;\n +\t\t\tvar thisSortable = this;\n +\t\t\t//Copy over some variables to allow calling the sortable\'s native _intersectsWith\n +\t\t\tthis.instance.positionAbs = inst.positionAbs;\n +\t\t\tthis.instance.helperProportions = inst.helperProportions;\n +\t\t\tthis.instance.offset.click = inst.offset.click;\n +\n +\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n +\t\t\t\tinnermostIntersecting = true;\n +\t\t\t\t$.each(inst.sortables, function () {\n +\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n +\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n +\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n +\t\t\t\t\tif (this != thisSortable\n +\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n +\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n +\t\t\t\t\t\tinnermostIntersecting = false;\n +\t\t\t\t\t\treturn innermostIntersecting;\n +\t\t\t\t});\n +\t\t\t}\n +\n +\n +\t\t\tif(innermostIntersecting) {\n +\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n +\t\t\t\tif(!this.instance.isOver) {\n +\n +\t\t\t\t\tthis.instance.isOver = 1;\n +\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n +\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n +\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn\'t create a new one)\n +\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr(\'id\').appendTo(this.instance.element).data("sortable-item", true);\n +\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n +\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n +\n +\t\t\t\t\tevent.target = this.instance.currentItem[0];\n +\t\t\t\t\tthis.instance._mouseCapture(event, true);\n +\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n +\n +\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n +\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n +\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n +\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n +\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n +\n +\t\t\t\t\tinst._trigger("toSortable", event);\n +\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n +\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n +\t\t\t\t\tinst.currentItem = inst.element;\n +\t\t\t\t\tthis.instance.fromOutside = inst;\n +\n +\t\t\t\t}\n +\n +\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n +\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n +\n +\t\t\t} else {\n +\n +\t\t\t\t//If it doesn\'t intersect with the sortable, and it intersected before,\n +\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn\'t remove the helper by using cancelHelperRemoval\n +\t\t\t\tif(this.instance.isOver) {\n +\n +\t\t\t\t\tthis.instance.isOver = 0;\n +\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n +\n +\t\t\t\t\t//Prevent reverting on this forced stop\n +\t\t\t\t\tthis.instance.options.revert = false;\n +\n +\t\t\t\t\t// The out event needs to be triggered independently\n +\t\t\t\t\tthis.instance._trigger(\'out\', event, this.instance._uiHash(this.instance));\n +\n +\t\t\t\t\tthis.instance._mouseStop(event, true);\n +\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n +\n +\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it\'s original size\n +\t\t\t\t\tthis.instance.currentItem.remove();\n +\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n +\n +\t\t\t\t\tinst._trigger("fromSortable", event);\n +\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n +\t\t\t\t}\n +\n +\t\t\t};\n +\n +\t\t});\n +\n +\t}\n +});\n +\n +$.ui.plugin.add("draggable", "cursor", {\n +\tstart: function(event, ui) {\n +\t\tvar t = $(\'body\'), o = $(this).data(\'draggable\').options;\n +\t\tif (t.css("cursor")) o._cursor = t.css("cursor");\n +\t\tt.css("cursor", o.cursor);\n +\t},\n +\tstop: function(event, ui) {\n +\t\tvar o = $(this).data(\'draggable\').options;\n +\t\tif (o._cursor) $(\'body\').css("cursor", o._cursor);\n +\t}\n +});\n +\n +$.ui.plugin.add("draggable", "opacity", {\n +\tstart: function(event, ui) {\n +\t\tvar t = $(ui.helper), o = $(this).data(\'draggable\').options;\n +\t\tif(t.css("opacity")) o._opacity = t.css("opacity");\n +\t\tt.css(\'opacity\', o.opacity);\n +\t},\n +\tstop: function(event, ui) {\n +\t\tvar o = $(this).data(\'draggable\').options;\n +\t\tif(o._opacity) $(ui.helper).css(\'opacity\', o._opacity);\n +\t}\n +});\n +\n +$.ui.plugin.add("draggable", "scroll", {\n +\tstart: function(event, ui) {\n +\t\tvar i = $(this).data("draggable");\n +\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != \'HTML\') i.overflowOffset = i.scrollParent.offset();\n +\t},\n +\tdrag: function(event, ui) {\n +\n +\t\tvar i = $(this).data("draggable"), o = i.options, scrolled = false;\n +\n +\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != \'HTML\') {\n +\n +\t\t\tif(!o.axis || o.axis != \'x\') {\n +\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n +\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n +\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n +\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n +\t\t\t}\n +\n +\t\t\tif(!o.axis || o.axis != \'y\') {\n +\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n +\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n +\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n +\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n +\t\t\t}\n +\n +\t\t} else {\n +\n +\t\t\tif(!o.axis || o.axis != \'x\') {\n +\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n +\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n +\t\t\t}\n +\n +\t\t\tif(!o.axis || o.axis != \'y\') {\n +\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n +\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n +\t\t\t}\n +\n +\t\t}\n +\n +\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n +\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n +\n +\t}\n +});\n +\n +$.ui.plugin.add("draggable", "snap", {\n +\tstart: function(event, ui) {\n +\n +\t\tvar i = $(this).data("draggable"), o = i.options;\n +\t\ti.snapElements = [];\n +\n +\t\t$(o.snap.constructor != String ? ( o.snap.items || \':data(draggable)\' ) : o.snap).each(function() {\n +\t\t\tvar $t = $(this); var $o = $t.offset();\n +\t\t\tif(this != i.element[0]) i.snapElements.push({\n +\t\t\t\titem: this,\n +\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n +\t\t\t\ttop: $o.top, left: $o.left\n +\t\t\t});\n +\t\t});\n +\n +\t},\n +\tdrag: function(event, ui) {\n +\n +\t\tvar inst = $(this).data("draggable"), o = inst.options;\n +\t\tvar d = o.snapTolerance;\n +\n +\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n +\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n +\n +\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n +\n +\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n +\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n +\n +\t\t\t//Yes, I know, this is insane ;)\n +\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n +\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n +\t\t\t\tinst.snapElements[i].snapping = false;\n +\t\t\t\tcontinue;\n +\t\t\t}\n +\n +\t\t\tif(o.snapMode != \'inner\') {\n +\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n +\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n +\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n +\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n +\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n +\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;\n +\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n +\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;\n +\t\t\t}\n +\n +\t\t\tvar first = (ts || bs || ls || rs);\n +\n +\t\t\tif(o.snapMode != \'outer\') {\n +\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n +\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n +\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n +\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n +\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;\n +\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n +\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;\n +\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n +\t\t\t}\n +\n +\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n +\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n +\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n +\n +\t\t};\n +\n +\t}\n +});\n +\n +$.ui.plugin.add("draggable", "stack", {\n +\tstart: function(event, ui) {\n +\n +\t\tvar o = $(this).data("draggable").options;\n +\n +\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n +\t\t\treturn (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);\n +\t\t});\n +\t\tif (!group.length) { return; }\n +\n +\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n +\t\t$(group).each(function(i) {\n +\t\t\tthis.style.zIndex = min + i;\n +\t\t});\n +\n +\t\tthis[0].style.zIndex = min + group.length;\n +\n +\t}\n +});\n +\n +$.ui.plugin.add("draggable", "zIndex", {\n +\tstart: function(event, ui) {\n +\t\tvar t = $(ui.helper), o = $(this).data("draggable").options;\n +\t\tif(t.css("zIndex")) o._zIndex = t.css("zIndex");\n +\t\tt.css(\'zIndex\', o.zIndex);\n +\t},\n +\tstop: function(event, ui) {\n +\t\tvar o = $(this).data("draggable").options;\n +\t\tif(o._zIndex) $(ui.helper).css(\'zIndex\', o._zIndex);\n +\t}\n +});\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.widget("ui.droppable", {\n +\tversion: "1.9.2",\n +\twidgetEventPrefix: "drop",\n +\toptions: {\n +\t\taccept: \'*\',\n +\t\tactiveClass: false,\n +\t\taddClasses: true,\n +\t\tgreedy: false,\n +\t\thoverClass: false,\n +\t\tscope: \'default\',\n +\t\ttolerance: \'intersect\'\n +\t},\n +\t_create: function() {\n +\n +\t\tvar o = this.options, accept = o.accept;\n +\t\tthis.isover = 0; this.isout = 1;\n +\n +\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n +\t\t\treturn d.is(accept);\n +\t\t};\n +\n +\t\t//Store the droppable\'s proportions\n +\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n +\n +\t\t// Add the reference and positions to the manager\n +\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n +\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n +\n +\t\t(o.addClasses && this.element.addClass("ui-droppable"));\n +\n +\t},\n +\n +\t_destroy: function() {\n +\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n +\t\tfor ( var i = 0; i < drop.length; i++ )\n +\t\t\tif ( drop[i] == this )\n +\t\t\t\tdrop.splice(i, 1);\n +\n +\t\tthis.element.removeClass("ui-droppable ui-droppable-disabled");\n +\t},\n +\n +\t_setOption: function(key, value) {\n +\n +\t\tif(key == \'accept\') {\n +\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n +\t\t\t\treturn d.is(value);\n +\t\t\t};\n +\t\t}\n +\t\t$.Widget.prototype._setOption.apply(this, arguments);\n +\t},\n +\n +\t_activate: function(event) {\n +\t\tvar draggable = $.ui.ddmanager.current;\n +\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n +\t\t(draggable && this._trigger(\'activate\', event, this.ui(draggable)));\n +\t},\n +\n +\t_deactivate: function(event) {\n +\t\tvar draggable = $.ui.ddmanager.current;\n +\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n +\t\t(draggable && this._trigger(\'deactivate\', event, this.ui(draggable)));\n +\t},\n +\n +\t_over: function(event) {\n +\n +\t\tvar draggable = $.ui.ddmanager.current;\n +\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n +\n +\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n +\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n +\t\t\tthis._trigger(\'over\', event, this.ui(draggable));\n +\t\t}\n +\n +\t},\n +\n +\t_out: function(event) {\n +\n +\t\tvar draggable = $.ui.ddmanager.current;\n +\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n +\n +\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n +\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n +\t\t\tthis._trigger(\'out\', event, this.ui(draggable));\n +\t\t}\n +\n +\t},\n +\n +\t_drop: function(event,custom) {\n +\n +\t\tvar draggable = custom || $.ui.ddmanager.current;\n +\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n +\n +\t\tvar childrenIntersection = false;\n +\t\tthis.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {\n +\t\t\tvar inst = $.data(this, \'droppable\');\n +\t\t\tif(\n +\t\t\t\tinst.options.greedy\n +\t\t\t\t&& !inst.options.disabled\n +\t\t\t\t&& inst.options.scope == draggable.options.scope\n +\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n +\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n +\t\t\t) { childrenIntersection = true; return false; }\n +\t\t});\n +\t\tif(childrenIntersection) return false;\n +\n +\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n +\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n +\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n +\t\t\tthis._trigger(\'drop\', event, this.ui(draggable));\n +\t\t\treturn this.element;\n +\t\t}\n +\n +\t\treturn false;\n +\n +\t},\n +\n +\tui: function(c) {\n +\t\treturn {\n +\t\t\tdraggable: (c.currentItem || c.element),\n +\t\t\thelper: c.helper,\n +\t\t\tposition: c.position,\n +\t\t\toffset: c.positionAbs\n +\t\t};\n +\t}\n +\n +});\n +\n +$.ui.intersect = function(draggable, droppable, toleranceMode) {\n +\n +\tif (!droppable.offset) return false;\n +\n +\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n +\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n +\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n +\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n +\n +\tswitch (toleranceMode) {\n +\t\tcase \'fit\':\n +\t\t\treturn (l <= x1 && x2 <= r\n +\t\t\t\t&& t <= y1 && y2 <= b);\n +\t\t\tbreak;\n +\t\tcase \'intersect\':\n +\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n +\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n +\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n +\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n +\t\t\tbreak;\n +\t\tcase \'pointer\':\n +\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n +\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n +\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n +\t\t\treturn isOver;\n +\t\t\tbreak;\n +\t\tcase \'touch\':\n +\t\t\treturn (\n +\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n +\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n +\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n +\t\t\t\t) && (\n +\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n +\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n +\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n +\t\t\t\t);\n +\t\t\tbreak;\n +\t\tdefault:\n +\t\t\treturn false;\n +\t\t\tbreak;\n +\t\t}\n +\n +};\n +\n +/*\n +\tThis manager tracks offsets of draggables and droppables\n +*/\n +$.ui.ddmanager = {\n +\tcurrent: null,\n +\tdroppables: { \'default\': [] },\n +\tprepareOffsets: function(t, event) {\n +\n +\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n +\t\tvar type = event ? event.type : null; // workaround for #2317\n +\t\tvar list = (t.currentItem || t.element).find(":data(droppable)").andSelf();\n +\n +\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n +\n +\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n +\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n +\t\t\tm[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n +\n +\t\t\tif(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n +\n +\t\t\tm[i].offset = m[i].element.offset();\n +\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n +\n +\t\t}\n +\n +\t},\n +\tdrop: function(draggable, event) {\n +\n +\t\tvar dropped = false;\n +\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n +\n +\t\t\tif(!this.options) return;\n +\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n +\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n +\n +\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n +\t\t\t\tthis.isout = 1; this.isover = 0;\n +\t\t\t\tthis._deactivate.call(this, event);\n +\t\t\t}\n +\n +\t\t});\n +\t\treturn dropped;\n +\n +\t},\n +\tdragStart: function( draggable, event ) {\n +\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n +\t\tdraggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {\n +\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n +\t\t});\n +\t},\n +\tdrag: function(draggable, event) {\n +\n +\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n +\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n +\n +\t\t//Run through all droppables and check their positions based on specific tolerance options\n +\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n +\n +\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n +\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n +\n +\t\t\tvar c = !intersects && this.isover == 1 ? \'isout\' : (intersects && this.isover == 0 ? \'isover\' : null);\n +\t\t\tif(!c) return;\n +\n +\t\t\tvar parentInstance;\n +\t\t\tif (this.options.greedy) {\n +\t\t\t\t// find droppable parents with same scope\n +\t\t\t\tvar scope = this.options.scope;\n +\t\t\t\tvar parent = this.element.parents(\':data(droppable)\').filter(function () {\n +\t\t\t\t\treturn $.data(this, \'droppable\').options.scope === scope;\n +\t\t\t\t});\n +\n +\t\t\t\tif (parent.length) {\n +\t\t\t\t\tparentInstance = $.data(parent[0], \'droppable\');\n +\t\t\t\t\tparentInstance.greedyChild = (c == \'isover\' ? 1 : 0);\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// we just moved into a greedy child\n +\t\t\tif (parentInstance && c == \'isover\') {\n +\t\t\t\tparentInstance[\'isover\'] = 0;\n +\t\t\t\tparentInstance[\'isout\'] = 1;\n +\t\t\t\tparentInstance._out.call(parentInstance, event);\n +\t\t\t}\n +\n +\t\t\tthis[c] = 1; this[c == \'isout\' ? \'isover\' : \'isout\'] = 0;\n +\t\t\tthis[c == "isover" ? "_over" : "_out"].call(this, event);\n +\n +\t\t\t// we just moved out of a greedy child\n +\t\t\tif (parentInstance && c == \'isout\') {\n +\t\t\t\tparentInstance[\'isout\'] = 0;\n +\t\t\t\tparentInstance[\'isover\'] = 1;\n +\t\t\t\tparentInstance._over.call(parentInstance, event);\n +\t\t\t}\n +\t\t});\n +\n +\t},\n +\tdragStop: function( draggable, event ) {\n +\t\tdraggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );\n +\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n +\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n +\t}\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.widget("ui.resizable", $.ui.mouse, {\n +\tversion: "1.9.2",\n +\twidgetEventPrefix: "resize",\n +\toptions: {\n +\t\talsoResize: false,\n +\t\tanimate: false,\n +\t\tanimateDuration: "slow",\n +\t\tanimateEasing: "swing",\n +\t\taspectRatio: false,\n +\t\tautoHide: false,\n +\t\tcontainment: false,\n +\t\tghost: false,\n +\t\tgrid: false,\n +\t\thandles: "e,s,se",\n +\t\thelper: false,\n +\t\tmaxHeight: null,\n +\t\tmaxWidth: null,\n +\t\tminHeight: 10,\n +\t\tminWidth: 10,\n +\t\tzIndex: 1000\n +\t},\n +\t_create: function() {\n +\n +\t\tvar that = this, o = this.options;\n +\t\tthis.element.addClass("ui-resizable");\n +\n +\t\t$.extend(this, {\n +\t\t\t_aspectRatio: !!(o.aspectRatio),\n +\t\t\taspectRatio: o.aspectRatio,\n +\t\t\toriginalElement: this.element,\n +\t\t\t_proportionallyResizeElements: [],\n +\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \'ui-resizable-helper\' : null\n +\t\t});\n +\n +\t\t//Wrap the element if it cannot hold child nodes\n +\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n +\n +\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n +\t\t\tthis.element.wrap(\n +\t\t\t\t$(\'<div class="ui-wrapper" style="overflow: hidden;"></div>\').css({\n +\t\t\t\t\tposition: this.element.css(\'position\'),\n +\t\t\t\t\twidth: this.element.outerWidth(),\n +\t\t\t\t\theight: this.element.outerHeight(),\n +\t\t\t\t\ttop: this.element.css(\'top\'),\n +\t\t\t\t\tleft: this.element.css(\'left\')\n +\t\t\t\t})\n +\t\t\t);\n +\n +\t\t\t//Overwrite the original this.element\n +\t\t\tthis.element = this.element.parent().data(\n +\t\t\t\t"resizable", this.element.data(\'resizable\')\n +\t\t\t);\n +\n +\t\t\tthis.elementIsWrapper = true;\n +\n +\t\t\t//Move margins to the wrapper\n +\t\t\tthis.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });\n +\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n +\n +\t\t\t//Prevent Safari textarea resize\n +\t\t\tthis.originalResizeStyle = this.originalElement.css(\'resize\');\n +\t\t\tthis.originalElement.css(\'resize\', \'none\');\n +\n +\t\t\t//Push the actual element to our proportionallyResize internal array\n +\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: \'static\', zoom: 1, display: \'block\' }));\n +\n +\t\t\t// avoid IE jump (hard set the margin)\n +\t\t\tthis.originalElement.css({ margin: this.originalElement.css(\'margin\') });\n +\n +\t\t\t// fix handlers offset\n +\t\t\tthis._proportionallyResize();\n +\n +\t\t}\n +\n +\t\tthis.handles = o.handles || (!$(\'.ui-resizable-handle\', this.element).length ? "e,s,se" : { n: \'.ui-resizable-n\', e: \'.ui-resizable-e\', s: \'.ui-resizable-s\', w: \'.ui-resizable-w\', se: \'.ui-resizable-se\', sw: \'.ui-resizable-sw\', ne: \'.ui-resizable-ne\', nw: \'.ui-resizable-nw\' });\n +\t\tif(this.handles.constructor == String) {\n +\n +\t\t\tif(this.handles == \'all\') this.handles = \'n,e,s,w,se,sw,ne,nw\';\n +\t\t\tvar n = this.handles.split(","); this.handles = {};\n +\n +\t\t\tfor(var i = 0; i < n.length; i++) {\n +\n +\t\t\t\tvar handle = $.trim(n[i]), hname = \'ui-resizable-\'+handle;\n +\t\t\t\tvar axis = $(\'<div class="ui-resizable-handle \' + hname + \'"></div>\');\n +\n +\t\t\t\t// Apply zIndex to all handles - see #7960\n +\t\t\t\taxis.css({ zIndex: o.zIndex });\n +\n +\t\t\t\t//TODO : What\'s going on here?\n +\t\t\t\tif (\'se\' == handle) {\n +\t\t\t\t\taxis.addClass(\'ui-icon ui-icon-gripsmall-diagonal-se\');\n +\t\t\t\t};\n +\n +\t\t\t\t//Insert into internal handles object and append to element\n +\t\t\t\tthis.handles[handle] = \'.ui-resizable-\'+handle;\n +\t\t\t\tthis.element.append(axis);\n +\t\t\t}\n +\n +\t\t}\n +\n +\t\tthis._renderAxis = function(target) {\n +\n +\t\t\ttarget = target || this.element;\n +\n +\t\t\tfor(var i in this.handles) {\n +\n +\t\t\t\tif(this.handles[i].constructor == String)\n +\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n +\n +\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n +\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n +\n +\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n +\n +\t\t\t\t\t//Checking the correct pad and border\n +\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n +\n +\t\t\t\t\t//The padding type i have to apply...\n +\t\t\t\t\tvar padPos = [ \'padding\',\n +\t\t\t\t\t\t/ne|nw|n/.test(i) ? \'Top\' :\n +\t\t\t\t\t\t/se|sw|s/.test(i) ? \'Bottom\' :\n +\t\t\t\t\t\t/^e$/.test(i) ? \'Right\' : \'Left\' ].join("");\n +\n +\t\t\t\t\ttarget.css(padPos, padWrapper);\n +\n +\t\t\t\t\tthis._proportionallyResize();\n +\n +\t\t\t\t}\n +\n +\t\t\t\t//TODO: What\'s that good for? There\'s not anything to be executed left\n +\t\t\t\tif(!$(this.handles[i]).length)\n +\t\t\t\t\tcontinue;\n +\n +\t\t\t}\n +\t\t};\n +\n +\t\t//TODO: make renderAxis a prototype function\n +\t\tthis._renderAxis(this.element);\n +\n +\t\tthis._handles = $(\'.ui-resizable-handle\', this.element)\n +\t\t\t.disableSelection();\n +\n +\t\t//Matching axis name\n +\t\tthis._handles.mouseover(function() {\n +\t\t\tif (!that.resizing) {\n +\t\t\t\tif (this.className)\n +\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n +\t\t\t\t//Axis, default = se\n +\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : \'se\';\n +\t\t\t}\n +\t\t});\n +\n +\t\t//If we want to auto hide the elements\n +\t\tif (o.autoHide) {\n +\t\t\tthis._handles.hide();\n +\t\t\t$(this.element)\n +\t\t\t\t.addClass("ui-resizable-autohide")\n +\t\t\t\t.mouseenter(function() {\n +\t\t\t\t\tif (o.disabled) return;\n +\t\t\t\t\t$(this).removeClass("ui-resizable-autohide");\n +\t\t\t\t\tthat._handles.show();\n +\t\t\t\t})\n +\t\t\t\t.mouseleave(function(){\n +\t\t\t\t\tif (o.disabled) return;\n +\t\t\t\t\tif (!that.resizing) {\n +\t\t\t\t\t\t$(this).addClass("ui-resizable-autohide");\n +\t\t\t\t\t\tthat._handles.hide();\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t}\n +\n +\t\t//Initialize the mouse interaction\n +\t\tthis._mouseInit();\n +\n +\t},\n +\n +\t_destroy: function() {\n +\n +\t\tthis._mouseDestroy();\n +\n +\t\tvar _destroy = function(exp) {\n +\t\t\t$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")\n +\t\t\t\t.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(\'.ui-resizable-handle\').remove();\n +\t\t};\n +\n +\t\t//TODO: Unwrap at same DOM position\n +\t\tif (this.elementIsWrapper) {\n +\t\t\t_destroy(this.element);\n +\t\t\tvar wrapper = this.element;\n +\t\t\tthis.originalElement.css({\n +\t\t\t\tposition: wrapper.css(\'position\'),\n +\t\t\t\twidth: wrapper.outerWidth(),\n +\t\t\t\theight: wrapper.outerHeight(),\n +\t\t\t\ttop: wrapper.css(\'top\'),\n +\t\t\t\tleft: wrapper.css(\'left\')\n +\t\t\t}).insertAfter( wrapper );\n +\t\t\twrapper.remove();\n +\t\t}\n +\n +\t\tthis.originalElement.css(\'resize\', this.originalResizeStyle);\n +\t\t_destroy(this.originalElement);\n +\n +\t\treturn this;\n +\t},\n +\n +\t_mouseCapture: function(event) {\n +\t\tvar handle = false;\n +\t\tfor (var i in this.handles) {\n +\t\t\tif ($(this.handles[i])[0] == event.target) {\n +\t\t\t\thandle = true;\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn !this.options.disabled && handle;\n +\t},\n +\n +\t_mouseStart: function(event) {\n +\n +\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n +\n +\t\tthis.resizing = true;\n +\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n +\n +\t\t// bugfix for http://dev.jquery.com/ticket/1749\n +\t\tif (el.is(\'.ui-draggable\') || (/absolute/).test(el.css(\'position\'))) {\n +\t\t\tel.css({ position: \'absolute\', top: iniPos.top, left: iniPos.left });\n +\t\t}\n +\n +\t\tthis._renderProxy();\n +\n +\t\tvar curleft = num(this.helper.css(\'left\')), curtop = num(this.helper.css(\'top\'));\n +\n +\t\tif (o.containment) {\n +\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n +\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n +\t\t}\n +\n +\t\t//Store needed variables\n +\t\tthis.offset = this.helper.offset();\n +\t\tthis.position = { left: curleft, top: curtop };\n +\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n +\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n +\t\tthis.originalPosition = { left: curleft, top: curtop };\n +\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n +\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n +\n +\t\t//Aspect Ratio\n +\t\tthis.aspectRatio = (typeof o.aspectRatio == \'number\') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n +\n +\t\tvar cursor = $(\'.ui-resizable-\' + this.axis).css(\'cursor\');\n +\t\t$(\'body\').css(\'cursor\', cursor == \'auto\' ? this.axis + \'-resize\' : cursor);\n +\n +\t\tel.addClass("ui-resizable-resizing");\n +\t\tthis._propagate("start", event);\n +\t\treturn true;\n +\t},\n +\n +\t_mouseDrag: function(event) {\n +\n +\t\t//Increase performance, avoid regex\n +\t\tvar el = this.helper, o = this.options, props = {},\n +\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n +\n +\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n +\t\tvar trigger = this._change[a];\n +\t\tif (!trigger) return false;\n +\n +\t\t// Calculate the attrs that will be change\n +\t\tvar data = trigger.apply(this, [event, dx, dy]);\n +\n +\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n +\t\tthis._updateVirtualBoundaries(event.shiftKey);\n +\t\tif (this._aspectRatio || event.shiftKey)\n +\t\t\tdata = this._updateRatio(data, event);\n +\n +\t\tdata = this._respectSize(data, event);\n +\n +\t\t// plugins callbacks need to be called first\n +\t\tthis._propagate("resize", event);\n +\n +\t\tel.css({\n +\t\t\ttop: this.position.top + "px", left: this.position.left + "px",\n +\t\t\twidth: this.size.width + "px", height: this.size.height + "px"\n +\t\t});\n +\n +\t\tif (!this._helper && this._proportionallyResizeElements.length)\n +\t\t\tthis._proportionallyResize();\n +\n +\t\tthis._updateCache(data);\n +\n +\t\t// calling the user callback at the end\n +\t\tthis._trigger(\'resize\', event, this.ui());\n +\n +\t\treturn false;\n +\t},\n +\n +\t_mouseStop: function(event) {\n +\n +\t\tthis.resizing = false;\n +\t\tvar o = this.options, that = this;\n +\n +\t\tif(this._helper) {\n +\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n +\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], \'left\') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n +\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n +\n +\t\t\tvar s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) },\n +\t\t\t\tleft = (parseInt(that.element.css(\'left\'), 10) + (that.position.left - that.originalPosition.left)) || null,\n +\t\t\t\ttop = (parseInt(that.element.css(\'top\'), 10) + (that.position.top - that.originalPosition.top)) || null;\n +\n +\t\t\tif (!o.animate)\n +\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n +\n +\t\t\tthat.helper.height(that.size.height);\n +\t\t\tthat.helper.width(that.size.width);\n +\n +\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n +\t\t}\n +\n +\t\t$(\'body\').css(\'cursor\', \'auto\');\n +\n +\t\tthis.element.removeClass("ui-resizable-resizing");\n +\n +\t\tthis._propagate("stop", event);\n +\n +\t\tif (this._helper) this.helper.remove();\n +\t\treturn false;\n +\n +\t},\n +\n +\t_updateVirtualBoundaries: function(forceAspectRatio) {\n +\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n +\n +\t\tb = {\n +\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n +\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n +\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n +\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n +\t\t};\n +\n +\t\tif(this._aspectRatio || forceAspectRatio) {\n +\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n +\t\t\t// First, compute the "projected" size for each dimension based on the aspect ratio and other dimension\n +\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n +\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n +\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n +\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n +\n +\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n +\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n +\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n +\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n +\t\t}\n +\t\tthis._vBoundaries = b;\n +\t},\n +\n +\t_updateCache: function(data) {\n +\t\tvar o = this.options;\n +\t\tthis.offset = this.helper.offset();\n +\t\tif (isNumber(data.left)) this.position.left = data.left;\n +\t\tif (isNumber(data.top)) this.position.top = data.top;\n +\t\tif (isNumber(data.height)) this.size.height = data.height;\n +\t\tif (isNumber(data.width)) this.size.width = data.width;\n +\t},\n +\n +\t_updateRatio: function(data, event) {\n +\n +\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n +\n +\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n +\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n +\n +\t\tif (a == \'sw\') {\n +\t\t\tdata.left = cpos.left + (csize.width - data.width);\n +\t\t\tdata.top = null;\n +\t\t}\n +\t\tif (a == \'nw\') {\n +\t\t\tdata.top = cpos.top + (csize.height - data.height);\n +\t\t\tdata.left = cpos.left + (csize.width - data.width);\n +\t\t}\n +\n +\t\treturn data;\n +\t},\n +\n +\t_respectSize: function(data, event) {\n +\n +\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n +\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n +\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n +\n +\t\tif (isminw) data.width = o.minWidth;\n +\t\tif (isminh) data.height = o.minHeight;\n +\t\tif (ismaxw) data.width = o.maxWidth;\n +\t\tif (ismaxh) data.height = o.maxHeight;\n +\n +\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n +\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n +\n +\t\tif (isminw && cw) data.left = dw - o.minWidth;\n +\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n +\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n +\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n +\n +\t\t// fixing jump error on top/left - bug #2330\n +\t\tvar isNotwh = !data.width && !data.height;\n +\t\tif (isNotwh && !data.left && data.top) data.top = null;\n +\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n +\n +\t\treturn data;\n +\t},\n +\n +\t_proportionallyResize: function() {\n +\n +\t\tvar o = this.options;\n +\t\tif (!this._proportionallyResizeElements.length) return;\n +\t\tvar element = this.helper || this.element;\n +\n +\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n +\n +\t\t\tvar prel = this._proportionallyResizeElements[i];\n +\n +\t\t\tif (!this.borderDif) {\n +\t\t\t\tvar b = [prel.css(\'borderTopWidth\'), prel.css(\'borderRightWidth\'), prel.css(\'borderBottomWidth\'), prel.css(\'borderLeftWidth\')],\n +\t\t\t\t\tp = [prel.css(\'paddingTop\'), prel.css(\'paddingRight\'), prel.css(\'paddingBottom\'), prel.css(\'paddingLeft\')];\n +\n +\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n +\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n +\t\t\t\t\treturn border + padding;\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\tprel.css({\n +\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n +\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n +\t\t\t});\n +\n +\t\t};\n +\n +\t},\n +\n +\t_renderProxy: function() {\n +\n +\t\tvar el = this.element, o = this.options;\n +\t\tthis.elementOffset = el.offset();\n +\n +\t\tif(this._helper) {\n +\n +\t\t\tthis.helper = this.helper || $(\'<div style="overflow:hidden;"></div>\');\n +\n +\t\t\t// fix ie6 offset TODO: This seems broken\n +\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n +\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n +\n +\t\t\tthis.helper.addClass(this._helper).css({\n +\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n +\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n +\t\t\t\tposition: \'absolute\',\n +\t\t\t\tleft: this.elementOffset.left - ie6offset +\'px\',\n +\t\t\t\ttop: this.elementOffset.top - ie6offset +\'px\',\n +\t\t\t\tzIndex: ++o.zIndex //TODO: Don\'t modify option\n +\t\t\t});\n +\n +\t\t\tthis.helper\n +\t\t\t\t.appendTo("body")\n +\t\t\t\t.disableSelection();\n +\n +\t\t} else {\n +\t\t\tthis.helper = this.element;\n +\t\t}\n +\n +\t},\n +\n +\t_change: {\n +\t\te: function(event, dx, dy) {\n +\t\t\treturn { width: this.originalSize.width + dx };\n +\t\t},\n +\t\tw: function(event, dx, dy) {\n +\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n +\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n +\t\t},\n +\t\tn: function(event, dx, dy) {\n +\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n +\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n +\t\t},\n +\t\ts: function(event, dx, dy) {\n +\t\t\treturn { height: this.originalSize.height + dy };\n +\t\t},\n +\t\tse: function(event, dx, dy) {\n +\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n +\t\t},\n +\t\tsw: function(event, dx, dy) {\n +\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n +\t\t},\n +\t\tne: function(event, dx, dy) {\n +\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n +\t\t},\n +\t\tnw: function(event, dx, dy) {\n +\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n +\t\t}\n +\t},\n +\n +\t_propagate: function(n, event) {\n +\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n +\t\t(n != "resize" && this._trigger(n, event, this.ui()));\n +\t},\n +\n +\tplugins: {},\n +\n +\tui: function() {\n +\t\treturn {\n +\t\t\toriginalElement: this.originalElement,\n +\t\t\telement: this.element,\n +\t\t\thelper: this.helper,\n +\t\t\tposition: this.position,\n +\t\t\tsize: this.size,\n +\t\t\toriginalSize: this.originalSize,\n +\t\t\toriginalPosition: this.originalPosition\n +\t\t};\n +\t}\n +\n +});\n +\n +/*\n + * Resizable Extensions\n + */\n +\n +$.ui.plugin.add("resizable", "alsoResize", {\n +\n +\tstart: function (event, ui) {\n +\t\tvar that = $(this).data("resizable"), o = that.options;\n +\n +\t\tvar _store = function (exp) {\n +\t\t\t$(exp).each(function() {\n +\t\t\t\tvar el = $(this);\n +\t\t\t\tel.data("resizable-alsoresize", {\n +\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n +\t\t\t\t\tleft: parseInt(el.css(\'left\'), 10), top: parseInt(el.css(\'top\'), 10)\n +\t\t\t\t});\n +\t\t\t});\n +\t\t};\n +\n +\t\tif (typeof(o.alsoResize) == \'object\' && !o.alsoResize.parentNode) {\n +\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n +\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n +\t\t}else{\n +\t\t\t_store(o.alsoResize);\n +\t\t}\n +\t},\n +\n +\tresize: function (event, ui) {\n +\t\tvar that = $(this).data("resizable"), o = that.options, os = that.originalSize, op = that.originalPosition;\n +\n +\t\tvar delta = {\n +\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n +\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n +\t\t},\n +\n +\t\t_alsoResize = function (exp, c) {\n +\t\t\t$(exp).each(function() {\n +\t\t\t\tvar el = $(this), start = $(this).data("resizable-alsoresize"), style = {},\n +\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? [\'width\', \'height\'] : [\'width\', \'height\', \'top\', \'left\'];\n +\n +\t\t\t\t$.each(css, function (i, prop) {\n +\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n +\t\t\t\t\tif (sum && sum >= 0)\n +\t\t\t\t\t\tstyle[prop] = sum || null;\n +\t\t\t\t});\n +\n +\t\t\t\tel.css(style);\n +\t\t\t});\n +\t\t};\n +\n +\t\tif (typeof(o.alsoResize) == \'object\' && !o.alsoResize.nodeType) {\n +\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n +\t\t}else{\n +\t\t\t_alsoResize(o.alsoResize);\n +\t\t}\n +\t},\n +\n +\tstop: function (event, ui) {\n +\t\t$(this).removeData("resizable-alsoresize");\n +\t}\n +});\n +\n +$.ui.plugin.add("resizable", "animate", {\n +\n +\tstop: function(event, ui) {\n +\t\tvar that = $(this).data("resizable"), o = that.options;\n +\n +\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n +\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], \'left\') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n +\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n +\n +\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n +\t\t\t\t\tleft = (parseInt(that.element.css(\'left\'), 10) + (that.position.left - that.originalPosition.left)) || null,\n +\t\t\t\t\t\ttop = (parseInt(that.element.css(\'top\'), 10) + (that.position.top - that.originalPosition.top)) || null;\n +\n +\t\tthat.element.animate(\n +\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n +\t\t\t\tduration: o.animateDuration,\n +\t\t\t\teasing: o.animateEasing,\n +\t\t\t\tstep: function() {\n +\n +\t\t\t\t\tvar data = {\n +\t\t\t\t\t\twidth: parseInt(that.element.css(\'width\'), 10),\n +\t\t\t\t\t\theight: parseInt(that.element.css(\'height\'), 10),\n +\t\t\t\t\t\ttop: parseInt(that.element.css(\'top\'), 10),\n +\t\t\t\t\t\tleft: parseInt(that.element.css(\'left\'), 10)\n +\t\t\t\t\t};\n +\n +\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n +\n +\t\t\t\t\t// propagating resize, and updating values for each animation step\n +\t\t\t\t\tthat._updateCache(data);\n +\t\t\t\t\tthat._propagate("resize", event);\n +\n +\t\t\t\t}\n +\t\t\t}\n +\t\t);\n +\t}\n +\n +});\n +\n +$.ui.plugin.add("resizable", "containment", {\n +\n +\tstart: function(event, ui) {\n +\t\tvar that = $(this).data("resizable"), o = that.options, el = that.element;\n +\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n +\t\tif (!ce) return;\n +\n +\t\tthat.containerElement = $(ce);\n +\n +\t\tif (/document/.test(oc) || oc == document) {\n +\t\t\tthat.containerOffset = { left: 0, top: 0 };\n +\t\t\tthat.containerPosition = { left: 0, top: 0 };\n +\n +\t\t\tthat.parentData = {\n +\t\t\t\telement: $(document), left: 0, top: 0,\n +\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n +\t\t\t};\n +\t\t}\n +\n +\t\t// i\'m a node, so compute top, left, right, bottom\n +\t\telse {\n +\t\t\tvar element = $(ce), p = [];\n +\t\t\t$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });\n +\n +\t\t\tthat.containerOffset = element.offset();\n +\t\t\tthat.containerPosition = element.position();\n +\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n +\n +\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n +\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n +\n +\t\t\tthat.parentData = {\n +\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n +\t\t\t};\n +\t\t}\n +\t},\n +\n +\tresize: function(event, ui) {\n +\t\tvar that = $(this).data("resizable"), o = that.options,\n +\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n +\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n +\n +\t\tif (ce[0] != document && (/static/).test(ce.css(\'position\'))) cop = co;\n +\n +\t\tif (cp.left < (that._helper ? co.left : 0)) {\n +\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n +\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n +\t\t\tthat.position.left = o.helper ? co.left : 0;\n +\t\t}\n +\n +\t\tif (cp.top < (that._helper ? co.top : 0)) {\n +\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n +\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n +\t\t\tthat.position.top = that._helper ? co.top : 0;\n +\t\t}\n +\n +\t\tthat.offset.left = that.parentData.left+that.position.left;\n +\t\tthat.offset.top = that.parentData.top+that.position.top;\n +\n +\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n +\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n +\n +\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n +\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css(\'position\'));\n +\n +\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n +\n +\t\tif (woset + that.size.width >= that.parentData.width) {\n +\t\t\tthat.size.width = that.parentData.width - woset;\n +\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n +\t\t}\n +\n +\t\tif (hoset + that.size.height >= that.parentData.height) {\n +\t\t\tthat.size.height = that.parentData.height - hoset;\n +\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n +\t\t}\n +\t},\n +\n +\tstop: function(event, ui){\n +\t\tvar that = $(this).data("resizable"), o = that.options, cp = that.position,\n +\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n +\n +\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n +\n +\t\tif (that._helper && !o.animate && (/relative/).test(ce.css(\'position\')))\n +\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n +\n +\t\tif (that._helper && !o.animate && (/static/).test(ce.css(\'position\')))\n +\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n +\n +\t}\n +});\n +\n +$.ui.plugin.add("resizable", "ghost", {\n +\n +\tstart: function(event, ui) {\n +\n +\t\tvar that = $(this).data("resizable"), o = that.options, cs = that.size;\n +\n +\t\tthat.ghost = that.originalElement.clone();\n +\t\tthat.ghost\n +\t\t\t.css({ opacity: .25, display: \'block\', position: \'relative\', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n +\t\t\t.addClass(\'ui-resizable-ghost\')\n +\t\t\t.addClass(typeof o.ghost == \'string\' ? o.ghost : \'\');\n +\n +\t\tthat.ghost.appendTo(that.helper);\n +\n +\t},\n +\n +\tresize: function(event, ui){\n +\t\tvar that = $(this).data("resizable"), o = that.options;\n +\t\tif (that.ghost) that.ghost.css({ position: \'relative\', height: that.size.height, width: that.size.width });\n +\t},\n +\n +\tstop: function(event, ui){\n +\t\tvar that = $(this).data("resizable"), o = that.options;\n +\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n +\t}\n +\n +});\n +\n +$.ui.plugin.add("resizable", "grid", {\n +\n +\tresize: function(event, ui) {\n +\t\tvar that = $(this).data("resizable"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n +\t\to.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;\n +\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n +\n +\t\tif (/^(se|s|e)$/.test(a)) {\n +\t\t\tthat.size.width = os.width + ox;\n +\t\t\tthat.size.height = os.height + oy;\n +\t\t}\n +\t\telse if (/^(ne)$/.test(a)) {\n +\t\t\tthat.size.width = os.width + ox;\n +\t\t\tthat.size.height = os.height + oy;\n +\t\t\tthat.position.top = op.top - oy;\n +\t\t}\n +\t\telse if (/^(sw)$/.test(a)) {\n +\t\t\tthat.size.width = os.width + ox;\n +\t\t\tthat.size.height = os.height + oy;\n +\t\t\tthat.position.left = op.left - ox;\n +\t\t}\n +\t\telse {\n +\t\t\tthat.size.width = os.width + ox;\n +\t\t\tthat.size.height = os.height + oy;\n +\t\t\tthat.position.top = op.top - oy;\n +\t\t\tthat.position.left = op.left - ox;\n +\t\t}\n +\t}\n +\n +});\n +\n +var num = function(v) {\n +\treturn parseInt(v, 10) || 0;\n +};\n +\n +var isNumber = function(value) {\n +\treturn !isNaN(parseInt(value, 10));\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.widget("ui.selectable", $.ui.mouse, {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\tappendTo: \'body\',\n +\t\tautoRefresh: true,\n +\t\tdistance: 0,\n +\t\tfilter: \'*\',\n +\t\ttolerance: \'touch\'\n +\t},\n +\t_create: function() {\n +\t\tvar that = this;\n +\n +\t\tthis.element.addClass("ui-selectable");\n +\n +\t\tthis.dragged = false;\n +\n +\t\t// cache selectee children based on filter\n +\t\tvar selectees;\n +\t\tthis.refresh = function() {\n +\t\t\tselectees = $(that.options.filter, that.element[0]);\n +\t\t\tselectees.addClass("ui-selectee");\n +\t\t\tselectees.each(function() {\n +\t\t\t\tvar $this = $(this);\n +\t\t\t\tvar pos = $this.offset();\n +\t\t\t\t$.data(this, "selectable-item", {\n +\t\t\t\t\telement: this,\n +\t\t\t\t\t$element: $this,\n +\t\t\t\t\tleft: pos.left,\n +\t\t\t\t\ttop: pos.top,\n +\t\t\t\t\tright: pos.left + $this.outerWidth(),\n +\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n +\t\t\t\t\tstartselected: false,\n +\t\t\t\t\tselected: $this.hasClass(\'ui-selected\'),\n +\t\t\t\t\tselecting: $this.hasClass(\'ui-selecting\'),\n +\t\t\t\t\tunselecting: $this.hasClass(\'ui-unselecting\')\n +\t\t\t\t});\n +\t\t\t});\n +\t\t};\n +\t\tthis.refresh();\n +\n +\t\tthis.selectees = selectees.addClass("ui-selectee");\n +\n +\t\tthis._mouseInit();\n +\n +\t\tthis.helper = $("<div class=\'ui-selectable-helper\'></div>");\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.selectees\n +\t\t\t.removeClass("ui-selectee")\n +\t\t\t.removeData("selectable-item");\n +\t\tthis.element\n +\t\t\t.removeClass("ui-selectable ui-selectable-disabled");\n +\t\tthis._mouseDestroy();\n +\t},\n +\n +\t_mouseStart: function(event) {\n +\t\tvar that = this;\n +\n +\t\tthis.opos = [event.pageX, event.pageY];\n +\n +\t\tif (this.options.disabled)\n +\t\t\treturn;\n +\n +\t\tvar options = this.options;\n +\n +\t\tthis.selectees = $(options.filter, this.element[0]);\n +\n +\t\tthis._trigger("start", event);\n +\n +\t\t$(options.appendTo).append(this.helper);\n +\t\t// position helper (lasso)\n +\t\tthis.helper.css({\n +\t\t\t"left": event.clientX,\n +\t\t\t"top": event.clientY,\n +\t\t\t"width": 0,\n +\t\t\t"height": 0\n +\t\t});\n +\n +\t\tif (options.autoRefresh) {\n +\t\t\tthis.refresh();\n +\t\t}\n +\n +\t\tthis.selectees.filter(\'.ui-selected\').each(function() {\n +\t\t\tvar selectee = $.data(this, "selectable-item");\n +\t\t\tselectee.startselected = true;\n +\t\t\tif (!event.metaKey && !event.ctrlKey) {\n +\t\t\t\tselectee.$element.removeClass(\'ui-selected\');\n +\t\t\t\tselectee.selected = false;\n +\t\t\t\tselectee.$element.addClass(\'ui-unselecting\');\n +\t\t\t\tselectee.unselecting = true;\n +\t\t\t\t// selectable UNSELECTING callback\n +\t\t\t\tthat._trigger("unselecting", event, {\n +\t\t\t\t\tunselecting: selectee.element\n +\t\t\t\t});\n +\t\t\t}\n +\t\t});\n +\n +\t\t$(event.target).parents().andSelf().each(function() {\n +\t\t\tvar selectee = $.data(this, "selectable-item");\n +\t\t\tif (selectee) {\n +\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass(\'ui-selected\');\n +\t\t\t\tselectee.$element\n +\t\t\t\t\t.removeClass(doSelect ? "ui-unselecting" : "ui-selected")\n +\t\t\t\t\t.addClass(doSelect ? "ui-selecting" : "ui-unselecting");\n +\t\t\t\tselectee.unselecting = !doSelect;\n +\t\t\t\tselectee.selecting = doSelect;\n +\t\t\t\tselectee.selected = doSelect;\n +\t\t\t\t// selectable (UN)SELECTING callback\n +\t\t\t\tif (doSelect) {\n +\t\t\t\t\tthat._trigger("selecting", event, {\n +\t\t\t\t\t\tselecting: selectee.element\n +\t\t\t\t\t});\n +\t\t\t\t} else {\n +\t\t\t\t\tthat._trigger("unselecting", event, {\n +\t\t\t\t\t\tunselecting: selectee.element\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t});\n +\n +\t},\n +\n +\t_mouseDrag: function(event) {\n +\t\tvar that = this;\n +\t\tthis.dragged = true;\n +\n +\t\tif (this.options.disabled)\n +\t\t\treturn;\n +\n +\t\tvar options = this.options;\n +\n +\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n +\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n +\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n +\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n +\n +\t\tthis.selectees.each(function() {\n +\t\t\tvar selectee = $.data(this, "selectable-item");\n +\t\t\t//prevent helper from being selected if appendTo: selectable\n +\t\t\tif (!selectee || selectee.element == that.element[0])\n +\t\t\t\treturn;\n +\t\t\tvar hit = false;\n +\t\t\tif (options.tolerance == \'touch\') {\n +\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n +\t\t\t} else if (options.tolerance == \'fit\') {\n +\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n +\t\t\t}\n +\n +\t\t\tif (hit) {\n +\t\t\t\t// SELECT\n +\t\t\t\tif (selectee.selected) {\n +\t\t\t\t\tselectee.$element.removeClass(\'ui-selected\');\n +\t\t\t\t\tselectee.selected = false;\n +\t\t\t\t}\n +\t\t\t\tif (selectee.unselecting) {\n +\t\t\t\t\tselectee.$element.removeClass(\'ui-unselecting\');\n +\t\t\t\t\tselectee.unselecting = false;\n +\t\t\t\t}\n +\t\t\t\tif (!selectee.selecting) {\n +\t\t\t\t\tselectee.$element.addClass(\'ui-selecting\');\n +\t\t\t\t\tselectee.selecting = true;\n +\t\t\t\t\t// selectable SELECTING callback\n +\t\t\t\t\tthat._trigger("selecting", event, {\n +\t\t\t\t\t\tselecting: selectee.element\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\t// UNSELECT\n +\t\t\t\tif (selectee.selecting) {\n +\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n +\t\t\t\t\t\tselectee.$element.removeClass(\'ui-selecting\');\n +\t\t\t\t\t\tselectee.selecting = false;\n +\t\t\t\t\t\tselectee.$element.addClass(\'ui-selected\');\n +\t\t\t\t\t\tselectee.selected = true;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tselectee.$element.removeClass(\'ui-selecting\');\n +\t\t\t\t\t\tselectee.selecting = false;\n +\t\t\t\t\t\tif (selectee.startselected) {\n +\t\t\t\t\t\t\tselectee.$element.addClass(\'ui-unselecting\');\n +\t\t\t\t\t\t\tselectee.unselecting = true;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\t// selectable UNSELECTING callback\n +\t\t\t\t\t\tthat._trigger("unselecting", event, {\n +\t\t\t\t\t\t\tunselecting: selectee.element\n +\t\t\t\t\t\t});\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\tif (selectee.selected) {\n +\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n +\t\t\t\t\t\tselectee.$element.removeClass(\'ui-selected\');\n +\t\t\t\t\t\tselectee.selected = false;\n +\n +\t\t\t\t\t\tselectee.$element.addClass(\'ui-unselecting\');\n +\t\t\t\t\t\tselectee.unselecting = true;\n +\t\t\t\t\t\t// selectable UNSELECTING callback\n +\t\t\t\t\t\tthat._trigger("unselecting", event, {\n +\t\t\t\t\t\t\tunselecting: selectee.element\n +\t\t\t\t\t\t});\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\n +\t\treturn false;\n +\t},\n +\n +\t_mouseStop: function(event) {\n +\t\tvar that = this;\n +\n +\t\tthis.dragged = false;\n +\n +\t\tvar options = this.options;\n +\n +\t\t$(\'.ui-unselecting\', this.element[0]).each(function() {\n +\t\t\tvar selectee = $.data(this, "selectable-item");\n +\t\t\tselectee.$element.removeClass(\'ui-unselecting\');\n +\t\t\tselectee.unselecting = false;\n +\t\t\tselectee.startselected = false;\n +\t\t\tthat._trigger("unselected", event, {\n +\t\t\t\tunselected: selectee.element\n +\t\t\t});\n +\t\t});\n +\t\t$(\'.ui-selecting\', this.element[0]).each(function() {\n +\t\t\tvar selectee = $.data(this, "selectable-item");\n +\t\t\tselectee.$element.removeClass(\'ui-selecting\').addClass(\'ui-selected\');\n +\t\t\tselectee.selecting = false;\n +\t\t\tselectee.selected = true;\n +\t\t\tselectee.startselected = true;\n +\t\t\tthat._trigger("selected", event, {\n +\t\t\t\tselected: selectee.element\n +\t\t\t});\n +\t\t});\n +\t\tthis._trigger("stop", event);\n +\n +\t\tthis.helper.remove();\n +\n +\t\treturn false;\n +\t}\n +\n +});\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.widget("ui.sortable", $.ui.mouse, {\n +\tversion: "1.9.2",\n +\twidgetEventPrefix: "sort",\n +\tready: false,\n +\toptions: {\n +\t\tappendTo: "parent",\n +\t\taxis: false,\n +\t\tconnectWith: false,\n +\t\tcontainment: false,\n +\t\tcursor: \'auto\',\n +\t\tcursorAt: false,\n +\t\tdropOnEmpty: true,\n +\t\tforcePlaceholderSize: false,\n +\t\tforceHelperSize: false,\n +\t\tgrid: false,\n +\t\thandle: false,\n +\t\thelper: "original",\n +\t\titems: \'> *\',\n +\t\topacity: false,\n +\t\tplaceholder: false,\n +\t\trevert: false,\n +\t\tscroll: true,\n +\t\tscrollSensitivity: 20,\n +\t\tscrollSpeed: 20,\n +\t\tscope: "default",\n +\t\ttolerance: "intersect",\n +\t\tzIndex: 1000\n +\t},\n +\t_create: function() {\n +\n +\t\tvar o = this.options;\n +\t\tthis.containerCache = {};\n +\t\tthis.element.addClass("ui-sortable");\n +\n +\t\t//Get the items\n +\t\tthis.refresh();\n +\n +\t\t//Let\'s determine if the items are being displayed horizontally\n +\t\tthis.floating = this.items.length ? o.axis === \'x\' || (/left|right/).test(this.items[0].item.css(\'float\')) || (/inline|table-cell/).test(this.items[0].item.css(\'display\')) : false;\n +\n +\t\t//Let\'s determine the parent\'s offset\n +\t\tthis.offset = this.element.offset();\n +\n +\t\t//Initialize mouse events for interaction\n +\t\tthis._mouseInit();\n +\n +\t\t//We\'re ready to go\n +\t\tthis.ready = true\n +\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.element\n +\t\t\t.removeClass("ui-sortable ui-sortable-disabled");\n +\t\tthis._mouseDestroy();\n +\n +\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n +\t\t\tthis.items[i].item.removeData(this.widgetName + "-item");\n +\n +\t\treturn this;\n +\t},\n +\n +\t_setOption: function(key, value){\n +\t\tif ( key === "disabled" ) {\n +\t\t\tthis.options[ key ] = value;\n +\n +\t\t\tthis.widget().toggleClass( "ui-sortable-disabled", !!value );\n +\t\t} else {\n +\t\t\t// Don\'t call widget base _setOption for disable as it adds ui-state-disabled class\n +\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n +\t\t}\n +\t},\n +\n +\t_mouseCapture: function(event, overrideHandle) {\n +\t\tvar that = this;\n +\n +\t\tif (this.reverting) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\tif(this.options.disabled || this.options.type == \'static\') return false;\n +\n +\t\t//We have to refresh the items data once first\n +\t\tthis._refreshItems(event);\n +\n +\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n +\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n +\t\t\tif($.data(this, that.widgetName + \'-item\') == that) {\n +\t\t\t\tcurrentItem = $(this);\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t});\n +\t\tif($.data(event.target, that.widgetName + \'-item\') == that) currentItem = $(event.target);\n +\n +\t\tif(!currentItem) return false;\n +\t\tif(this.options.handle && !overrideHandle) {\n +\t\t\tvar validHandle = false;\n +\n +\t\t\t$(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; });\n +\t\t\tif(!validHandle) return false;\n +\t\t}\n +\n +\t\tthis.currentItem = currentItem;\n +\t\tthis._removeCurrentsFromItems();\n +\t\treturn true;\n +\n +\t},\n +\n +\t_mouseStart: function(event, overrideHandle, noActivation) {\n +\n +\t\tvar o = this.options;\n +\t\tthis.currentContainer = this;\n +\n +\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n +\t\tthis.refreshPositions();\n +\n +\t\t//Create and append the visible helper\n +\t\tthis.helper = this._createHelper(event);\n +\n +\t\t//Cache the helper size\n +\t\tthis._cacheHelperProportions();\n +\n +\t\t/*\n +\t\t * - Position generation -\n +\t\t * This block generates everything position related - it\'s the core of draggables.\n +\t\t */\n +\n +\t\t//Cache the margins of the original element\n +\t\tthis._cacheMargins();\n +\n +\t\t//Get the next scrolling parent\n +\t\tthis.scrollParent = this.helper.scrollParent();\n +\n +\t\t//The element\'s absolute position on the page minus margins\n +\t\tthis.offset = this.currentItem.offset();\n +\t\tthis.offset = {\n +\t\t\ttop: this.offset.top - this.margins.top,\n +\t\t\tleft: this.offset.left - this.margins.left\n +\t\t};\n +\n +\t\t$.extend(this.offset, {\n +\t\t\tclick: { //Where the click happened, relative to the element\n +\t\t\t\tleft: event.pageX - this.offset.left,\n +\t\t\t\ttop: event.pageY - this.offset.top\n +\t\t\t},\n +\t\t\tparent: this._getParentOffset(),\n +\t\t\trelative: this._getRelativeO ]]></string> </value> </item> @@ -177,97 +3887,2028 @@ <key> <string>data</string> </key> <value> <string encoding="cdata"><![CDATA[ -ss("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.18"})})(jQuery);/*\n - * jQuery UI Accordion 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Accordion\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(b.autoHeight||b.fillHeight)&&c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(!(this.options.disabled||b.altKey||b.ctrlKey)){var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}if(f){a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus();return!1}return!0}},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];this._clickHandler({target:b},b);return this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(!d.disabled){if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return}},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!!g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}}),a.extend(a.ui.accordion,{version:"1.8.18",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size())b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);else{if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})}},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);/*\n - * jQuery UI Autocomplete 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Autocomplete\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.widget.js\n - *\tjquery.ui.position.js\n - */(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!b.options.disabled&&!b.element.propAttr("readOnly")){d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._move("previous",c),c.preventDefault();break;case e.DOWN:b._move("next",c),c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){b.options.disabled||(b.selectedItem=null,b.previous=b.element.val())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",context:{autocompleteRequest:++c},success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==!1)return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this.response)},_response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close(),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){if(b.length&&b[0].label&&b[0].value)return b;return a.map(b,function(b){if(typeof b=="string")return{label:b,value:b};return a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)}},widget:function(){return this.menu.element}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,"\\\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){!a(c.target).closest(".ui-menu-item a").length||(c.preventDefault(),b.select(c))}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){!this.active||(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active)this.activate(c,this.element.children(b));else{var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))}},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);/*\n - * jQuery UI Button 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Button\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);c&&(d?e=a(d).find("[name=\'"+c+"\']"):e=a("[name=\'"+c+"\']",b.ownerDocument).filter(function(){return!this.form}));return e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.propAttr("disabled"):this.element.propAttr("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){h.disabled||(a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active"))}).bind("mouseleave.button",function(){h.disabled||a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){f||b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){h.disabled||(f=!1,d=a.pageX,e=a.pageY)}).bind("mouseup.button",function(a){!h.disabled&&(d!==a.pageX||e!==a.pageY)&&(f=!0)})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.keyCode==a.ui.keyCode.ENTER)&&a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for=\'"+this.element.attr("id")+"\']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);b==="disabled"?c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1):this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class=\'ui-button-icon-primary ui-icon "+d.primary+"\'></span>"),d.secondary&&b.append("<span class=\'ui-button-icon-secondary ui-icon "+d.secondary+"\'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);/*\n - * jQuery UI Dialog 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Dialog\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.widget.js\n - * jquery.ui.button.js\n - *\tjquery.ui.draggable.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.position.js\n - *\tjquery.ui.resizable.js\n - */(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||" ",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a(\'<a href="#"></a>\').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){b.close(a);return!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("<span></span>").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1!==c._trigger("beforeClose",b)){c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d);return c}},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;if(e.modal&&!b||!e.stack&&!e.modal)return d._trigger("focus",c);e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c);return d},open:function(){if(!this._isOpen){var b=this,c=b.options,d=b.uiDialog;b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode===a.ui.keyCode.TAB){var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey){d.focus(1);return!1}if(b.target===d[0]&&b.shiftKey){e.focus(1);return!1}}}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open");return b}},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a(\'<button type="button"></button>\').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){a!=="click"&&(a in f?e[a](b):e.attr(a,b))}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||" "))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.18",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");b||(this.uuid+=1,b=this.uuid);return"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return!1})},1),a(document).bind("keydown.dialog-overlay",function(c){b.options.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}),a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&c.bgiframe(),this.instances.push(c);return c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;if(a.browser.msie&&a.browser.version<7){b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return b<c?a(window).height()+"px":b+"px"}return a(document).height()+"px"},width:function(){var b,c;if(a.browser.msie){b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return b<c?a(window).width()+"px":b+"px"}return a(document).width()+"px"},resize:function(){var b=a([]);a.each(a.ui.dialog.overlay.instances,function(){b=b.add(this)}),b.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}}),a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);/*\n - * jQuery UI Slider 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Slider\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.mouse.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class=\'ui-slider-handle ui-state-default ui-corner-all\' href=\'#\'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=a(this).data("index.ui-slider-handle"),f,g,h,i;if(!b.options.disabled){switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d.preventDefault();if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),f=b._start(d,e);if(f===!1)return}}i=b.options.step,b.options.values&&b.options.values.length?g=h=b.values(e):g=h=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:h=b._valueMin();break;case a.ui.keyCode.END:h=b._valueMax();break;case a.ui.keyCode.PAGE_UP:h=b._trimAlignValue(g+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(g-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g===b._valueMax())return;h=b._trimAlignValue(g+i);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g===b._valueMin())return;h=b._trimAlignValue(g-i)}b._slide(d,e,h)}}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length)this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);else return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()}},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;a=this._trimAlignValue(a);return a},_values:function(a){var b,c,d;if(arguments.length){b=this.options.values[a],b=this._trimAlignValue(b);return b}c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.18"})})(jQuery);/*\n - * jQuery UI Tabs 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Tabs\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - *\tjquery.ui.widget.js\n - */(function(a,b){function f(){return++d}function e(){return++c}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href=\'#{href}\'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\\s/g,"_").replace(/[^\\w\\u00c0-\\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash){e.selected=a;return!1}}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1){this.blur();return!1}e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected")){e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur();return!1}if(!f.length){e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur();return!1}}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$="+a+"]")));return a},destroy:function(){var b=this.options;this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie);return this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\\{href\\}/g,c).replace(/#\\{label\\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0]));return this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a])));return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup();return this},url:function(a,b){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.18"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){t=d.selected,e()}:function(a){a.clientX&&c.rotate(null)});a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate);return this}})})(jQuery);/*\n - * jQuery UI Datepicker 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Datepicker\n - *\n - * Depends:\n - *\tjquery.ui.core.js\n - */(function($,undefined){function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\\Array\\(\\)/))}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);!c.length||c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);!$.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])&&!!d.length&&(d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover"))})}function Datepicker(){this.debug=!1,this._ +ffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n +\t\t});\n +\n +\t\t// Only after we got the offset, we can change the helper\'s position to absolute\n +\t\t// TODO: Still need to figure out a way to make relative sorting possible\n +\t\tthis.helper.css("position", "absolute");\n +\t\tthis.cssPosition = this.helper.css("position");\n +\n +\t\t//Generate the original position\n +\t\tthis.originalPosition = this._generatePosition(event);\n +\t\tthis.originalPageX = event.pageX;\n +\t\tthis.originalPageY = event.pageY;\n +\n +\t\t//Adjust the mouse offset relative to the helper if \'cursorAt\' is supplied\n +\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n +\n +\t\t//Cache the former DOM position\n +\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n +\n +\t\t//If the helper is not the original, hide the original so it\'s not playing any role during the drag, won\'t cause anything bad this way\n +\t\tif(this.helper[0] != this.currentItem[0]) {\n +\t\t\tthis.currentItem.hide();\n +\t\t}\n +\n +\t\t//Create the placeholder\n +\t\tthis._createPlaceholder();\n +\n +\t\t//Set a containment if given in the options\n +\t\tif(o.containment)\n +\t\t\tthis._setContainment();\n +\n +\t\tif(o.cursor) { // cursor option\n +\t\t\tif ($(\'body\').css("cursor")) this._storedCursor = $(\'body\').css("cursor");\n +\t\t\t$(\'body\').css("cursor", o.cursor);\n +\t\t}\n +\n +\t\tif(o.opacity) { // opacity option\n +\t\t\tif (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity");\n +\t\t\tthis.helper.css("opacity", o.opacity);\n +\t\t}\n +\n +\t\tif(o.zIndex) { // zIndex option\n +\t\t\tif (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex");\n +\t\t\tthis.helper.css("zIndex", o.zIndex);\n +\t\t}\n +\n +\t\t//Prepare scrolling\n +\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != \'HTML\')\n +\t\t\tthis.overflowOffset = this.scrollParent.offset();\n +\n +\t\t//Call callbacks\n +\t\tthis._trigger("start", event, this._uiHash());\n +\n +\t\t//Recache the helper size\n +\t\tif(!this._preserveHelperProportions)\n +\t\t\tthis._cacheHelperProportions();\n +\n +\n +\t\t//Post \'activate\' events to possible containers\n +\t\tif(!noActivation) {\n +\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, this._uiHash(this)); }\n +\t\t}\n +\n +\t\t//Prepare possible droppables\n +\t\tif($.ui.ddmanager)\n +\t\t\t$.ui.ddmanager.current = this;\n +\n +\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n +\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n +\n +\t\tthis.dragging = true;\n +\n +\t\tthis.helper.addClass("ui-sortable-helper");\n +\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n +\t\treturn true;\n +\n +\t},\n +\n +\t_mouseDrag: function(event) {\n +\n +\t\t//Compute the helpers position\n +\t\tthis.position = this._generatePosition(event);\n +\t\tthis.positionAbs = this._convertPositionTo("absolute");\n +\n +\t\tif (!this.lastPositionAbs) {\n +\t\t\tthis.lastPositionAbs = this.positionAbs;\n +\t\t}\n +\n +\t\t//Do scrolling\n +\t\tif(this.options.scroll) {\n +\t\t\tvar o = this.options, scrolled = false;\n +\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != \'HTML\') {\n +\n +\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n +\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n +\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n +\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n +\n +\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n +\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n +\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n +\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n +\n +\t\t\t} else {\n +\n +\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n +\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n +\n +\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n +\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n +\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n +\n +\t\t\t}\n +\n +\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n +\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n +\t\t}\n +\n +\t\t//Regenerate the absolute position used for position checks\n +\t\tthis.positionAbs = this._convertPositionTo("absolute");\n +\n +\t\t//Set the helper position\n +\t\tif(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+\'px\';\n +\t\tif(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+\'px\';\n +\n +\t\t//Rearrange\n +\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n +\n +\t\t\t//Cache variables and intersection, continue if no intersection\n +\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n +\t\t\tif (!intersection) continue;\n +\n +\t\t\t// Only put the placeholder inside the current Container, skip all\n +\t\t\t// items form other containers. This works because when moving\n +\t\t\t// an item from one container to another the\n +\t\t\t// currentContainer is switched before the placeholder is moved.\n +\t\t\t//\n +\t\t\t// Without this moving items in "sub-sortables" can cause the placeholder to jitter\n +\t\t\t// beetween the outer and inner container.\n +\t\t\tif (item.instance !== this.currentContainer) continue;\n +\n +\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n +\t\t\t\t&&\tthis.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before\n +\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n +\t\t\t\t&& (this.options.type == \'semi-dynamic\' ? !$.contains(this.element[0], itemElement) : true)\n +\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n +\t\t\t) {\n +\n +\t\t\t\tthis.direction = intersection == 1 ? "down" : "up";\n +\n +\t\t\t\tif (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {\n +\t\t\t\t\tthis._rearrange(event, item);\n +\t\t\t\t} else {\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tthis._trigger("change", event, this._uiHash());\n +\t\t\t\tbreak;\n +\t\t\t}\n +\t\t}\n +\n +\t\t//Post events to containers\n +\t\tthis._contactContainers(event);\n +\n +\t\t//Interconnect with droppables\n +\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n +\n +\t\t//Call callbacks\n +\t\tthis._trigger(\'sort\', event, this._uiHash());\n +\n +\t\tthis.lastPositionAbs = this.positionAbs;\n +\t\treturn false;\n +\n +\t},\n +\n +\t_mouseStop: function(event, noPropagation) {\n +\n +\t\tif(!event) return;\n +\n +\t\t//If we are using droppables, inform the manager about the drop\n +\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n +\t\t\t$.ui.ddmanager.drop(this, event);\n +\n +\t\tif(this.options.revert) {\n +\t\t\tvar that = this;\n +\t\t\tvar cur = this.placeholder.offset();\n +\n +\t\t\tthis.reverting = true;\n +\n +\t\t\t$(this.helper).animate({\n +\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n +\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n +\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n +\t\t\t\tthat._clear(event);\n +\t\t\t});\n +\t\t} else {\n +\t\t\tthis._clear(event, noPropagation);\n +\t\t}\n +\n +\t\treturn false;\n +\n +\t},\n +\n +\tcancel: function() {\n +\n +\t\tif(this.dragging) {\n +\n +\t\t\tthis._mouseUp({ target: null });\n +\n +\t\t\tif(this.options.helper == "original")\n +\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");\n +\t\t\telse\n +\t\t\t\tthis.currentItem.show();\n +\n +\t\t\t//Post deactivating events to containers\n +\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n +\t\t\t\tthis.containers[i]._trigger("deactivate", null, this._uiHash(this));\n +\t\t\t\tif(this.containers[i].containerCache.over) {\n +\t\t\t\t\tthis.containers[i]._trigger("out", null, this._uiHash(this));\n +\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t}\n +\n +\t\tif (this.placeholder) {\n +\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n +\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n +\t\t\tif(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();\n +\n +\t\t\t$.extend(this, {\n +\t\t\t\thelper: null,\n +\t\t\t\tdragging: false,\n +\t\t\t\treverting: false,\n +\t\t\t\t_noFinalSort: null\n +\t\t\t});\n +\n +\t\t\tif(this.domPosition.prev) {\n +\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n +\t\t\t} else {\n +\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n +\t\t\t}\n +\t\t}\n +\n +\t\treturn this;\n +\n +\t},\n +\n +\tserialize: function(o) {\n +\n +\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n +\t\tvar str = []; o = o || {};\n +\n +\t\t$(items).each(function() {\n +\t\t\tvar res = ($(o.item || this).attr(o.attribute || \'id\') || \'\').match(o.expression || (/(.+)[-=_](.+)/));\n +\t\t\tif(res) str.push((o.key || res[1]+\'[]\')+\'=\'+(o.key && o.expression ? res[1] : res[2]));\n +\t\t});\n +\n +\t\tif(!str.length && o.key) {\n +\t\t\tstr.push(o.key + \'=\');\n +\t\t}\n +\n +\t\treturn str.join(\'&\');\n +\n +\t},\n +\n +\ttoArray: function(o) {\n +\n +\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n +\t\tvar ret = []; o = o || {};\n +\n +\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || \'id\') || \'\'); });\n +\t\treturn ret;\n +\n +\t},\n +\n +\t/* Be careful with the following core functions */\n +\t_intersectsWith: function(item) {\n +\n +\t\tvar x1 = this.positionAbs.left,\n +\t\t\tx2 = x1 + this.helperProportions.width,\n +\t\t\ty1 = this.positionAbs.top,\n +\t\t\ty2 = y1 + this.helperProportions.height;\n +\n +\t\tvar l = item.left,\n +\t\t\tr = l + item.width,\n +\t\t\tt = item.top,\n +\t\t\tb = t + item.height;\n +\n +\t\tvar dyClick = this.offset.click.top,\n +\t\t\tdxClick = this.offset.click.left;\n +\n +\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n +\n +\t\tif(\t this.options.tolerance == "pointer"\n +\t\t\t|| this.options.forcePointerForContainers\n +\t\t\t|| (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? \'width\' : \'height\'] > item[this.floating ? \'width\' : \'height\'])\n +\t\t) {\n +\t\t\treturn isOverElement;\n +\t\t} else {\n +\n +\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n +\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n +\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n +\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n +\n +\t\t}\n +\t},\n +\n +\t_intersectsWithPointer: function(item) {\n +\n +\t\tvar isOverElementHeight = (this.options.axis === \'x\') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n +\t\t\tisOverElementWidth = (this.options.axis === \'y\') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n +\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n +\t\t\tverticalDirection = this._getDragVerticalDirection(),\n +\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n +\n +\t\tif (!isOverElement)\n +\t\t\treturn false;\n +\n +\t\treturn this.floating ?\n +\t\t\t( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 )\n +\t\t\t: ( verticalDirection && (verticalDirection == "down" ? 2 : 1) );\n +\n +\t},\n +\n +\t_intersectsWithSides: function(item) {\n +\n +\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n +\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n +\t\t\tverticalDirection = this._getDragVerticalDirection(),\n +\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n +\n +\t\tif (this.floating && horizontalDirection) {\n +\t\t\treturn ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf));\n +\t\t} else {\n +\t\t\treturn verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf));\n +\t\t}\n +\n +\t},\n +\n +\t_getDragVerticalDirection: function() {\n +\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n +\t\treturn delta != 0 && (delta > 0 ? "down" : "up");\n +\t},\n +\n +\t_getDragHorizontalDirection: function() {\n +\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n +\t\treturn delta != 0 && (delta > 0 ? "right" : "left");\n +\t},\n +\n +\trefresh: function(event) {\n +\t\tthis._refreshItems(event);\n +\t\tthis.refreshPositions();\n +\t\treturn this;\n +\t},\n +\n +\t_connectWith: function() {\n +\t\tvar options = this.options;\n +\t\treturn options.connectWith.constructor == String\n +\t\t\t? [options.connectWith]\n +\t\t\t: options.connectWith;\n +\t},\n +\n +\t_getItemsAsjQuery: function(connected) {\n +\n +\t\tvar items = [];\n +\t\tvar queries = [];\n +\t\tvar connectWith = this._connectWith();\n +\n +\t\tif(connectWith && connected) {\n +\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n +\t\t\t\tvar cur = $(connectWith[i]);\n +\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n +\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n +\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n +\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(\'.ui-sortable-placeholder\'), inst]);\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t};\n +\t\t}\n +\n +\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(\'.ui-sortable-placeholder\'), this]);\n +\n +\t\tfor (var i = queries.length - 1; i >= 0; i--){\n +\t\t\tqueries[i][0].each(function() {\n +\t\t\t\titems.push(this);\n +\t\t\t});\n +\t\t};\n +\n +\t\treturn $(items);\n +\n +\t},\n +\n +\t_removeCurrentsFromItems: function() {\n +\n +\t\tvar list = this.currentItem.find(":data(" + this.widgetName + "-item)");\n +\n +\t\tthis.items = $.grep(this.items, function (item) {\n +\t\t\tfor (var j=0; j < list.length; j++) {\n +\t\t\t\tif(list[j] == item.item[0])\n +\t\t\t\t\treturn false;\n +\t\t\t};\n +\t\t\treturn true;\n +\t\t});\n +\n +\t},\n +\n +\t_refreshItems: function(event) {\n +\n +\t\tthis.items = [];\n +\t\tthis.containers = [this];\n +\t\tvar items = this.items;\n +\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n +\t\tvar connectWith = this._connectWith();\n +\n +\t\tif(connectWith && this.ready) { //Shouldn\'t be run the first time through due to massive slow-down\n +\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n +\t\t\t\tvar cur = $(connectWith[i]);\n +\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n +\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n +\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n +\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n +\t\t\t\t\t\tthis.containers.push(inst);\n +\t\t\t\t\t}\n +\t\t\t\t};\n +\t\t\t};\n +\t\t}\n +\n +\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n +\t\t\tvar targetData = queries[i][1];\n +\t\t\tvar _queries = queries[i][0];\n +\n +\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n +\t\t\t\tvar item = $(_queries[j]);\n +\n +\t\t\t\titem.data(this.widgetName + \'-item\', targetData); // Data for target checking (mouse manager)\n +\n +\t\t\t\titems.push({\n +\t\t\t\t\titem: item,\n +\t\t\t\t\tinstance: targetData,\n +\t\t\t\t\twidth: 0, height: 0,\n +\t\t\t\t\tleft: 0, top: 0\n +\t\t\t\t});\n +\t\t\t};\n +\t\t};\n +\n +\t},\n +\n +\trefreshPositions: function(fast) {\n +\n +\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent\'s position will change\n +\t\tif(this.offsetParent && this.helper) {\n +\t\t\tthis.offset.parent = this._getParentOffset();\n +\t\t}\n +\n +\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n +\t\t\tvar item = this.items[i];\n +\n +\t\t\t//We ignore calculating positions of all connected containers when we\'re not over them\n +\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n +\t\t\t\tcontinue;\n +\n +\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n +\n +\t\t\tif (!fast) {\n +\t\t\t\titem.width = t.outerWidth();\n +\t\t\t\titem.height = t.outerHeight();\n +\t\t\t}\n +\n +\t\t\tvar p = t.offset();\n +\t\t\titem.left = p.left;\n +\t\t\titem.top = p.top;\n +\t\t};\n +\n +\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n +\t\t\tthis.options.custom.refreshContainers.call(this);\n +\t\t} else {\n +\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n +\t\t\t\tvar p = this.containers[i].element.offset();\n +\t\t\t\tthis.containers[i].containerCache.left = p.left;\n +\t\t\t\tthis.containers[i].containerCache.top = p.top;\n +\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n +\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n +\t\t\t};\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\t_createPlaceholder: function(that) {\n +\t\tthat = that || this;\n +\t\tvar o = that.options;\n +\n +\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n +\t\t\tvar className = o.placeholder;\n +\t\t\to.placeholder = {\n +\t\t\t\telement: function() {\n +\n +\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n +\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")\n +\t\t\t\t\t\t.removeClass("ui-sortable-helper")[0];\n +\n +\t\t\t\t\tif(!className)\n +\t\t\t\t\t\tel.style.visibility = "hidden";\n +\n +\t\t\t\t\treturn el;\n +\t\t\t\t},\n +\t\t\t\tupdate: function(container, p) {\n +\n +\t\t\t\t\t// 1. If a className is set as \'placeholder option, we don\'t force sizes - the class is responsible for that\n +\t\t\t\t\t// 2. The option \'forcePlaceholderSize can be enabled to force it even if a class name is specified\n +\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n +\n +\t\t\t\t\t//If the element doesn\'t have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n +\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css(\'paddingTop\')||0, 10) - parseInt(that.currentItem.css(\'paddingBottom\')||0, 10)); };\n +\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css(\'paddingLeft\')||0, 10) - parseInt(that.currentItem.css(\'paddingRight\')||0, 10)); };\n +\t\t\t\t}\n +\t\t\t};\n +\t\t}\n +\n +\t\t//Create the placeholder\n +\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n +\n +\t\t//Append it after the actual current item\n +\t\tthat.currentItem.after(that.placeholder);\n +\n +\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n +\t\to.placeholder.update(that, that.placeholder);\n +\n +\t},\n +\n +\t_contactContainers: function(event) {\n +\n +\t\t// get innermost container that intersects with item\n +\t\tvar innermostContainer = null, innermostIndex = null;\n +\n +\n +\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n +\n +\t\t\t// never consider a container that\'s located within the item itself\n +\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n +\t\t\t\tcontinue;\n +\n +\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n +\n +\t\t\t\t// if we\'ve already found a container and it\'s more "inner" than this, then continue\n +\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n +\t\t\t\t\tcontinue;\n +\n +\t\t\t\tinnermostContainer = this.containers[i];\n +\t\t\t\tinnermostIndex = i;\n +\n +\t\t\t} else {\n +\t\t\t\t// container doesn\'t intersect. trigger "out" event if necessary\n +\t\t\t\tif(this.containers[i].containerCache.over) {\n +\t\t\t\t\tthis.containers[i]._trigger("out", event, this._uiHash(this));\n +\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t}\n +\n +\t\t// if no intersecting containers found, return\n +\t\tif(!innermostContainer) return;\n +\n +\t\t// move the item into the container if it\'s not there already\n +\t\tif(this.containers.length === 1) {\n +\t\t\tthis.containers[innermostIndex]._trigger("over", event, this._uiHash(this));\n +\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n +\t\t} else {\n +\n +\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n +\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n +\t\t\tvar posProperty = this.containers[innermostIndex].floating ? \'left\' : \'top\';\n +\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? \'width\' : \'height\';\n +\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n +\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n +\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n +\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n +\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n +\t\t\t\tvar nearBottom = false;\n +\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n +\t\t\t\t\tnearBottom = true;\n +\t\t\t\t\tcur += this.items[j][sizeProperty];\n +\t\t\t\t}\n +\n +\t\t\t\tif(Math.abs(cur - base) < dist) {\n +\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n +\t\t\t\t\tthis.direction = nearBottom ? "up": "down";\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n +\t\t\t\treturn;\n +\n +\t\t\tthis.currentContainer = this.containers[innermostIndex];\n +\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n +\t\t\tthis._trigger("change", event, this._uiHash());\n +\t\t\tthis.containers[innermostIndex]._trigger("change", event, this._uiHash(this));\n +\n +\t\t\t//Update the placeholder\n +\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n +\n +\t\t\tthis.containers[innermostIndex]._trigger("over", event, this._uiHash(this));\n +\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n +\t\t}\n +\n +\n +\t},\n +\n +\t_createHelper: function(event) {\n +\n +\t\tvar o = this.options;\n +\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == \'clone\' ? this.currentItem.clone() : this.currentItem);\n +\n +\t\tif(!helper.parents(\'body\').length) //Add the helper to the DOM if that didn\'t happen already\n +\t\t\t$(o.appendTo != \'parent\' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n +\n +\t\tif(helper[0] == this.currentItem[0])\n +\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };\n +\n +\t\tif(helper[0].style.width == \'\' || o.forceHelperSize) helper.width(this.currentItem.width());\n +\t\tif(helper[0].style.height == \'\' || o.forceHelperSize) helper.height(this.currentItem.height());\n +\n +\t\treturn helper;\n +\n +\t},\n +\n +\t_adjustOffsetFromHelper: function(obj) {\n +\t\tif (typeof obj == \'string\') {\n +\t\t\tobj = obj.split(\' \');\n +\t\t}\n +\t\tif ($.isArray(obj)) {\n +\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n +\t\t}\n +\t\tif (\'left\' in obj) {\n +\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n +\t\t}\n +\t\tif (\'right\' in obj) {\n +\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n +\t\t}\n +\t\tif (\'top\' in obj) {\n +\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n +\t\t}\n +\t\tif (\'bottom\' in obj) {\n +\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n +\t\t}\n +\t},\n +\n +\t_getParentOffset: function() {\n +\n +\n +\t\t//Get the offsetParent and cache its position\n +\t\tthis.offsetParent = this.helper.offsetParent();\n +\t\tvar po = this.offsetParent.offset();\n +\n +\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n +\t\t// 1. The position of the helper is absolute, so it\'s position is calculated based on the next positioned parent\n +\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn\'t the document, which means that\n +\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n +\t\tif(this.cssPosition == \'absolute\' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n +\t\t\tpo.left += this.scrollParent.scrollLeft();\n +\t\t\tpo.top += this.scrollParent.scrollTop();\n +\t\t}\n +\n +\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n +\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == \'html\' && $.ui.ie)) //Ugly IE fix\n +\t\t\tpo = { top: 0, left: 0 };\n +\n +\t\treturn {\n +\t\t\ttop: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),\n +\t\t\tleft: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)\n +\t\t};\n +\n +\t},\n +\n +\t_getRelativeOffset: function() {\n +\n +\t\tif(this.cssPosition == "relative") {\n +\t\t\tvar p = this.currentItem.position();\n +\t\t\treturn {\n +\t\t\t\ttop: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),\n +\t\t\t\tleft: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()\n +\t\t\t};\n +\t\t} else {\n +\t\t\treturn { top: 0, left: 0 };\n +\t\t}\n +\n +\t},\n +\n +\t_cacheMargins: function() {\n +\t\tthis.margins = {\n +\t\t\tleft: (parseInt(this.currentItem.css("marginLeft"),10) || 0),\n +\t\t\ttop: (parseInt(this.currentItem.css("marginTop"),10) || 0)\n +\t\t};\n +\t},\n +\n +\t_cacheHelperProportions: function() {\n +\t\tthis.helperProportions = {\n +\t\t\twidth: this.helper.outerWidth(),\n +\t\t\theight: this.helper.outerHeight()\n +\t\t};\n +\t},\n +\n +\t_setContainment: function() {\n +\n +\t\tvar o = this.options;\n +\t\tif(o.containment == \'parent\') o.containment = this.helper[0].parentNode;\n +\t\tif(o.containment == \'document\' || o.containment == \'window\') this.containment = [\n +\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n +\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n +\t\t\t$(o.containment == \'document\' ? document : window).width() - this.helperProportions.width - this.margins.left,\n +\t\t\t($(o.containment == \'document\' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n +\t\t];\n +\n +\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n +\t\t\tvar ce = $(o.containment)[0];\n +\t\t\tvar co = $(o.containment).offset();\n +\t\t\tvar over = ($(ce).css("overflow") != \'hidden\');\n +\n +\t\t\tthis.containment = [\n +\t\t\t\tco.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,\n +\t\t\t\tco.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,\n +\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,\n +\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top\n +\t\t\t];\n +\t\t}\n +\n +\t},\n +\n +\t_convertPositionTo: function(d, pos) {\n +\n +\t\tif(!pos) pos = this.position;\n +\t\tvar mod = d == "absolute" ? 1 : -1;\n +\t\tvar o = this.options, scroll = this.cssPosition == \'absolute\' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n +\n +\t\treturn {\n +\t\t\ttop: (\n +\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t- ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n +\t\t\t),\n +\t\t\tleft: (\n +\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t- ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n +\t\t\t)\n +\t\t};\n +\n +\t},\n +\n +\t_generatePosition: function(event) {\n +\n +\t\tvar o = this.options, scroll = this.cssPosition == \'absolute\' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n +\n +\t\t// This is another very weird special case that only happens for relative elements:\n +\t\t// 1. If the css position is relative\n +\t\t// 2. and the scroll parent is the document or similar to the offset parent\n +\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n +\t\tif(this.cssPosition == \'relative\' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n +\t\t\tthis.offset.relative = this._getRelativeOffset();\n +\t\t}\n +\n +\t\tvar pageX = event.pageX;\n +\t\tvar pageY = event.pageY;\n +\n +\t\t/*\n +\t\t * - Position constraining -\n +\t\t * Constrain the position to a mix of grid, containment.\n +\t\t */\n +\n +\t\tif(this.originalPosition) { //If we are not dragging yet, we won\'t check for options\n +\n +\t\t\tif(this.containment) {\n +\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n +\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n +\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n +\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n +\t\t\t}\n +\n +\t\t\tif(o.grid) {\n +\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n +\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n +\n +\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n +\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n +\t\t\t}\n +\n +\t\t}\n +\n +\t\treturn {\n +\t\t\ttop: (\n +\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n +\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t+ ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n +\t\t\t),\n +\t\t\tleft: (\n +\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n +\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n +\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n +\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent\'s offset without borders (offset + border)\n +\t\t\t\t+ ( ( this.cssPosition == \'fixed\' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n +\t\t\t)\n +\t\t};\n +\n +\t},\n +\n +\t_rearrange: function(event, i, a, hardRefresh) {\n +\n +\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == \'down\' ? i.item[0] : i.item[0].nextSibling));\n +\n +\t\t//Various things done here to improve the performance:\n +\t\t// 1. we create a setTimeout, that calls refreshPositions\n +\t\t// 2. on the instance, we have a counter variable, that get\'s higher after every append\n +\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it\'s still the same\n +\t\t// 4. this lets only the last addition to the timeout stack through\n +\t\tthis.counter = this.counter ? ++this.counter : 1;\n +\t\tvar counter = this.counter;\n +\n +\t\tthis._delay(function() {\n +\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n +\t\t});\n +\n +\t},\n +\n +\t_clear: function(event, noPropagation) {\n +\n +\t\tthis.reverting = false;\n +\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n +\t\t// everything else normalized again\n +\t\tvar delayedTriggers = [];\n +\n +\t\t// We first have to update the dom position of the actual currentItem\n +\t\t// Note: don\'t do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n +\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n +\t\tthis._noFinalSort = null;\n +\n +\t\tif(this.helper[0] == this.currentItem[0]) {\n +\t\t\tfor(var i in this._storedCSS) {\n +\t\t\t\tif(this._storedCSS[i] == \'auto\' || this._storedCSS[i] == \'static\') this._storedCSS[i] = \'\';\n +\t\t\t}\n +\t\t\tthis.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");\n +\t\t} else {\n +\t\t\tthis.currentItem.show();\n +\t\t}\n +\n +\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });\n +\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n +\n +\t\t// Check if the items Container has Changed and trigger appropriate\n +\t\t// events.\n +\t\tif (this !== this.currentContainer) {\n +\t\t\tif(!noPropagation) {\n +\t\t\t\tdelayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });\n +\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer));\n +\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer));\n +\t\t\t}\n +\t\t}\n +\n +\n +\t\t//Post events to containers\n +\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n +\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n +\t\t\tif(this.containers[i].containerCache.over) {\n +\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n +\t\t\t\tthis.containers[i].containerCache.over = 0;\n +\t\t\t}\n +\t\t}\n +\n +\t\t//Do what was originally in plugins\n +\t\tif(this._storedCursor) $(\'body\').css("cursor", this._storedCursor); //Reset cursor\n +\t\tif(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset opacity\n +\t\tif(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == \'auto\' ? \'\' : this._storedZIndex); //Reset z-index\n +\n +\t\tthis.dragging = false;\n +\t\tif(this.cancelHelperRemoval) {\n +\t\t\tif(!noPropagation) {\n +\t\t\t\tthis._trigger("beforeStop", event, this._uiHash());\n +\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n +\t\t\t\tthis._trigger("stop", event, this._uiHash());\n +\t\t\t}\n +\n +\t\t\tthis.fromOutside = false;\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\tif(!noPropagation) this._trigger("beforeStop", event, this._uiHash());\n +\n +\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n +\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n +\n +\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n +\n +\t\tif(!noPropagation) {\n +\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n +\t\t\tthis._trigger("stop", event, this._uiHash());\n +\t\t}\n +\n +\t\tthis.fromOutside = false;\n +\t\treturn true;\n +\n +\t},\n +\n +\t_trigger: function() {\n +\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n +\t\t\tthis.cancel();\n +\t\t}\n +\t},\n +\n +\t_uiHash: function(_inst) {\n +\t\tvar inst = _inst || this;\n +\t\treturn {\n +\t\t\thelper: inst.helper,\n +\t\t\tplaceholder: inst.placeholder || $([]),\n +\t\t\tposition: inst.position,\n +\t\t\toriginalPosition: inst.originalPosition,\n +\t\t\toffset: inst.positionAbs,\n +\t\t\titem: inst.currentItem,\n +\t\t\tsender: _inst ? _inst.element : null\n +\t\t};\n +\t}\n +\n +});\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +var uid = 0,\n +\thideProps = {},\n +\tshowProps = {};\n +\n +hideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n +\thideProps.borderTopWidth = hideProps.borderBottomWidth = "hide";\n +showProps.height = showProps.paddingTop = showProps.paddingBottom =\n +\tshowProps.borderTopWidth = showProps.borderBottomWidth = "show";\n +\n +$.widget( "ui.accordion", {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\tactive: 0,\n +\t\tanimate: {},\n +\t\tcollapsible: false,\n +\t\tevent: "click",\n +\t\theader: "> li > :first-child,> :not(li):even",\n +\t\theightStyle: "auto",\n +\t\ticons: {\n +\t\t\tactiveHeader: "ui-icon-triangle-1-s",\n +\t\t\theader: "ui-icon-triangle-1-e"\n +\t\t},\n +\n +\t\t// callbacks\n +\t\tactivate: null,\n +\t\tbeforeActivate: null\n +\t},\n +\n +\t_create: function() {\n +\t\tvar accordionId = this.accordionId = "ui-accordion-" +\n +\t\t\t\t(this.element.attr( "id" ) || ++uid),\n +\t\t\toptions = this.options;\n +\n +\t\tthis.prevShow = this.prevHide = $();\n +\t\tthis.element.addClass( "ui-accordion ui-widget ui-helper-reset" );\n +\n +\t\tthis.headers = this.element.find( options.header )\n +\t\t\t.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" );\n +\t\tthis._hoverable( this.headers );\n +\t\tthis._focusable( this.headers );\n +\n +\t\tthis.headers.next()\n +\t\t\t.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )\n +\t\t\t.hide();\n +\n +\t\t// don\'t allow collapsible: false and active: false / null\n +\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n +\t\t\toptions.active = 0;\n +\t\t}\n +\t\t// handle negative values\n +\t\tif ( options.active < 0 ) {\n +\t\t\toptions.active += this.headers.length;\n +\t\t}\n +\t\tthis.active = this._findActive( options.active )\n +\t\t\t.addClass( "ui-accordion-header-active ui-state-active" )\n +\t\t\t.toggleClass( "ui-corner-all ui-corner-top" );\n +\t\tthis.active.next()\n +\t\t\t.addClass( "ui-accordion-content-active" )\n +\t\t\t.show();\n +\n +\t\tthis._createIcons();\n +\t\tthis.refresh();\n +\n +\t\t// ARIA\n +\t\tthis.element.attr( "role", "tablist" );\n +\n +\t\tthis.headers\n +\t\t\t.attr( "role", "tab" )\n +\t\t\t.each(function( i ) {\n +\t\t\t\tvar header = $( this ),\n +\t\t\t\t\theaderId = header.attr( "id" ),\n +\t\t\t\t\tpanel = header.next(),\n +\t\t\t\t\tpanelId = panel.attr( "id" );\n +\t\t\t\tif ( !headerId ) {\n +\t\t\t\t\theaderId = accordionId + "-header-" + i;\n +\t\t\t\t\theader.attr( "id", headerId );\n +\t\t\t\t}\n +\t\t\t\tif ( !panelId ) {\n +\t\t\t\t\tpanelId = accordionId + "-panel-" + i;\n +\t\t\t\t\tpanel.attr( "id", panelId );\n +\t\t\t\t}\n +\t\t\t\theader.attr( "aria-controls", panelId );\n +\t\t\t\tpanel.attr( "aria-labelledby", headerId );\n +\t\t\t})\n +\t\t\t.next()\n +\t\t\t\t.attr( "role", "tabpanel" );\n +\n +\t\tthis.headers\n +\t\t\t.not( this.active )\n +\t\t\t.attr({\n +\t\t\t\t"aria-selected": "false",\n +\t\t\t\ttabIndex: -1\n +\t\t\t})\n +\t\t\t.next()\n +\t\t\t\t.attr({\n +\t\t\t\t\t"aria-expanded": "false",\n +\t\t\t\t\t"aria-hidden": "true"\n +\t\t\t\t})\n +\t\t\t\t.hide();\n +\n +\t\t// make sure at least one header is in the tab order\n +\t\tif ( !this.active.length ) {\n +\t\t\tthis.headers.eq( 0 ).attr( "tabIndex", 0 );\n +\t\t} else {\n +\t\t\tthis.active.attr({\n +\t\t\t\t"aria-selected": "true",\n +\t\t\t\ttabIndex: 0\n +\t\t\t})\n +\t\t\t.next()\n +\t\t\t\t.attr({\n +\t\t\t\t\t"aria-expanded": "true",\n +\t\t\t\t\t"aria-hidden": "false"\n +\t\t\t\t});\n +\t\t}\n +\n +\t\tthis._on( this.headers, { keydown: "_keydown" });\n +\t\tthis._on( this.headers.next(), { keydown: "_panelKeyDown" });\n +\t\tthis._setupEvents( options.event );\n +\t},\n +\n +\t_getCreateEventData: function() {\n +\t\treturn {\n +\t\t\theader: this.active,\n +\t\t\tcontent: !this.active.length ? $() : this.active.next()\n +\t\t};\n +\t},\n +\n +\t_createIcons: function() {\n +\t\tvar icons = this.options.icons;\n +\t\tif ( icons ) {\n +\t\t\t$( "<span>" )\n +\t\t\t\t.addClass( "ui-accordion-header-icon ui-icon " + icons.header )\n +\t\t\t\t.prependTo( this.headers );\n +\t\t\tthis.active.children( ".ui-accordion-header-icon" )\n +\t\t\t\t.removeClass( icons.header )\n +\t\t\t\t.addClass( icons.activeHeader );\n +\t\t\tthis.headers.addClass( "ui-accordion-icons" );\n +\t\t}\n +\t},\n +\n +\t_destroyIcons: function() {\n +\t\tthis.headers\n +\t\t\t.removeClass( "ui-accordion-icons" )\n +\t\t\t.children( ".ui-accordion-header-icon" )\n +\t\t\t\t.remove();\n +\t},\n +\n +\t_destroy: function() {\n +\t\tvar contents;\n +\n +\t\t// clean up main element\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-accordion ui-widget ui-helper-reset" )\n +\t\t\t.removeAttr( "role" );\n +\n +\t\t// clean up headers\n +\t\tthis.headers\n +\t\t\t.removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "aria-selected" )\n +\t\t\t.removeAttr( "aria-controls" )\n +\t\t\t.removeAttr( "tabIndex" )\n +\t\t\t.each(function() {\n +\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n +\t\t\t\t\tthis.removeAttribute( "id" );\n +\t\t\t\t}\n +\t\t\t});\n +\t\tthis._destroyIcons();\n +\n +\t\t// clean up content panels\n +\t\tcontents = this.headers.next()\n +\t\t\t.css( "display", "" )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "aria-expanded" )\n +\t\t\t.removeAttr( "aria-hidden" )\n +\t\t\t.removeAttr( "aria-labelledby" )\n +\t\t\t.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" )\n +\t\t\t.each(function() {\n +\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n +\t\t\t\t\tthis.removeAttribute( "id" );\n +\t\t\t\t}\n +\t\t\t});\n +\t\tif ( this.options.heightStyle !== "content" ) {\n +\t\t\tcontents.css( "height", "" );\n +\t\t}\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tif ( key === "active" ) {\n +\t\t\t// _activate() will handle invalid values and update this.options\n +\t\t\tthis._activate( value );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( key === "event" ) {\n +\t\t\tif ( this.options.event ) {\n +\t\t\t\tthis._off( this.headers, this.options.event );\n +\t\t\t}\n +\t\t\tthis._setupEvents( value );\n +\t\t}\n +\n +\t\tthis._super( key, value );\n +\n +\t\t// setting collapsible: false while collapsed; open first panel\n +\t\tif ( key === "collapsible" && !value && this.options.active === false ) {\n +\t\t\tthis._activate( 0 );\n +\t\t}\n +\n +\t\tif ( key === "icons" ) {\n +\t\t\tthis._destroyIcons();\n +\t\t\tif ( value ) {\n +\t\t\t\tthis._createIcons();\n +\t\t\t}\n +\t\t}\n +\n +\t\t// #5332 - opacity doesn\'t cascade to positioned elements in IE\n +\t\t// so we need to add the disabled class to the headers and panels\n +\t\tif ( key === "disabled" ) {\n +\t\t\tthis.headers.add( this.headers.next() )\n +\t\t\t\t.toggleClass( "ui-state-disabled", !!value );\n +\t\t}\n +\t},\n +\n +\t_keydown: function( event ) {\n +\t\tif ( event.altKey || event.ctrlKey ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar keyCode = $.ui.keyCode,\n +\t\t\tlength = this.headers.length,\n +\t\t\tcurrentIndex = this.headers.index( event.target ),\n +\t\t\ttoFocus = false;\n +\n +\t\tswitch ( event.keyCode ) {\n +\t\t\tcase keyCode.RIGHT:\n +\t\t\tcase keyCode.DOWN:\n +\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n +\t\t\t\tbreak;\n +\t\t\tcase keyCode.LEFT:\n +\t\t\tcase keyCode.UP:\n +\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n +\t\t\t\tbreak;\n +\t\t\tcase keyCode.SPACE:\n +\t\t\tcase keyCode.ENTER:\n +\t\t\t\tthis._eventHandler( event );\n +\t\t\t\tbreak;\n +\t\t\tcase keyCode.HOME:\n +\t\t\t\ttoFocus = this.headers[ 0 ];\n +\t\t\t\tbreak;\n +\t\t\tcase keyCode.END:\n +\t\t\t\ttoFocus = this.headers[ length - 1 ];\n +\t\t\t\tbreak;\n +\t\t}\n +\n +\t\tif ( toFocus ) {\n +\t\t\t$( event.target ).attr( "tabIndex", -1 );\n +\t\t\t$( toFocus ).attr( "tabIndex", 0 );\n +\t\t\ttoFocus.focus();\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t},\n +\n +\t_panelKeyDown : function( event ) {\n +\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n +\t\t\t$( event.currentTarget ).prev().focus();\n +\t\t}\n +\t},\n +\n +\trefresh: function() {\n +\t\tvar maxHeight, overflow,\n +\t\t\theightStyle = this.options.heightStyle,\n +\t\t\tparent = this.element.parent();\n +\n +\n +\t\tif ( heightStyle === "fill" ) {\n +\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n +\t\t\t// in order to get a reliable height\n +\t\t\t// we use the minHeight support test because we assume that only\n +\t\t\t// browsers that don\'t support minHeight will treat height as minHeight\n +\t\t\tif ( !$.support.minHeight ) {\n +\t\t\t\toverflow = parent.css( "overflow" );\n +\t\t\t\tparent.css( "overflow", "hidden");\n +\t\t\t}\n +\t\t\tmaxHeight = parent.height();\n +\t\t\tthis.element.siblings( ":visible" ).each(function() {\n +\t\t\t\tvar elem = $( this ),\n +\t\t\t\t\tposition = elem.css( "position" );\n +\n +\t\t\t\tif ( position === "absolute" || position === "fixed" ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\tmaxHeight -= elem.outerHeight( true );\n +\t\t\t});\n +\t\t\tif ( overflow ) {\n +\t\t\t\tparent.css( "overflow", overflow );\n +\t\t\t}\n +\n +\t\t\tthis.headers.each(function() {\n +\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n +\t\t\t});\n +\n +\t\t\tthis.headers.next()\n +\t\t\t\t.each(function() {\n +\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n +\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n +\t\t\t\t})\n +\t\t\t\t.css( "overflow", "auto" );\n +\t\t} else if ( heightStyle === "auto" ) {\n +\t\t\tmaxHeight = 0;\n +\t\t\tthis.headers.next()\n +\t\t\t\t.each(function() {\n +\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );\n +\t\t\t\t})\n +\t\t\t\t.height( maxHeight );\n +\t\t}\n +\t},\n +\n +\t_activate: function( index ) {\n +\t\tvar active = this._findActive( index )[ 0 ];\n +\n +\t\t// trying to activate the already active panel\n +\t\tif ( active === this.active[ 0 ] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// trying to collapse, simulate a click on the currently active header\n +\t\tactive = active || this.active[ 0 ];\n +\n +\t\tthis._eventHandler({\n +\t\t\ttarget: active,\n +\t\t\tcurrentTarget: active,\n +\t\t\tpreventDefault: $.noop\n +\t\t});\n +\t},\n +\n +\t_findActive: function( selector ) {\n +\t\treturn typeof selector === "number" ? this.headers.eq( selector ) : $();\n +\t},\n +\n +\t_setupEvents: function( event ) {\n +\t\tvar events = {};\n +\t\tif ( !event ) {\n +\t\t\treturn;\n +\t\t}\n +\t\t$.each( event.split(" "), function( index, eventName ) {\n +\t\t\tevents[ eventName ] = "_eventHandler";\n +\t\t});\n +\t\tthis._on( this.headers, events );\n +\t},\n +\n +\t_eventHandler: function( event ) {\n +\t\tvar options = this.options,\n +\t\t\tactive = this.active,\n +\t\t\tclicked = $( event.currentTarget ),\n +\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n +\t\t\tcollapsing = clickedIsActive && options.collapsible,\n +\t\t\ttoShow = collapsing ? $() : clicked.next(),\n +\t\t\ttoHide = active.next(),\n +\t\t\teventData = {\n +\t\t\t\toldHeader: active,\n +\t\t\t\toldPanel: toHide,\n +\t\t\t\tnewHeader: collapsing ? $() : clicked,\n +\t\t\t\tnewPanel: toShow\n +\t\t\t};\n +\n +\t\tevent.preventDefault();\n +\n +\t\tif (\n +\t\t\t\t// click on active header, but not collapsible\n +\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n +\t\t\t\t// allow canceling activation\n +\t\t\t\t( this._trigger( "beforeActivate", event, eventData ) === false ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n +\n +\t\t// when the call to ._toggle() comes after the class changes\n +\t\t// it causes a very odd bug in IE 8 (see #6720)\n +\t\tthis.active = clickedIsActive ? $() : clicked;\n +\t\tthis._toggle( eventData );\n +\n +\t\t// switch classes\n +\t\t// corner classes on the previously active header stay after the animation\n +\t\tactive.removeClass( "ui-accordion-header-active ui-state-active" );\n +\t\tif ( options.icons ) {\n +\t\t\tactive.children( ".ui-accordion-header-icon" )\n +\t\t\t\t.removeClass( options.icons.activeHeader )\n +\t\t\t\t.addClass( options.icons.header );\n +\t\t}\n +\n +\t\tif ( !clickedIsActive ) {\n +\t\t\tclicked\n +\t\t\t\t.removeClass( "ui-corner-all" )\n +\t\t\t\t.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );\n +\t\t\tif ( options.icons ) {\n +\t\t\t\tclicked.children( ".ui-accordion-header-icon" )\n +\t\t\t\t\t.removeClass( options.icons.header )\n +\t\t\t\t\t.addClass( options.icons.activeHeader );\n +\t\t\t}\n +\n +\t\t\tclicked\n +\t\t\t\t.next()\n +\t\t\t\t.addClass( "ui-accordion-content-active" );\n +\t\t}\n +\t},\n +\n +\t_toggle: function( data ) {\n +\t\tvar toShow = data.newPanel,\n +\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n +\n +\t\t// handle activating a panel during the animation for another activation\n +\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n +\t\tthis.prevShow = toShow;\n +\t\tthis.prevHide = toHide;\n +\n +\t\tif ( this.options.animate ) {\n +\t\t\tthis._animate( toShow, toHide, data );\n +\t\t} else {\n +\t\t\ttoHide.hide();\n +\t\t\ttoShow.show();\n +\t\t\tthis._toggleComplete( data );\n +\t\t}\n +\n +\t\ttoHide.attr({\n +\t\t\t"aria-expanded": "false",\n +\t\t\t"aria-hidden": "true"\n +\t\t});\n +\t\ttoHide.prev().attr( "aria-selected", "false" );\n +\t\t// if we\'re switching panels, remove the old header from the tab order\n +\t\t// if we\'re opening from collapsed state, remove the previous header from the tab order\n +\t\t// if we\'re collapsing, then keep the collapsing header in the tab order\n +\t\tif ( toShow.length && toHide.length ) {\n +\t\t\ttoHide.prev().attr( "tabIndex", -1 );\n +\t\t} else if ( toShow.length ) {\n +\t\t\tthis.headers.filter(function() {\n +\t\t\t\treturn $( this ).attr( "tabIndex" ) === 0;\n +\t\t\t})\n +\t\t\t.attr( "tabIndex", -1 );\n +\t\t}\n +\n +\t\ttoShow\n +\t\t\t.attr({\n +\t\t\t\t"aria-expanded": "true",\n +\t\t\t\t"aria-hidden": "false"\n +\t\t\t})\n +\t\t\t.prev()\n +\t\t\t\t.attr({\n +\t\t\t\t\t"aria-selected": "true",\n +\t\t\t\t\ttabIndex: 0\n +\t\t\t\t});\n +\t},\n +\n +\t_animate: function( toShow, toHide, data ) {\n +\t\tvar total, easing, duration,\n +\t\t\tthat = this,\n +\t\t\tadjust = 0,\n +\t\t\tdown = toShow.length &&\n +\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n +\t\t\tanimate = this.options.animate || {},\n +\t\t\toptions = down && animate.down || animate,\n +\t\t\tcomplete = function() {\n +\t\t\t\tthat._toggleComplete( data );\n +\t\t\t};\n +\n +\t\tif ( typeof options === "number" ) {\n +\t\t\tduration = options;\n +\t\t}\n +\t\tif ( typeof options === "string" ) {\n +\t\t\teasing = options;\n +\t\t}\n +\t\t// fall back from options to animation in case of partial down settings\n +\t\teasing = easing || options.easing || animate.easing;\n +\t\tduration = duration || options.duration || animate.duration;\n +\n +\t\tif ( !toHide.length ) {\n +\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n +\t\t}\n +\t\tif ( !toShow.length ) {\n +\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n +\t\t}\n +\n +\t\ttotal = toShow.show().outerHeight();\n +\t\ttoHide.animate( hideProps, {\n +\t\t\tduration: duration,\n +\t\t\teasing: easing,\n +\t\t\tstep: function( now, fx ) {\n +\t\t\t\tfx.now = Math.round( now );\n +\t\t\t}\n +\t\t});\n +\t\ttoShow\n +\t\t\t.hide()\n +\t\t\t.animate( showProps, {\n +\t\t\t\tduration: duration,\n +\t\t\t\teasing: easing,\n +\t\t\t\tcomplete: complete,\n +\t\t\t\tstep: function( now, fx ) {\n +\t\t\t\t\tfx.now = Math.round( now );\n +\t\t\t\t\tif ( fx.prop !== "height" ) {\n +\t\t\t\t\t\tadjust += fx.now;\n +\t\t\t\t\t} else if ( that.options.heightStyle !== "content" ) {\n +\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n +\t\t\t\t\t\tadjust = 0;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t},\n +\n +\t_toggleComplete: function( data ) {\n +\t\tvar toHide = data.oldPanel;\n +\n +\t\ttoHide\n +\t\t\t.removeClass( "ui-accordion-content-active" )\n +\t\t\t.prev()\n +\t\t\t\t.removeClass( "ui-corner-top" )\n +\t\t\t\t.addClass( "ui-corner-all" );\n +\n +\t\t// Work around for rendering bug in IE (#5421)\n +\t\tif ( toHide.length ) {\n +\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n +\t\t}\n +\n +\t\tthis._trigger( "activate", null, data );\n +\t}\n +});\n +\n +\n +\n +// DEPRECATED\n +if ( $.uiBackCompat !== false ) {\n +\t// navigation options\n +\t(function( $, prototype ) {\n +\t\t$.extend( prototype.options, {\n +\t\t\tnavigation: false,\n +\t\t\tnavigationFilter: function() {\n +\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n +\t\t\t}\n +\t\t});\n +\n +\t\tvar _create = prototype._create;\n +\t\tprototype._create = function() {\n +\t\t\tif ( this.options.navigation ) {\n +\t\t\t\tvar that = this,\n +\t\t\t\t\theaders = this.element.find( this.options.header ),\n +\t\t\t\t\tcontent = headers.next(),\n +\t\t\t\t\tcurrent = headers.add( content )\n +\t\t\t\t\t\t.find( "a" )\n +\t\t\t\t\t\t.filter( this.options.navigationFilter )\n +\t\t\t\t\t\t[ 0 ];\n +\t\t\t\tif ( current ) {\n +\t\t\t\t\theaders.add( content ).each( function( index ) {\n +\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n +\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n +\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\t_create.call( this );\n +\t\t};\n +\t}( jQuery, jQuery.ui.accordion.prototype ) );\n +\n +\t// height options\n +\t(function( $, prototype ) {\n +\t\t$.extend( prototype.options, {\n +\t\t\theightStyle: null, // remove default so we fall back to old values\n +\t\t\tautoHeight: true, // use heightStyle: "auto"\n +\t\t\tclearStyle: false, // use heightStyle: "content"\n +\t\t\tfillSpace: false // use heightStyle: "fill"\n +\t\t});\n +\n +\t\tvar _create = prototype._create,\n +\t\t\t_setOption = prototype._setOption;\n +\n +\t\t$.extend( prototype, {\n +\t\t\t_create: function() {\n +\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n +\t\t\t\t\tthis._mergeHeightStyle();\n +\n +\t\t\t\t_create.call( this );\n +\t\t\t},\n +\n +\t\t\t_setOption: function( key ) {\n +\t\t\t\tif ( key === "autoHeight" || key === "clearStyle" || key === "fillSpace" ) {\n +\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n +\t\t\t\t}\n +\t\t\t\t_setOption.apply( this, arguments );\n +\t\t\t},\n +\n +\t\t\t_mergeHeightStyle: function() {\n +\t\t\t\tvar options = this.options;\n +\n +\t\t\t\tif ( options.fillSpace ) {\n +\t\t\t\t\treturn "fill";\n +\t\t\t\t}\n +\n +\t\t\t\tif ( options.clearStyle ) {\n +\t\t\t\t\treturn "content";\n +\t\t\t\t}\n +\n +\t\t\t\tif ( options.autoHeight ) {\n +\t\t\t\t\treturn "auto";\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\t}( jQuery, jQuery.ui.accordion.prototype ) );\n +\n +\t// icon options\n +\t(function( $, prototype ) {\n +\t\t$.extend( prototype.options.icons, {\n +\t\t\tactiveHeader: null, // remove default so we fall back to old values\n +\t\t\theaderSelected: "ui-icon-triangle-1-s"\n +\t\t});\n +\n +\t\tvar _createIcons = prototype._createIcons;\n +\t\tprototype._createIcons = function() {\n +\t\t\tif ( this.options.icons ) {\n +\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n +\t\t\t\t\tthis.options.icons.headerSelected;\n +\t\t\t}\n +\t\t\t_createIcons.call( this );\n +\t\t};\n +\t}( jQuery, jQuery.ui.accordion.prototype ) );\n +\n +\t// expanded active option, activate method\n +\t(function( $, prototype ) {\n +\t\tprototype.activate = prototype._activate;\n +\n +\t\tvar _findActive = prototype._findActive;\n +\t\tprototype._findActive = function( index ) {\n +\t\t\tif ( index === -1 ) {\n +\t\t\t\tindex = false;\n +\t\t\t}\n +\t\t\tif ( index && typeof index !== "number" ) {\n +\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n +\t\t\t\tif ( index === -1 ) {\n +\t\t\t\t\tindex = false;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\treturn _findActive.call( this, index );\n +\t\t};\n +\t}( jQuery, jQuery.ui.accordion.prototype ) );\n +\n +\t// resize method\n +\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n +\n +\t// change events\n +\t(function( $, prototype ) {\n +\t\t$.extend( prototype.options, {\n +\t\t\tchange: null,\n +\t\t\tchangestart: null\n +\t\t});\n +\n +\t\tvar _trigger = prototype._trigger;\n +\t\tprototype._trigger = function( type, event, data ) {\n +\t\t\tvar ret = _trigger.apply( this, arguments );\n +\t\t\tif ( !ret ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\tif ( type === "beforeActivate" ) {\n +\t\t\t\tret = _trigger.call( this, "changestart", event, {\n +\t\t\t\t\toldHeader: data.oldHeader,\n +\t\t\t\t\toldContent: data.oldPanel,\n +\t\t\t\t\tnewHeader: data.newHeader,\n +\t\t\t\t\tnewContent: data.newPanel\n +\t\t\t\t});\n +\t\t\t} else if ( type === "activate" ) {\n +\t\t\t\tret = _trigger.call( this, "change", event, {\n +\t\t\t\t\toldHeader: data.oldHeader,\n +\t\t\t\t\toldContent: data.oldPanel,\n +\t\t\t\t\tnewHeader: data.newHeader,\n +\t\t\t\t\tnewContent: data.newPanel\n +\t\t\t\t});\n +\t\t\t}\n +\t\t\treturn ret;\n +\t\t};\n +\t}( jQuery, jQuery.ui.accordion.prototype ) );\n +\n +\t// animated option\n +\t// NOTE: this only provides support for "slide", "bounceslide", and easings\n +\t// not the full $.ui.accordion.animations API\n +\t(function( $, prototype ) {\n +\t\t$.extend( prototype.options, {\n +\t\t\tanimate: null,\n +\t\t\tanimated: "slide"\n +\t\t});\n +\n +\t\tvar _create = prototype._create;\n +\t\tprototype._create = function() {\n +\t\t\tvar options = this.options;\n +\t\t\tif ( options.animate === null ) {\n +\t\t\t\tif ( !options.animated ) {\n +\t\t\t\t\toptions.animate = false;\n +\t\t\t\t} else if ( options.animated === "slide" ) {\n +\t\t\t\t\toptions.animate = 300;\n +\t\t\t\t} else if ( options.animated === "bounceslide" ) {\n +\t\t\t\t\toptions.animate = {\n +\t\t\t\t\t\tduration: 200,\n +\t\t\t\t\t\tdown: {\n +\t\t\t\t\t\t\teasing: "easeOutBounce",\n +\t\t\t\t\t\t\tduration: 1000\n +\t\t\t\t\t\t}\n +\t\t\t\t\t};\n +\t\t\t\t} else {\n +\t\t\t\t\toptions.animate = options.animated;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t_create.call( this );\n +\t\t};\n +\t}( jQuery, jQuery.ui.accordion.prototype ) );\n +}\n +\n +})( jQuery );\n +(function( $, undefined ) {\n +\n +// used to prevent race conditions with remote data sources\n +var requestIndex = 0;\n +\n +$.widget( "ui.autocomplete", {\n +\tversion: "1.9.2",\n +\tdefaultElement: "<input>",\n +\toptions: {\n +\t\tappendTo: "body",\n +\t\tautoFocus: false,\n +\t\tdelay: 300,\n +\t\tminLength: 1,\n +\t\tposition: {\n +\t\t\tmy: "left top",\n +\t\t\tat: "left bottom",\n +\t\t\tcollision: "none"\n +\t\t},\n +\t\tsource: null,\n +\n +\t\t// callbacks\n +\t\tchange: null,\n +\t\tclose: null,\n +\t\tfocus: null,\n +\t\topen: null,\n +\t\tresponse: null,\n +\t\tsearch: null,\n +\t\tselect: null\n +\t},\n +\n +\tpending: 0,\n +\n +\t_create: function() {\n +\t\t// Some browsers only repeat keydown events, not keypress events,\n +\t\t// so we use the suppressKeyPress flag to determine if we\'ve already\n +\t\t// handled the keydown event. #7269\n +\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n +\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n +\t\t// events when we know the keydown event was used to modify the\n +\t\t// search term. #7799\n +\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n +\n +\t\tthis.isMultiLine = this._isMultiLine();\n +\t\tthis.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];\n +\t\tthis.isNewMenu = true;\n +\n +\t\tthis.element\n +\t\t\t.addClass( "ui-autocomplete-input" )\n +\t\t\t.attr( "autocomplete", "off" );\n +\n +\t\tthis._on( this.element, {\n +\t\t\tkeydown: function( event ) {\n +\t\t\t\tif ( this.element.prop( "readOnly" ) ) {\n +\t\t\t\t\tsuppressKeyPress = true;\n +\t\t\t\t\tsuppressInput = true;\n +\t\t\t\t\tsuppressKeyPressRepeat = true;\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\n +\t\t\t\tsuppressKeyPress = false;\n +\t\t\t\tsuppressInput = false;\n +\t\t\t\tsuppressKeyPressRepeat = false;\n +\t\t\t\tvar keyCode = $.ui.keyCode;\n +\t\t\t\tswitch( event.keyCode ) {\n +\t\t\t\tcase keyCode.PAGE_UP:\n +\t\t\t\t\tsuppressKeyPress = true;\n +\t\t\t\t\tthis._move( "previousPage", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.PAGE_DOWN:\n +\t\t\t\t\tsuppressKeyPress = true;\n +\t\t\t\t\tthis._move( "nextPage", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.UP:\n +\t\t\t\t\tsuppressKeyPress = true;\n +\t\t\t\t\tthis._keyEvent( "previous", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.DOWN:\n +\t\t\t\t\tsuppressKeyPress = true;\n +\t\t\t\t\tthis._keyEvent( "next", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.ENTER:\n +\t\t\t\tcase keyCode.NUMPAD_ENTER:\n +\t\t\t\t\t// when menu is open and has focus\n +\t\t\t\t\tif ( this.menu.active ) {\n +\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n +\t\t\t\t\t\t// which causes forms to submit\n +\t\t\t\t\t\tsuppressKeyPress = true;\n +\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t\tthis.menu.select( event );\n +\t\t\t\t\t}\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.TAB:\n +\t\t\t\t\tif ( this.menu.active ) {\n +\t\t\t\t\t\tthis.menu.select( event );\n +\t\t\t\t\t}\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.ESCAPE:\n +\t\t\t\t\tif ( this.menu.element.is( ":visible" ) ) {\n +\t\t\t\t\t\tthis._value( this.term );\n +\t\t\t\t\t\tthis.close( event );\n +\t\t\t\t\t\t// Different browsers have different default behavior for escape\n +\t\t\t\t\t\t// Single press can mean undo or clear\n +\t\t\t\t\t\t// Double press in IE means clear the whole form\n +\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t}\n +\t\t\t\t\tbreak;\n +\t\t\t\tdefault:\n +\t\t\t\t\tsuppressKeyPressRepeat = true;\n +\t\t\t\t\t// search timeout should be triggered before the input value is changed\n +\t\t\t\t\tthis._searchTimeout( event );\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tkeypress: function( event ) {\n +\t\t\t\tif ( suppressKeyPress ) {\n +\t\t\t\t\tsuppressKeyPress = false;\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\tif ( suppressKeyPressRepeat ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\n +\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n +\t\t\t\tvar keyCode = $.ui.keyCode;\n +\t\t\t\tswitch( event.keyCode ) {\n +\t\t\t\tcase keyCode.PAGE_UP:\n +\t\t\t\t\tthis._move( "previousPage", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.PAGE_DOWN:\n +\t\t\t\t\tthis._move( "nextPage", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.UP:\n +\t\t\t\t\tthis._keyEvent( "previous", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\tcase keyCode.DOWN:\n +\t\t\t\t\tthis._keyEvent( "next", event );\n +\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tinput: function( event ) {\n +\t\t\t\tif ( suppressInput ) {\n +\t\t\t\t\tsuppressInput = false;\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\tthis._searchTimeout( event );\n +\t\t\t},\n +\t\t\tfocus: function() {\n +\t\t\t\tthis.selectedItem = null;\n +\t\t\t\tthis.previous = this._value();\n +\t\t\t},\n +\t\t\tblur: function( event ) {\n +\t\t\t\tif ( this.cancelBlur ) {\n +\t\t\t\t\tdelete this.cancelBlur;\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\n +\t\t\t\tclearTimeout( this.searching );\n +\t\t\t\tthis.close( event );\n +\t\t\t\tthis._change( event );\n +\t\t\t}\n +\t\t});\n +\n +\t\tthis._initSource();\n +\t\tthis.menu = $( "<ul>" )\n +\t\t\t.addClass( "ui-autocomplete" )\n +\t\t\t.appendTo( this.document.find( this.options.appendTo || "body" )[ 0 ] )\n +\t\t\t.menu({\n +\t\t\t\t// custom key handling for now\n +\t\t\t\tinput: $(),\n +\t\t\t\t// disable ARIA support, the live region takes care of that\n +\t\t\t\trole: null\n +\t\t\t})\n +\t\t\t.zIndex( this.element.zIndex() + 1 )\n +\t\t\t.hide()\n +\t\t\t.data( "menu" );\n +\n +\t\tthis._on( this.menu.element, {\n +\t\t\tmousedown: function( event ) {\n +\t\t\t\t// prevent moving focus out of the text field\n +\t\t\t\tevent.preventDefault();\n +\n +\t\t\t\t// IE doesn\'t prevent moving focus even with event.preventDefault()\n +\t\t\t\t// so we set a flag to know when we should ignore the blur event\n +\t\t\t\tthis.cancelBlur = true;\n +\t\t\t\tthis._delay(function() {\n +\t\t\t\t\tdelete this.cancelBlur;\n +\t\t\t\t});\n +\n +\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n +\t\t\t\t// but we can\'t detect a mouseup or a click immediately afterward\n +\t\t\t\t// so we have to track the next mousedown and close the menu if\n +\t\t\t\t// the user clicks somewhere outside of the autocomplete\n +\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n +\t\t\t\tif ( !$( event.target ).closest( ".ui-menu-item" ).length ) {\n +\t\t\t\t\tthis._delay(function() {\n +\t\t\t\t\t\tvar that = this;\n +\t\t\t\t\t\tthis.document.one( "mousedown", function( event ) {\n +\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n +\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n +\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n +\t\t\t\t\t\t\t\tthat.close();\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t});\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tmenufocus: function( event, ui ) {\n +\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n +\t\t\t\tif ( this.isNewMenu ) {\n +\t\t\t\t\tthis.isNewMenu = false;\n +\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n +\t\t\t\t\t\tthis.menu.blur();\n +\n +\t\t\t\t\t\tthis.document.one( "mousemove", function() {\n +\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n +\t\t\t\t\t\t});\n +\n +\t\t\t\t\t\treturn;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\n +\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n +\t\t\t\t// TODO remove the fallback, see #8156\n +\t\t\t\tvar item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" );\n +\t\t\t\tif ( false !== this._trigger( "focus", event, { item: item } ) ) {\n +\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n +\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n +\t\t\t\t\t\tthis._value( item.value );\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\t// Normally the input is populated with the item\'s value as the\n +\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n +\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn\'t\n +\t\t\t\t\t// happen, so we update the live region so that screen readers can\n +\t\t\t\t\t// still notice the change and announce it.\n +\t\t\t\t\tthis.liveRegion.text( item.value );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tmenuselect: function( event, ui ) {\n +\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n +\t\t\t\t// TODO remove the fallback, see #8156\n +\t\t\t\tvar item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" ),\n +\t\t\t\t\tprevious = this.previous;\n +\n +\t\t\t\t// only trigger when focus was lost (click on menu)\n +\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n +\t\t\t\t\tthis.element.focus();\n +\t\t\t\t\tthis.previous = previous;\n +\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n +\t\t\t\t\t// is asynchronous, so we need to reset the previous\n +\t\t\t\t\t// term synchronously and asynchronously :-(\n +\t\t\t\t\tthis._delay(function() {\n +\t\t\t\t\t\tthis.previous = previous;\n +\t\t\t\t\t\tthis.selectedItem = item;\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\n +\t\t\t\tif ( false !== this._trigger( "select", event, { item: item } ) ) {\n +\t\t\t\t\tthis._value( item.value );\n +\t\t\t\t}\n +\t\t\t\t// reset the term after the select event\n +\t\t\t\t// this allows custom select handling to work properly\n +\t\t\t\tthis.term = this._value();\n +\n +\t\t\t\tthis.close( event );\n +\t\t\t\tthis.selectedItem = item;\n +\t\t\t}\n +\t\t});\n +\n +\t\tthis.liveRegion = $( "<span>", {\n +\t\t\t\trole: "status",\n +\t\t\t\t"aria-live": "polite"\n +\t\t\t})\n +\t\t\t.addClass( "ui-helper-hidden-accessible" )\n +\t\t\t.insertAfter( this.element );\n +\n +\t\tif ( $.fn.bgiframe ) {\n +\t\t\tthis.menu.element.bgiframe();\n +\t\t}\n +\n +\t\t// turning off autocomplete prevents the browser from remembering the\n +\t\t// value when navigating through history, so we re-enable autocomplete\n +\t\t// if the page is unloaded before the widget is destroyed. #7790\n +\t\tthis._on( this.window, {\n +\t\t\tbeforeunload: function() {\n +\t\t\t\tthis.element.removeAttr( "autocomplete" );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_destroy: function() {\n +\t\tclearTimeout( this.searching );\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-autocomplete-input" )\n +\t\t\t.removeAttr( "autocomplete" );\n +\t\tthis.menu.element.remove();\n +\t\tthis.liveRegion.remove();\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tthis._super( key, value );\n +\t\tif ( key === "source" ) {\n +\t\t\tthis._initSource();\n +\t\t}\n +\t\tif ( key === "appendTo" ) {\n +\t\t\tthis.menu.element.appendTo( this.document.find( value || "body" )[0] );\n +\t\t}\n +\t\tif ( key === "disabled" && value && this.xhr ) {\n +\t\t\tthis.xhr.abort();\n +\t\t}\n +\t},\n +\n +\t_isMultiLine: function() {\n +\t\t// Textareas are always multi-line\n +\t\tif ( this.element.is( "textarea" ) ) {\n +\t\t\treturn true;\n +\t\t}\n +\t\t// Inputs are always single-line, even if inside a contentEditable element\n +\t\t// IE also treats inputs as contentEditable\n +\t\tif ( this.element.is( "input" ) ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\t// All other element types are determined by whether or not they\'re contentEditable\n +\t\treturn this.element.prop( "isContentEditable" );\n +\t},\n +\n +\t_initSource: function() {\n +\t\tvar array, url,\n +\t\t\tthat = this;\n +\t\tif ( $.isArray(this.options.source) ) {\n +\t\t\tarray = this.options.source;\n +\t\t\tthis.source = function( request, response ) {\n +\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n +\t\t\t};\n +\t\t} else if ( typeof this.options.source === "string" ) {\n +\t\t\turl = this.options.source;\n +\t\t\tthis.source = function( request, response ) {\n +\t\t\t\tif ( that.xhr ) {\n +\t\t\t\t\tthat.xhr.abort();\n +\t\t\t\t}\n +\t\t\t\tthat.xhr = $.ajax({\n +\t\t\t\t\turl: url,\n +\t\t\t\t\tdata: request,\n +\t\t\t\t\tdataType: "json",\n +\t\t\t\t\tsuccess: function( data ) {\n +\t\t\t\t\t\tresponse( data );\n +\t\t\t\t\t},\n +\t\t\t\t\terror: function() {\n +\t\t\t\t\t\tresponse( [] );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t};\n +\t\t} else {\n +\t\t\tthis.source = this.options.source;\n +\t\t}\n +\t},\n +\n +\t_searchTimeout: function( event ) {\n +\t\tclearTimeout( this.searching );\n +\t\tthis.searching = this._delay(function() {\n +\t\t\t// only search if the value has changed\n +\t\t\tif ( this.term !== this._value() ) {\n +\t\t\t\tthis.selectedItem = null;\n +\t\t\t\tthis.search( null, event );\n +\t\t\t}\n +\t\t}, this.options.delay );\n +\t},\n +\n +\tsearch: function( value, event ) {\n +\t\tvalue = value != null ? value : this._v ]]></string> </value> </item> @@ -290,171 +5931,9123 @@ ss("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.off <key> <string>data</string> </key> <value> <string encoding="cdata"><![CDATA[ -curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($(\'<div id="\'+this._mainDivId+\'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>\'))}$.extend($.ui,{datepicker:{version:"1.8.18"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($(\'<div class="\'+this._inlineClass+\' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>\')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);c.hasClass(this.markerClassName)||(this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a))},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$(\'<span class="\'+this._appendClass+\'">\'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$(\'<button type="button"></button>\').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$(\'<input type="text" id="\'+g+\'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>\'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);c&&!c.inline&&this._setDateFromField(c,b);return c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;c&&s++;return c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;r+=f[0].length;return parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase()){f=c[0],r+=d.length;return!1}});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="\'"&&!n("\'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"\'":n("\'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;for(;;){var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;c&&m++;return c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="\'"&&!h("\'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"\'":h("\'")?k+="\'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;c&&e++;return c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="\'"&&!d("\'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"\'":d("\'")?b+="\'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0));return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?\'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_\'+dpuuid+".datepicker._adjustDate(\'#"+a.id+"\', -"+i+", \'M\');\\""+\' title="\'+q+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(c?"e":"w")+\'">\'+q+"</span></a>":e?"":\'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="\'+q+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(c?"e":"w")+\'">\'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?\'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_\'+dpuuid+".datepicker._adjustDate(\'#"+a.id+"\', +"+i+", \'M\');\\""+\' title="\'+s+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(c?"w":"e")+\'">\'+s+"</span></a>":e?"":\'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="\'+s+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(c?"w":"e")+\'">\'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":\'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_\'+dpuuid+\'.datepicker._hideDatepicker();">\'+this._get(a,"closeText")+"</button>",x=d?\'<div class="ui-datepicker-buttonpane ui-widget-content">\'+(c?w:"")+(this._isInRange(a,v)?\'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_\'+dpuuid+".datepicker._gotoToday(\'#"+a.id+"\');\\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+=\'<div class="ui-datepicker-group\';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+=\'">\'}Q+=\'<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix\'+P+\'">\'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+\'</div><table class="ui-datepicker-calendar"><thead>\'+"<tr>";var R=z?\'<th class="ui-datepicker-week-col">\'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?\' class="ui-datepicker-week-end"\':"")+">"+\'<span title="\'+A[T]+\'">\'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?\'<td class="ui-datepicker-week-col">\'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+=\'<td class="\'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+\'"\'+((!bb||G)&&ba[2]?\' title="\'+ba[2]+\'"\':"")+(bc?"":\' onclick="DP_jQuery_\'+dpuuid+".datepicker._selectDay(\'#"+a.id+"\',"+Y.getMonth()+","+Y.getFullYear()+\', this);return false;"\')+">"+(bb&&!G?" ":bc?\'<span class="ui-state-default">\'+Y.getDate()+"</span>":\'<a class="ui-state-default\'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+\'" href="#">\'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?\'<div class="ui-datepicker-row-break"></div>\':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?\'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>\':""),\n -a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l=\'<div class="ui-datepicker-title">\',m="";if(f||!i)m+=\'<span class="ui-datepicker-month">\'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+=\'<select class="ui-datepicker-month" onchange="DP_jQuery_\'+dpuuid+".datepicker._selectMonthYear(\'#"+a.id+"\', this, \'M\');\\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+=\'<option value="\'+p+\'"\'+(p==b?\' selected="selected"\':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+=\'<span class="ui-datepicker-year">\'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+=\'<select class="ui-datepicker-year" onchange="DP_jQuery_\'+dpuuid+".datepicker._selectMonthYear(\'#"+a.id+"\', this, \'Y\');\\" "+">";for(;t<=u;t++)a.yearshtml+=\'<option value="\'+t+\'"\'+(t==c?\' selected="selected"\':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="</div>";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;e=d&&e>d?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.18",window["DP_jQuery_"+dpuuid]=$})(jQuery);/*\n - * jQuery UI Progressbar 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Progressbar\n - *\n - * Depends:\n - * jquery.ui.core.js\n - * jquery.ui.widget.js\n - */(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class=\'ui-progressbar-value ui-widget-header ui-corner-left\'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===b)return this._value();this._setOption("value",a);return this},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;typeof a!="number"&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.18"})})(jQuery);/*\n - * jQuery UI Effects 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/\n - */jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\\-(\\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];if(c=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\\(0, 0, 0, 0\\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.18",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){b=="toggle"&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);if((c/=f/2)<1)return e/2*c*c*(((g*=1.525)+1)*c-g)+d;return e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){if(c<f/2)return a.easing.easeInBounce(b,c*2,0,e,f)*.5+d;return a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);/*\n - * jQuery UI Effects Blind 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Blind\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*\n - * jQuery UI Effects Bounce 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Bounce\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*\n - * jQuery UI Effects Clip 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Clip\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);/*\n - * jQuery UI Effects Drop 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Drop\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*\n - * jQuery UI Effects Explode 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Explode\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);/*\n - * jQuery UI Effects Fade 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Fade\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*\n - * jQuery UI Effects Fold 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Fold\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*\n - * jQuery UI Effects Highlight 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Highlight\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*\n - * jQuery UI Effects Pulsate 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Pulsate\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show");times=(b.options.times||5)*2-1,duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=c.is(":visible"),animateTo=0,isVisible||(c.css("opacity",0).show(),animateTo=1),(d=="hide"&&isVisible||d=="show"&&!isVisible)&×--;for(var e=0;e<times;e++)c.animate({opacity:animateTo},duration,b.options.easing),animateTo=(animateTo+1)%2;c.animate({opacity:animateTo},duration,b.options.easing,function(){animateTo==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);/*\n - * jQuery UI Effects Scale 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Scale\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){child=a(this),k&&a.effects.save(child,f);var c={height:child.height(),width:child.width()};child.from={height:c.height*q.from.y,width:c.width*q.from.x},child.to={height:c.height*q.to.y,width:c.width*q.to.x},q.from.y!=q.to.y&&(child.from=a.effects.setTransition(child,h,q.from.y,child.from),child.to=a.effects.setTransition(child,h,q.to.y,child.to)),q.from.x!=q.to.x&&(child.from=a.effects.setTransition(child,i,q.from.x,child.from),child.to=a.effects.setTransition(child,i,q.to.x,child.to)),child.css(child.from),child.animate(child.to,b.duration,b.options.easing,function(){k&&a.effects.restore(child,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*\n - * jQuery UI Effects Shake 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Shake\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*\n - * jQuery UI Effects Slide 1.8.18\n - *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n - * http://jquery.org/license\n - *\n - * http://docs.jquery.com/UI/Effects/Slide\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*\n - * jQuery UI Effects Transfer 1.8.18\n +alue();\n +\n +\t\t// always save the actual value, not the one passed as an argument\n +\t\tthis.term = this._value();\n +\n +\t\tif ( value.length < this.options.minLength ) {\n +\t\t\treturn this.close( event );\n +\t\t}\n +\n +\t\tif ( this._trigger( "search", event ) === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\treturn this._search( value );\n +\t},\n +\n +\t_search: function( value ) {\n +\t\tthis.pending++;\n +\t\tthis.element.addClass( "ui-autocomplete-loading" );\n +\t\tthis.cancelSearch = false;\n +\n +\t\tthis.source( { term: value }, this._response() );\n +\t},\n +\n +\t_response: function() {\n +\t\tvar that = this,\n +\t\t\tindex = ++requestIndex;\n +\n +\t\treturn function( content ) {\n +\t\t\tif ( index === requestIndex ) {\n +\t\t\t\tthat.__response( content );\n +\t\t\t}\n +\n +\t\t\tthat.pending--;\n +\t\t\tif ( !that.pending ) {\n +\t\t\t\tthat.element.removeClass( "ui-autocomplete-loading" );\n +\t\t\t}\n +\t\t};\n +\t},\n +\n +\t__response: function( content ) {\n +\t\tif ( content ) {\n +\t\t\tcontent = this._normalize( content );\n +\t\t}\n +\t\tthis._trigger( "response", null, { content: content } );\n +\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n +\t\t\tthis._suggest( content );\n +\t\t\tthis._trigger( "open" );\n +\t\t} else {\n +\t\t\t// use ._close() instead of .close() so we don\'t cancel future searches\n +\t\t\tthis._close();\n +\t\t}\n +\t},\n +\n +\tclose: function( event ) {\n +\t\tthis.cancelSearch = true;\n +\t\tthis._close( event );\n +\t},\n +\n +\t_close: function( event ) {\n +\t\tif ( this.menu.element.is( ":visible" ) ) {\n +\t\t\tthis.menu.element.hide();\n +\t\t\tthis.menu.blur();\n +\t\t\tthis.isNewMenu = true;\n +\t\t\tthis._trigger( "close", event );\n +\t\t}\n +\t},\n +\n +\t_change: function( event ) {\n +\t\tif ( this.previous !== this._value() ) {\n +\t\t\tthis._trigger( "change", event, { item: this.selectedItem } );\n +\t\t}\n +\t},\n +\n +\t_normalize: function( items ) {\n +\t\t// assume all items have the right format when the first item is complete\n +\t\tif ( items.length && items[0].label && items[0].value ) {\n +\t\t\treturn items;\n +\t\t}\n +\t\treturn $.map( items, function( item ) {\n +\t\t\tif ( typeof item === "string" ) {\n +\t\t\t\treturn {\n +\t\t\t\t\tlabel: item,\n +\t\t\t\t\tvalue: item\n +\t\t\t\t};\n +\t\t\t}\n +\t\t\treturn $.extend({\n +\t\t\t\tlabel: item.label || item.value,\n +\t\t\t\tvalue: item.value || item.label\n +\t\t\t}, item );\n +\t\t});\n +\t},\n +\n +\t_suggest: function( items ) {\n +\t\tvar ul = this.menu.element\n +\t\t\t.empty()\n +\t\t\t.zIndex( this.element.zIndex() + 1 );\n +\t\tthis._renderMenu( ul, items );\n +\t\tthis.menu.refresh();\n +\n +\t\t// size and position menu\n +\t\tul.show();\n +\t\tthis._resizeMenu();\n +\t\tul.position( $.extend({\n +\t\t\tof: this.element\n +\t\t}, this.options.position ));\n +\n +\t\tif ( this.options.autoFocus ) {\n +\t\t\tthis.menu.next();\n +\t\t}\n +\t},\n +\n +\t_resizeMenu: function() {\n +\t\tvar ul = this.menu.element;\n +\t\tul.outerWidth( Math.max(\n +\t\t\t// Firefox wraps long text (possibly a rounding bug)\n +\t\t\t// so we add 1px to avoid the wrapping (#7513)\n +\t\t\tul.width( "" ).outerWidth() + 1,\n +\t\t\tthis.element.outerWidth()\n +\t\t) );\n +\t},\n +\n +\t_renderMenu: function( ul, items ) {\n +\t\tvar that = this;\n +\t\t$.each( items, function( index, item ) {\n +\t\t\tthat._renderItemData( ul, item );\n +\t\t});\n +\t},\n +\n +\t_renderItemData: function( ul, item ) {\n +\t\treturn this._renderItem( ul, item ).data( "ui-autocomplete-item", item );\n +\t},\n +\n +\t_renderItem: function( ul, item ) {\n +\t\treturn $( "<li>" )\n +\t\t\t.append( $( "<a>" ).text( item.label ) )\n +\t\t\t.appendTo( ul );\n +\t},\n +\n +\t_move: function( direction, event ) {\n +\t\tif ( !this.menu.element.is( ":visible" ) ) {\n +\t\t\tthis.search( null, event );\n +\t\t\treturn;\n +\t\t}\n +\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n +\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n +\t\t\tthis._value( this.term );\n +\t\t\tthis.menu.blur();\n +\t\t\treturn;\n +\t\t}\n +\t\tthis.menu[ direction ]( event );\n +\t},\n +\n +\twidget: function() {\n +\t\treturn this.menu.element;\n +\t},\n +\n +\t_value: function() {\n +\t\treturn this.valueMethod.apply( this.element, arguments );\n +\t},\n +\n +\t_keyEvent: function( keyEvent, event ) {\n +\t\tif ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {\n +\t\t\tthis._move( keyEvent, event );\n +\n +\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t}\n +});\n +\n +$.extend( $.ui.autocomplete, {\n +\tescapeRegex: function( value ) {\n +\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, "\\\\$&");\n +\t},\n +\tfilter: function(array, term) {\n +\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );\n +\t\treturn $.grep( array, function(value) {\n +\t\t\treturn matcher.test( value.label || value.value || value );\n +\t\t});\n +\t}\n +});\n +\n +\n +// live region extension, adding a `messages` option\n +// NOTE: This is an experimental API. We are still investigating\n +// a full solution for string manipulation and internationalization.\n +$.widget( "ui.autocomplete", $.ui.autocomplete, {\n +\toptions: {\n +\t\tmessages: {\n +\t\t\tnoResults: "No search results.",\n +\t\t\tresults: function( amount ) {\n +\t\t\t\treturn amount + ( amount > 1 ? " results are" : " result is" ) +\n +\t\t\t\t\t" available, use up and down arrow keys to navigate.";\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t__response: function( content ) {\n +\t\tvar message;\n +\t\tthis._superApply( arguments );\n +\t\tif ( this.options.disabled || this.cancelSearch ) {\n +\t\t\treturn;\n +\t\t}\n +\t\tif ( content && content.length ) {\n +\t\t\tmessage = this.options.messages.results( content.length );\n +\t\t} else {\n +\t\t\tmessage = this.options.messages.noResults;\n +\t\t}\n +\t\tthis.liveRegion.text( message );\n +\t}\n +});\n +\n +\n +}( jQuery ));\n +(function( $, undefined ) {\n +\n +var lastActive, startXPos, startYPos, clickDragged,\n +\tbaseClasses = "ui-button ui-widget ui-state-default ui-corner-all",\n +\tstateClasses = "ui-state-hover ui-state-active ",\n +\ttypeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",\n +\tformResetHandler = function() {\n +\t\tvar buttons = $( this ).find( ":ui-button" );\n +\t\tsetTimeout(function() {\n +\t\t\tbuttons.button( "refresh" );\n +\t\t}, 1 );\n +\t},\n +\tradioGroup = function( radio ) {\n +\t\tvar name = radio.name,\n +\t\t\tform = radio.form,\n +\t\t\tradios = $( [] );\n +\t\tif ( name ) {\n +\t\t\tif ( form ) {\n +\t\t\t\tradios = $( form ).find( "[name=\'" + name + "\']" );\n +\t\t\t} else {\n +\t\t\t\tradios = $( "[name=\'" + name + "\']", radio.ownerDocument )\n +\t\t\t\t\t.filter(function() {\n +\t\t\t\t\t\treturn !this.form;\n +\t\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\t\treturn radios;\n +\t};\n +\n +$.widget( "ui.button", {\n +\tversion: "1.9.2",\n +\tdefaultElement: "<button>",\n +\toptions: {\n +\t\tdisabled: null,\n +\t\ttext: true,\n +\t\tlabel: null,\n +\t\ticons: {\n +\t\t\tprimary: null,\n +\t\t\tsecondary: null\n +\t\t}\n +\t},\n +\t_create: function() {\n +\t\tthis.element.closest( "form" )\n +\t\t\t.unbind( "reset" + this.eventNamespace )\n +\t\t\t.bind( "reset" + this.eventNamespace, formResetHandler );\n +\n +\t\tif ( typeof this.options.disabled !== "boolean" ) {\n +\t\t\tthis.options.disabled = !!this.element.prop( "disabled" );\n +\t\t} else {\n +\t\t\tthis.element.prop( "disabled", this.options.disabled );\n +\t\t}\n +\n +\t\tthis._determineButtonType();\n +\t\tthis.hasTitle = !!this.buttonElement.attr( "title" );\n +\n +\t\tvar that = this,\n +\t\t\toptions = this.options,\n +\t\t\ttoggleButton = this.type === "checkbox" || this.type === "radio",\n +\t\t\tactiveClass = !toggleButton ? "ui-state-active" : "",\n +\t\t\tfocusClass = "ui-state-focus";\n +\n +\t\tif ( options.label === null ) {\n +\t\t\toptions.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());\n +\t\t}\n +\n +\t\tthis._hoverable( this.buttonElement );\n +\n +\t\tthis.buttonElement\n +\t\t\t.addClass( baseClasses )\n +\t\t\t.attr( "role", "button" )\n +\t\t\t.bind( "mouseenter" + this.eventNamespace, function() {\n +\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\tif ( this === lastActive ) {\n +\t\t\t\t\t$( this ).addClass( "ui-state-active" );\n +\t\t\t\t}\n +\t\t\t})\n +\t\t\t.bind( "mouseleave" + this.eventNamespace, function() {\n +\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\t$( this ).removeClass( activeClass );\n +\t\t\t})\n +\t\t\t.bind( "click" + this.eventNamespace, function( event ) {\n +\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\tevent.stopImmediatePropagation();\n +\t\t\t\t}\n +\t\t\t});\n +\n +\t\tthis.element\n +\t\t\t.bind( "focus" + this.eventNamespace, function() {\n +\t\t\t\t// no need to check disabled, focus won\'t be triggered anyway\n +\t\t\t\tthat.buttonElement.addClass( focusClass );\n +\t\t\t})\n +\t\t\t.bind( "blur" + this.eventNamespace, function() {\n +\t\t\t\tthat.buttonElement.removeClass( focusClass );\n +\t\t\t});\n +\n +\t\tif ( toggleButton ) {\n +\t\t\tthis.element.bind( "change" + this.eventNamespace, function() {\n +\t\t\t\tif ( clickDragged ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\tthat.refresh();\n +\t\t\t});\n +\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n +\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n +\t\t\t// does not in Firefox (see ticket #6970)\n +\t\t\tthis.buttonElement\n +\t\t\t\t.bind( "mousedown" + this.eventNamespace, function( event ) {\n +\t\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\t\treturn;\n +\t\t\t\t\t}\n +\t\t\t\t\tclickDragged = false;\n +\t\t\t\t\tstartXPos = event.pageX;\n +\t\t\t\t\tstartYPos = event.pageY;\n +\t\t\t\t})\n +\t\t\t\t.bind( "mouseup" + this.eventNamespace, function( event ) {\n +\t\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\t\treturn;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n +\t\t\t\t\t\tclickDragged = true;\n +\t\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\tif ( this.type === "checkbox" ) {\n +\t\t\tthis.buttonElement.bind( "click" + this.eventNamespace, function() {\n +\t\t\t\tif ( options.disabled || clickDragged ) {\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t\t$( this ).toggleClass( "ui-state-active" );\n +\t\t\t\tthat.buttonElement.attr( "aria-pressed", that.element[0].checked );\n +\t\t\t});\n +\t\t} else if ( this.type === "radio" ) {\n +\t\t\tthis.buttonElement.bind( "click" + this.eventNamespace, function() {\n +\t\t\t\tif ( options.disabled || clickDragged ) {\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t\t$( this ).addClass( "ui-state-active" );\n +\t\t\t\tthat.buttonElement.attr( "aria-pressed", "true" );\n +\n +\t\t\t\tvar radio = that.element[ 0 ];\n +\t\t\t\tradioGroup( radio )\n +\t\t\t\t\t.not( radio )\n +\t\t\t\t\t.map(function() {\n +\t\t\t\t\t\treturn $( this ).button( "widget" )[ 0 ];\n +\t\t\t\t\t})\n +\t\t\t\t\t.removeClass( "ui-state-active" )\n +\t\t\t\t\t.attr( "aria-pressed", "false" );\n +\t\t\t});\n +\t\t} else {\n +\t\t\tthis.buttonElement\n +\t\t\t\t.bind( "mousedown" + this.eventNamespace, function() {\n +\t\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t}\n +\t\t\t\t\t$( this ).addClass( "ui-state-active" );\n +\t\t\t\t\tlastActive = this;\n +\t\t\t\t\tthat.document.one( "mouseup", function() {\n +\t\t\t\t\t\tlastActive = null;\n +\t\t\t\t\t});\n +\t\t\t\t})\n +\t\t\t\t.bind( "mouseup" + this.eventNamespace, function() {\n +\t\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t}\n +\t\t\t\t\t$( this ).removeClass( "ui-state-active" );\n +\t\t\t\t})\n +\t\t\t\t.bind( "keydown" + this.eventNamespace, function(event) {\n +\t\t\t\t\tif ( options.disabled ) {\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t}\n +\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n +\t\t\t\t\t\t$( this ).addClass( "ui-state-active" );\n +\t\t\t\t\t}\n +\t\t\t\t})\n +\t\t\t\t.bind( "keyup" + this.eventNamespace, function() {\n +\t\t\t\t\t$( this ).removeClass( "ui-state-active" );\n +\t\t\t\t});\n +\n +\t\t\tif ( this.buttonElement.is("a") ) {\n +\t\t\t\tthis.buttonElement.keyup(function(event) {\n +\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n +\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn\'t work)\n +\t\t\t\t\t\t$( this ).click();\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\n +\t\t// TODO: pull out $.Widget\'s handling for the disabled option into\n +\t\t// $.Widget.prototype._setOptionDisabled so it\'s easy to proxy and can\n +\t\t// be overridden by individual plugins\n +\t\tthis._setOption( "disabled", options.disabled );\n +\t\tthis._resetButton();\n +\t},\n +\n +\t_determineButtonType: function() {\n +\t\tvar ancestor, labelSelector, checked;\n +\n +\t\tif ( this.element.is("[type=checkbox]") ) {\n +\t\t\tthis.type = "checkbox";\n +\t\t} else if ( this.element.is("[type=radio]") ) {\n +\t\t\tthis.type = "radio";\n +\t\t} else if ( this.element.is("input") ) {\n +\t\t\tthis.type = "input";\n +\t\t} else {\n +\t\t\tthis.type = "button";\n +\t\t}\n +\n +\t\tif ( this.type === "checkbox" || this.type === "radio" ) {\n +\t\t\t// we don\'t search against the document in case the element\n +\t\t\t// is disconnected from the DOM\n +\t\t\tancestor = this.element.parents().last();\n +\t\t\tlabelSelector = "label[for=\'" + this.element.attr("id") + "\']";\n +\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n +\t\t\tif ( !this.buttonElement.length ) {\n +\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n +\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n +\t\t\t\tif ( !this.buttonElement.length ) {\n +\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tthis.element.addClass( "ui-helper-hidden-accessible" );\n +\n +\t\t\tchecked = this.element.is( ":checked" );\n +\t\t\tif ( checked ) {\n +\t\t\t\tthis.buttonElement.addClass( "ui-state-active" );\n +\t\t\t}\n +\t\t\tthis.buttonElement.prop( "aria-pressed", checked );\n +\t\t} else {\n +\t\t\tthis.buttonElement = this.element;\n +\t\t}\n +\t},\n +\n +\twidget: function() {\n +\t\treturn this.buttonElement;\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-helper-hidden-accessible" );\n +\t\tthis.buttonElement\n +\t\t\t.removeClass( baseClasses + " " + stateClasses + " " + typeClasses )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "aria-pressed" )\n +\t\t\t.html( this.buttonElement.find(".ui-button-text").html() );\n +\n +\t\tif ( !this.hasTitle ) {\n +\t\t\tthis.buttonElement.removeAttr( "title" );\n +\t\t}\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tthis._super( key, value );\n +\t\tif ( key === "disabled" ) {\n +\t\t\tif ( value ) {\n +\t\t\t\tthis.element.prop( "disabled", true );\n +\t\t\t} else {\n +\t\t\t\tthis.element.prop( "disabled", false );\n +\t\t\t}\n +\t\t\treturn;\n +\t\t}\n +\t\tthis._resetButton();\n +\t},\n +\n +\trefresh: function() {\n +\t\t//See #8237 & #8828\n +\t\tvar isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );\n +\n +\t\tif ( isDisabled !== this.options.disabled ) {\n +\t\t\tthis._setOption( "disabled", isDisabled );\n +\t\t}\n +\t\tif ( this.type === "radio" ) {\n +\t\t\tradioGroup( this.element[0] ).each(function() {\n +\t\t\t\tif ( $( this ).is( ":checked" ) ) {\n +\t\t\t\t\t$( this ).button( "widget" )\n +\t\t\t\t\t\t.addClass( "ui-state-active" )\n +\t\t\t\t\t\t.attr( "aria-pressed", "true" );\n +\t\t\t\t} else {\n +\t\t\t\t\t$( this ).button( "widget" )\n +\t\t\t\t\t\t.removeClass( "ui-state-active" )\n +\t\t\t\t\t\t.attr( "aria-pressed", "false" );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t} else if ( this.type === "checkbox" ) {\n +\t\t\tif ( this.element.is( ":checked" ) ) {\n +\t\t\t\tthis.buttonElement\n +\t\t\t\t\t.addClass( "ui-state-active" )\n +\t\t\t\t\t.attr( "aria-pressed", "true" );\n +\t\t\t} else {\n +\t\t\t\tthis.buttonElement\n +\t\t\t\t\t.removeClass( "ui-state-active" )\n +\t\t\t\t\t.attr( "aria-pressed", "false" );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t_resetButton: function() {\n +\t\tif ( this.type === "input" ) {\n +\t\t\tif ( this.options.label ) {\n +\t\t\t\tthis.element.val( this.options.label );\n +\t\t\t}\n +\t\t\treturn;\n +\t\t}\n +\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n +\t\t\tbuttonText = $( "<span></span>", this.document[0] )\n +\t\t\t\t.addClass( "ui-button-text" )\n +\t\t\t\t.html( this.options.label )\n +\t\t\t\t.appendTo( buttonElement.empty() )\n +\t\t\t\t.text(),\n +\t\t\ticons = this.options.icons,\n +\t\t\tmultipleIcons = icons.primary && icons.secondary,\n +\t\t\tbuttonClasses = [];\n +\n +\t\tif ( icons.primary || icons.secondary ) {\n +\t\t\tif ( this.options.text ) {\n +\t\t\t\tbuttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );\n +\t\t\t}\n +\n +\t\t\tif ( icons.primary ) {\n +\t\t\t\tbuttonElement.prepend( "<span class=\'ui-button-icon-primary ui-icon " + icons.primary + "\'></span>" );\n +\t\t\t}\n +\n +\t\t\tif ( icons.secondary ) {\n +\t\t\t\tbuttonElement.append( "<span class=\'ui-button-icon-secondary ui-icon " + icons.secondary + "\'></span>" );\n +\t\t\t}\n +\n +\t\t\tif ( !this.options.text ) {\n +\t\t\t\tbuttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );\n +\n +\t\t\t\tif ( !this.hasTitle ) {\n +\t\t\t\t\tbuttonElement.attr( "title", $.trim( buttonText ) );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else {\n +\t\t\tbuttonClasses.push( "ui-button-text-only" );\n +\t\t}\n +\t\tbuttonElement.addClass( buttonClasses.join( " " ) );\n +\t}\n +});\n +\n +$.widget( "ui.buttonset", {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\titems: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"\n +\t},\n +\n +\t_create: function() {\n +\t\tthis.element.addClass( "ui-buttonset" );\n +\t},\n +\n +\t_init: function() {\n +\t\tthis.refresh();\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tif ( key === "disabled" ) {\n +\t\t\tthis.buttons.button( "option", key, value );\n +\t\t}\n +\n +\t\tthis._super( key, value );\n +\t},\n +\n +\trefresh: function() {\n +\t\tvar rtl = this.element.css( "direction" ) === "rtl";\n +\n +\t\tthis.buttons = this.element.find( this.options.items )\n +\t\t\t.filter( ":ui-button" )\n +\t\t\t\t.button( "refresh" )\n +\t\t\t.end()\n +\t\t\t.not( ":ui-button" )\n +\t\t\t\t.button()\n +\t\t\t.end()\n +\t\t\t.map(function() {\n +\t\t\t\treturn $( this ).button( "widget" )[ 0 ];\n +\t\t\t})\n +\t\t\t\t.removeClass( "ui-corner-all ui-corner-left ui-corner-right" )\n +\t\t\t\t.filter( ":first" )\n +\t\t\t\t\t.addClass( rtl ? "ui-corner-right" : "ui-corner-left" )\n +\t\t\t\t.end()\n +\t\t\t\t.filter( ":last" )\n +\t\t\t\t\t.addClass( rtl ? "ui-corner-left" : "ui-corner-right" )\n +\t\t\t\t.end()\n +\t\t\t.end();\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.element.removeClass( "ui-buttonset" );\n +\t\tthis.buttons\n +\t\t\t.map(function() {\n +\t\t\t\treturn $( this ).button( "widget" )[ 0 ];\n +\t\t\t})\n +\t\t\t\t.removeClass( "ui-corner-left ui-corner-right" )\n +\t\t\t.end()\n +\t\t\t.button( "destroy" );\n +\t}\n +});\n +\n +}( jQuery ) );\n +(function( $, undefined ) {\n +\n +$.extend($.ui, { datepicker: { version: "1.9.2" } });\n +\n +var PROP_NAME = \'datepicker\';\n +var dpuuid = new Date().getTime();\n +var instActive;\n +\n +/* Date picker manager.\n + Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n + Settings for (groups of) date pickers are maintained in an instance object,\n + allowing multiple different settings on the same page. */\n +\n +function Datepicker() {\n +\tthis.debug = false; // Change this to true to start debugging\n +\tthis._curInst = null; // The current instance in use\n +\tthis._keyEvent = false; // If the last event was a key event\n +\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n +\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n +\tthis._inDialog = false; // True if showing within a "dialog", false if not\n +\tthis._mainDivId = \'ui-datepicker-div\'; // The ID of the main datepicker division\n +\tthis._inlineClass = \'ui-datepicker-inline\'; // The name of the inline marker class\n +\tthis._appendClass = \'ui-datepicker-append\'; // The name of the append marker class\n +\tthis._triggerClass = \'ui-datepicker-trigger\'; // The name of the trigger marker class\n +\tthis._dialogClass = \'ui-datepicker-dialog\'; // The name of the dialog marker class\n +\tthis._disableClass = \'ui-datepicker-disabled\'; // The name of the disabled covering marker class\n +\tthis._unselectableClass = \'ui-datepicker-unselectable\'; // The name of the unselectable cell marker class\n +\tthis._currentClass = \'ui-datepicker-current-day\'; // The name of the current day marker class\n +\tthis._dayOverClass = \'ui-datepicker-days-cell-over\'; // The name of the day hover marker class\n +\tthis.regional = []; // Available regional settings, indexed by language code\n +\tthis.regional[\'\'] = { // Default regional settings\n +\t\tcloseText: \'Done\', // Display text for close link\n +\t\tprevText: \'Prev\', // Display text for previous month link\n +\t\tnextText: \'Next\', // Display text for next month link\n +\t\tcurrentText: \'Today\', // Display text for current month link\n +\t\tmonthNames: [\'January\',\'February\',\'March\',\'April\',\'May\',\'June\',\n +\t\t\t\'July\',\'August\',\'September\',\'October\',\'November\',\'December\'], // Names of months for drop-down and formatting\n +\t\tmonthNamesShort: [\'Jan\', \'Feb\', \'Mar\', \'Apr\', \'May\', \'Jun\', \'Jul\', \'Aug\', \'Sep\', \'Oct\', \'Nov\', \'Dec\'], // For formatting\n +\t\tdayNames: [\'Sunday\', \'Monday\', \'Tuesday\', \'Wednesday\', \'Thursday\', \'Friday\', \'Saturday\'], // For formatting\n +\t\tdayNamesShort: [\'Sun\', \'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\', \'Sat\'], // For formatting\n +\t\tdayNamesMin: [\'Su\',\'Mo\',\'Tu\',\'We\',\'Th\',\'Fr\',\'Sa\'], // Column headings for days starting at Sunday\n +\t\tweekHeader: \'Wk\', // Column header for week of the year\n +\t\tdateFormat: \'mm/dd/yy\', // See format options on parseDate\n +\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n +\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n +\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n +\t\tyearSuffix: \'\' // Additional text to append to the year in the month headers\n +\t};\n +\tthis._defaults = { // Global defaults for all the date picker instances\n +\t\tshowOn: \'focus\', // \'focus\' for popup on focus,\n +\t\t\t// \'button\' for trigger button, or \'both\' for either\n +\t\tshowAnim: \'fadeIn\', // Name of jQuery animation for popup\n +\t\tshowOptions: {}, // Options for enhanced animations\n +\t\tdefaultDate: null, // Used when field is blank: actual date,\n +\t\t\t// +/-number for offset from today, null for today\n +\t\tappendText: \'\', // Display text following the input box, e.g. showing the format\n +\t\tbuttonText: \'...\', // Text for trigger button\n +\t\tbuttonImage: \'\', // URL for trigger button image\n +\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n +\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n +\t\t\t// if not applicable, false to just disable them\n +\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n +\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n +\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n +\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n +\t\tyearRange: \'c-10:c+10\', // Range of years to display in drop-down,\n +\t\t\t// either relative to today\'s year (-nn:+nn), relative to currently displayed year\n +\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n +\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n +\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n +\t\tshowWeek: false, // True to show week of the year, false to not show it\n +\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n +\t\t\t// takes a Date and returns the number of the week for it\n +\t\tshortYearCutoff: \'+10\', // Short year values < this are in the current century,\n +\t\t\t// > this are in the previous century,\n +\t\t\t// string value starting with \'+\' for current year + value\n +\t\tminDate: null, // The earliest selectable date, or null for no limit\n +\t\tmaxDate: null, // The latest selectable date, or null for no limit\n +\t\tduration: \'fast\', // Duration of display/closure\n +\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n +\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \'\',\n +\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n +\t\tbeforeShow: null, // Function that takes an input field and\n +\t\t\t// returns a set of custom settings for the date picker\n +\t\tonSelect: null, // Define a callback function when a date is selected\n +\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n +\t\tonClose: null, // Define a callback function when the datepicker is closed\n +\t\tnumberOfMonths: 1, // Number of months to show at a time\n +\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n +\t\tstepMonths: 1, // Number of months to step back/forward\n +\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n +\t\taltField: \'\', // Selector for an alternate field to store selected dates into\n +\t\taltFormat: \'\', // The date format to use for the alternate field\n +\t\tconstrainInput: true, // The input is constrained by the current date format\n +\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n +\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n +\t\tdisabled: false // The initial disabled state\n +\t};\n +\t$.extend(this._defaults, this.regional[\'\']);\n +\tthis.dpDiv = bindHover($(\'<div id="\' + this._mainDivId + \'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>\'));\n +}\n +\n +$.extend(Datepicker.prototype, {\n +\t/* Class name added to elements to indicate already configured with a date picker. */\n +\tmarkerClassName: \'hasDatepicker\',\n +\n +\t//Keep track of the maximum number of rows displayed (see #7043)\n +\tmaxRows: 4,\n +\n +\t/* Debug logging (if enabled). */\n +\tlog: function () {\n +\t\tif (this.debug)\n +\t\t\tconsole.log.apply(\'\', arguments);\n +\t},\n +\n +\t// TODO rename to "widget" when switching to widget factory\n +\t_widgetDatepicker: function() {\n +\t\treturn this.dpDiv;\n +\t},\n +\n +\t/* Override the default settings for all instances of the date picker.\n +\t @param settings object - the new settings to use as defaults (anonymous object)\n +\t @return the manager object */\n +\tsetDefaults: function(settings) {\n +\t\textendRemove(this._defaults, settings || {});\n +\t\treturn this;\n +\t},\n +\n +\t/* Attach the date picker to a jQuery selection.\n +\t @param target element - the target input field or division or span\n +\t @param settings object - the new settings to use for this date picker instance (anonymous) */\n +\t_attachDatepicker: function(target, settings) {\n +\t\t// check for settings on the control itself - in namespace \'date:\'\n +\t\tvar inlineSettings = null;\n +\t\tfor (var attrName in this._defaults) {\n +\t\t\tvar attrValue = target.getAttribute(\'date:\' + attrName);\n +\t\t\tif (attrValue) {\n +\t\t\t\tinlineSettings = inlineSettings || {};\n +\t\t\t\ttry {\n +\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n +\t\t\t\t} catch (err) {\n +\t\t\t\t\tinlineSettings[attrName] = attrValue;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t\tvar nodeName = target.nodeName.toLowerCase();\n +\t\tvar inline = (nodeName == \'div\' || nodeName == \'span\');\n +\t\tif (!target.id) {\n +\t\t\tthis.uuid += 1;\n +\t\t\ttarget.id = \'dp\' + this.uuid;\n +\t\t}\n +\t\tvar inst = this._newInst($(target), inline);\n +\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n +\t\tif (nodeName == \'input\') {\n +\t\t\tthis._connectDatepicker(target, inst);\n +\t\t} else if (inline) {\n +\t\t\tthis._inlineDatepicker(target, inst);\n +\t\t}\n +\t},\n +\n +\t/* Create a new instance object. */\n +\t_newInst: function(target, inline) {\n +\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, \'\\\\\\\\$1\'); // escape jQuery meta chars\n +\t\treturn {id: id, input: target, // associated target\n +\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n +\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n +\t\t\tinline: inline, // is datepicker inline or not\n +\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n +\t\t\tbindHover($(\'<div class="\' + this._inlineClass + \' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>\')))};\n +\t},\n +\n +\t/* Attach the date picker to an input field. */\n +\t_connectDatepicker: function(target, inst) {\n +\t\tvar input = $(target);\n +\t\tinst.append = $([]);\n +\t\tinst.trigger = $([]);\n +\t\tif (input.hasClass(this.markerClassName))\n +\t\t\treturn;\n +\t\tthis._attachments(input, inst);\n +\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n +\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n +\t\t\tbind("setData.datepicker", function(event, key, value) {\n +\t\t\t\tinst.settings[key] = value;\n +\t\t\t}).bind("getData.datepicker", function(event, key) {\n +\t\t\t\treturn this._get(inst, key);\n +\t\t\t});\n +\t\tthis._autoSize(inst);\n +\t\t$.data(target, PROP_NAME, inst);\n +\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n +\t\tif( inst.settings.disabled ) {\n +\t\t\tthis._disableDatepicker( target );\n +\t\t}\n +\t},\n +\n +\t/* Make attachments based on settings. */\n +\t_attachments: function(input, inst) {\n +\t\tvar appendText = this._get(inst, \'appendText\');\n +\t\tvar isRTL = this._get(inst, \'isRTL\');\n +\t\tif (inst.append)\n +\t\t\tinst.append.remove();\n +\t\tif (appendText) {\n +\t\t\tinst.append = $(\'<span class="\' + this._appendClass + \'">\' + appendText + \'</span>\');\n +\t\t\tinput[isRTL ? \'before\' : \'after\'](inst.append);\n +\t\t}\n +\t\tinput.unbind(\'focus\', this._showDatepicker);\n +\t\tif (inst.trigger)\n +\t\t\tinst.trigger.remove();\n +\t\tvar showOn = this._get(inst, \'showOn\');\n +\t\tif (showOn == \'focus\' || showOn == \'both\') // pop-up date picker when in the marked field\n +\t\t\tinput.focus(this._showDatepicker);\n +\t\tif (showOn == \'button\' || showOn == \'both\') { // pop-up date picker when button clicked\n +\t\t\tvar buttonText = this._get(inst, \'buttonText\');\n +\t\t\tvar buttonImage = this._get(inst, \'buttonImage\');\n +\t\t\tinst.trigger = $(this._get(inst, \'buttonImageOnly\') ?\n +\t\t\t\t$(\'<img/>\').addClass(this._triggerClass).\n +\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n +\t\t\t\t$(\'<button type="button"></button>\').addClass(this._triggerClass).\n +\t\t\t\t\thtml(buttonImage == \'\' ? buttonText : $(\'<img/>\').attr(\n +\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n +\t\t\tinput[isRTL ? \'before\' : \'after\'](inst.trigger);\n +\t\t\tinst.trigger.click(function() {\n +\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n +\t\t\t\t\t$.datepicker._hideDatepicker();\n +\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n +\t\t\t\t\t$.datepicker._hideDatepicker();\n +\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n +\t\t\t\t} else\n +\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n +\t\t\t\treturn false;\n +\t\t\t});\n +\t\t}\n +\t},\n +\n +\t/* Apply the maximum length for the date format. */\n +\t_autoSize: function(inst) {\n +\t\tif (this._get(inst, \'autoSize\') && !inst.inline) {\n +\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n +\t\t\tvar dateFormat = this._get(inst, \'dateFormat\');\n +\t\t\tif (dateFormat.match(/[DM]/)) {\n +\t\t\t\tvar findMax = function(names) {\n +\t\t\t\t\tvar max = 0;\n +\t\t\t\t\tvar maxI = 0;\n +\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n +\t\t\t\t\t\tif (names[i].length > max) {\n +\t\t\t\t\t\t\tmax = names[i].length;\n +\t\t\t\t\t\t\tmaxI = i;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t\treturn maxI;\n +\t\t\t\t};\n +\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n +\t\t\t\t\t\'monthNames\' : \'monthNamesShort\'))));\n +\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n +\t\t\t\t\t\'dayNames\' : \'dayNamesShort\'))) + 20 - date.getDay());\n +\t\t\t}\n +\t\t\tinst.input.attr(\'size\', this._formatDate(inst, date).length);\n +\t\t}\n +\t},\n +\n +\t/* Attach an inline date picker to a div. */\n +\t_inlineDatepicker: function(target, inst) {\n +\t\tvar divSpan = $(target);\n +\t\tif (divSpan.hasClass(this.markerClassName))\n +\t\t\treturn;\n +\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n +\t\t\tbind("setData.datepicker", function(event, key, value){\n +\t\t\t\tinst.settings[key] = value;\n +\t\t\t}).bind("getData.datepicker", function(event, key){\n +\t\t\t\treturn this._get(inst, key);\n +\t\t\t});\n +\t\t$.data(target, PROP_NAME, inst);\n +\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n +\t\tthis._updateDatepicker(inst);\n +\t\tthis._updateAlternate(inst);\n +\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n +\t\tif( inst.settings.disabled ) {\n +\t\t\tthis._disableDatepicker( target );\n +\t\t}\n +\t\t// Set display:block in place of inst.dpDiv.show() which won\'t work on disconnected elements\n +\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n +\t\tinst.dpDiv.css( "display", "block" );\n +\t},\n +\n +\t/* Pop-up the date picker in a "dialog" box.\n +\t @param input element - ignored\n +\t @param date string or Date - the initial date to display\n +\t @param onSelect function - the function to call when a date is selected\n +\t @param settings object - update the dialog date picker instance\'s settings (anonymous object)\n +\t @param pos int[2] - coordinates for the dialog\'s position within the screen or\n +\t event - with x/y coordinates or\n +\t leave empty for default (screen centre)\n +\t @return the manager object */\n +\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n +\t\tvar inst = this._dialogInst; // internal instance\n +\t\tif (!inst) {\n +\t\t\tthis.uuid += 1;\n +\t\t\tvar id = \'dp\' + this.uuid;\n +\t\t\tthis._dialogInput = $(\'<input type="text" id="\' + id +\n +\t\t\t\t\'" style="position: absolute; top: -100px; width: 0px;"/>\');\n +\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n +\t\t\t$(\'body\').append(this._dialogInput);\n +\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n +\t\t\tinst.settings = {};\n +\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n +\t\t}\n +\t\textendRemove(inst.settings, settings || {});\n +\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n +\t\tthis._dialogInput.val(date);\n +\n +\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n +\t\tif (!this._pos) {\n +\t\t\tvar browserWidth = document.documentElement.clientWidth;\n +\t\t\tvar browserHeight = document.documentElement.clientHeight;\n +\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n +\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n +\t\t\tthis._pos = // should use actual width/height below\n +\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n +\t\t}\n +\n +\t\t// move input on screen for focus, but hidden behind dialog\n +\t\tthis._dialogInput.css(\'left\', (this._pos[0] + 20) + \'px\').css(\'top\', this._pos[1] + \'px\');\n +\t\tinst.settings.onSelect = onSelect;\n +\t\tthis._inDialog = true;\n +\t\tthis.dpDiv.addClass(this._dialogClass);\n +\t\tthis._showDatepicker(this._dialogInput[0]);\n +\t\tif ($.blockUI)\n +\t\t\t$.blockUI(this.dpDiv);\n +\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n +\t\treturn this;\n +\t},\n +\n +\t/* Detach a datepicker from its control.\n +\t @param target element - the target input field or division or span */\n +\t_destroyDatepicker: function(target) {\n +\t\tvar $target = $(target);\n +\t\tvar inst = $.data(target, PROP_NAME);\n +\t\tif (!$target.hasClass(this.markerClassName)) {\n +\t\t\treturn;\n +\t\t}\n +\t\tvar nodeName = target.nodeName.toLowerCase();\n +\t\t$.removeData(target, PROP_NAME);\n +\t\tif (nodeName == \'input\') {\n +\t\t\tinst.append.remove();\n +\t\t\tinst.trigger.remove();\n +\t\t\t$target.removeClass(this.markerClassName).\n +\t\t\t\tunbind(\'focus\', this._showDatepicker).\n +\t\t\t\tunbind(\'keydown\', this._doKeyDown).\n +\t\t\t\tunbind(\'keypress\', this._doKeyPress).\n +\t\t\t\tunbind(\'keyup\', this._doKeyUp);\n +\t\t} else if (nodeName == \'div\' || nodeName == \'span\')\n +\t\t\t$target.removeClass(this.markerClassName).empty();\n +\t},\n +\n +\t/* Enable the date picker to a jQuery selection.\n +\t @param target element - the target input field or division or span */\n +\t_enableDatepicker: function(target) {\n +\t\tvar $target = $(target);\n +\t\tvar inst = $.data(target, PROP_NAME);\n +\t\tif (!$target.hasClass(this.markerClassName)) {\n +\t\t\treturn;\n +\t\t}\n +\t\tvar nodeName = target.nodeName.toLowerCase();\n +\t\tif (nodeName == \'input\') {\n +\t\t\ttarget.disabled = false;\n +\t\t\tinst.trigger.filter(\'button\').\n +\t\t\t\teach(function() { this.disabled = false; }).end().\n +\t\t\t\tfilter(\'img\').css({opacity: \'1.0\', cursor: \'\'});\n +\t\t}\n +\t\telse if (nodeName == \'div\' || nodeName == \'span\') {\n +\t\t\tvar inline = $target.children(\'.\' + this._inlineClass);\n +\t\t\tinline.children().removeClass(\'ui-state-disabled\');\n +\t\t\tinline.find("select.ui-datepicker-month, select.ui-datepicker-year").\n +\t\t\t\tprop("disabled", false);\n +\t\t}\n +\t\tthis._disabledInputs = $.map(this._disabledInputs,\n +\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n +\t},\n +\n +\t/* Disable the date picker to a jQuery selection.\n +\t @param target element - the target input field or division or span */\n +\t_disableDatepicker: function(target) {\n +\t\tvar $target = $(target);\n +\t\tvar inst = $.data(target, PROP_NAME);\n +\t\tif (!$target.hasClass(this.markerClassName)) {\n +\t\t\treturn;\n +\t\t}\n +\t\tvar nodeName = target.nodeName.toLowerCase();\n +\t\tif (nodeName == \'input\') {\n +\t\t\ttarget.disabled = true;\n +\t\t\tinst.trigger.filter(\'button\').\n +\t\t\t\teach(function() { this.disabled = true; }).end().\n +\t\t\t\tfilter(\'img\').css({opacity: \'0.5\', cursor: \'default\'});\n +\t\t}\n +\t\telse if (nodeName == \'div\' || nodeName == \'span\') {\n +\t\t\tvar inline = $target.children(\'.\' + this._inlineClass);\n +\t\t\tinline.children().addClass(\'ui-state-disabled\');\n +\t\t\tinline.find("select.ui-datepicker-month, select.ui-datepicker-year").\n +\t\t\t\tprop("disabled", true);\n +\t\t}\n +\t\tthis._disabledInputs = $.map(this._disabledInputs,\n +\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n +\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n +\t},\n +\n +\t/* Is the first field in a jQuery collection disabled as a datepicker?\n +\t @param target element - the target input field or division or span\n +\t @return boolean - true if disabled, false if enabled */\n +\t_isDisabledDatepicker: function(target) {\n +\t\tif (!target) {\n +\t\t\treturn false;\n +\t\t}\n +\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n +\t\t\tif (this._disabledInputs[i] == target)\n +\t\t\t\treturn true;\n +\t\t}\n +\t\treturn false;\n +\t},\n +\n +\t/* Retrieve the instance data for the target control.\n +\t @param target element - the target input field or division or span\n +\t @return object - the associated instance data\n +\t @throws error if a jQuery problem getting data */\n +\t_getInst: function(target) {\n +\t\ttry {\n +\t\t\treturn $.data(target, PROP_NAME);\n +\t\t}\n +\t\tcatch (err) {\n +\t\t\tthrow \'Missing instance data for this datepicker\';\n +\t\t}\n +\t},\n +\n +\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n +\t @param target element - the target input field or division or span\n +\t @param name object - the new settings to update or\n +\t string - the name of the setting to change or retrieve,\n +\t when retrieving also \'all\' for all instance settings or\n +\t \'defaults\' for all global defaults\n +\t @param value any - the new value for the setting\n +\t (omit if above is an object or to retrieve a value) */\n +\t_optionDatepicker: function(target, name, value) {\n +\t\tvar inst = this._getInst(target);\n +\t\tif (arguments.length == 2 && typeof name == \'string\') {\n +\t\t\treturn (name == \'defaults\' ? $.extend({}, $.datepicker._defaults) :\n +\t\t\t\t(inst ? (name == \'all\' ? $.extend({}, inst.settings) :\n +\t\t\t\tthis._get(inst, name)) : null));\n +\t\t}\n +\t\tvar settings = name || {};\n +\t\tif (typeof name == \'string\') {\n +\t\t\tsettings = {};\n +\t\t\tsettings[name] = value;\n +\t\t}\n +\t\tif (inst) {\n +\t\t\tif (this._curInst == inst) {\n +\t\t\t\tthis._hideDatepicker();\n +\t\t\t}\n +\t\t\tvar date = this._getDateDatepicker(target, true);\n +\t\t\tvar minDate = this._getMinMaxDate(inst, \'min\');\n +\t\t\tvar maxDate = this._getMinMaxDate(inst, \'max\');\n +\t\t\textendRemove(inst.settings, settings);\n +\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn\'t provided\n +\t\t\tif (minDate !== null && settings[\'dateFormat\'] !== undefined && settings[\'minDate\'] === undefined)\n +\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n +\t\t\tif (maxDate !== null && settings[\'dateFormat\'] !== undefined && settings[\'maxDate\'] === undefined)\n +\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n +\t\t\tthis._attachments($(target), inst);\n +\t\t\tthis._autoSize(inst);\n +\t\t\tthis._setDate(inst, date);\n +\t\t\tthis._updateAlternate(inst);\n +\t\t\tthis._updateDatepicker(inst);\n +\t\t}\n +\t},\n +\n +\t// change method deprecated\n +\t_changeDatepicker: function(target, name, value) {\n +\t\tthis._optionDatepicker(target, name, value);\n +\t},\n +\n +\t/* Redraw the date picker attached to an input field or division.\n +\t @param target element - the target input field or division or span */\n +\t_refreshDatepicker: function(target) {\n +\t\tvar inst = this._getInst(target);\n +\t\tif (inst) {\n +\t\t\tthis._updateDatepicker(inst);\n +\t\t}\n +\t},\n +\n +\t/* Set the dates for a jQuery selection.\n +\t @param target element - the target input field or division or span\n +\t @param date Date - the new date */\n +\t_setDateDatepicker: function(target, date) {\n +\t\tvar inst = this._getInst(target);\n +\t\tif (inst) {\n +\t\t\tthis._setDate(inst, date);\n +\t\t\tthis._updateDatepicker(inst);\n +\t\t\tthis._updateAlternate(inst);\n +\t\t}\n +\t},\n +\n +\t/* Get the date(s) for the first entry in a jQuery selection.\n +\t @param target element - the target input field or division or span\n +\t @param noDefault boolean - true if no default date is to be used\n +\t @return Date - the current date */\n +\t_getDateDatepicker: function(target, noDefault) {\n +\t\tvar inst = this._getInst(target);\n +\t\tif (inst && !inst.inline)\n +\t\t\tthis._setDateFromField(inst, noDefault);\n +\t\treturn (inst ? this._getDate(inst) : null);\n +\t},\n +\n +\t/* Handle keystrokes. */\n +\t_doKeyDown: function(event) {\n +\t\tvar inst = $.datepicker._getInst(event.target);\n +\t\tvar handled = true;\n +\t\tvar isRTL = inst.dpDiv.is(\'.ui-datepicker-rtl\');\n +\t\tinst._keyEvent = true;\n +\t\tif ($.datepicker._datepickerShowing)\n +\t\t\tswitch (event.keyCode) {\n +\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n +\t\t\t\t\t\thandled = false;\n +\t\t\t\t\t\tbreak; // hide on tab out\n +\t\t\t\tcase 13: var sel = $(\'td.\' + $.datepicker._dayOverClass + \':not(.\' +\n +\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \')\', inst.dpDiv);\n +\t\t\t\t\t\tif (sel[0])\n +\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n +\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, \'onSelect\');\n +\t\t\t\t\t\t\tif (onSelect) {\n +\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n +\n +\t\t\t\t\t\t\t\t// trigger custom callback\n +\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\telse\n +\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n +\t\t\t\t\t\treturn false; // don\'t submit the form\n +\t\t\t\t\t\tbreak; // select the value on enter\n +\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n +\t\t\t\t\t\tbreak; // hide on escape\n +\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n +\t\t\t\t\t\t\t-$.datepicker._get(inst, \'stepBigMonths\') :\n +\t\t\t\t\t\t\t-$.datepicker._get(inst, \'stepMonths\')), \'M\');\n +\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n +\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n +\t\t\t\t\t\t\t+$.datepicker._get(inst, \'stepBigMonths\') :\n +\t\t\t\t\t\t\t+$.datepicker._get(inst, \'stepMonths\')), \'M\');\n +\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n +\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n +\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n +\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n +\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n +\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n +\t\t\t\t\t\tbreak; // current on ctrl or command +home\n +\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), \'D\');\n +\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n +\t\t\t\t\t\t// -1 day on ctrl or command +left\n +\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n +\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \'stepBigMonths\') :\n +\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \'stepMonths\')), \'M\');\n +\t\t\t\t\t\t// next month/year on alt +left on Mac\n +\t\t\t\t\t\tbreak;\n +\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, \'D\');\n +\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n +\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n +\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), \'D\');\n +\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n +\t\t\t\t\t\t// +1 day on ctrl or command +right\n +\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n +\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \'stepBigMonths\') :\n +\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \'stepMonths\')), \'M\');\n +\t\t\t\t\t\t// next month/year on alt +right\n +\t\t\t\t\t\tbreak;\n +\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, \'D\');\n +\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n +\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n +\t\t\t\tdefault: handled = false;\n +\t\t\t}\n +\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n +\t\t\t$.datepicker._showDatepicker(this);\n +\t\telse {\n +\t\t\thandled = false;\n +\t\t}\n +\t\tif (handled) {\n +\t\t\tevent.preventDefault();\n +\t\t\tevent.stopPropagation();\n +\t\t}\n +\t},\n +\n +\t/* Filter entered characters - based on date format. */\n +\t_doKeyPress: function(event) {\n +\t\tvar inst = $.datepicker._getInst(event.target);\n +\t\tif ($.datepicker._get(inst, \'constrainInput\')) {\n +\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, \'dateFormat\'));\n +\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n +\t\t\treturn event.ctrlKey || event.metaKey || (chr < \' \' || !chars || chars.indexOf(chr) > -1);\n +\t\t}\n +\t},\n +\n +\t/* Synchronise manual entry and field/alternate field. */\n +\t_doKeyUp: function(event) {\n +\t\tvar inst = $.datepicker._getInst(event.target);\n +\t\tif (inst.input.val() != inst.lastVal) {\n +\t\t\ttry {\n +\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, \'dateFormat\'),\n +\t\t\t\t\t(inst.input ? inst.input.val() : null),\n +\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n +\t\t\t\tif (date) { // only if valid\n +\t\t\t\t\t$.datepicker._setDateFromField(inst);\n +\t\t\t\t\t$.datepicker._updateAlternate(inst);\n +\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tcatch (err) {\n +\t\t\t\t$.datepicker.log(err);\n +\t\t\t}\n +\t\t}\n +\t\treturn true;\n +\t},\n +\n +\t/* Pop-up the date picker for a given input field.\n +\t If false returned from beforeShow event handler do not show.\n +\t @param input element - the input field attached to the date picker or\n +\t event - if triggered by focus */\n +\t_showDatepicker: function(input) {\n +\t\tinput = input.target || input;\n +\t\tif (input.nodeName.toLowerCase() != \'input\') // find from button/image trigger\n +\t\t\tinput = $(\'input\', input.parentNode)[0];\n +\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n +\t\t\treturn;\n +\t\tvar inst = $.datepicker._getInst(input);\n +\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n +\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n +\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n +\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n +\t\t\t}\n +\t\t}\n +\t\tvar beforeShow = $.datepicker._get(inst, \'beforeShow\');\n +\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n +\t\tif(beforeShowSettings === false){\n +\t\t\t//false\n +\t\t\treturn;\n +\t\t}\n +\t\textendRemove(inst.settings, beforeShowSettings);\n +\t\tinst.lastVal = null;\n +\t\t$.datepicker._lastInput = input;\n +\t\t$.datepicker._setDateFromField(inst);\n +\t\tif ($.datepicker._inDialog) // hide cursor\n +\t\t\tinput.value = \'\';\n +\t\tif (!$.datepicker._pos) { // position below input\n +\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n +\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n +\t\t}\n +\t\tvar isFixed = false;\n +\t\t$(input).parents().each(function() {\n +\t\t\tisFixed |= $(this).css(\'position\') == \'fixed\';\n +\t\t\treturn !isFixed;\n +\t\t});\n +\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n +\t\t$.datepicker._pos = null;\n +\t\t//to avoid flashes on Firefox\n +\t\tinst.dpDiv.empty();\n +\t\t// determine sizing offscreen\n +\t\tinst.dpDiv.css({position: \'absolute\', display: \'block\', top: \'-1000px\'});\n +\t\t$.datepicker._updateDatepicker(inst);\n +\t\t// fix width for dynamic number of date pickers\n +\t\t// and adjust position before showing\n +\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n +\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n +\t\t\t\'static\' : (isFixed ? \'fixed\' : \'absolute\')), display: \'none\',\n +\t\t\tleft: offset.left + \'px\', top: offset.top + \'px\'});\n +\t\tif (!inst.inline) {\n +\t\t\tvar showAnim = $.datepicker._get(inst, \'showAnim\');\n +\t\t\tvar duration = $.datepicker._get(inst, \'duration\');\n +\t\t\tvar postProcess = function() {\n +\t\t\t\tvar cover = inst.dpDiv.find(\'iframe.ui-datepicker-cover\'); // IE6- only\n +\t\t\t\tif( !! cover.length ){\n +\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n +\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n +\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n +\t\t\t\t}\n +\t\t\t};\n +\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n +\t\t\t$.datepicker._datepickerShowing = true;\n +\n +\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n +\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n +\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, \'showOptions\'), duration, postProcess);\n +\t\t\telse\n +\t\t\t\tinst.dpDiv[showAnim || \'show\']((showAnim ? duration : null), postProcess);\n +\t\t\tif (!showAnim || !duration)\n +\t\t\t\tpostProcess();\n +\t\t\tif (inst.input.is(\':visible\') && !inst.input.is(\':disabled\'))\n +\t\t\t\tinst.input.focus();\n +\t\t\t$.datepicker._curInst = inst;\n +\t\t}\n +\t},\n +\n +\t/* Generate the date picker content. */\n +\t_updateDatepicker: function(inst) {\n +\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n +\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n +\t\tinstActive = inst; // for delegate hover events\n +\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n +\t\tthis._attachHandlers(inst);\n +\t\tvar cover = inst.dpDiv.find(\'iframe.ui-datepicker-cover\'); // IE6- only\n +\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n +\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n +\t\t}\n +\t\tinst.dpDiv.find(\'.\' + this._dayOverClass + \' a\').mouseover();\n +\t\tvar numMonths = this._getNumberOfMonths(inst);\n +\t\tvar cols = numMonths[1];\n +\t\tvar width = 17;\n +\t\tinst.dpDiv.removeClass(\'ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\').width(\'\');\n +\t\tif (cols > 1)\n +\t\t\tinst.dpDiv.addClass(\'ui-datepicker-multi-\' + cols).css(\'width\', (width * cols) + \'em\');\n +\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? \'add\' : \'remove\') +\n +\t\t\t\'Class\'](\'ui-datepicker-multi\');\n +\t\tinst.dpDiv[(this._get(inst, \'isRTL\') ? \'add\' : \'remove\') +\n +\t\t\t\'Class\'](\'ui-datepicker-rtl\');\n +\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n +\t\t\t\t// #6694 - don\'t focus the input if it\'s already focused\n +\t\t\t\t// this breaks the change event in IE\n +\t\t\t\tinst.input.is(\':visible\') && !inst.input.is(\':disabled\') && inst.input[0] != document.activeElement)\n +\t\t\tinst.input.focus();\n +\t\t// deffered render of the years select (to avoid flashes on Firefox)\n +\t\tif( inst.yearshtml ){\n +\t\t\tvar origyearshtml = inst.yearshtml;\n +\t\t\tsetTimeout(function(){\n +\t\t\t\t//assure that inst.yearshtml didn\'t change.\n +\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n +\t\t\t\t\tinst.dpDiv.find(\'select.ui-datepicker-year:first\').replaceWith(inst.yearshtml);\n +\t\t\t\t}\n +\t\t\t\torigyearshtml = inst.yearshtml = null;\n +\t\t\t}, 0);\n +\t\t}\n +\t},\n +\n +\t/* Retrieve the size of left and top borders for an element.\n +\t @param elem (jQuery object) the element of interest\n +\t @return (number[2]) the left and top borders */\n +\t_getBorders: function(elem) {\n +\t\tvar convert = function(value) {\n +\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n +\t\t};\n +\t\treturn [parseFloat(convert(elem.css(\'border-left-width\'))),\n +\t\t\tparseFloat(convert(elem.css(\'border-top-width\')))];\n +\t},\n +\n +\t/* Check positioning to remain on screen. */\n +\t_checkOffset: function(inst, offset, isFixed) {\n +\t\tvar dpWidth = inst.dpDiv.outerWidth();\n +\t\tvar dpHeight = inst.dpDiv.outerHeight();\n +\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n +\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n +\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n +\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n +\n +\t\toffset.left -= (this._get(inst, \'isRTL\') ? (dpWidth - inputWidth) : 0);\n +\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n +\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n +\n +\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n +\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n +\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n +\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n +\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n +\n +\t\treturn offset;\n +\t},\n +\n +\t/* Find an object\'s position on the screen. */\n +\t_findPos: function(obj) {\n +\t\tvar inst = this._getInst(obj);\n +\t\tvar isRTL = this._get(inst, \'isRTL\');\n +\t\twhile (obj && (obj.type == \'hidden\' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n +\t\t\tobj = obj[isRTL ? \'previousSibling\' : \'nextSibling\'];\n +\t\t}\n +\t\tvar position = $(obj).offset();\n +\t\treturn [position.left, position.top];\n +\t},\n +\n +\t/* Hide the date picker from view.\n +\t @param input element - the input field attached to the date picker */\n +\t_hideDatepicker: function(input) {\n +\t\tvar inst = this._curInst;\n +\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n +\t\t\treturn;\n +\t\tif (this._datepickerShowing) {\n +\t\t\tvar showAnim = this._get(inst, \'showAnim\');\n +\t\t\tvar duration = this._get(inst, \'duration\');\n +\t\t\tvar postProcess = function() {\n +\t\t\t\t$.datepicker._tidyDialog(inst);\n +\t\t\t};\n +\n +\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n +\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n +\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, \'showOptions\'), duration, postProcess);\n +\t\t\telse\n +\t\t\t\tinst.dpDiv[(showAnim == \'slideDown\' ? \'slideUp\' :\n +\t\t\t\t\t(showAnim == \'fadeIn\' ? \'fadeOut\' : \'hide\'))]((showAnim ? duration : null), postProcess);\n +\t\t\tif (!showAnim)\n +\t\t\t\tpostProcess();\n +\t\t\tthis._datepickerShowing = false;\n +\t\t\tvar onClose = this._get(inst, \'onClose\');\n +\t\t\tif (onClose)\n +\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n +\t\t\t\t\t[(inst.input ? inst.input.val() : \'\'), inst]);\n +\t\t\tthis._lastInput = null;\n +\t\t\tif (this._inDialog) {\n +\t\t\t\tthis._dialogInput.css({ position: \'absolute\', left: \'0\', top: \'-100px\' });\n +\t\t\t\tif ($.blockUI) {\n +\t\t\t\t\t$.unblockUI();\n +\t\t\t\t\t$(\'body\').append(this.dpDiv);\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tthis._inDialog = false;\n +\t\t}\n +\t},\n +\n +\t/* Tidy up after a dialog display. */\n +\t_tidyDialog: function(inst) {\n +\t\tinst.dpDiv.removeClass(this._dialogClass).unbind(\'.ui-datepicker-calendar\');\n +\t},\n +\n +\t/* Close date picker if clicked elsewhere. */\n +\t_checkExternalClick: function(event) {\n +\t\tif (!$.datepicker._curInst)\n +\t\t\treturn;\n +\n +\t\tvar $target = $(event.target),\n +\t\t\tinst = $.datepicker._getInst($target[0]);\n +\n +\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n +\t\t\t\t$target.parents(\'#\' + $.datepicker._mainDivId).length == 0 &&\n +\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n +\t\t\t\t!$target.closest("." + $.datepicker._triggerClass).length &&\n +\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n +\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n +\t\t\t$.datepicker._hideDatepicker();\n +\t},\n +\n +\t/* Adjust one of the date sub-fields. */\n +\t_adjustDate: function(id, offset, period) {\n +\t\tvar target = $(id);\n +\t\tvar inst = this._getInst(target[0]);\n +\t\tif (this._isDisabledDatepicker(target[0])) {\n +\t\t\treturn;\n +\t\t}\n +\t\tthis._adjustInstDate(inst, offset +\n +\t\t\t(period == \'M\' ? this._get(inst, \'showCurrentAtPos\') : 0), // undo positioning\n +\t\t\tperiod);\n +\t\tthis._updateDatepicker(inst);\n +\t},\n +\n +\t/* Action for current link. */\n +\t_gotoToday: function(id) {\n +\t\tvar target = $(id);\n +\t\tvar inst = this._getInst(target[0]);\n +\t\tif (this._get(inst, \'gotoCurrent\') && inst.currentDay) {\n +\t\t\tinst.selectedDay = inst.currentDay;\n +\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n +\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n +\t\t}\n +\t\telse {\n +\t\t\tvar date = new Date();\n +\t\t\tinst.selectedDay = date.getDate();\n +\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n +\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n +\t\t}\n +\t\tthis._notifyChange(inst);\n +\t\tthis._adjustDate(target);\n +\t},\n +\n +\t/* Action for selecting a new month/year. */\n +\t_selectMonthYear: function(id, select, period) {\n +\t\tvar target = $(id);\n +\t\tvar inst = this._getInst(target[0]);\n +\t\tinst[\'selected\' + (period == \'M\' ? \'Month\' : \'Year\')] =\n +\t\tinst[\'draw\' + (period == \'M\' ? \'Month\' : \'Year\')] =\n +\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n +\t\tthis._notifyChange(inst);\n +\t\tthis._adjustDate(target);\n +\t},\n +\n +\t/* Action for selecting a day. */\n +\t_selectDay: function(id, month, year, td) {\n +\t\tvar target = $(id);\n +\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n +\t\t\treturn;\n +\t\t}\n +\t\tvar inst = this._getInst(target[0]);\n +\t\tinst.selectedDay = inst.currentDay = $(\'a\', td).html();\n +\t\tinst.selectedMonth = inst.currentMonth = month;\n +\t\tinst.selectedYear = inst.currentYear = year;\n +\t\tthis._selectDate(id, this._formatDate(inst,\n +\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n +\t},\n +\n +\t/* Erase the input field and hide the date picker. */\n +\t_clearDate: function(id) {\n +\t\tvar target = $(id);\n +\t\tvar inst = this._getInst(target[0]);\n +\t\tthis._selectDate(target, \'\');\n +\t},\n +\n +\t/* Update the input field with the selected date. */\n +\t_selectDate: function(id, dateStr) {\n +\t\tvar target = $(id);\n +\t\tvar inst = this._getInst(target[0]);\n +\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n +\t\tif (inst.input)\n +\t\t\tinst.input.val(dateStr);\n +\t\tthis._updateAlternate(inst);\n +\t\tvar onSelect = this._get(inst, \'onSelect\');\n +\t\tif (onSelect)\n +\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback\n +\t\telse if (inst.input)\n +\t\t\tinst.input.trigger(\'change\'); // fire the change event\n +\t\tif (inst.inline)\n +\t\t\tthis._updateDatepicker(inst);\n +\t\telse {\n +\t\t\tthis._hideDatepicker();\n +\t\t\tthis._lastInput = inst.input[0];\n +\t\t\tif (typeof(inst.input[0]) != \'object\')\n +\t\t\t\tinst.input.focus(); // restore focus\n +\t\t\tthis._lastInput = null;\n +\t\t}\n +\t},\n +\n +\t/* Update any alternate field to synchronise with the main field. */\n +\t_updateAlternate: function(inst) {\n +\t\tvar altField = this._get(inst, \'altField\');\n +\t\tif (altField) { // update alternate field too\n +\t\t\tvar altFormat = this._get(inst, \'altFormat\') || this._get(inst, \'dateFormat\');\n +\t\t\tvar date = this._getDate(inst);\n +\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n +\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n +\t\t}\n +\t},\n +\n +\t/* Set as beforeShowDay function to prevent selection of weekends.\n +\t @param date Date - the date to customise\n +\t @return [boolean, string] - is this date selectable?, what is its CSS class? */\n +\tnoWeekends: function(date) {\n +\t\tvar day = date.getDay();\n +\t\treturn [(day > 0 && day < 6), \'\'];\n +\t},\n +\n +\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n +\t @param date Date - the date to get the week for\n +\t @return number - the number of the week within the year that contains this date */\n +\tiso8601Week: function(date) {\n +\t\tvar checkDate = new Date(date.getTime());\n +\t\t// Find Thursday of this week starting on Monday\n +\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n +\t\tvar time = checkDate.getTime();\n +\t\tcheckDate.setMonth(0); // Compare with Jan 1\n +\t\tcheckDate.setDate(1);\n +\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n +\t},\n +\n +\t/* Parse a string value into a date object.\n +\t See formatDate below for the possible formats.\n +\n +\t @param format string - the expected format of the date\n +\t @param value string - the date in the above format\n +\t @param settings Object - attributes include:\n +\t shortYearCutoff number - the cutoff year for determining the century (optional)\n +\t dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)\n +\t dayNames string[7] - names of the days from Sunday (optional)\n +\t monthNamesShort string[12] - abbreviated names of the months (optional)\n +\t monthNames string[12] - names of the months (optional)\n +\t @return Date - the extracted date value or null if value is blank */\n +\tparseDate: function (format, value, settings) {\n +\t\tif (format == null || value == null)\n +\t\t\tthrow \'Invalid arguments\';\n +\t\tvalue = (typeof value == \'object\' ? value.toString() : value + \'\');\n +\t\tif (value == \'\')\n +\t\t\treturn null;\n +\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n +\t\tshortYearCutoff = (typeof shortYearCutoff != \'string\' ? shortYearCutoff :\n +\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n +\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n +\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n +\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n +\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n +\t\tvar year = -1;\n +\t\tvar month = -1;\n +\t\tvar day = -1;\n +\t\tvar doy = -1;\n +\t\tvar literal = false;\n +\t\t// Check whether a format character is doubled\n +\t\tvar lookAhead = function(match) {\n +\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n +\t\t\tif (matches)\n +\t\t\t\tiFormat++;\n +\t\t\treturn matches;\n +\t\t};\n +\t\t// Extract a number from the string value\n +\t\tvar getNumber = function(match) {\n +\t\t\tvar isDoubled = lookAhead(match);\n +\t\t\tvar size = (match == \'@\' ? 14 : (match == \'!\' ? 20 :\n +\t\t\t\t(match == \'y\' && isDoubled ? 4 : (match == \'o\' ? 3 : 2))));\n +\t\t\tvar digits = new RegExp(\'^\\\\d{1,\' + size + \'}\');\n +\t\t\tvar num = value.substring(iValue).match(digits);\n +\t\t\tif (!num)\n +\t\t\t\tthrow \'Missing number at position \' + iValue;\n +\t\t\tiValue += num[0].length;\n +\t\t\treturn parseInt(num[0], 10);\n +\t\t};\n +\t\t// Extract a name from the string value and convert to an index\n +\t\tvar getName = function(match, shortNames, longNames) {\n +\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n +\t\t\t\treturn [ [k, v] ];\n +\t\t\t}).sort(function (a, b) {\n +\t\t\t\treturn -(a[1].length - b[1].length);\n +\t\t\t});\n +\t\t\tvar index = -1;\n +\t\t\t$.each(names, function (i, pair) {\n +\t\t\t\tvar name = pair[1];\n +\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n +\t\t\t\t\tindex = pair[0];\n +\t\t\t\t\tiValue += name.length;\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\tif (index != -1)\n +\t\t\t\treturn index + 1;\n +\t\t\telse\n +\t\t\t\tthrow \'Unknown name at position \' + iValue;\n +\t\t};\n +\t\t// Confirm that a literal character matches the string value\n +\t\tvar checkLiteral = function() {\n +\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n +\t\t\t\tthrow \'Unexpected literal at position \' + iValue;\n +\t\t\tiValue++;\n +\t\t};\n +\t\tvar iValue = 0;\n +\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n +\t\t\tif (literal)\n +\t\t\t\tif (format.charAt(iFormat) == "\'" && !lookAhead("\'"))\n +\t\t\t\t\tliteral = false;\n +\t\t\t\telse\n +\t\t\t\t\tcheckLiteral();\n +\t\t\telse\n +\t\t\t\tswitch (format.charAt(iFormat)) {\n +\t\t\t\t\tcase \'d\':\n +\t\t\t\t\t\tday = getNumber(\'d\');\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'D\':\n +\t\t\t\t\t\tgetName(\'D\', dayNamesShort, dayNames);\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'o\':\n +\t\t\t\t\t\tdoy = getNumber(\'o\');\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'m\':\n +\t\t\t\t\t\tmonth = getNumber(\'m\');\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'M\':\n +\t\t\t\t\t\tmonth = getName(\'M\', monthNamesShort, monthNames);\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'y\':\n +\t\t\t\t\t\tyear = getNumber(\'y\');\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'@\':\n +\t\t\t\t\t\tvar date = new Date(getNumber(\'@\'));\n +\t\t\t\t\t\tyear = date.getFullYear();\n +\t\t\t\t\t\tmonth = date.getMonth() + 1;\n +\t\t\t\t\t\tday = date.getDate();\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'!\':\n +\t\t\t\t\t\tvar date = new Date((getNumber(\'!\') - this._ticksTo1970) / 10000);\n +\t\t\t\t\t\tyear = date.getFullYear();\n +\t\t\t\t\t\tmonth = date.getMonth() + 1;\n +\t\t\t\t\t\tday = date.getDate();\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase "\'":\n +\t\t\t\t\t\tif (lookAhead("\'"))\n +\t\t\t\t\t\t\tcheckLiteral();\n +\t\t\t\t\t\telse\n +\t\t\t\t\t\t\tliteral = true;\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tdefault:\n +\t\t\t\t\t\tcheckLiteral();\n +\t\t\t\t}\n +\t\t}\n +\t\tif (iValue < value.length){\n +\t\t\tvar extra = value.substr(iValue);\n +\t\t\tif (!/^\\s+/.test(extra)) {\n +\t\t\t\tthrow "Extra/unparsed characters found in date: " + extra;\n +\t\t\t}\n +\t\t}\n +\t\tif (year == -1)\n +\t\t\tyear = new Date().getFullYear();\n +\t\telse if (year < 100)\n +\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n +\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n +\t\tif (doy > -1) {\n +\t\t\tmonth = 1;\n +\t\t\tday = doy;\n +\t\t\tdo {\n +\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n +\t\t\t\tif (day <= dim)\n +\t\t\t\t\tbreak;\n +\t\t\t\tmonth++;\n +\t\t\t\tday -= dim;\n +\t\t\t} while (true);\n +\t\t}\n +\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n +\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n +\t\t\tthrow \'Invalid date\'; // E.g. 31/02/00\n +\t\treturn date;\n +\t},\n +\n +\t/* Standard date formats. */\n +\tATOM: \'yy-mm-dd\', // RFC 3339 (ISO 8601)\n +\tCOOKIE: \'D, dd M yy\',\n +\tISO_8601: \'yy-mm-dd\',\n +\tRFC_822: \'D, d M y\',\n +\tRFC_850: \'DD, dd-M-y\',\n +\tRFC_1036: \'D, d M y\',\n +\tRFC_1123: \'D, d M yy\',\n +\tRFC_2822: \'D, d M yy\',\n +\tRSS: \'D, d M y\', // RFC 822\n +\tTICKS: \'!\',\n +\tTIMESTAMP: \'@\',\n +\tW3C: \'yy-mm-dd\', // ISO 8601\n +\n +\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n +\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n +\n +\t/* Format a date object into a string value.\n +\t The format can be combinations of the following:\n +\t d - day of month (no leading zero)\n +\t dd - day of month (two digit)\n +\t o - day of year (no leading zeros)\n +\t oo - day of year (three digit)\n +\t D - day name short\n +\t DD - day name long\n +\t m - month of year (no leading zero)\n +\t mm - month of year (two digit)\n +\t M - month name short\n +\t MM - month name long\n +\t y - year (two digit)\n +\t yy - year (four digit)\n +\t @ - Unix timestamp (ms since 01/01/1970)\n +\t ! - Windows ticks (100ns since 01/01/0001)\n +\t \'...\' - literal text\n +\t \'\' - single quote\n +\n +\t @param format string - the desired format of the date\n +\t @param date Date - the date value to format\n +\t @param settings Object - attributes include:\n +\t dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)\n +\t dayNames string[7] - names of the days from Sunday (optional)\n +\t monthNamesShort string[12] - abbreviated names of the months (optional)\n +\t monthNames string[12] - names of the months (optional)\n +\t @return string - the date in the above format */\n +\tformatDate: function (format, date, settings) {\n +\t\tif (!date)\n +\t\t\treturn \'\';\n +\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n +\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n +\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n +\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n +\t\t// Check whether a format character is doubled\n +\t\tvar lookAhead = function(match) {\n +\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n +\t\t\tif (matches)\n +\t\t\t\tiFormat++;\n +\t\t\treturn matches;\n +\t\t};\n +\t\t// Format a number, with leading zero if necessary\n +\t\tvar formatNumber = function(match, value, len) {\n +\t\t\tvar num = \'\' + value;\n +\t\t\tif (lookAhead(match))\n +\t\t\t\twhile (num.length < len)\n +\t\t\t\t\tnum = \'0\' + num;\n +\t\t\treturn num;\n +\t\t};\n +\t\t// Format a name, short or long as requested\n +\t\tvar formatName = function(match, value, shortNames, longNames) {\n +\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n +\t\t};\n +\t\tvar output = \'\';\n +\t\tvar literal = false;\n +\t\tif (date)\n +\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n +\t\t\t\tif (literal)\n +\t\t\t\t\tif (format.charAt(iFormat) == "\'" && !lookAhead("\'"))\n +\t\t\t\t\t\tliteral = false;\n +\t\t\t\t\telse\n +\t\t\t\t\t\toutput += format.charAt(iFormat);\n +\t\t\t\telse\n +\t\t\t\t\tswitch (format.charAt(iFormat)) {\n +\t\t\t\t\t\tcase \'d\':\n +\t\t\t\t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +\t\t\toutput += formatNumber(\'d\', date.getDate(), 2);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'D\':\n +\t\t\t\t\t\t\toutput += formatName(\'D\', date.getDay(), dayNamesShort, dayNames);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'o\':\n +\t\t\t\t\t\t\toutput += formatNumber(\'o\',\n +\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'m\':\n +\t\t\t\t\t\t\toutput += formatNumber(\'m\', date.getMonth() + 1, 2);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'M\':\n +\t\t\t\t\t\t\toutput += formatName(\'M\', date.getMonth(), monthNamesShort, monthNames);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'y\':\n +\t\t\t\t\t\t\toutput += (lookAhead(\'y\') ? date.getFullYear() :\n +\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? \'0\' : \'\') + date.getYear() % 100);\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'@\':\n +\t\t\t\t\t\t\toutput += date.getTime();\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase \'!\':\n +\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tcase "\'":\n +\t\t\t\t\t\t\tif (lookAhead("\'"))\n +\t\t\t\t\t\t\t\toutput += "\'";\n +\t\t\t\t\t\t\telse\n +\t\t\t\t\t\t\t\tliteral = true;\n +\t\t\t\t\t\t\tbreak;\n +\t\t\t\t\t\tdefault:\n +\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n +\t\t\t\t\t}\n +\t\t\t}\n +\t\treturn output;\n +\t},\n +\n +\t/* Extract all possible characters from the date format. */\n +\t_possibleChars: function (format) {\n +\t\tvar chars = \'\';\n +\t\tvar literal = false;\n +\t\t// Check whether a format character is doubled\n +\t\tvar lookAhead = function(match) {\n +\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n +\t\t\tif (matches)\n +\t\t\t\tiFormat++;\n +\t\t\treturn matches;\n +\t\t};\n +\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n +\t\t\tif (literal)\n +\t\t\t\tif (format.charAt(iFormat) == "\'" && !lookAhead("\'"))\n +\t\t\t\t\tliteral = false;\n +\t\t\t\telse\n +\t\t\t\t\tchars += format.charAt(iFormat);\n +\t\t\telse\n +\t\t\t\tswitch (format.charAt(iFormat)) {\n +\t\t\t\t\tcase \'d\': case \'m\': case \'y\': case \'@\':\n +\t\t\t\t\t\tchars += \'0123456789\';\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'D\': case \'M\':\n +\t\t\t\t\t\treturn null; // Accept anything\n +\t\t\t\t\tcase "\'":\n +\t\t\t\t\t\tif (lookAhead("\'"))\n +\t\t\t\t\t\t\tchars += "\'";\n +\t\t\t\t\t\telse\n +\t\t\t\t\t\t\tliteral = true;\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tdefault:\n +\t\t\t\t\t\tchars += format.charAt(iFormat);\n +\t\t\t\t}\n +\t\treturn chars;\n +\t},\n +\n +\t/* Get a setting value, defaulting if necessary. */\n +\t_get: function(inst, name) {\n +\t\treturn inst.settings[name] !== undefined ?\n +\t\t\tinst.settings[name] : this._defaults[name];\n +\t},\n +\n +\t/* Parse existing date and initialise date picker. */\n +\t_setDateFromField: function(inst, noDefault) {\n +\t\tif (inst.input.val() == inst.lastVal) {\n +\t\t\treturn;\n +\t\t}\n +\t\tvar dateFormat = this._get(inst, \'dateFormat\');\n +\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n +\t\tvar date, defaultDate;\n +\t\tdate = defaultDate = this._getDefaultDate(inst);\n +\t\tvar settings = this._getFormatConfig(inst);\n +\t\ttry {\n +\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n +\t\t} catch (event) {\n +\t\t\tthis.log(event);\n +\t\t\tdates = (noDefault ? \'\' : dates);\n +\t\t}\n +\t\tinst.selectedDay = date.getDate();\n +\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n +\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n +\t\tinst.currentDay = (dates ? date.getDate() : 0);\n +\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n +\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n +\t\tthis._adjustInstDate(inst);\n +\t},\n +\n +\t/* Retrieve the default date shown on opening. */\n +\t_getDefaultDate: function(inst) {\n +\t\treturn this._restrictMinMax(inst,\n +\t\t\tthis._determineDate(inst, this._get(inst, \'defaultDate\'), new Date()));\n +\t},\n +\n +\t/* A date may be specified as an exact value or a relative one. */\n +\t_determineDate: function(inst, date, defaultDate) {\n +\t\tvar offsetNumeric = function(offset) {\n +\t\t\tvar date = new Date();\n +\t\t\tdate.setDate(date.getDate() + offset);\n +\t\t\treturn date;\n +\t\t};\n +\t\tvar offsetString = function(offset) {\n +\t\t\ttry {\n +\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, \'dateFormat\'),\n +\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n +\t\t\t}\n +\t\t\tcatch (e) {\n +\t\t\t\t// Ignore\n +\t\t\t}\n +\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n +\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n +\t\t\tvar year = date.getFullYear();\n +\t\t\tvar month = date.getMonth();\n +\t\t\tvar day = date.getDate();\n +\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n +\t\t\tvar matches = pattern.exec(offset);\n +\t\t\twhile (matches) {\n +\t\t\t\tswitch (matches[2] || \'d\') {\n +\t\t\t\t\tcase \'d\' : case \'D\' :\n +\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n +\t\t\t\t\tcase \'w\' : case \'W\' :\n +\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n +\t\t\t\t\tcase \'m\' : case \'M\' :\n +\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n +\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase \'y\': case \'Y\' :\n +\t\t\t\t\t\tyear += parseInt(matches[1],10);\n +\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\t\t\t\tmatches = pattern.exec(offset);\n +\t\t\t}\n +\t\t\treturn new Date(year, month, day);\n +\t\t};\n +\t\tvar newDate = (date == null || date === \'\' ? defaultDate : (typeof date == \'string\' ? offsetString(date) :\n +\t\t\t(typeof date == \'number\' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n +\t\tnewDate = (newDate && newDate.toString() == \'Invalid Date\' ? defaultDate : newDate);\n +\t\tif (newDate) {\n +\t\t\tnewDate.setHours(0);\n +\t\t\tnewDate.setMinutes(0);\n +\t\t\tnewDate.setSeconds(0);\n +\t\t\tnewDate.setMilliseconds(0);\n +\t\t}\n +\t\treturn this._daylightSavingAdjust(newDate);\n +\t},\n +\n +\t/* Handle switch to/from daylight saving.\n +\t Hours may be non-zero on daylight saving cut-over:\n +\t > 12 when midnight changeover, but then cannot generate\n +\t midnight datetime, so jump to 1AM, otherwise reset.\n +\t @param date (Date) the date to check\n +\t @return (Date) the corrected date */\n +\t_daylightSavingAdjust: function(date) {\n +\t\tif (!date) return null;\n +\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n +\t\treturn date;\n +\t},\n +\n +\t/* Set the date(s) directly. */\n +\t_setDate: function(inst, date, noChange) {\n +\t\tvar clear = !date;\n +\t\tvar origMonth = inst.selectedMonth;\n +\t\tvar origYear = inst.selectedYear;\n +\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n +\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n +\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n +\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n +\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n +\t\t\tthis._notifyChange(inst);\n +\t\tthis._adjustInstDate(inst);\n +\t\tif (inst.input) {\n +\t\t\tinst.input.val(clear ? \'\' : this._formatDate(inst));\n +\t\t}\n +\t},\n +\n +\t/* Retrieve the date(s) directly. */\n +\t_getDate: function(inst) {\n +\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == \'\') ? null :\n +\t\t\tthis._daylightSavingAdjust(new Date(\n +\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n +\t\t\treturn startDate;\n +\t},\n +\n +\t/* Attach the onxxx handlers. These are declared statically so\n +\t * they work with static code transformers like Caja.\n +\t */\n +\t_attachHandlers: function(inst) {\n +\t\tvar stepMonths = this._get(inst, \'stepMonths\');\n +\t\tvar id = \'#\' + inst.id.replace( /\\\\\\\\/g, "\\\\" );\n +\t\tinst.dpDiv.find(\'[data-handler]\').map(function () {\n +\t\t\tvar handler = {\n +\t\t\t\tprev: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._adjustDate(id, -stepMonths, \'M\');\n +\t\t\t\t},\n +\t\t\t\tnext: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._adjustDate(id, +stepMonths, \'M\');\n +\t\t\t\t},\n +\t\t\t\thide: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._hideDatepicker();\n +\t\t\t\t},\n +\t\t\t\ttoday: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._gotoToday(id);\n +\t\t\t\t},\n +\t\t\t\tselectDay: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._selectDay(id, +this.getAttribute(\'data-month\'), +this.getAttribute(\'data-year\'), this);\n +\t\t\t\t\treturn false;\n +\t\t\t\t},\n +\t\t\t\tselectMonth: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._selectMonthYear(id, this, \'M\');\n +\t\t\t\t\treturn false;\n +\t\t\t\t},\n +\t\t\t\tselectYear: function () {\n +\t\t\t\t\twindow[\'DP_jQuery_\' + dpuuid].datepicker._selectMonthYear(id, this, \'Y\');\n +\t\t\t\t\treturn false;\n +\t\t\t\t}\n +\t\t\t};\n +\t\t\t$(this).bind(this.getAttribute(\'data-event\'), handler[this.getAttribute(\'data-handler\')]);\n +\t\t});\n +\t},\n +\n +\t/* Generate the HTML for the current state of the date picker. */\n +\t_generateHTML: function(inst) {\n +\t\tvar today = new Date();\n +\t\ttoday = this._daylightSavingAdjust(\n +\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n +\t\tvar isRTL = this._get(inst, \'isRTL\');\n +\t\tvar showButtonPanel = this._get(inst, \'showButtonPanel\');\n +\t\tvar hideIfNoPrevNext = this._get(inst, \'hideIfNoPrevNext\');\n +\t\tvar navigationAsDateFormat = this._get(inst, \'navigationAsDateFormat\');\n +\t\tvar numMonths = this._getNumberOfMonths(inst);\n +\t\tvar showCurrentAtPos = this._get(inst, \'showCurrentAtPos\');\n +\t\tvar stepMonths = this._get(inst, \'stepMonths\');\n +\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n +\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n +\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n +\t\tvar minDate = this._getMinMaxDate(inst, \'min\');\n +\t\tvar maxDate = this._getMinMaxDate(inst, \'max\');\n +\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n +\t\tvar drawYear = inst.drawYear;\n +\t\tif (drawMonth < 0) {\n +\t\t\tdrawMonth += 12;\n +\t\t\tdrawYear--;\n +\t\t}\n +\t\tif (maxDate) {\n +\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n +\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n +\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n +\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n +\t\t\t\tdrawMonth--;\n +\t\t\t\tif (drawMonth < 0) {\n +\t\t\t\t\tdrawMonth = 11;\n +\t\t\t\t\tdrawYear--;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t\tinst.drawMonth = drawMonth;\n +\t\tinst.drawYear = drawYear;\n +\t\tvar prevText = this._get(inst, \'prevText\');\n +\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n +\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n +\t\t\tthis._getFormatConfig(inst)));\n +\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n +\t\t\t\'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click"\' +\n +\t\t\t\' title="\' + prevText + \'"><span class="ui-icon ui-icon-circle-triangle-\' + ( isRTL ? \'e\' : \'w\') + \'">\' + prevText + \'</span></a>\' :\n +\t\t\t(hideIfNoPrevNext ? \'\' : \'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="\'+ prevText +\'"><span class="ui-icon ui-icon-circle-triangle-\' + ( isRTL ? \'e\' : \'w\') + \'">\' + prevText + \'</span></a>\'));\n +\t\tvar nextText = this._get(inst, \'nextText\');\n +\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n +\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n +\t\t\tthis._getFormatConfig(inst)));\n +\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n +\t\t\t\'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click"\' +\n +\t\t\t\' title="\' + nextText + \'"><span class="ui-icon ui-icon-circle-triangle-\' + ( isRTL ? \'w\' : \'e\') + \'">\' + nextText + \'</span></a>\' :\n +\t\t\t(hideIfNoPrevNext ? \'\' : \'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="\'+ nextText + \'"><span class="ui-icon ui-icon-circle-triangle-\' + ( isRTL ? \'w\' : \'e\') + \'">\' + nextText + \'</span></a>\'));\n +\t\tvar currentText = this._get(inst, \'currentText\');\n +\t\tvar gotoDate = (this._get(inst, \'gotoCurrent\') && inst.currentDay ? currentDate : today);\n +\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n +\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n +\t\tvar controls = (!inst.inline ? \'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">\' +\n +\t\t\tthis._get(inst, \'closeText\') + \'</button>\' : \'\');\n +\t\tvar buttonPanel = (showButtonPanel) ? \'<div class="ui-datepicker-buttonpane ui-widget-content">\' + (isRTL ? controls : \'\') +\n +\t\t\t(this._isInRange(inst, gotoDate) ? \'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click"\' +\n +\t\t\t\'>\' + currentText + \'</button>\' : \'\') + (isRTL ? \'\' : controls) + \'</div>\' : \'\';\n +\t\tvar firstDay = parseInt(this._get(inst, \'firstDay\'),10);\n +\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n +\t\tvar showWeek = this._get(inst, \'showWeek\');\n +\t\tvar dayNames = this._get(inst, \'dayNames\');\n +\t\tvar dayNamesShort = this._get(inst, \'dayNamesShort\');\n +\t\tvar dayNamesMin = this._get(inst, \'dayNamesMin\');\n +\t\tvar monthNames = this._get(inst, \'monthNames\');\n +\t\tvar monthNamesShort = this._get(inst, \'monthNamesShort\');\n +\t\tvar beforeShowDay = this._get(inst, \'beforeShowDay\');\n +\t\tvar showOtherMonths = this._get(inst, \'showOtherMonths\');\n +\t\tvar selectOtherMonths = this._get(inst, \'selectOtherMonths\');\n +\t\tvar calculateWeek = this._get(inst, \'calculateWeek\') || this.iso8601Week;\n +\t\tvar defaultDate = this._getDefaultDate(inst);\n +\t\tvar html = \'\';\n +\t\tfor (var row = 0; row < numMonths[0]; row++) {\n +\t\t\tvar group = \'\';\n +\t\t\tthis.maxRows = 4;\n +\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n +\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n +\t\t\t\tvar cornerClass = \' ui-corner-all\';\n +\t\t\t\tvar calender = \'\';\n +\t\t\t\tif (isMultiMonth) {\n +\t\t\t\t\tcalender += \'<div class="ui-datepicker-group\';\n +\t\t\t\t\tif (numMonths[1] > 1)\n +\t\t\t\t\t\tswitch (col) {\n +\t\t\t\t\t\t\tcase 0: calender += \' ui-datepicker-group-first\';\n +\t\t\t\t\t\t\t\tcornerClass = \' ui-corner-\' + (isRTL ? \'right\' : \'left\'); break;\n +\t\t\t\t\t\t\tcase numMonths[1]-1: calender += \' ui-datepicker-group-last\';\n +\t\t\t\t\t\t\t\tcornerClass = \' ui-corner-\' + (isRTL ? \'left\' : \'right\'); break;\n +\t\t\t\t\t\t\tdefault: calender += \' ui-datepicker-group-middle\'; cornerClass = \'\'; break;\n +\t\t\t\t\t\t}\n +\t\t\t\t\tcalender += \'">\';\n +\t\t\t\t}\n +\t\t\t\tcalender += \'<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix\' + cornerClass + \'">\' +\n +\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : \'\') +\n +\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : \'\') +\n +\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n +\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n +\t\t\t\t\t\'</div><table class="ui-datepicker-calendar"><thead>\' +\n +\t\t\t\t\t\'<tr>\';\n +\t\t\t\tvar thead = (showWeek ? \'<th class="ui-datepicker-week-col">\' + this._get(inst, \'weekHeader\') + \'</th>\' : \'\');\n +\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n +\t\t\t\t\tvar day = (dow + firstDay) % 7;\n +\t\t\t\t\tthead += \'<th\' + ((dow + firstDay + 6) % 7 >= 5 ? \' class="ui-datepicker-week-end"\' : \'\') + \'>\' +\n +\t\t\t\t\t\t\'<span title="\' + dayNames[day] + \'">\' + dayNamesMin[day] + \'</span></th>\';\n +\t\t\t\t}\n +\t\t\t\tcalender += thead + \'</tr></thead><tbody>\';\n +\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n +\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n +\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n +\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n +\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n +\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n +\t\t\t\tthis.maxRows = numRows;\n +\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n +\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n +\t\t\t\t\tcalender += \'<tr>\';\n +\t\t\t\t\tvar tbody = (!showWeek ? \'\' : \'<td class="ui-datepicker-week-col">\' +\n +\t\t\t\t\t\tthis._get(inst, \'calculateWeek\')(printDate) + \'</td>\');\n +\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n +\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n +\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, \'\']);\n +\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n +\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n +\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n +\t\t\t\t\t\ttbody += \'<td class="\' +\n +\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? \' ui-datepicker-week-end\' : \'\') + // highlight weekends\n +\t\t\t\t\t\t\t(otherMonth ? \' ui-datepicker-other-month\' : \'\') + // highlight days from other months\n +\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n +\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n +\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n +\t\t\t\t\t\t\t\' \' + this._dayOverClass : \'\') + // highlight selected day\n +\t\t\t\t\t\t\t(unselectable ? \' \' + this._unselectableClass + \' ui-state-disabled\': \'\') + // highlight unselectable days\n +\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \'\' : \' \' + daySettings[1] + // highlight custom dates\n +\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? \' \' + this._currentClass : \'\') + // highlight selected day\n +\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? \' ui-datepicker-today\' : \'\')) + \'"\' + // highlight today (if different)\n +\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? \' title="\' + daySettings[2] + \'"\' : \'\') + // cell title\n +\t\t\t\t\t\t\t(unselectable ? \'\' : \' data-handler="selectDay" data-event="click" data-month="\' + printDate.getMonth() + \'" data-year="\' + printDate.getFullYear() + \'"\') + \'>\' + // actions\n +\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \' \' : // display for other months\n +\t\t\t\t\t\t\t(unselectable ? \'<span class="ui-state-default">\' + printDate.getDate() + \'</span>\' : \'<a class="ui-state-default\' +\n +\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? \' ui-state-highlight\' : \'\') +\n +\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? \' ui-state-active\' : \'\') + // highlight selected day\n +\t\t\t\t\t\t\t(otherMonth ? \' ui-priority-secondary\' : \'\') + // distinguish dates from other months\n +\t\t\t\t\t\t\t\'" href="#">\' + printDate.getDate() + \'</a>\')) + \'</td>\'; // display selectable date\n +\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n +\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n +\t\t\t\t\t}\n +\t\t\t\t\tcalender += tbody + \'</tr>\';\n +\t\t\t\t}\n +\t\t\t\tdrawMonth++;\n +\t\t\t\tif (drawMonth > 11) {\n +\t\t\t\t\tdrawMonth = 0;\n +\t\t\t\t\tdrawYear++;\n +\t\t\t\t}\n +\t\t\t\tcalender += \'</tbody></table>\' + (isMultiMonth ? \'</div>\' +\n +\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? \'<div class="ui-datepicker-row-break"></div>\' : \'\') : \'\');\n +\t\t\t\tgroup += calender;\n +\t\t\t}\n +\t\t\thtml += group;\n +\t\t}\n +\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n +\t\t\t\'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>\' : \'\');\n +\t\tinst._keyEvent = false;\n +\t\treturn html;\n +\t},\n +\n +\t/* Generate the month and year header. */\n +\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n +\t\t\tsecondary, monthNames, monthNamesShort) {\n +\t\tvar changeMonth = this._get(inst, \'changeMonth\');\n +\t\tvar changeYear = this._get(inst, \'changeYear\');\n +\t\tvar showMonthAfterYear = this._get(inst, \'showMonthAfterYear\');\n +\t\tvar html = \'<div class="ui-datepicker-title">\';\n +\t\tvar monthHtml = \'\';\n +\t\t// month selection\n +\t\tif (secondary || !changeMonth)\n +\t\t\tmonthHtml += \'<span class="ui-datepicker-month">\' + monthNames[drawMonth] + \'</span>\';\n +\t\telse {\n +\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n +\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n +\t\t\tmonthHtml += \'<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">\';\n +\t\t\tfor (var month = 0; month < 12; month++) {\n +\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n +\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n +\t\t\t\t\tmonthHtml += \'<option value="\' + month + \'"\' +\n +\t\t\t\t\t\t(month == drawMonth ? \' selected="selected"\' : \'\') +\n +\t\t\t\t\t\t\'>\' + monthNamesShort[month] + \'</option>\';\n +\t\t\t}\n +\t\t\tmonthHtml += \'</select>\';\n +\t\t}\n +\t\tif (!showMonthAfterYear)\n +\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? \' \' : \'\');\n +\t\t// year selection\n +\t\tif ( !inst.yearshtml ) {\n +\t\t\tinst.yearshtml = \'\';\n +\t\t\tif (secondary || !changeYear)\n +\t\t\t\thtml += \'<span class="ui-datepicker-year">\' + drawYear + \'</span>\';\n +\t\t\telse {\n +\t\t\t\t// determine range of years to display\n +\t\t\t\tvar years = this._get(inst, \'yearRange\').split(\':\');\n +\t\t\t\tvar thisYear = new Date().getFullYear();\n +\t\t\t\tvar determineYear = function(value) {\n +\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n +\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n +\t\t\t\t\t\tparseInt(value, 10)));\n +\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n +\t\t\t\t};\n +\t\t\t\tvar year = determineYear(years[0]);\n +\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || \'\'));\n +\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n +\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n +\t\t\t\tinst.yearshtml += \'<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">\';\n +\t\t\t\tfor (; year <= endYear; year++) {\n +\t\t\t\t\tinst.yearshtml += \'<option value="\' + year + \'"\' +\n +\t\t\t\t\t\t(year == drawYear ? \' selected="selected"\' : \'\') +\n +\t\t\t\t\t\t\'>\' + year + \'</option>\';\n +\t\t\t\t}\n +\t\t\t\tinst.yearshtml += \'</select>\';\n +\n +\t\t\t\thtml += inst.yearshtml;\n +\t\t\t\tinst.yearshtml = null;\n +\t\t\t}\n +\t\t}\n +\t\thtml += this._get(inst, \'yearSuffix\');\n +\t\tif (showMonthAfterYear)\n +\t\t\thtml += (secondary || !(changeMonth && changeYear) ? \' \' : \'\') + monthHtml;\n +\t\thtml += \'</div>\'; // Close datepicker_header\n +\t\treturn html;\n +\t},\n +\n +\t/* Adjust one of the date sub-fields. */\n +\t_adjustInstDate: function(inst, offset, period) {\n +\t\tvar year = inst.drawYear + (period == \'Y\' ? offset : 0);\n +\t\tvar month = inst.drawMonth + (period == \'M\' ? offset : 0);\n +\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n +\t\t\t(period == \'D\' ? offset : 0);\n +\t\tvar date = this._restrictMinMax(inst,\n +\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n +\t\tinst.selectedDay = date.getDate();\n +\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n +\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n +\t\tif (period == \'M\' || period == \'Y\')\n +\t\t\tthis._notifyChange(inst);\n +\t},\n +\n +\t/* Ensure a date is within any min/max bounds. */\n +\t_restrictMinMax: function(inst, date) {\n +\t\tvar minDate = this._getMinMaxDate(inst, \'min\');\n +\t\tvar maxDate = this._getMinMaxDate(inst, \'max\');\n +\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n +\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n +\t\treturn newDate;\n +\t},\n +\n +\t/* Notify change of month/year. */\n +\t_notifyChange: function(inst) {\n +\t\tvar onChange = this._get(inst, \'onChangeMonthYear\');\n +\t\tif (onChange)\n +\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n +\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n +\t},\n +\n +\t/* Determine the number of months to show. */\n +\t_getNumberOfMonths: function(inst) {\n +\t\tvar numMonths = this._get(inst, \'numberOfMonths\');\n +\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == \'number\' ? [1, numMonths] : numMonths));\n +\t},\n +\n +\t/* Determine the current maximum date - ensure no time components are set. */\n +\t_getMinMaxDate: function(inst, minMax) {\n +\t\treturn this._determineDate(inst, this._get(inst, minMax + \'Date\'), null);\n +\t},\n +\n +\t/* Find the number of days in a given month. */\n +\t_getDaysInMonth: function(year, month) {\n +\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n +\t},\n +\n +\t/* Find the day of the week of the first of a month. */\n +\t_getFirstDayOfMonth: function(year, month) {\n +\t\treturn new Date(year, month, 1).getDay();\n +\t},\n +\n +\t/* Determines if we should allow a "next/prev" month display change. */\n +\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n +\t\tvar numMonths = this._getNumberOfMonths(inst);\n +\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n +\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n +\t\tif (offset < 0)\n +\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n +\t\treturn this._isInRange(inst, date);\n +\t},\n +\n +\t/* Is the given date in the accepted range? */\n +\t_isInRange: function(inst, date) {\n +\t\tvar minDate = this._getMinMaxDate(inst, \'min\');\n +\t\tvar maxDate = this._getMinMaxDate(inst, \'max\');\n +\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n +\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n +\t},\n +\n +\t/* Provide the configuration settings for formatting/parsing. */\n +\t_getFormatConfig: function(inst) {\n +\t\tvar shortYearCutoff = this._get(inst, \'shortYearCutoff\');\n +\t\tshortYearCutoff = (typeof shortYearCutoff != \'string\' ? shortYearCutoff :\n +\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n +\t\treturn {shortYearCutoff: shortYearCutoff,\n +\t\t\tdayNamesShort: this._get(inst, \'dayNamesShort\'), dayNames: this._get(inst, \'dayNames\'),\n +\t\t\tmonthNamesShort: this._get(inst, \'monthNamesShort\'), monthNames: this._get(inst, \'monthNames\')};\n +\t},\n +\n +\t/* Format the given date for display. */\n +\t_formatDate: function(inst, day, month, year) {\n +\t\tif (!day) {\n +\t\t\tinst.currentDay = inst.selectedDay;\n +\t\t\tinst.currentMonth = inst.selectedMonth;\n +\t\t\tinst.currentYear = inst.selectedYear;\n +\t\t}\n +\t\tvar date = (day ? (typeof day == \'object\' ? day :\n +\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n +\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n +\t\treturn this.formatDate(this._get(inst, \'dateFormat\'), date, this._getFormatConfig(inst));\n +\t}\n +});\n +\n +/*\n + * Bind hover events for datepicker elements.\n + * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n + */\n +function bindHover(dpDiv) {\n +\tvar selector = \'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\';\n +\treturn dpDiv.delegate(selector, \'mouseout\', function() {\n +\t\t\t$(this).removeClass(\'ui-state-hover\');\n +\t\t\tif (this.className.indexOf(\'ui-datepicker-prev\') != -1) $(this).removeClass(\'ui-datepicker-prev-hover\');\n +\t\t\tif (this.className.indexOf(\'ui-datepicker-next\') != -1) $(this).removeClass(\'ui-datepicker-next-hover\');\n +\t\t})\n +\t\t.delegate(selector, \'mouseover\', function(){\n +\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n +\t\t\t\t$(this).parents(\'.ui-datepicker-calendar\').find(\'a\').removeClass(\'ui-state-hover\');\n +\t\t\t\t$(this).addClass(\'ui-state-hover\');\n +\t\t\t\tif (this.className.indexOf(\'ui-datepicker-prev\') != -1) $(this).addClass(\'ui-datepicker-prev-hover\');\n +\t\t\t\tif (this.className.indexOf(\'ui-datepicker-next\') != -1) $(this).addClass(\'ui-datepicker-next-hover\');\n +\t\t\t}\n +\t\t});\n +}\n +\n +/* jQuery extend now ignores nulls! */\n +function extendRemove(target, props) {\n +\t$.extend(target, props);\n +\tfor (var name in props)\n +\t\tif (props[name] == null || props[name] == undefined)\n +\t\t\ttarget[name] = props[name];\n +\treturn target;\n +};\n +\n +/* Invoke the datepicker functionality.\n + @param options string - a command, optionally followed by additional parameters or\n +\t Object - settings for attaching new datepicker functionality\n + @return jQuery object */\n +$.fn.datepicker = function(options){\n +\n +\t/* Verify an empty collection wasn\'t passed - Fixes #6976 */\n +\tif ( !this.length ) {\n +\t\treturn this;\n +\t}\n +\n +\t/* Initialise the date picker. */\n +\tif (!$.datepicker.initialized) {\n +\t\t$(document).mousedown($.datepicker._checkExternalClick).\n +\t\t\tfind(document.body).append($.datepicker.dpDiv);\n +\t\t$.datepicker.initialized = true;\n +\t}\n +\n +\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n +\tif (typeof options == \'string\' && (options == \'isDisabled\' || options == \'getDate\' || options == \'widget\'))\n +\t\treturn $.datepicker[\'_\' + options + \'Datepicker\'].\n +\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n +\tif (options == \'option\' && arguments.length == 2 && typeof arguments[1] == \'string\')\n +\t\treturn $.datepicker[\'_\' + options + \'Datepicker\'].\n +\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n +\treturn this.each(function() {\n +\t\ttypeof options == \'string\' ?\n +\t\t\t$.datepicker[\'_\' + options + \'Datepicker\'].\n +\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n +\t\t\t$.datepicker._attachDatepicker(this, options);\n +\t});\n +};\n +\n +$.datepicker = new Datepicker(); // singleton instance\n +$.datepicker.initialized = false;\n +$.datepicker.uuid = new Date().getTime();\n +$.datepicker.version = "1.9.2";\n +\n +// Workaround for #4055\n +// Add another global to avoid noConflict issues with inline event handlers\n +window[\'DP_jQuery_\' + dpuuid] = $;\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ",\n +\tsizeRelatedOptions = {\n +\t\tbuttons: true,\n +\t\theight: true,\n +\t\tmaxHeight: true,\n +\t\tmaxWidth: true,\n +\t\tminHeight: true,\n +\t\tminWidth: true,\n +\t\twidth: true\n +\t},\n +\tresizableRelatedOptions = {\n +\t\tmaxHeight: true,\n +\t\tmaxWidth: true,\n +\t\tminHeight: true,\n +\t\tminWidth: true\n +\t};\n +\n +$.widget("ui.dialog", {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\tautoOpen: true,\n +\t\tbuttons: {},\n +\t\tcloseOnEscape: true,\n +\t\tcloseText: "close",\n +\t\tdialogClass: "",\n +\t\tdraggable: true,\n +\t\thide: null,\n +\t\theight: "auto",\n +\t\tmaxHeight: false,\n +\t\tmaxWidth: false,\n +\t\tminHeight: 150,\n +\t\tminWidth: 150,\n +\t\tmodal: false,\n +\t\tposition: {\n +\t\t\tmy: "center",\n +\t\t\tat: "center",\n +\t\t\tof: window,\n +\t\t\tcollision: "fit",\n +\t\t\t// ensure that the titlebar is never outside the document\n +\t\t\tusing: function( pos ) {\n +\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n +\t\t\t\tif ( topOffset < 0 ) {\n +\t\t\t\t\t$( this ).css( "top", pos.top - topOffset );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\t\tresizable: true,\n +\t\tshow: null,\n +\t\tstack: true,\n +\t\ttitle: "",\n +\t\twidth: 300,\n +\t\tzIndex: 1000\n +\t},\n +\n +\t_create: function() {\n +\t\tthis.originalTitle = this.element.attr( "title" );\n +\t\t// #5742 - .attr() might return a DOMElement\n +\t\tif ( typeof this.originalTitle !== "string" ) {\n +\t\t\tthis.originalTitle = "";\n +\t\t}\n +\t\tthis.oldPosition = {\n +\t\t\tparent: this.element.parent(),\n +\t\t\tindex: this.element.parent().children().index( this.element )\n +\t\t};\n +\t\tthis.options.title = this.options.title || this.originalTitle;\n +\t\tvar that = this,\n +\t\t\toptions = this.options,\n +\n +\t\t\ttitle = options.title || " ",\n +\t\t\tuiDialog,\n +\t\t\tuiDialogTitlebar,\n +\t\t\tuiDialogTitlebarClose,\n +\t\t\tuiDialogTitle,\n +\t\t\tuiDialogButtonPane;\n +\n +\t\t\tuiDialog = ( this.uiDialog = $( "<div>" ) )\n +\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n +\t\t\t\t.css({\n +\t\t\t\t\tdisplay: "none",\n +\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n +\t\t\t\t\tzIndex: options.zIndex\n +\t\t\t\t})\n +\t\t\t\t// setting tabIndex makes the div focusable\n +\t\t\t\t.attr( "tabIndex", -1)\n +\t\t\t\t.keydown(function( event ) {\n +\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n +\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n +\t\t\t\t\t\tthat.close( event );\n +\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t}\n +\t\t\t\t})\n +\t\t\t\t.mousedown(function( event ) {\n +\t\t\t\t\tthat.moveToTop( false, event );\n +\t\t\t\t})\n +\t\t\t\t.appendTo( "body" );\n +\n +\t\t\tthis.element\n +\t\t\t\t.show()\n +\t\t\t\t.removeAttr( "title" )\n +\t\t\t\t.addClass( "ui-dialog-content ui-widget-content" )\n +\t\t\t\t.appendTo( uiDialog );\n +\n +\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( "<div>" ) )\n +\t\t\t\t.addClass( "ui-dialog-titlebar ui-widget-header " +\n +\t\t\t\t\t"ui-corner-all ui-helper-clearfix" )\n +\t\t\t\t.bind( "mousedown", function() {\n +\t\t\t\t\t// Dialog isn\'t getting focus when dragging (#8063)\n +\t\t\t\t\tuiDialog.focus();\n +\t\t\t\t})\n +\t\t\t\t.prependTo( uiDialog );\n +\n +\t\t\tuiDialogTitlebarClose = $( "<a href=\'#\'></a>" )\n +\t\t\t\t.addClass( "ui-dialog-titlebar-close ui-corner-all" )\n +\t\t\t\t.attr( "role", "button" )\n +\t\t\t\t.click(function( event ) {\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\tthat.close( event );\n +\t\t\t\t})\n +\t\t\t\t.appendTo( uiDialogTitlebar );\n +\n +\t\t\t( this.uiDialogTitlebarCloseText = $( "<span>" ) )\n +\t\t\t\t.addClass( "ui-icon ui-icon-closethick" )\n +\t\t\t\t.text( options.closeText )\n +\t\t\t\t.appendTo( uiDialogTitlebarClose );\n +\n +\t\t\tuiDialogTitle = $( "<span>" )\n +\t\t\t\t.uniqueId()\n +\t\t\t\t.addClass( "ui-dialog-title" )\n +\t\t\t\t.html( title )\n +\t\t\t\t.prependTo( uiDialogTitlebar );\n +\n +\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( "<div>" ) )\n +\t\t\t\t.addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" );\n +\n +\t\t\t( this.uiButtonSet = $( "<div>" ) )\n +\t\t\t\t.addClass( "ui-dialog-buttonset" )\n +\t\t\t\t.appendTo( uiDialogButtonPane );\n +\n +\t\tuiDialog.attr({\n +\t\t\trole: "dialog",\n +\t\t\t"aria-labelledby": uiDialogTitle.attr( "id" )\n +\t\t});\n +\n +\t\tuiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection();\n +\t\tthis._hoverable( uiDialogTitlebarClose );\n +\t\tthis._focusable( uiDialogTitlebarClose );\n +\n +\t\tif ( options.draggable && $.fn.draggable ) {\n +\t\t\tthis._makeDraggable();\n +\t\t}\n +\t\tif ( options.resizable && $.fn.resizable ) {\n +\t\t\tthis._makeResizable();\n +\t\t}\n +\n +\t\tthis._createButtons( options.buttons );\n +\t\tthis._isOpen = false;\n +\n +\t\tif ( $.fn.bgiframe ) {\n +\t\t\tuiDialog.bgiframe();\n +\t\t}\n +\n +\t\t// prevent tabbing out of modal dialogs\n +\t\tthis._on( uiDialog, { keydown: function( event ) {\n +\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tvar tabbables = $( ":tabbable", uiDialog ),\n +\t\t\t\tfirst = tabbables.filter( ":first" ),\n +\t\t\t\tlast = tabbables.filter( ":last" );\n +\n +\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n +\t\t\t\tfirst.focus( 1 );\n +\t\t\t\treturn false;\n +\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n +\t\t\t\tlast.focus( 1 );\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t}});\n +\t},\n +\n +\t_init: function() {\n +\t\tif ( this.options.autoOpen ) {\n +\t\t\tthis.open();\n +\t\t}\n +\t},\n +\n +\t_destroy: function() {\n +\t\tvar next,\n +\t\t\toldPosition = this.oldPosition;\n +\n +\t\tif ( this.overlay ) {\n +\t\t\tthis.overlay.destroy();\n +\t\t}\n +\t\tthis.uiDialog.hide();\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-dialog-content ui-widget-content" )\n +\t\t\t.hide()\n +\t\t\t.appendTo( "body" );\n +\t\tthis.uiDialog.remove();\n +\n +\t\tif ( this.originalTitle ) {\n +\t\t\tthis.element.attr( "title", this.originalTitle );\n +\t\t}\n +\n +\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n +\t\t// Don\'t try to place the dialog next to itself (#8613)\n +\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n +\t\t\tnext.before( this.element );\n +\t\t} else {\n +\t\t\toldPosition.parent.append( this.element );\n +\t\t}\n +\t},\n +\n +\twidget: function() {\n +\t\treturn this.uiDialog;\n +\t},\n +\n +\tclose: function( event ) {\n +\t\tvar that = this,\n +\t\t\tmaxZ, thisZ;\n +\n +\t\tif ( !this._isOpen ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( false === this._trigger( "beforeClose", event ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tthis._isOpen = false;\n +\n +\t\tif ( this.overlay ) {\n +\t\t\tthis.overlay.destroy();\n +\t\t}\n +\n +\t\tif ( this.options.hide ) {\n +\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n +\t\t\t\tthat._trigger( "close", event );\n +\t\t\t});\n +\t\t} else {\n +\t\t\tthis.uiDialog.hide();\n +\t\t\tthis._trigger( "close", event );\n +\t\t}\n +\n +\t\t$.ui.dialog.overlay.resize();\n +\n +\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n +\t\tif ( this.options.modal ) {\n +\t\t\tmaxZ = 0;\n +\t\t\t$( ".ui-dialog" ).each(function() {\n +\t\t\t\tif ( this !== that.uiDialog[0] ) {\n +\t\t\t\t\tthisZ = $( this ).css( "z-index" );\n +\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n +\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\t$.ui.dialog.maxZ = maxZ;\n +\t\t}\n +\n +\t\treturn this;\n +\t},\n +\n +\tisOpen: function() {\n +\t\treturn this._isOpen;\n +\t},\n +\n +\t// the force parameter allows us to move modal dialogs to their correct\n +\t// position on open\n +\tmoveToTop: function( force, event ) {\n +\t\tvar options = this.options,\n +\t\t\tsaveScroll;\n +\n +\t\tif ( ( options.modal && !force ) ||\n +\t\t\t\t( !options.stack && !options.modal ) ) {\n +\t\t\treturn this._trigger( "focus", event );\n +\t\t}\n +\n +\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n +\t\t\t$.ui.dialog.maxZ = options.zIndex;\n +\t\t}\n +\t\tif ( this.overlay ) {\n +\t\t\t$.ui.dialog.maxZ += 1;\n +\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n +\t\t\tthis.overlay.$el.css( "z-index", $.ui.dialog.overlay.maxZ );\n +\t\t}\n +\n +\t\t// Save and then restore scroll\n +\t\t// Opera 9.5+ resets when parent z-index is changed.\n +\t\t// http://bugs.jqueryui.com/ticket/3193\n +\t\tsaveScroll = {\n +\t\t\tscrollTop: this.element.scrollTop(),\n +\t\t\tscrollLeft: this.element.scrollLeft()\n +\t\t};\n +\t\t$.ui.dialog.maxZ += 1;\n +\t\tthis.uiDialog.css( "z-index", $.ui.dialog.maxZ );\n +\t\tthis.element.attr( saveScroll );\n +\t\tthis._trigger( "focus", event );\n +\n +\t\treturn this;\n +\t},\n +\n +\topen: function() {\n +\t\tif ( this._isOpen ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tvar hasFocus,\n +\t\t\toptions = this.options,\n +\t\t\tuiDialog = this.uiDialog;\n +\n +\t\tthis._size();\n +\t\tthis._position( options.position );\n +\t\tuiDialog.show( options.show );\n +\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n +\t\tthis.moveToTop( true );\n +\n +\t\t// set focus to the first tabbable element in the content area or the first button\n +\t\t// if there are no tabbable elements, set focus on the dialog itself\n +\t\thasFocus = this.element.find( ":tabbable" );\n +\t\tif ( !hasFocus.length ) {\n +\t\t\thasFocus = this.uiDialogButtonPane.find( ":tabbable" );\n +\t\t\tif ( !hasFocus.length ) {\n +\t\t\t\thasFocus = uiDialog;\n +\t\t\t}\n +\t\t}\n +\t\thasFocus.eq( 0 ).focus();\n +\n +\t\tthis._isOpen = true;\n +\t\tthis._trigger( "open" );\n +\n +\t\treturn this;\n +\t},\n +\n +\t_createButtons: function( buttons ) {\n +\t\tvar that = this,\n +\t\t\thasButtons = false;\n +\n +\t\t// if we already have a button pane, remove it\n +\t\tthis.uiDialogButtonPane.remove();\n +\t\tthis.uiButtonSet.empty();\n +\n +\t\tif ( typeof buttons === "object" && buttons !== null ) {\n +\t\t\t$.each( buttons, function() {\n +\t\t\t\treturn !(hasButtons = true);\n +\t\t\t});\n +\t\t}\n +\t\tif ( hasButtons ) {\n +\t\t\t$.each( buttons, function( name, props ) {\n +\t\t\t\tvar button, click;\n +\t\t\t\tprops = $.isFunction( props ) ?\n +\t\t\t\t\t{ click: props, text: name } :\n +\t\t\t\t\tprops;\n +\t\t\t\t// Default to a non-submitting button\n +\t\t\t\tprops = $.extend( { type: "button" }, props );\n +\t\t\t\t// Change the context for the click callback to be the main element\n +\t\t\t\tclick = props.click;\n +\t\t\t\tprops.click = function() {\n +\t\t\t\t\tclick.apply( that.element[0], arguments );\n +\t\t\t\t};\n +\t\t\t\tbutton = $( "<button></button>", props )\n +\t\t\t\t\t.appendTo( that.uiButtonSet );\n +\t\t\t\tif ( $.fn.button ) {\n +\t\t\t\t\tbutton.button();\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\tthis.uiDialog.addClass( "ui-dialog-buttons" );\n +\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n +\t\t} else {\n +\t\t\tthis.uiDialog.removeClass( "ui-dialog-buttons" );\n +\t\t}\n +\t},\n +\n +\t_makeDraggable: function() {\n +\t\tvar that = this,\n +\t\t\toptions = this.options;\n +\n +\t\tfunction filteredUi( ui ) {\n +\t\t\treturn {\n +\t\t\t\tposition: ui.position,\n +\t\t\t\toffset: ui.offset\n +\t\t\t};\n +\t\t}\n +\n +\t\tthis.uiDialog.draggable({\n +\t\t\tcancel: ".ui-dialog-content, .ui-dialog-titlebar-close",\n +\t\t\thandle: ".ui-dialog-titlebar",\n +\t\t\tcontainment: "document",\n +\t\t\tstart: function( event, ui ) {\n +\t\t\t\t$( this )\n +\t\t\t\t\t.addClass( "ui-dialog-dragging" );\n +\t\t\t\tthat._trigger( "dragStart", event, filteredUi( ui ) );\n +\t\t\t},\n +\t\t\tdrag: function( event, ui ) {\n +\t\t\t\tthat._trigger( "drag", event, filteredUi( ui ) );\n +\t\t\t},\n +\t\t\tstop: function( event, ui ) {\n +\t\t\t\toptions.position = [\n +\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n +\t\t\t\t\tui.position.top - that.document.scrollTop()\n +\t\t\t\t];\n +\t\t\t\t$( this )\n +\t\t\t\t\t.removeClass( "ui-dialog-dragging" );\n +\t\t\t\tthat._trigger( "dragStop", event, filteredUi( ui ) );\n +\t\t\t\t$.ui.dialog.overlay.resize();\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_makeResizable: function( handles ) {\n +\t\thandles = (handles === undefined ? this.options.resizable : handles);\n +\t\tvar that = this,\n +\t\t\toptions = this.options,\n +\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n +\t\t\t// but dialogs have to use absolute or fixed positioning\n +\t\t\tposition = this.uiDialog.css( "position" ),\n +\t\t\tresizeHandles = typeof handles === \'string\' ?\n +\t\t\t\thandles\t:\n +\t\t\t\t"n,e,s,w,se,sw,ne,nw";\n +\n +\t\tfunction filteredUi( ui ) {\n +\t\t\treturn {\n +\t\t\t\toriginalPosition: ui.originalPosition,\n +\t\t\t\toriginalSize: ui.originalSize,\n +\t\t\t\tposition: ui.position,\n +\t\t\t\tsize: ui.size\n +\t\t\t};\n +\t\t}\n +\n +\t\tthis.uiDialog.resizable({\n +\t\t\tcancel: ".ui-dialog-content",\n +\t\t\tcontainment: "document",\n +\t\t\talsoResize: this.element,\n +\t\t\tmaxWidth: options.maxWidth,\n +\t\t\tmaxHeight: options.maxHeight,\n +\t\t\tminWidth: options.minWidth,\n +\t\t\tminHeight: this._minHeight(),\n +\t\t\thandles: resizeHandles,\n +\t\t\tstart: function( event, ui ) {\n +\t\t\t\t$( this ).addClass( "ui-dialog-resizing" );\n +\t\t\t\tthat._trigger( "resizeStart", event, filteredUi( ui ) );\n +\t\t\t},\n +\t\t\tresize: function( event, ui ) {\n +\t\t\t\tthat._trigger( "resize", event, filteredUi( ui ) );\n +\t\t\t},\n +\t\t\tstop: function( event, ui ) {\n +\t\t\t\t$( this ).removeClass( "ui-dialog-resizing" );\n +\t\t\t\toptions.height = $( this ).height();\n +\t\t\t\toptions.width = $( this ).width();\n +\t\t\t\tthat._trigger( "resizeStop", event, filteredUi( ui ) );\n +\t\t\t\t$.ui.dialog.overlay.resize();\n +\t\t\t}\n +\t\t})\n +\t\t.css( "position", position )\n +\t\t.find( ".ui-resizable-se" )\n +\t\t\t.addClass( "ui-icon ui-icon-grip-diagonal-se" );\n +\t},\n +\n +\t_minHeight: function() {\n +\t\tvar options = this.options;\n +\n +\t\tif ( options.height === "auto" ) {\n +\t\t\treturn options.minHeight;\n +\t\t} else {\n +\t\t\treturn Math.min( options.minHeight, options.height );\n +\t\t}\n +\t},\n +\n +\t_position: function( position ) {\n +\t\tvar myAt = [],\n +\t\t\toffset = [ 0, 0 ],\n +\t\t\tisVisible;\n +\n +\t\tif ( position ) {\n +\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n +\t//\t\tif (typeof position == \'string\' || $.isArray(position)) {\n +\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(\' \');\n +\n +\t\t\tif ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {\n +\t\t\t\tmyAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ];\n +\t\t\t\tif ( myAt.length === 1 ) {\n +\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n +\t\t\t\t}\n +\n +\t\t\t\t$.each( [ "left", "top" ], function( i, offsetPosition ) {\n +\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n +\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n +\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\n +\t\t\t\tposition = {\n +\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +\n +\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),\n +\t\t\t\t\tat: myAt.join( " " )\n +\t\t\t\t};\n +\t\t\t}\n +\n +\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n +\t\t} else {\n +\t\t\tposition = $.ui.dialog.prototype.options.position;\n +\t\t}\n +\n +\t\t// need to show the dialog to get the actual offset in the position plugin\n +\t\tisVisible = this.uiDialog.is( ":visible" );\n +\t\tif ( !isVisible ) {\n +\t\t\tthis.uiDialog.show();\n +\t\t}\n +\t\tthis.uiDialog.position( position );\n +\t\tif ( !isVisible ) {\n +\t\t\tthis.uiDialog.hide();\n +\t\t}\n +\t},\n +\n +\t_setOptions: function( options ) {\n +\t\tvar that = this,\n +\t\t\tresizableOptions = {},\n +\t\t\tresize = false;\n +\n +\t\t$.each( options, function( key, value ) {\n +\t\t\tthat._setOption( key, value );\n +\n +\t\t\tif ( key in sizeRelatedOptions ) {\n +\t\t\t\tresize = true;\n +\t\t\t}\n +\t\t\tif ( key in resizableRelatedOptions ) {\n +\t\t\t\tresizableOptions[ key ] = value;\n +\t\t\t}\n +\t\t});\n +\n +\t\tif ( resize ) {\n +\t\t\tthis._size();\n +\t\t}\n +\t\tif ( this.uiDialog.is( ":data(resizable)" ) ) {\n +\t\t\tthis.uiDialog.resizable( "option", resizableOptions );\n +\t\t}\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tvar isDraggable, isResizable,\n +\t\t\tuiDialog = this.uiDialog;\n +\n +\t\tswitch ( key ) {\n +\t\t\tcase "buttons":\n +\t\t\t\tthis._createButtons( value );\n +\t\t\t\tbreak;\n +\t\t\tcase "closeText":\n +\t\t\t\t// ensure that we always pass a string\n +\t\t\t\tthis.uiDialogTitlebarCloseText.text( "" + value );\n +\t\t\t\tbreak;\n +\t\t\tcase "dialogClass":\n +\t\t\t\tuiDialog\n +\t\t\t\t\t.removeClass( this.options.dialogClass )\n +\t\t\t\t\t.addClass( uiDialogClasses + value );\n +\t\t\t\tbreak;\n +\t\t\tcase "disabled":\n +\t\t\t\tif ( value ) {\n +\t\t\t\t\tuiDialog.addClass( "ui-dialog-disabled" );\n +\t\t\t\t} else {\n +\t\t\t\t\tuiDialog.removeClass( "ui-dialog-disabled" );\n +\t\t\t\t}\n +\t\t\t\tbreak;\n +\t\t\tcase "draggable":\n +\t\t\t\tisDraggable = uiDialog.is( ":data(draggable)" );\n +\t\t\t\tif ( isDraggable && !value ) {\n +\t\t\t\t\tuiDialog.draggable( "destroy" );\n +\t\t\t\t}\n +\n +\t\t\t\tif ( !isDraggable && value ) {\n +\t\t\t\t\tthis._makeDraggable();\n +\t\t\t\t}\n +\t\t\t\tbreak;\n +\t\t\tcase "position":\n +\t\t\t\tthis._position( value );\n +\t\t\t\tbreak;\n +\t\t\tcase "resizable":\n +\t\t\t\t// currently resizable, becoming non-resizable\n +\t\t\t\tisResizable = uiDialog.is( ":data(resizable)" );\n +\t\t\t\tif ( isResizable && !value ) {\n +\t\t\t\t\tuiDialog.resizable( "destroy" );\n +\t\t\t\t}\n +\n +\t\t\t\t// currently resizable, changing handles\n +\t\t\t\tif ( isResizable && typeof value === "string" ) {\n +\t\t\t\t\tuiDialog.resizable( "option", "handles", value );\n +\t\t\t\t}\n +\n +\t\t\t\t// currently non-resizable, becoming resizable\n +\t\t\t\tif ( !isResizable && value !== false ) {\n +\t\t\t\t\tthis._makeResizable( value );\n +\t\t\t\t}\n +\t\t\t\tbreak;\n +\t\t\tcase "title":\n +\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n +\t\t\t\t$( ".ui-dialog-title", this.uiDialogTitlebar )\n +\t\t\t\t\t.html( "" + ( value || " " ) );\n +\t\t\t\tbreak;\n +\t\t}\n +\n +\t\tthis._super( key, value );\n +\t},\n +\n +\t_size: function() {\n +\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n +\t\t * divs will both have width and height set, so we need to reset them\n +\t\t */\n +\t\tvar nonContentHeight, minContentHeight, autoHeight,\n +\t\t\toptions = this.options,\n +\t\t\tisVisible = this.uiDialog.is( ":visible" );\n +\n +\t\t// reset content sizing\n +\t\tthis.element.show().css({\n +\t\t\twidth: "auto",\n +\t\t\tminHeight: 0,\n +\t\t\theight: 0\n +\t\t});\n +\n +\t\tif ( options.minWidth > options.width ) {\n +\t\t\toptions.width = options.minWidth;\n +\t\t}\n +\n +\t\t// reset wrapper sizing\n +\t\t// determine the height of all the non-content elements\n +\t\tnonContentHeight = this.uiDialog.css({\n +\t\t\t\theight: "auto",\n +\t\t\t\twidth: options.width\n +\t\t\t})\n +\t\t\t.outerHeight();\n +\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n +\n +\t\tif ( options.height === "auto" ) {\n +\t\t\t// only needed for IE6 support\n +\t\t\tif ( $.support.minHeight ) {\n +\t\t\t\tthis.element.css({\n +\t\t\t\t\tminHeight: minContentHeight,\n +\t\t\t\t\theight: "auto"\n +\t\t\t\t});\n +\t\t\t} else {\n +\t\t\t\tthis.uiDialog.show();\n +\t\t\t\tautoHeight = this.element.css( "height", "auto" ).height();\n +\t\t\t\tif ( !isVisible ) {\n +\t\t\t\t\tthis.uiDialog.hide();\n +\t\t\t\t}\n +\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n +\t\t\t}\n +\t\t} else {\n +\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n +\t\t}\n +\n +\t\tif (this.uiDialog.is( ":data(resizable)" ) ) {\n +\t\t\tthis.uiDialog.resizable( "option", "minHeight", this._minHeight() );\n +\t\t}\n +\t}\n +});\n +\n +$.extend($.ui.dialog, {\n +\tuuid: 0,\n +\tmaxZ: 0,\n +\n +\tgetTitleId: function($el) {\n +\t\tvar id = $el.attr( "id" );\n +\t\tif ( !id ) {\n +\t\t\tthis.uuid += 1;\n +\t\t\tid = this.uuid;\n +\t\t}\n +\t\treturn "ui-dialog-title-" + id;\n +\t},\n +\n +\toverlay: function( dialog ) {\n +\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n +\t}\n +});\n +\n +$.extend( $.ui.dialog.overlay, {\n +\tinstances: [],\n +\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n +\toldInstances: [],\n +\tmaxZ: 0,\n +\tevents: $.map(\n +\t\t"focus,mousedown,mouseup,keydown,keypress,click".split( "," ),\n +\t\tfunction( event ) {\n +\t\t\treturn event + ".dialog-overlay";\n +\t\t}\n +\t).join( " " ),\n +\tcreate: function( dialog ) {\n +\t\tif ( this.instances.length === 0 ) {\n +\t\t\t// prevent use of anchors and inputs\n +\t\t\t// we use a setTimeout in case the overlay is created from an\n +\t\t\t// event that we\'re going to be cancelling (see #2804)\n +\t\t\tsetTimeout(function() {\n +\t\t\t\t// handle $(el).dialog().dialog(\'close\') (see #4065)\n +\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n +\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n +\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n +\t\t\t\t\t\t// we cannot return true when we don\'t want to cancel the event (#3523)\n +\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n +\t\t\t\t\t\t\treturn false;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t}, 1 );\n +\n +\t\t\t// handle window resize\n +\t\t\t$( window ).bind( "resize.dialog-overlay", $.ui.dialog.overlay.resize );\n +\t\t}\n +\n +\t\tvar $el = ( this.oldInstances.pop() || $( "<div>" ).addClass( "ui-widget-overlay" ) );\n +\n +\t\t// allow closing by pressing the escape key\n +\t\t$( document ).bind( "keydown.dialog-overlay", function( event ) {\n +\t\t\tvar instances = $.ui.dialog.overlay.instances;\n +\t\t\t// only react to the event if we\'re the top overlay\n +\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n +\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n +\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n +\n +\t\t\t\tdialog.close( event );\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t});\n +\n +\t\t$el.appendTo( document.body ).css({\n +\t\t\twidth: this.width(),\n +\t\t\theight: this.height()\n +\t\t});\n +\n +\t\tif ( $.fn.bgiframe ) {\n +\t\t\t$el.bgiframe();\n +\t\t}\n +\n +\t\tthis.instances.push( $el );\n +\t\treturn $el;\n +\t},\n +\n +\tdestroy: function( $el ) {\n +\t\tvar indexOf = $.inArray( $el, this.instances ),\n +\t\t\tmaxZ = 0;\n +\n +\t\tif ( indexOf !== -1 ) {\n +\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n +\t\t}\n +\n +\t\tif ( this.instances.length === 0 ) {\n +\t\t\t$( [ document, window ] ).unbind( ".dialog-overlay" );\n +\t\t}\n +\n +\t\t$el.height( 0 ).width( 0 ).remove();\n +\n +\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n +\t\t$.each( this.instances, function() {\n +\t\t\tmaxZ = Math.max( maxZ, this.css( "z-index" ) );\n +\t\t});\n +\t\tthis.maxZ = maxZ;\n +\t},\n +\n +\theight: function() {\n +\t\tvar scrollHeight,\n +\t\t\toffsetHeight;\n +\t\t// handle IE\n +\t\tif ( $.ui.ie ) {\n +\t\t\tscrollHeight = Math.max(\n +\t\t\t\tdocument.documentElement.scrollHeight,\n +\t\t\t\tdocument.body.scrollHeight\n +\t\t\t);\n +\t\t\toffsetHeight = Math.max(\n +\t\t\t\tdocument.documentElement.offsetHeight,\n +\t\t\t\tdocument.body.offsetHeight\n +\t\t\t);\n +\n +\t\t\tif ( scrollHeight < offsetHeight ) {\n +\t\t\t\treturn $( window ).height() + "px";\n +\t\t\t} else {\n +\t\t\t\treturn scrollHeight + "px";\n +\t\t\t}\n +\t\t// handle "good" browsers\n +\t\t} else {\n +\t\t\treturn $( document ).height() + "px";\n +\t\t}\n +\t},\n +\n +\twidth: function() {\n +\t\tvar scrollWidth,\n +\t\t\toffsetWidth;\n +\t\t// handle IE\n +\t\tif ( $.ui.ie ) {\n +\t\t\tscrollWidth = Math.max(\n +\t\t\t\tdocument.documentElement.scrollWidth,\n +\t\t\t\tdocument.body.scrollWidth\n +\t\t\t);\n +\t\t\toffsetWidth = Math.max(\n +\t\t\t\tdocument.documentElement.offsetWidth,\n +\t\t\t\tdocument.body.offsetWidth\n +\t\t\t);\n +\n +\t\t\tif ( scrollWidth < offsetWidth ) {\n +\t\t\t\treturn $( window ).width() + "px";\n +\t\t\t} else {\n +\t\t\t\treturn scrollWidth + "px";\n +\t\t\t}\n +\t\t// handle "good" browsers\n +\t\t} else {\n +\t\t\treturn $( document ).width() + "px";\n +\t\t}\n +\t},\n +\n +\tresize: function() {\n +\t\t/* If the dialog is draggable and the user drags it past the\n +\t\t * right edge of the window, the document becomes wider so we\n +\t\t * need to stretch the overlay. If the user then drags the\n +\t\t * dialog back to the left, the document will become narrower,\n +\t\t * so we need to shrink the overlay to the appropriate size.\n +\t\t * This is handled by shrinking the overlay before setting it\n +\t\t * to the full document size.\n +\t\t */\n +\t\tvar $overlays = $( [] );\n +\t\t$.each( $.ui.dialog.overlay.instances, function() {\n +\t\t\t$overlays = $overlays.add( this );\n +\t\t});\n +\n +\t\t$overlays.css({\n +\t\t\twidth: 0,\n +\t\t\theight: 0\n +\t\t}).css({\n +\t\t\twidth: $.ui.dialog.overlay.width(),\n +\t\t\theight: $.ui.dialog.overlay.height()\n +\t\t});\n +\t}\n +});\n +\n +$.extend( $.ui.dialog.overlay.prototype, {\n +\tdestroy: function() {\n +\t\t$.ui.dialog.overlay.destroy( this.$el );\n +\t}\n +});\n +\n +}( jQuery ) );\n +(function( $, undefined ) {\n +\n +var mouseHandled = false;\n +\n +$.widget( "ui.menu", {\n +\tversion: "1.9.2",\n +\tdefaultElement: "<ul>",\n +\tdelay: 300,\n +\toptions: {\n +\t\ticons: {\n +\t\t\tsubmenu: "ui-icon-carat-1-e"\n +\t\t},\n +\t\tmenus: "ul",\n +\t\tposition: {\n +\t\t\tmy: "left top",\n +\t\t\tat: "right top"\n +\t\t},\n +\t\trole: "menu",\n +\n +\t\t// callbacks\n +\t\tblur: null,\n +\t\tfocus: null,\n +\t\tselect: null\n +\t},\n +\n +\t_create: function() {\n +\t\tthis.activeMenu = this.element;\n +\t\tthis.element\n +\t\t\t.uniqueId()\n +\t\t\t.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )\n +\t\t\t.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )\n +\t\t\t.attr({\n +\t\t\t\trole: this.options.role,\n +\t\t\t\ttabIndex: 0\n +\t\t\t})\n +\t\t\t// need to catch all clicks on disabled menu\n +\t\t\t// not possible through _on\n +\t\t\t.bind( "click" + this.eventNamespace, $.proxy(function( event ) {\n +\t\t\t\tif ( this.options.disabled ) {\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t}\n +\t\t\t}, this ));\n +\n +\t\tif ( this.options.disabled ) {\n +\t\t\tthis.element\n +\t\t\t\t.addClass( "ui-state-disabled" )\n +\t\t\t\t.attr( "aria-disabled", "true" );\n +\t\t}\n +\n +\t\tthis._on({\n +\t\t\t// Prevent focus from sticking to links inside menu after clicking\n +\t\t\t// them (focus should always stay on UL during navigation).\n +\t\t\t"mousedown .ui-menu-item > a": function( event ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t},\n +\t\t\t"click .ui-state-disabled > a": function( event ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t},\n +\t\t\t"click .ui-menu-item:has(a)": function( event ) {\n +\t\t\t\tvar target = $( event.target ).closest( ".ui-menu-item" );\n +\t\t\t\tif ( !mouseHandled && target.not( ".ui-state-disabled" ).length ) {\n +\t\t\t\t\tmouseHandled = true;\n +\n +\t\t\t\t\tthis.select( event );\n +\t\t\t\t\t// Open submenu on click\n +\t\t\t\t\tif ( target.has( ".ui-menu" ).length ) {\n +\t\t\t\t\t\tthis.expand( event );\n +\t\t\t\t\t} else if ( !this.element.is( ":focus" ) ) {\n +\t\t\t\t\t\t// Redirect focus to the menu\n +\t\t\t\t\t\tthis.element.trigger( "focus", [ true ] );\n +\n +\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n +\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n +\t\t\t\t\t\tif ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {\n +\t\t\t\t\t\t\tclearTimeout( this.timer );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\t"mouseenter .ui-menu-item": function( event ) {\n +\t\t\t\tvar target = $( event.currentTarget );\n +\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n +\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n +\t\t\t\ttarget.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );\n +\t\t\t\tthis.focus( event, target );\n +\t\t\t},\n +\t\t\tmouseleave: "collapseAll",\n +\t\t\t"mouseleave .ui-menu": "collapseAll",\n +\t\t\tfocus: function( event, keepActiveItem ) {\n +\t\t\t\t// If there\'s already an active item, keep it active\n +\t\t\t\t// If not, activate the first item\n +\t\t\t\tvar item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );\n +\n +\t\t\t\tif ( !keepActiveItem ) {\n +\t\t\t\t\tthis.focus( event, item );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tblur: function( event ) {\n +\t\t\t\tthis._delay(function() {\n +\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n +\t\t\t\t\t\tthis.collapseAll( event );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t},\n +\t\t\tkeydown: "_keydown"\n +\t\t});\n +\n +\t\tthis.refresh();\n +\n +\t\t// Clicks outside of a menu collapse any open menus\n +\t\tthis._on( this.document, {\n +\t\t\tclick: function( event ) {\n +\t\t\t\tif ( !$( event.target ).closest( ".ui-menu" ).length ) {\n +\t\t\t\t\tthis.collapseAll( event );\n +\t\t\t\t}\n +\n +\t\t\t\t// Reset the mouseHandled flag\n +\t\t\t\tmouseHandled = false;\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_destroy: function() {\n +\t\t// Destroy (sub)menus\n +\t\tthis.element\n +\t\t\t.removeAttr( "aria-activedescendant" )\n +\t\t\t.find( ".ui-menu" ).andSelf()\n +\t\t\t\t.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )\n +\t\t\t\t.removeAttr( "role" )\n +\t\t\t\t.removeAttr( "tabIndex" )\n +\t\t\t\t.removeAttr( "aria-labelledby" )\n +\t\t\t\t.removeAttr( "aria-expanded" )\n +\t\t\t\t.removeAttr( "aria-hidden" )\n +\t\t\t\t.removeAttr( "aria-disabled" )\n +\t\t\t\t.removeUniqueId()\n +\t\t\t\t.show();\n +\n +\t\t// Destroy menu items\n +\t\tthis.element.find( ".ui-menu-item" )\n +\t\t\t.removeClass( "ui-menu-item" )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "aria-disabled" )\n +\t\t\t.children( "a" )\n +\t\t\t\t.removeUniqueId()\n +\t\t\t\t.removeClass( "ui-corner-all ui-state-hover" )\n +\t\t\t\t.removeAttr( "tabIndex" )\n +\t\t\t\t.removeAttr( "role" )\n +\t\t\t\t.removeAttr( "aria-haspopup" )\n +\t\t\t\t.children().each( function() {\n +\t\t\t\t\tvar elem = $( this );\n +\t\t\t\t\tif ( elem.data( "ui-menu-submenu-carat" ) ) {\n +\t\t\t\t\t\telem.remove();\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\n +\t\t// Destroy menu dividers\n +\t\tthis.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );\n +\t},\n +\n +\t_keydown: function( event ) {\n +\t\tvar match, prev, character, skip, regex,\n +\t\t\tpreventDefault = true;\n +\n +\t\tfunction escape( value ) {\n +\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, "\\\\$&" );\n +\t\t}\n +\n +\t\tswitch ( event.keyCode ) {\n +\t\tcase $.ui.keyCode.PAGE_UP:\n +\t\t\tthis.previousPage( event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.PAGE_DOWN:\n +\t\t\tthis.nextPage( event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.HOME:\n +\t\t\tthis._move( "first", "first", event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.END:\n +\t\t\tthis._move( "last", "last", event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.UP:\n +\t\t\tthis.previous( event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.DOWN:\n +\t\t\tthis.next( event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.LEFT:\n +\t\t\tthis.collapse( event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.RIGHT:\n +\t\t\tif ( this.active && !this.active.is( ".ui-state-disabled" ) ) {\n +\t\t\t\tthis.expand( event );\n +\t\t\t}\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.ENTER:\n +\t\tcase $.ui.keyCode.SPACE:\n +\t\t\tthis._activate( event );\n +\t\t\tbreak;\n +\t\tcase $.ui.keyCode.ESCAPE:\n +\t\t\tthis.collapse( event );\n +\t\t\tbreak;\n +\t\tdefault:\n +\t\t\tpreventDefault = false;\n +\t\t\tprev = this.previousFilter || "";\n +\t\t\tcharacter = String.fromCharCode( event.keyCode );\n +\t\t\tskip = false;\n +\n +\t\t\tclearTimeout( this.filterTimer );\n +\n +\t\t\tif ( character === prev ) {\n +\t\t\t\tskip = true;\n +\t\t\t} else {\n +\t\t\t\tcharacter = prev + character;\n +\t\t\t}\n +\n +\t\t\tregex = new RegExp( "^" + escape( character ), "i" );\n +\t\t\tmatch = this.activeMenu.children( ".ui-menu-item" ).filter(function() {\n +\t\t\t\treturn regex.test( $( this ).children( "a" ).text() );\n +\t\t\t});\n +\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n +\t\t\t\tthis.active.nextAll( ".ui-menu-item" ) :\n +\t\t\t\tmatch;\n +\n +\t\t\t// If no matches on the current filter, reset to the last character pressed\n +\t\t\t// to move down the menu to the first item that starts with that character\n +\t\t\tif ( !match.length ) {\n +\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n +\t\t\t\tregex = new RegExp( "^" + escape( character ), "i" );\n +\t\t\t\tmatch = this.activeMenu.children( ".ui-menu-item" ).filter(function() {\n +\t\t\t\t\treturn regex.test( $( this ).children( "a" ).text() );\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\tif ( match.length ) {\n +\t\t\t\tthis.focus( event, match );\n +\t\t\t\tif ( match.length > 1 ) {\n +\t\t\t\t\tthis.previousFilter = character;\n +\t\t\t\t\tthis.filterTimer = this._delay(function() {\n +\t\t\t\t\t\tdelete this.previousFilter;\n +\t\t\t\t\t}, 1000 );\n +\t\t\t\t} else {\n +\t\t\t\t\tdelete this.previousFilter;\n +\t\t\t\t}\n +\t\t\t} else {\n +\t\t\t\tdelete this.previousFilter;\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( preventDefault ) {\n +\t\t\tevent.preventDefault();\n +\t\t}\n +\t},\n +\n +\t_activate: function( event ) {\n +\t\tif ( !this.active.is( ".ui-state-disabled" ) ) {\n +\t\t\tif ( this.active.children( "a[aria-haspopup=\'true\']" ).length ) {\n +\t\t\t\tthis.expand( event );\n +\t\t\t} else {\n +\t\t\t\tthis.select( event );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\trefresh: function() {\n +\t\tvar menus,\n +\t\t\ticon = this.options.icons.submenu,\n +\t\t\tsubmenus = this.element.find( this.options.menus );\n +\n +\t\t// Initialize nested menus\n +\t\tsubmenus.filter( ":not(.ui-menu)" )\n +\t\t\t.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )\n +\t\t\t.hide()\n +\t\t\t.attr({\n +\t\t\t\trole: this.options.role,\n +\t\t\t\t"aria-hidden": "true",\n +\t\t\t\t"aria-expanded": "false"\n +\t\t\t})\n +\t\t\t.each(function() {\n +\t\t\t\tvar menu = $( this ),\n +\t\t\t\t\titem = menu.prev( "a" ),\n +\t\t\t\t\tsubmenuCarat = $( "<span>" )\n +\t\t\t\t\t\t.addClass( "ui-menu-icon ui-icon " + icon )\n +\t\t\t\t\t\t.data( "ui-menu-submenu-carat", true );\n +\n +\t\t\t\titem\n +\t\t\t\t\t.attr( "aria-haspopup", "true" )\n +\t\t\t\t\t.prepend( submenuCarat );\n +\t\t\t\tmenu.attr( "aria-labelledby", item.attr( "id" ) );\n +\t\t\t});\n +\n +\t\tmenus = submenus.add( this.element );\n +\n +\t\t// Don\'t refresh list items that are already adapted\n +\t\tmenus.children( ":not(.ui-menu-item):has(a)" )\n +\t\t\t.addClass( "ui-menu-item" )\n +\t\t\t.attr( "role", "presentation" )\n +\t\t\t.children( "a" )\n +\t\t\t\t.uniqueId()\n +\t\t\t\t.addClass( "ui-corner-all" )\n +\t\t\t\t.attr({\n +\t\t\t\t\ttabIndex: -1,\n +\t\t\t\t\trole: this._itemRole()\n +\t\t\t\t});\n +\n +\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n +\t\tmenus.children( ":not(.ui-menu-item)" ).each(function() {\n +\t\t\tvar item = $( this );\n +\t\t\t// hyphen, em dash, en dash\n +\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n +\t\t\t\titem.addClass( "ui-widget-content ui-menu-divider" );\n +\t\t\t}\n +\t\t});\n +\n +\t\t// Add aria-disabled attribute to any disabled menu item\n +\t\tmenus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );\n +\n +\t\t// If the active item has been removed, blur the menu\n +\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n +\t\t\tthis.blur();\n +\t\t}\n +\t},\n +\n +\t_itemRole: function() {\n +\t\treturn {\n +\t\t\tmenu: "menuitem",\n +\t\t\tlistbox: "option"\n +\t\t}[ this.options.role ];\n +\t},\n +\n +\tfocus: function( event, item ) {\n +\t\tvar nested, focused;\n +\t\tthis.blur( event, event && event.type === "focus" );\n +\n +\t\tthis._scrollIntoView( item );\n +\n +\t\tthis.active = item.first();\n +\t\tfocused = this.active.children( "a" ).addClass( "ui-state-focus" );\n +\t\t// Only update aria-activedescendant if there\'s a role\n +\t\t// otherwise we assume focus is managed elsewhere\n +\t\tif ( this.options.role ) {\n +\t\t\tthis.element.attr( "aria-activedescendant", focused.attr( "id" ) );\n +\t\t}\n +\n +\t\t// Highlight active parent menu item, if any\n +\t\tthis.active\n +\t\t\t.parent()\n +\t\t\t.closest( ".ui-menu-item" )\n +\t\t\t.children( "a:first" )\n +\t\t\t.addClass( "ui-state-active" );\n +\n +\t\tif ( event && event.type === "keydown" ) {\n +\t\t\tthis._close();\n +\t\t} else {\n +\t\t\tthis.timer = this._delay(function() {\n +\t\t\t\tthis._close();\n +\t\t\t}, this.delay );\n +\t\t}\n +\n +\t\tnested = item.children( ".ui-menu" );\n +\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n +\t\t\tthis._startOpening(nested);\n +\t\t}\n +\t\tthis.activeMenu = item.parent();\n +\n +\t\tthis._trigger( "focus", event, { item: item } );\n +\t},\n +\n +\t_scrollIntoView: function( item ) {\n +\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n +\t\tif ( this._hasScroll() ) {\n +\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;\n +\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;\n +\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n +\t\t\tscroll = this.activeMenu.scrollTop();\n +\t\t\telementHeight = this.activeMenu.height();\n +\t\t\titemHeight = item.height();\n +\n +\t\t\tif ( offset < 0 ) {\n +\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n +\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n +\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tblur: function( event, fromFocus ) {\n +\t\tif ( !fromFocus ) {\n +\t\t\tclearTimeout( this.timer );\n +\t\t}\n +\n +\t\tif ( !this.active ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tthis.active.children( "a" ).removeClass( "ui-state-focus" );\n +\t\tthis.active = null;\n +\n +\t\tthis._trigger( "blur", event, { item: this.active } );\n +\t},\n +\n +\t_startOpening: function( submenu ) {\n +\t\tclearTimeout( this.timer );\n +\n +\t\t// Don\'t open if already open fixes a Firefox bug that caused a .5 pixel\n +\t\t// shift in the submenu position when mousing over the carat icon\n +\t\tif ( submenu.attr( "aria-hidden" ) !== "true" ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tthis.timer = this._delay(function() {\n +\t\t\tthis._close();\n +\t\t\tthis._open( submenu );\n +\t\t}, this.delay );\n +\t},\n +\n +\t_open: function( submenu ) {\n +\t\tvar position = $.extend({\n +\t\t\tof: this.active\n +\t\t}, this.options.position );\n +\n +\t\tclearTimeout( this.timer );\n +\t\tthis.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )\n +\t\t\t.hide()\n +\t\t\t.attr( "aria-hidden", "true" );\n +\n +\t\tsubmenu\n +\t\t\t.show()\n +\t\t\t.removeAttr( "aria-hidden" )\n +\t\t\t.attr( "aria-expanded", "true" )\n +\t\t\t.position( position );\n +\t},\n +\n +\tcollapseAll: function( event, all ) {\n +\t\tclearTimeout( this.timer );\n +\t\tthis.timer = this._delay(function() {\n +\t\t\t// If we were passed an event, look for the submenu that contains the event\n +\t\t\tvar currentMenu = all ? this.element :\n +\t\t\t\t$( event && event.target ).closest( this.element.find( ".ui-menu" ) );\n +\n +\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n +\t\t\tif ( !currentMenu.length ) {\n +\t\t\t\tcurrentMenu = this.element;\n +\t\t\t}\n +\n +\t\t\tthis._close( currentMenu );\n +\n +\t\t\tthis.blur( event );\n +\t\t\tthis.activeMenu = currentMenu;\n +\t\t}, this.delay );\n +\t},\n +\n +\t// With no arguments, closes the currently active menu - if nothing is active\n +\t// it closes all menus. If passed an argument, it will search for menus BELOW\n +\t_close: function( startMenu ) {\n +\t\tif ( !startMenu ) {\n +\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n +\t\t}\n +\n +\t\tstartMenu\n +\t\t\t.find( ".ui-menu" )\n +\t\t\t\t.hide()\n +\t\t\t\t.attr( "aria-hidden", "true" )\n +\t\t\t\t.attr( "aria-expanded", "false" )\n +\t\t\t.end()\n +\t\t\t.find( "a.ui-state-active" )\n +\t\t\t\t.removeClass( "ui-state-active" );\n +\t},\n +\n +\tcollapse: function( event ) {\n +\t\tvar newItem = this.active &&\n +\t\t\tthis.active.parent().closest( ".ui-menu-item", this.element );\n +\t\tif ( newItem && newItem.length ) {\n +\t\t\tthis._close();\n +\t\t\tthis.focus( event, newItem );\n +\t\t}\n +\t},\n +\n +\texpand: function( event ) {\n +\t\tvar newItem = this.active &&\n +\t\t\tthis.active\n +\t\t\t\t.children( ".ui-menu " )\n +\t\t\t\t.children( ".ui-menu-item" )\n +\t\t\t\t.first();\n +\n +\t\tif ( newItem && newItem.length ) {\n +\t\t\tthis._open( newItem.parent() );\n +\n +\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n +\t\t\tthis._delay(function() {\n +\t\t\t\tthis.focus( event, newItem );\n +\t\t\t});\n +\t\t}\n +\t},\n +\n +\tnext: function( event ) {\n +\t\tthis._move( "next", "first", event );\n +\t},\n +\n +\tprevious: function( event ) {\n +\t\tthis._move( "prev", "last", event );\n +\t},\n +\n +\tisFirstItem: function() {\n +\t\treturn this.active && !this.active.prevAll( ".ui-menu-item" ).length;\n +\t},\n +\n +\tisLastItem: function() {\n +\t\treturn this.active && !this.active.nextAll( ".ui-menu-item" ).length;\n +\t},\n +\n +\t_move: function( direction, filter, event ) {\n +\t\tvar next;\n +\t\tif ( this.active ) {\n +\t\t\tif ( direction === "first" || direction === "last" ) {\n +\t\t\t\tnext = this.active\n +\t\t\t\t\t[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )\n +\t\t\t\t\t.eq( -1 );\n +\t\t\t} else {\n +\t\t\t\tnext = this.active\n +\t\t\t\t\t[ direction + "All" ]( ".ui-menu-item" )\n +\t\t\t\t\t.eq( 0 );\n +\t\t\t}\n +\t\t}\n +\t\tif ( !next || !next.length || !this.active ) {\n +\t\t\tnext = this.activeMenu.children( ".ui-menu-item" )[ filter ]();\n +\t\t}\n +\n +\t\tthis.focus( event, next );\n +\t},\n +\n +\tnextPage: function( event ) {\n +\t\tvar item, base, height;\n +\n +\t\tif ( !this.active ) {\n +\t\t\tthis.next( event );\n +\t\t\treturn;\n +\t\t}\n +\t\tif ( this.isLastItem() ) {\n +\t\t\treturn;\n +\t\t}\n +\t\tif ( this._hasScroll() ) {\n +\t\t\tbase = this.active.offset().top;\n +\t\t\theight = this.element.height();\n +\t\t\tthis.active.nextAll( ".ui-menu-item" ).each(function() {\n +\t\t\t\titem = $( this );\n +\t\t\t\treturn item.offset().top - base - height < 0;\n +\t\t\t});\n +\n +\t\t\tthis.focus( event, item );\n +\t\t} else {\n +\t\t\tthis.focus( event, this.activeMenu.children( ".ui-menu-item" )\n +\t\t\t\t[ !this.active ? "first" : "last" ]() );\n +\t\t}\n +\t},\n +\n +\tpreviousPage: function( event ) {\n +\t\tvar item, base, height;\n +\t\tif ( !this.active ) {\n +\t\t\tthis.next( event );\n +\t\t\treturn;\n +\t\t}\n +\t\tif ( this.isFirstItem() ) {\n +\t\t\treturn;\n +\t\t}\n +\t\tif ( this._hasScroll() ) {\n +\t\t\tbase = this.active.offset().top;\n +\t\t\theight = this.element.height();\n +\t\t\tthis.active.prevAll( ".ui-menu-item" ).each(function() {\n +\t\t\t\titem = $( this );\n +\t\t\t\treturn item.offset().top - base + height > 0;\n +\t\t\t});\n +\n +\t\t\tthis.focus( event, item );\n +\t\t} else {\n +\t\t\tthis.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );\n +\t\t}\n +\t},\n +\n +\t_hasScroll: function() {\n +\t\treturn this.element.outerHeight() < this.element.prop( "scrollHeight" );\n +\t},\n +\n +\tselect: function( event ) {\n +\t\t// TODO: It should never be possible to not have an active item at this\n +\t\t// point, but the tests don\'t trigger mouseenter before click.\n +\t\tthis.active = this.active || $( event.target ).closest( ".ui-menu-item" );\n +\t\tvar ui = { item: this.active };\n +\t\tif ( !this.active.has( ".ui-menu" ).length ) {\n +\t\t\tthis.collapseAll( event, true );\n +\t\t}\n +\t\tthis._trigger( "select", event, ui );\n +\t}\n +});\n +\n +}( jQuery ));\n +(function( $, undefined ) {\n +\n +$.widget( "ui.progressbar", {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\tvalue: 0,\n +\t\tmax: 100\n +\t},\n +\n +\tmin: 0,\n +\n +\t_create: function() {\n +\t\tthis.element\n +\t\t\t.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )\n +\t\t\t.attr({\n +\t\t\t\trole: "progressbar",\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +\t\t\t\t"aria-valuemin": this.min,\n +\t\t\t\t"aria-valuemax": this.options.max,\n +\t\t\t\t"aria-valuenow": this._value()\n +\t\t\t});\n +\n +\t\tthis.valueDiv = $( "<div class=\'ui-progressbar-value ui-widget-header ui-corner-left\'></div>" )\n +\t\t\t.appendTo( this.element );\n +\n +\t\tthis.oldValue = this._value();\n +\t\tthis._refreshValue();\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "aria-valuemin" )\n +\t\t\t.removeAttr( "aria-valuemax" )\n +\t\t\t.removeAttr( "aria-valuenow" );\n +\n +\t\tthis.valueDiv.remove();\n +\t},\n +\n +\tvalue: function( newValue ) {\n +\t\tif ( newValue === undefined ) {\n +\t\t\treturn this._value();\n +\t\t}\n +\n +\t\tthis._setOption( "value", newValue );\n +\t\treturn this;\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tif ( key === "value" ) {\n +\t\t\tthis.options.value = value;\n +\t\t\tthis._refreshValue();\n +\t\t\tif ( this._value() === this.options.max ) {\n +\t\t\t\tthis._trigger( "complete" );\n +\t\t\t}\n +\t\t}\n +\n +\t\tthis._super( key, value );\n +\t},\n +\n +\t_value: function() {\n +\t\tvar val = this.options.value;\n +\t\t// normalize invalid value\n +\t\tif ( typeof val !== "number" ) {\n +\t\t\tval = 0;\n +\t\t}\n +\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n +\t},\n +\n +\t_percentage: function() {\n +\t\treturn 100 * this._value() / this.options.max;\n +\t},\n +\n +\t_refreshValue: function() {\n +\t\tvar value = this.value(),\n +\t\t\tpercentage = this._percentage();\n +\n +\t\tif ( this.oldValue !== value ) {\n +\t\t\tthis.oldValue = value;\n +\t\t\tthis._trigger( "change" );\n +\t\t}\n +\n +\t\tthis.valueDiv\n +\t\t\t.toggle( value > this.min )\n +\t\t\t.toggleClass( "ui-corner-right", value === this.options.max )\n +\t\t\t.width( percentage.toFixed(0) + "%" );\n +\t\tthis.element.attr( "aria-valuenow", value );\n +\t}\n +});\n +\n +})( jQuery );\n +(function( $, undefined ) {\n +\n +// number of pages in a slider\n +// (how many times can you page up/down to go through the whole range)\n +var numPages = 5;\n +\n +$.widget( "ui.slider", $.ui.mouse, {\n +\tversion: "1.9.2",\n +\twidgetEventPrefix: "slide",\n +\n +\toptions: {\n +\t\tanimate: false,\n +\t\tdistance: 0,\n +\t\tmax: 100,\n +\t\tmin: 0,\n +\t\torientation: "horizontal",\n +\t\trange: false,\n +\t\tstep: 1,\n +\t\tvalue: 0,\n +\t\tvalues: null\n +\t},\n +\n +\t_create: function() {\n +\t\tvar i, handleCount,\n +\t\t\to = this.options,\n +\t\t\texistingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),\n +\t\t\thandle = "<a class=\'ui-slider-handle ui-state-default ui-corner-all\' href=\'#\'></a>",\n +\t\t\thandles = [];\n +\n +\t\tthis._keySliding = false;\n +\t\tthis._mouseSliding = false;\n +\t\tthis._animateOff = true;\n +\t\tthis._handleIndex = null;\n +\t\tthis._detectOrientation();\n +\t\tthis._mouseInit();\n +\n +\t\tthis.element\n +\t\t\t.addClass( "ui-slider" +\n +\t\t\t\t" ui-slider-" + this.orientation +\n +\t\t\t\t" ui-widget" +\n +\t\t\t\t" ui-widget-content" +\n +\t\t\t\t" ui-corner-all" +\n +\t\t\t\t( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) );\n +\n +\t\tthis.range = $([]);\n +\n +\t\tif ( o.range ) {\n +\t\t\tif ( o.range === true ) {\n +\t\t\t\tif ( !o.values ) {\n +\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n +\t\t\t\t}\n +\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n +\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\tthis.range = $( "<div></div>" )\n +\t\t\t\t.appendTo( this.element )\n +\t\t\t\t.addClass( "ui-slider-range" +\n +\t\t\t\t// note: this isn\'t the most fittingly semantic framework class for this element,\n +\t\t\t\t// but worked best visually with a variety of themes\n +\t\t\t\t" ui-widget-header" +\n +\t\t\t\t( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) );\n +\t\t}\n +\n +\t\thandleCount = ( o.values && o.values.length ) || 1;\n +\n +\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n +\t\t\thandles.push( handle );\n +\t\t}\n +\n +\t\tthis.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );\n +\n +\t\tthis.handle = this.handles.eq( 0 );\n +\n +\t\tthis.handles.add( this.range ).filter( "a" )\n +\t\t\t.click(function( event ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t})\n +\t\t\t.mouseenter(function() {\n +\t\t\t\tif ( !o.disabled ) {\n +\t\t\t\t\t$( this ).addClass( "ui-state-hover" );\n +\t\t\t\t}\n +\t\t\t})\n +\t\t\t.mouseleave(function() {\n +\t\t\t\t$( this ).removeClass( "ui-state-hover" );\n +\t\t\t})\n +\t\t\t.focus(function() {\n +\t\t\t\tif ( !o.disabled ) {\n +\t\t\t\t\t$( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" );\n +\t\t\t\t\t$( this ).addClass( "ui-state-focus" );\n +\t\t\t\t} else {\n +\t\t\t\t\t$( this ).blur();\n +\t\t\t\t}\n +\t\t\t})\n +\t\t\t.blur(function() {\n +\t\t\t\t$( this ).removeClass( "ui-state-focus" );\n +\t\t\t});\n +\n +\t\tthis.handles.each(function( i ) {\n +\t\t\t$( this ).data( "ui-slider-handle-index", i );\n +\t\t});\n +\n +\t\tthis._on( this.handles, {\n +\t\t\tkeydown: function( event ) {\n +\t\t\t\tvar allowed, curVal, newVal, step,\n +\t\t\t\t\tindex = $( event.target ).data( "ui-slider-handle-index" );\n +\n +\t\t\t\tswitch ( event.keyCode ) {\n +\t\t\t\t\tcase $.ui.keyCode.HOME:\n +\t\t\t\t\tcase $.ui.keyCode.END:\n +\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n +\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n +\t\t\t\t\tcase $.ui.keyCode.UP:\n +\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n +\t\t\t\t\tcase $.ui.keyCode.DOWN:\n +\t\t\t\t\tcase $.ui.keyCode.LEFT:\n +\t\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\t\tif ( !this._keySliding ) {\n +\t\t\t\t\t\t\tthis._keySliding = true;\n +\t\t\t\t\t\t\t$( event.target ).addClass( "ui-state-active" );\n +\t\t\t\t\t\t\tallowed = this._start( event, index );\n +\t\t\t\t\t\t\tif ( allowed === false ) {\n +\t\t\t\t\t\t\t\treturn;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tstep = this.options.step;\n +\t\t\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\t\t\tcurVal = newVal = this.values( index );\n +\t\t\t\t} else {\n +\t\t\t\t\tcurVal = newVal = this.value();\n +\t\t\t\t}\n +\n +\t\t\t\tswitch ( event.keyCode ) {\n +\t\t\t\t\tcase $.ui.keyCode.HOME:\n +\t\t\t\t\t\tnewVal = this._valueMin();\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase $.ui.keyCode.END:\n +\t\t\t\t\t\tnewVal = this._valueMax();\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n +\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n +\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase $.ui.keyCode.UP:\n +\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n +\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n +\t\t\t\t\t\t\treturn;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t\tcase $.ui.keyCode.DOWN:\n +\t\t\t\t\tcase $.ui.keyCode.LEFT:\n +\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n +\t\t\t\t\t\t\treturn;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n +\t\t\t\t\t\tbreak;\n +\t\t\t\t}\n +\n +\t\t\t\tthis._slide( event, index, newVal );\n +\t\t\t},\n +\t\t\tkeyup: function( event ) {\n +\t\t\t\tvar index = $( event.target ).data( "ui-slider-handle-index" );\n +\n +\t\t\t\tif ( this._keySliding ) {\n +\t\t\t\t\tthis._keySliding = false;\n +\t\t\t\t\tthis._stop( event, index );\n +\t\t\t\t\tthis._change( event, index );\n +\t\t\t\t\t$( event.target ).removeClass( "ui-state-active" );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t});\n +\n +\t\tthis._refreshValue();\n +\n +\t\tthis._animateOff = false;\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.handles.remove();\n +\t\tthis.range.remove();\n +\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-slider" +\n +\t\t\t\t" ui-slider-horizontal" +\n +\t\t\t\t" ui-slider-vertical" +\n +\t\t\t\t" ui-slider-disabled" +\n +\t\t\t\t" ui-widget" +\n +\t\t\t\t" ui-widget-content" +\n +\t\t\t\t" ui-corner-all" );\n +\n +\t\tthis._mouseDestroy();\n +\t},\n +\n +\t_mouseCapture: function( event ) {\n +\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n +\t\t\tthat = this,\n +\t\t\to = this.options;\n +\n +\t\tif ( o.disabled ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\tthis.elementSize = {\n +\t\t\twidth: this.element.outerWidth(),\n +\t\t\theight: this.element.outerHeight()\n +\t\t};\n +\t\tthis.elementOffset = this.element.offset();\n +\n +\t\tposition = { x: event.pageX, y: event.pageY };\n +\t\tnormValue = this._normValueFromMouse( position );\n +\t\tdistance = this._valueMax() - this._valueMin() + 1;\n +\t\tthis.handles.each(function( i ) {\n +\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n +\t\t\tif ( distance > thisDistance ) {\n +\t\t\t\tdistance = thisDistance;\n +\t\t\t\tclosestHandle = $( this );\n +\t\t\t\tindex = i;\n +\t\t\t}\n +\t\t});\n +\n +\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n +\t\t// the first is always used as the one with least distance,\n +\t\t// and moving it is obviously prevented by preventing negative ranges)\n +\t\tif( o.range === true && this.values(1) === o.min ) {\n +\t\t\tindex += 1;\n +\t\t\tclosestHandle = $( this.handles[index] );\n +\t\t}\n +\n +\t\tallowed = this._start( event, index );\n +\t\tif ( allowed === false ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\tthis._mouseSliding = true;\n +\n +\t\tthis._handleIndex = index;\n +\n +\t\tclosestHandle\n +\t\t\t.addClass( "ui-state-active" )\n +\t\t\t.focus();\n +\n +\t\toffset = closestHandle.offset();\n +\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" );\n +\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n +\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n +\t\t\ttop: event.pageY - offset.top -\n +\t\t\t\t( closestHandle.height() / 2 ) -\n +\t\t\t\t( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -\n +\t\t\t\t( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +\n +\t\t\t\t( parseInt( closestHandle.css("marginTop"), 10 ) || 0)\n +\t\t};\n +\n +\t\tif ( !this.handles.hasClass( "ui-state-hover" ) ) {\n +\t\t\tthis._slide( event, index, normValue );\n +\t\t}\n +\t\tthis._animateOff = true;\n +\t\treturn true;\n +\t},\n +\n +\t_mouseStart: function() {\n +\t\treturn true;\n +\t},\n +\n +\t_mouseDrag: function( event ) {\n +\t\tvar position = { x: event.pageX, y: event.pageY },\n +\t\t\tnormValue = this._normValueFromMouse( position );\n +\n +\t\tthis._slide( event, this._handleIndex, normValue );\n +\n +\t\treturn false;\n +\t},\n +\n +\t_mouseStop: function( event ) {\n +\t\tthis.handles.removeClass( "ui-state-active" );\n +\t\tthis._mouseSliding = false;\n +\n +\t\tthis._stop( event, this._handleIndex );\n +\t\tthis._change( event, this._handleIndex );\n +\n +\t\tthis._handleIndex = null;\n +\t\tthis._clickOffset = null;\n +\t\tthis._animateOff = false;\n +\n +\t\treturn false;\n +\t},\n +\n +\t_detectOrientation: function() {\n +\t\tthis.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";\n +\t},\n +\n +\t_normValueFromMouse: function( position ) {\n +\t\tvar pixelTotal,\n +\t\t\tpixelMouse,\n +\t\t\tpercentMouse,\n +\t\t\tvalueTotal,\n +\t\t\tvalueMouse;\n +\n +\t\tif ( this.orientation === "horizontal" ) {\n +\t\t\tpixelTotal = this.elementSize.width;\n +\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n +\t\t} else {\n +\t\t\tpixelTotal = this.elementSize.height;\n +\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n +\t\t}\n +\n +\t\tpercentMouse = ( pixelMouse / pixelTotal );\n +\t\tif ( percentMouse > 1 ) {\n +\t\t\tpercentMouse = 1;\n +\t\t}\n +\t\tif ( percentMouse < 0 ) {\n +\t\t\tpercentMouse = 0;\n +\t\t}\n +\t\tif ( this.orientation === "vertical" ) {\n +\t\t\tpercentMouse = 1 - percentMouse;\n +\t\t}\n +\n +\t\tvalueTotal = this._valueMax() - this._valueMin();\n +\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n +\n +\t\treturn this._trimAlignValue( valueMouse );\n +\t},\n +\n +\t_start: function( event, index ) {\n +\t\tvar uiHash = {\n +\t\t\thandle: this.handles[ index ],\n +\t\t\tvalue: this.value()\n +\t\t};\n +\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\tuiHash.value = this.values( index );\n +\t\t\tuiHash.values = this.values();\n +\t\t}\n +\t\treturn this._trigger( "start", event, uiHash );\n +\t},\n +\n +\t_slide: function( event, index, newVal ) {\n +\t\tvar otherVal,\n +\t\t\tnewValues,\n +\t\t\tallowed;\n +\n +\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\totherVal = this.values( index ? 0 : 1 );\n +\n +\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n +\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n +\t\t\t\t) {\n +\t\t\t\tnewVal = otherVal;\n +\t\t\t}\n +\n +\t\t\tif ( newVal !== this.values( index ) ) {\n +\t\t\t\tnewValues = this.values();\n +\t\t\t\tnewValues[ index ] = newVal;\n +\t\t\t\t// A slide can be canceled by returning false from the slide callback\n +\t\t\t\tallowed = this._trigger( "slide", event, {\n +\t\t\t\t\thandle: this.handles[ index ],\n +\t\t\t\t\tvalue: newVal,\n +\t\t\t\t\tvalues: newValues\n +\t\t\t\t} );\n +\t\t\t\totherVal = this.values( index ? 0 : 1 );\n +\t\t\t\tif ( allowed !== false ) {\n +\t\t\t\t\tthis.values( index, newVal, true );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else {\n +\t\t\tif ( newVal !== this.value() ) {\n +\t\t\t\t// A slide can be canceled by returning false from the slide callback\n +\t\t\t\tallowed = this._trigger( "slide", event, {\n +\t\t\t\t\thandle: this.handles[ index ],\n +\t\t\t\t\tvalue: newVal\n +\t\t\t\t} );\n +\t\t\t\tif ( allowed !== false ) {\n +\t\t\t\t\tthis.value( newVal );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t_stop: function( event, index ) {\n +\t\tvar uiHash = {\n +\t\t\thandle: this.handles[ index ],\n +\t\t\tvalue: this.value()\n +\t\t};\n +\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\tuiHash.value = this.values( index );\n +\t\t\tuiHash.values = this.values();\n +\t\t}\n +\n +\t\tthis._trigger( "stop", event, uiHash );\n +\t},\n +\n +\t_change: function( event, index ) {\n +\t\tif ( !this._keySliding && !this._mouseSliding ) {\n +\t\t\tvar uiHash = {\n +\t\t\t\thandle: this.handles[ index ],\n +\t\t\t\tvalue: this.value()\n +\t\t\t};\n +\t\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\t\tuiHash.value = this.values( index );\n +\t\t\t\tuiHash.values = this.values();\n +\t\t\t}\n +\n +\t\t\tthis._trigger( "change", event, uiHash );\n +\t\t}\n +\t},\n +\n +\tvalue: function( newValue ) {\n +\t\tif ( arguments.length ) {\n +\t\t\tthis.options.value = this._trimAlignValue( newValue );\n +\t\t\tthis._refreshValue();\n +\t\t\tthis._change( null, 0 );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\treturn this._value();\n +\t},\n +\n +\tvalues: function( index, newValue ) {\n +\t\tvar vals,\n +\t\t\tnewValues,\n +\t\t\ti;\n +\n +\t\tif ( arguments.length > 1 ) {\n +\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n +\t\t\tthis._refreshValue();\n +\t\t\tthis._change( null, index );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( arguments.length ) {\n +\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n +\t\t\t\tvals = this.options.values;\n +\t\t\t\tnewValues = arguments[ 0 ];\n +\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n +\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n +\t\t\t\t\tthis._change( null, i );\n +\t\t\t\t}\n +\t\t\t\tthis._refreshValue();\n +\t\t\t} else {\n +\t\t\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\t\t\treturn this._values( index );\n +\t\t\t\t} else {\n +\t\t\t\t\treturn this.value();\n +\t\t\t\t}\n +\t\t\t}\n +\t\t} else {\n +\t\t\treturn this._values();\n +\t\t}\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tvar i,\n +\t\t\tvalsLength = 0;\n +\n +\t\tif ( $.isArray( this.options.values ) ) {\n +\t\t\tvalsLength = this.options.values.length;\n +\t\t}\n +\n +\t\t$.Widget.prototype._setOption.apply( this, arguments );\n +\n +\t\tswitch ( key ) {\n +\t\t\tcase "disabled":\n +\t\t\t\tif ( value ) {\n +\t\t\t\t\tthis.handles.filter( ".ui-state-focus" ).blur();\n +\t\t\t\t\tthis.handles.removeClass( "ui-state-hover" );\n +\t\t\t\t\tthis.handles.prop( "disabled", true );\n +\t\t\t\t\tthis.element.addClass( "ui-disabled" );\n +\t\t\t\t} else {\n +\t\t\t\t\tthis.handles.prop( "disabled", false );\n +\t\t\t\t\tthis.element.removeClass( "ui-disabled" );\n +\t\t\t\t}\n +\t\t\t\tbreak;\n +\t\t\tcase "orientation":\n +\t\t\t\tthis._detectOrientation();\n +\t\t\t\tthis.element\n +\t\t\t\t\t.removeClass( "ui-slider-horizontal ui-slider-vertical" )\n +\t\t\t\t\t.addClass( "ui-slider-" + this.orientation );\n +\t\t\t\tthis._refreshValue();\n +\t\t\t\tbreak;\n +\t\t\tcase "value":\n +\t\t\t\tthis._animateOff = true;\n +\t\t\t\tthis._refreshValue();\n +\t\t\t\tthis._change( null, 0 );\n +\t\t\t\tthis._animateOff = false;\n +\t\t\t\tbreak;\n +\t\t\tcase "values":\n +\t\t\t\tthis._animateOff = true;\n +\t\t\t\tthis._refreshValue();\n +\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n +\t\t\t\t\tthis._change( null, i );\n +\t\t\t\t}\n +\t\t\t\tthis._animateOff = false;\n +\t\t\t\tbreak;\n +\t\t\tcase "min":\n +\t\t\tcase "max":\n +\t\t\t\tthis._animateOff = true;\n +\t\t\t\tthis._refreshValue();\n +\t\t\t\tthis._animateOff = false;\n +\t\t\t\tbreak;\n +\t\t}\n +\t},\n +\n +\t//internal value getter\n +\t// _value() returns value trimmed by min and max, aligned by step\n +\t_value: function() {\n +\t\tvar val = this.options.value;\n +\t\tval = this._trimAlignValue( val );\n +\n +\t\treturn val;\n +\t},\n +\n +\t//internal values getter\n +\t// _values() returns array of values trimmed by min and max, aligned by step\n +\t// _values( index ) returns single value trimmed by min and max, aligned by step\n +\t_values: function( index ) {\n +\t\tvar val,\n +\t\t\tvals,\n +\t\t\ti;\n +\n +\t\tif ( arguments.length ) {\n +\t\t\tval = this.options.values[ index ];\n +\t\t\tval = this._trimAlignValue( val );\n +\n +\t\t\treturn val;\n +\t\t} else {\n +\t\t\t// .slice() creates a copy of the array\n +\t\t\t// this copy gets trimmed by min and max and then returned\n +\t\t\tvals = this.options.values.slice();\n +\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n +\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n +\t\t\t}\n +\n +\t\t\treturn vals;\n +\t\t}\n +\t},\n +\n +\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n +\t_trimAlignValue: function( val ) {\n +\t\tif ( val <= this._valueMin() ) {\n +\t\t\treturn this._valueMin();\n +\t\t}\n +\t\tif ( val >= this._valueMax() ) {\n +\t\t\treturn this._valueMax();\n +\t\t}\n +\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n +\t\t\tvalModStep = (val - this._valueMin()) % step,\n +\t\t\talignValue = val - valModStep;\n +\n +\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n +\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n +\t\t}\n +\n +\t\t// Since JavaScript has problems with large floats, round\n +\t\t// the final value to 5 digits after the decimal point (see #4124)\n +\t\treturn parseFloat( alignValue.toFixed(5) );\n +\t},\n +\n +\t_valueMin: function() {\n +\t\treturn this.options.min;\n +\t},\n +\n +\t_valueMax: function() {\n +\t\treturn this.options.max;\n +\t},\n +\n +\t_refreshValue: function() {\n +\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n +\t\t\toRange = this.options.range,\n +\t\t\to = this.options,\n +\t\t\tthat = this,\n +\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n +\t\t\t_set = {};\n +\n +\t\tif ( this.options.values && this.options.values.length ) {\n +\t\t\tthis.handles.each(function( i ) {\n +\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n +\t\t\t\t_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";\n +\t\t\t\t$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );\n +\t\t\t\tif ( that.options.range === true ) {\n +\t\t\t\t\tif ( that.orientation === "horizontal" ) {\n +\t\t\t\t\t\tif ( i === 0 ) {\n +\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif ( i === 1 ) {\n +\t\t\t\t\t\t\tthat.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tif ( i === 0 ) {\n +\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif ( i === 1 ) {\n +\t\t\t\t\t\t\tthat.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\tlastValPercent = valPercent;\n +\t\t\t});\n +\t\t} else {\n +\t\t\tvalue = this.value();\n +\t\t\tvalueMin = this._valueMin();\n +\t\t\tvalueMax = this._valueMax();\n +\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n +\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n +\t\t\t\t\t0;\n +\t\t\t_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";\n +\t\t\tthis.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );\n +\n +\t\t\tif ( oRange === "min" && this.orientation === "horizontal" ) {\n +\t\t\t\tthis.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );\n +\t\t\t}\n +\t\t\tif ( oRange === "max" && this.orientation === "horizontal" ) {\n +\t\t\t\tthis.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );\n +\t\t\t}\n +\t\t\tif ( oRange === "min" && this.orientation === "vertical" ) {\n +\t\t\t\tthis.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );\n +\t\t\t}\n +\t\t\tif ( oRange === "max" && this.orientation === "vertical" ) {\n +\t\t\t\tthis.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +});\n +\n +}(jQuery));\n +(function( $ ) {\n +\n +function modifier( fn ) {\n +\treturn function() {\n +\t\tvar previous = this.element.val();\n +\t\tfn.apply( this, arguments );\n +\t\tthis._refresh();\n +\t\tif ( previous !== this.element.val() ) {\n +\t\t\tthis._trigger( "change" );\n +\t\t}\n +\t};\n +}\n +\n +$.widget( "ui.spinner", {\n +\tversion: "1.9.2",\n +\tdefaultElement: "<input>",\n +\twidgetEventPrefix: "spin",\n +\toptions: {\n +\t\tculture: null,\n +\t\ticons: {\n +\t\t\tdown: "ui-icon-triangle-1-s",\n +\t\t\tup: "ui-icon-triangle-1-n"\n +\t\t},\n +\t\tincremental: true,\n +\t\tmax: null,\n +\t\tmin: null,\n +\t\tnumberFormat: null,\n +\t\tpage: 10,\n +\t\tstep: 1,\n +\n +\t\tchange: null,\n +\t\tspin: null,\n +\t\tstart: null,\n +\t\tstop: null\n +\t},\n +\n +\t_create: function() {\n +\t\t// handle string values that need to be parsed\n +\t\tthis._setOption( "max", this.options.max );\n +\t\tthis._setOption( "min", this.options.min );\n +\t\tthis._setOption( "step", this.options.step );\n +\n +\t\t// format the value, but don\'t constrain\n +\t\tthis._value( this.element.val(), true );\n +\n +\t\tthis._draw();\n +\t\tthis._on( this._events );\n +\t\tthis._refresh();\n +\n +\t\t// turning off autocomplete prevents the browser from remembering the\n +\t\t// value when navigating through history, so we re-enable autocomplete\n +\t\t// if the page is unloaded before the widget is destroyed. #7790\n +\t\tthis._on( this.window, {\n +\t\t\tbeforeunload: function() {\n +\t\t\t\tthis.element.removeAttr( "autocomplete" );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_getCreateOptions: function() {\n +\t\tvar options = {},\n +\t\t\telement = this.element;\n +\n +\t\t$.each( [ "min", "max", "step" ], function( i, option ) {\n +\t\t\tvar value = element.attr( option );\n +\t\t\tif ( value !== undefined && value.length ) {\n +\t\t\t\toptions[ option ] = value;\n +\t\t\t}\n +\t\t});\n +\n +\t\treturn options;\n +\t},\n +\n +\t_events: {\n +\t\tkeydown: function( event ) {\n +\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t},\n +\t\tkeyup: "_stop",\n +\t\tfocus: function() {\n +\t\t\tthis.previous = this.element.val();\n +\t\t},\n +\t\tblur: function( event ) {\n +\t\t\tif ( this.cancelBlur ) {\n +\t\t\t\tdelete this.cancelBlur;\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tthis._refresh();\n +\t\t\tif ( this.previous !== this.element.val() ) {\n +\t\t\t\tthis._trigger( "change", event );\n +\t\t\t}\n +\t\t},\n +\t\tmousewheel: function( event, delta ) {\n +\t\t\tif ( !delta ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\tif ( !this.spinning && !this._start( event ) ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n +\t\t\tclearTimeout( this.mousewheelTimer );\n +\t\t\tthis.mousewheelTimer = this._delay(function() {\n +\t\t\t\tif ( this.spinning ) {\n +\t\t\t\t\tthis._stop( event );\n +\t\t\t\t}\n +\t\t\t}, 100 );\n +\t\t\tevent.preventDefault();\n +\t\t},\n +\t\t"mousedown .ui-spinner-button": function( event ) {\n +\t\t\tvar previous;\n +\n +\t\t\t// We never want the buttons to have focus; whenever the user is\n +\t\t\t// interacting with the spinner, the focus should be on the input.\n +\t\t\t// If the input is focused then this.previous is properly set from\n +\t\t\t// when the input first received focus. If the input is not focused\n +\t\t\t// then we need to set this.previous based on the value before spinning.\n +\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n +\t\t\t\tthis.previous : this.element.val();\n +\t\t\tfunction checkFocus() {\n +\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n +\t\t\t\tif ( !isActive ) {\n +\t\t\t\t\tthis.element.focus();\n +\t\t\t\t\tthis.previous = previous;\n +\t\t\t\t\t// support: IE\n +\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n +\t\t\t\t\t// moved off of the input because the user clicked on the button.\n +\t\t\t\t\tthis._delay(function() {\n +\t\t\t\t\t\tthis.previous = previous;\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// ensure focus is on (or stays on) the text field\n +\t\t\tevent.preventDefault();\n +\t\t\tcheckFocus.call( this );\n +\n +\t\t\t// support: IE\n +\t\t\t// IE doesn\'t prevent moving focus even with event.preventDefault()\n +\t\t\t// so we set a flag to know when we should ignore the blur event\n +\t\t\t// and check (again) if focus moved off of the input.\n +\t\t\tthis.cancelBlur = true;\n +\t\t\tthis._delay(function() {\n +\t\t\t\tdelete this.cancelBlur;\n +\t\t\t\tcheckFocus.call( this );\n +\t\t\t});\n +\n +\t\t\tif ( this._start( event ) === false ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );\n +\t\t},\n +\t\t"mouseup .ui-spinner-button": "_stop",\n +\t\t"mouseenter .ui-spinner-button": function( event ) {\n +\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n +\t\t\tif ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\n +\t\t\tif ( this._start( event ) === false ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );\n +\t\t},\n +\t\t// TODO: do we really want to consider this a stop?\n +\t\t// shouldn\'t we just stop the repeater and wait until mouseup before\n +\t\t// we trigger the stop event?\n +\t\t"mouseleave .ui-spinner-button": "_stop"\n +\t},\n +\n +\t_draw: function() {\n +\t\tvar uiSpinner = this.uiSpinner = this.element\n +\t\t\t.addClass( "ui-spinner-input" )\n +\t\t\t.attr( "autocomplete", "off" )\n +\t\t\t.wrap( this._uiSpinnerHtml() )\n +\t\t\t.parent()\n +\t\t\t\t// add buttons\n +\t\t\t\t.append( this._buttonHtml() );\n +\n +\t\tthis.element.attr( "role", "spinbutton" );\n +\n +\t\t// button bindings\n +\t\tthis.buttons = uiSpinner.find( ".ui-spinner-button" )\n +\t\t\t.attr( "tabIndex", -1 )\n +\t\t\t.button()\n +\t\t\t.removeClass( "ui-corner-all" );\n +\n +\t\t// IE 6 doesn\'t understand height: 50% for the buttons\n +\t\t// unless the wrapper has an explicit height\n +\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n +\t\t\t\tuiSpinner.height() > 0 ) {\n +\t\t\tuiSpinner.height( uiSpinner.height() );\n +\t\t}\n +\n +\t\t// disable spinner if element was already disabled\n +\t\tif ( this.options.disabled ) {\n +\t\t\tthis.disable();\n +\t\t}\n +\t},\n +\n +\t_keydown: function( event ) {\n +\t\tvar options = this.options,\n +\t\t\tkeyCode = $.ui.keyCode;\n +\n +\t\tswitch ( event.keyCode ) {\n +\t\tcase keyCode.UP:\n +\t\t\tthis._repeat( null, 1, event );\n +\t\t\treturn true;\n +\t\tcase keyCode.DOWN:\n +\t\t\tthis._repeat( null, -1, event );\n +\t\t\treturn true;\n +\t\tcase keyCode.PAGE_UP:\n +\t\t\tthis._repeat( null, options.page, event );\n +\t\t\treturn true;\n +\t\tcase keyCode.PAGE_DOWN:\n +\t\t\tthis._repeat( null, -options.page, event );\n +\t\t\treturn true;\n +\t\t}\n +\n +\t\treturn false;\n +\t},\n +\n +\t_uiSpinnerHtml: function() {\n +\t\treturn "<span class=\'ui-spinner ui-widget ui-widget-content ui-corner-all\'></span>";\n +\t},\n +\n +\t_buttonHtml: function() {\n +\t\treturn "" +\n +\t\t\t"<a class=\'ui-spinner-button ui-spinner-up ui-corner-tr\'>" +\n +\t\t\t\t"<span class=\'ui-icon " + this.options.icons.up + "\'>▲</span>" +\n +\t\t\t"</a>" +\n +\t\t\t"<a class=\'ui-spinner-button ui-spinner-down ui-corner-br\'>" +\n +\t\t\t\t"<span class=\'ui-icon " + this.options.icons.down + "\'>▼</span>" +\n +\t\t\t"</a>";\n +\t},\n +\n +\t_start: function( event ) {\n +\t\tif ( !this.spinning && this._trigger( "start", event ) === false ) {\n +\t\t\treturn false;\n +\t\t}\n +\n +\t\tif ( !this.counter ) {\n +\t\t\tthis.counter = 1;\n +\t\t}\n +\t\tthis.spinning = true;\n +\t\treturn true;\n +\t},\n +\n +\t_repeat: function( i, steps, event ) {\n +\t\ti = i || 500;\n +\n +\t\tclearTimeout( this.timer );\n +\t\tthis.timer = this._delay(function() {\n +\t\t\tthis._repeat( 40, steps, event );\n +\t\t}, i );\n +\n +\t\tthis._spin( steps * this.options.step, event );\n +\t},\n +\n +\t_spin: function( step, event ) {\n +\t\tvar value = this.value() || 0;\n +\n +\t\tif ( !this.counter ) {\n +\t\t\tthis.counter = 1;\n +\t\t}\n +\n +\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n +\n +\t\tif ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {\n +\t\t\tthis._value( value );\n +\t\t\tthis.counter++;\n +\t\t}\n +\t},\n +\n +\t_increment: function( i ) {\n +\t\tvar incremental = this.options.incremental;\n +\n +\t\tif ( incremental ) {\n +\t\t\treturn $.isFunction( incremental ) ?\n +\t\t\t\tincremental( i ) :\n +\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n +\t\t}\n +\n +\t\treturn 1;\n +\t},\n +\n +\t_precision: function() {\n +\t\tvar precision = this._precisionOf( this.options.step );\n +\t\tif ( this.options.min !== null ) {\n +\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n +\t\t}\n +\t\treturn precision;\n +\t},\n +\n +\t_precisionOf: function( num ) {\n +\t\tvar str = num.toString(),\n +\t\t\tdecimal = str.indexOf( "." );\n +\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n +\t},\n +\n +\t_adjustValue: function( value ) {\n +\t\tvar base, aboveMin,\n +\t\t\toptions = this.options;\n +\n +\t\t// make sure we\'re at a valid step\n +\t\t// - find out where we are relative to the base (min or 0)\n +\t\tbase = options.min !== null ? options.min : 0;\n +\t\taboveMin = value - base;\n +\t\t// - round to the nearest step\n +\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n +\t\t// - rounding is based on 0, so adjust back to our base\n +\t\tvalue = base + aboveMin;\n +\n +\t\t// fix precision from bad JS floating point math\n +\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n +\n +\t\t// clamp the value\n +\t\tif ( options.max !== null && value > options.max) {\n +\t\t\treturn options.max;\n +\t\t}\n +\t\tif ( options.min !== null && value < options.min ) {\n +\t\t\treturn options.min;\n +\t\t}\n +\n +\t\treturn value;\n +\t},\n +\n +\t_stop: function( event ) {\n +\t\tif ( !this.spinning ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tclearTimeout( this.timer );\n +\t\tclearTimeout( this.mousewheelTimer );\n +\t\tthis.counter = 0;\n +\t\tthis.spinning = false;\n +\t\tthis._trigger( "stop", event );\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tif ( key === "culture" || key === "numberFormat" ) {\n +\t\t\tvar prevValue = this._parse( this.element.val() );\n +\t\t\tthis.options[ key ] = value;\n +\t\t\tthis.element.val( this._format( prevValue ) );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( key === "max" || key === "min" || key === "step" ) {\n +\t\t\tif ( typeof value === "string" ) {\n +\t\t\t\tvalue = this._parse( value );\n +\t\t\t}\n +\t\t}\n +\n +\t\tthis._super( key, value );\n +\n +\t\tif ( key === "disabled" ) {\n +\t\t\tif ( value ) {\n +\t\t\t\tthis.element.prop( "disabled", true );\n +\t\t\t\tthis.buttons.button( "disable" );\n +\t\t\t} else {\n +\t\t\t\tthis.element.prop( "disabled", false );\n +\t\t\t\tthis.buttons.button( "enable" );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t_setOptions: modifier(function( options ) {\n +\t\tthis._super( options );\n +\t\tthis._value( this.element.val() );\n +\t}),\n +\n +\t_parse: function( val ) {\n +\t\tif ( typeof val === "string" && val !== "" ) {\n +\t\t\tval = window.Globalize && this.options.numberFormat ?\n +\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n +\t\t}\n +\t\treturn val === "" || isNaN( val ) ? null : val;\n +\t},\n +\n +\t_format: function( value ) {\n +\t\tif ( value === "" ) {\n +\t\t\treturn "";\n +\t\t}\n +\t\treturn window.Globalize && this.options.numberFormat ?\n +\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n +\t\t\tvalue;\n +\t},\n +\n +\t_refresh: function() {\n +\t\tthis.element.attr({\n +\t\t\t"aria-valuemin": this.options.min,\n +\t\t\t"aria-valuemax": this.options.max,\n +\t\t\t// TODO: what should we do with values that can\'t be parsed?\n +\t\t\t"aria-valuenow": this._parse( this.element.val() )\n +\t\t});\n +\t},\n +\n +\t// update the value without triggering change\n +\t_value: function( value, allowAny ) {\n +\t\tvar parsed;\n +\t\tif ( value !== "" ) {\n +\t\t\tparsed = this._parse( value );\n +\t\t\tif ( parsed !== null ) {\n +\t\t\t\tif ( !allowAny ) {\n +\t\t\t\t\tparsed = this._adjustValue( parsed );\n +\t\t\t\t}\n +\t\t\t\tvalue = this._format( parsed );\n +\t\t\t}\n +\t\t}\n +\t\tthis.element.val( value );\n +\t\tthis._refresh();\n +\t},\n +\n +\t_destroy: function() {\n +\t\tthis.element\n +\t\t\t.removeClass( "ui-spinner-input" )\n +\t\t\t.prop( "disabled", false )\n +\t\t\t.removeAttr( "autocomplete" )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "aria-valuemin" )\n +\t\t\t.removeAttr( "aria-valuemax" )\n +\t\t\t.removeAttr( "aria-valuenow" );\n +\t\tthis.uiSpinner.replaceWith( this.element );\n +\t},\n +\n +\tstepUp: modifier(function( steps ) {\n +\t\tthis._stepUp( steps );\n +\t}),\n +\t_stepUp: function( steps ) {\n +\t\tthis._spin( (steps || 1) * this.options.step );\n +\t},\n +\n +\tstepDown: modifier(function( steps ) {\n +\t\tthis._stepDown( steps );\n +\t}),\n +\t_stepDown: function( steps ) {\n +\t\tthis._spin( (steps || 1) * -this.options.step );\n +\t},\n +\n +\tpageUp: modifier(function( pages ) {\n +\t\tthis._stepUp( (pages || 1) * this.options.page );\n +\t}),\n +\n +\tpageDown: modifier(function( pages ) {\n +\t\tthis._stepDown( (pages || 1) * this.options.page );\n +\t}),\n +\n +\tvalue: function( newVal ) {\n +\t\tif ( !arguments.length ) {\n +\t\t\treturn this._parse( this.element.val() );\n +\t\t}\n +\t\tmodifier( this._value ).call( this, newVal );\n +\t},\n +\n +\twidget: function() {\n +\t\treturn this.uiSpinner;\n +\t}\n +});\n +\n +}( jQuery ) );\n +(function( $, undefined ) {\n +\n +var tabId = 0,\n +\trhash = /#.*$/;\n +\n +function getNextTabId() {\n +\treturn ++tabId;\n +}\n +\n +function isLocal( anchor ) {\n +\treturn anchor.hash.length > 1 &&\n +\t\tanchor.href.replace( rhash, "" ) ===\n +\t\t\tlocation.href.replace( rhash, "" )\n +\t\t\t\t// support: Safari 5.1\n +\t\t\t\t// Safari 5.1 doesn\'t encode spaces in window.location\n +\t\t\t\t// but it does encode spaces from anchors (#8777)\n +\t\t\t\t.replace( /\\s/g, "%20" );\n +}\n +\n +$.widget( "ui.tabs", {\n +\tversion: "1.9.2",\n +\tdelay: 300,\n +\toptions: {\n +\t\tactive: null,\n +\t\tcollapsible: false,\n +\t\tevent: "click",\n +\t\theightStyle: "content",\n +\t\thide: null,\n +\t\tshow: null,\n +\n +\t\t// callbacks\n +\t\tactivate: null,\n +\t\tbeforeActivate: null,\n +\t\tbeforeLoad: null,\n +\t\tload: null\n +\t},\n +\n +\t_create: function() {\n +\t\tvar that = this,\n +\t\t\toptions = this.options,\n +\t\t\tactive = options.active,\n +\t\t\tlocationHash = location.hash.substring( 1 );\n +\n +\t\tthis.running = false;\n +\n +\t\tthis.element\n +\t\t\t.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )\n +\t\t\t.toggleClass( "ui-tabs-collapsible", options.collapsible )\n +\t\t\t// Prevent users from focusing disabled tabs via click\n +\t\t\t.delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {\n +\t\t\t\tif ( $( this ).is( ".ui-state-disabled" ) ) {\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t}\n +\t\t\t})\n +\t\t\t// support: IE <9\n +\t\t\t// Preventing the default action in mousedown doesn\'t prevent IE\n +\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n +\t\t\t// We don\'t have to worry about focusing the previously focused\n +\t\t\t// element since clicking on a non-focusable element should focus\n +\t\t\t// the body anyway.\n +\t\t\t.delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {\n +\t\t\t\tif ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {\n +\t\t\t\t\tthis.blur();\n +\t\t\t\t}\n +\t\t\t});\n +\n +\t\tthis._processTabs();\n +\n +\t\tif ( active === null ) {\n +\t\t\t// check the fragment identifier in the URL\n +\t\t\tif ( locationHash ) {\n +\t\t\t\tthis.tabs.each(function( i, tab ) {\n +\t\t\t\t\tif ( $( tab ).attr( "aria-controls" ) === locationHash ) {\n +\t\t\t\t\t\tactive = i;\n +\t\t\t\t\t\treturn false;\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\n +\t\t\t// check for a tab marked active via a class\n +\t\t\tif ( active === null ) {\n +\t\t\t\tactive = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );\n +\t\t\t}\n +\n +\t\t\t// no active tab, set to false\n +\t\t\tif ( active === null || active === -1 ) {\n +\t\t\t\tactive = this.tabs.length ? 0 : false;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// handle numbers: negative, out of range\n +\t\tif ( active !== false ) {\n +\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n +\t\t\tif ( active === -1 ) {\n +\t\t\t\tactive = options.collapsible ? false : 0;\n +\t\t\t}\n +\t\t}\n +\t\toptions.active = active;\n +\n +\t\t// don\'t allow collapsible: false and active: false\n +\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n +\t\t\toptions.active = 0;\n +\t\t}\n +\n +\t\t// Take disabling tabs via class attribute from HTML\n +\t\t// into account and update option properly.\n +\t\tif ( $.isArray( options.disabled ) ) {\n +\t\t\toptions.disabled = $.unique( options.disabled.concat(\n +\t\t\t\t$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {\n +\t\t\t\t\treturn that.tabs.index( li );\n +\t\t\t\t})\n +\t\t\t) ).sort();\n +\t\t}\n +\n +\t\t// check for length avoids error when initializing empty list\n +\t\tif ( this.options.active !== false && this.anchors.length ) {\n +\t\t\tthis.active = this._findActive( this.options.active );\n +\t\t} else {\n +\t\t\tthis.active = $();\n +\t\t}\n +\n +\t\tthis._refresh();\n +\n +\t\tif ( this.active.length ) {\n +\t\t\tthis.load( options.active );\n +\t\t}\n +\t},\n +\n +\t_getCreateEventData: function() {\n +\t\treturn {\n +\t\t\ttab: this.active,\n +\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n +\t\t};\n +\t},\n +\n +\t_tabKeydown: function( event ) {\n +\t\tvar focusedTab = $( this.document[0].activeElement ).closest( "li" ),\n +\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n +\t\t\tgoingForward = true;\n +\n +\t\tif ( this._handlePageNav( event ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tswitch ( event.keyCode ) {\n +\t\t\tcase $.ui.keyCode.RIGHT:\n +\t\t\tcase $.ui.keyCode.DOWN:\n +\t\t\t\tselectedIndex++;\n +\t\t\t\tbreak;\n +\t\t\tcase $.ui.keyCode.UP:\n +\t\t\tcase $.ui.keyCode.LEFT:\n +\t\t\t\tgoingForward = false;\n +\t\t\t\tselectedIndex--;\n +\t\t\t\tbreak;\n +\t\t\tcase $.ui.keyCode.END:\n +\t\t\t\tselectedIndex = this.anchors.length - 1;\n +\t\t\t\tbreak;\n +\t\t\tcase $.ui.keyCode.HOME:\n +\t\t\t\tselectedIndex = 0;\n +\t\t\t\tbreak;\n +\t\t\tcase $.ui.keyCode.SPACE:\n +\t\t\t\t// Activate only, no collapsing\n +\t\t\t\tevent.preventDefault();\n +\t\t\t\tclearTimeout( this.activating );\n +\t\t\t\tthis._activate( selectedIndex );\n +\t\t\t\treturn;\n +\t\t\tcase $.ui.keyCode.ENTER:\n +\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n +\t\t\t\tevent.preventDefault();\n +\t\t\t\tclearTimeout( this.activating );\n +\t\t\t\t// Determine if we should collapse or activate\n +\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n +\t\t\t\treturn;\n +\t\t\tdefault:\n +\t\t\t\treturn;\n +\t\t}\n +\n +\t\t// Focus the appropriate tab, based on which key was pressed\n +\t\tevent.preventDefault();\n +\t\tclearTimeout( this.activating );\n +\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n +\n +\t\t// Navigating with control key will prevent automatic activation\n +\t\tif ( !event.ctrlKey ) {\n +\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n +\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n +\t\t\t// but the tab will already be activated by the time the announcement finishes.\n +\t\t\tfocusedTab.attr( "aria-selected", "false" );\n +\t\t\tthis.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );\n +\n +\t\t\tthis.activating = this._delay(function() {\n +\t\t\t\tthis.option( "active", selectedIndex );\n +\t\t\t}, this.delay );\n +\t\t}\n +\t},\n +\n +\t_panelKeydown: function( event ) {\n +\t\tif ( this._handlePageNav( event ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Ctrl+up moves focus to the current tab\n +\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n +\t\t\tevent.preventDefault();\n +\t\t\tthis.active.focus();\n +\t\t}\n +\t},\n +\n +\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n +\t_handlePageNav: function( event ) {\n +\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n +\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n +\t\t\treturn true;\n +\t\t}\n +\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n +\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n +\t\t\treturn true;\n +\t\t}\n +\t},\n +\n +\t_findNextTab: function( index, goingForward ) {\n +\t\tvar lastTabIndex = this.tabs.length - 1;\n +\n +\t\tfunction constrain() {\n +\t\t\tif ( index > lastTabIndex ) {\n +\t\t\t\tindex = 0;\n +\t\t\t}\n +\t\t\tif ( index < 0 ) {\n +\t\t\t\tindex = lastTabIndex;\n +\t\t\t}\n +\t\t\treturn index;\n +\t\t}\n +\n +\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n +\t\t\tindex = goingForward ? index + 1 : index - 1;\n +\t\t}\n +\n +\t\treturn index;\n +\t},\n +\n +\t_focusNextTab: function( index, goingForward ) {\n +\t\tindex = this._findNextTab( index, goingForward );\n +\t\tthis.tabs.eq( index ).focus();\n +\t\treturn index;\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tif ( key === "active" ) {\n +\t\t\t// _activate() will handle invalid values and update this.options\n +\t\t\tthis._activate( value );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( key === "disabled" ) {\n +\t\t\t// don\'t use the widget factory\'s disabled handling\n +\t\t\tthis._setupDisabled( value );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tthis._super( key, value);\n +\n +\t\tif ( key === "collapsible" ) {\n +\t\t\tthis.element.toggleClass( "ui-tabs-collapsible", value );\n +\t\t\t// Setting collapsible: false while collapsed; open first panel\n +\t\t\tif ( !value && this.options.active === false ) {\n +\t\t\t\tthis._activate( 0 );\n +\t\t\t}\n +\t\t}\n +\n +\t\tif ( key === "event" ) {\n +\t\t\tthis._setupEvents( value );\n +\t\t}\n +\n +\t\tif ( key === "heightStyle" ) {\n +\t\t\tthis._setupHeightStyle( value );\n +\t\t}\n +\t},\n +\n +\t_tabId: function( tab ) {\n +\t\treturn tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();\n +\t},\n +\n +\t_sanitizeSelector: function( hash ) {\n +\t\treturn hash ? hash.replace( /[!"$%&\'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, "\\\\$&" ) : "";\n +\t},\n +\n +\trefresh: function() {\n +\t\tvar options = this.options,\n +\t\t\tlis = this.tablist.children( ":has(a[href])" );\n +\n +\t\t// get disabled tabs from class attribute from HTML\n +\t\t// this will get converted to a boolean if needed in _refresh()\n +\t\toptions.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {\n +\t\t\treturn lis.index( tab );\n +\t\t});\n +\n +\t\tthis._processTabs();\n +\n +\t\t// was collapsed or no tabs\n +\t\tif ( options.active === false || !this.anchors.length ) {\n +\t\t\toptions.active = false;\n +\t\t\tthis.active = $();\n +\t\t// was active, but active tab is gone\n +\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n +\t\t\t// all remaining tabs are disabled\n +\t\t\tif ( this.tabs.length === options.disabled.length ) {\n +\t\t\t\toptions.active = false;\n +\t\t\t\tthis.active = $();\n +\t\t\t// activate previous tab\n +\t\t\t} else {\n +\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n +\t\t\t}\n +\t\t// was active, active tab still exists\n +\t\t} else {\n +\t\t\t// make sure active index is correct\n +\t\t\toptions.active = this.tabs.index( this.active );\n +\t\t}\n +\n +\t\tthis._refresh();\n +\t},\n +\n +\t_refresh: function() {\n +\t\tthis._setupDisabled( this.options.disabled );\n +\t\tthis._setupEvents( this.options.event );\n +\t\tthis._setupHeightStyle( this.options.heightStyle );\n +\n +\t\tthis.tabs.not( this.active ).attr({\n +\t\t\t"aria-selected": "false",\n +\t\t\ttabIndex: -1\n +\t\t});\n +\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n +\t\t\t.hide()\n +\t\t\t.attr({\n +\t\t\t\t"aria-expanded": "false",\n +\t\t\t\t"aria-hidden": "true"\n +\t\t\t});\n +\n +\t\t// Make sure one tab is in the tab order\n +\t\tif ( !this.active.length ) {\n +\t\t\tthis.tabs.eq( 0 ).attr( "tabIndex", 0 );\n +\t\t} else {\n +\t\t\tthis.active\n +\t\t\t\t.addClass( "ui-tabs-active ui-state-active" )\n +\t\t\t\t.attr({\n +\t\t\t\t\t"aria-selected": "true",\n +\t\t\t\t\ttabIndex: 0\n +\t\t\t\t});\n +\t\t\tthis._getPanelForTab( this.active )\n +\t\t\t\t.show()\n +\t\t\t\t.attr({\n +\t\t\t\t\t"aria-expanded": "true",\n +\t\t\t\t\t"aria-hidden": "false"\n +\t\t\t\t});\n +\t\t}\n +\t},\n +\n +\t_processTabs: function() {\n +\t\tvar that = this;\n +\n +\t\tthis.tablist = this._getList()\n +\t\t\t.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )\n +\t\t\t.attr( "role", "tablist" );\n +\n +\t\tthis.tabs = this.tablist.find( "> li:has(a[href])" )\n +\t\t\t.addClass( "ui-state-default ui-corner-top" )\n +\t\t\t.attr({\n +\t\t\t\trole: "tab",\n +\t\t\t\ttabIndex: -1\n +\t\t\t});\n +\n +\t\tthis.anchors = this.tabs.map(function() {\n +\t\t\t\treturn $( "a", this )[ 0 ];\n +\t\t\t})\n +\t\t\t.addClass( "ui-tabs-anchor" )\n +\t\t\t.attr({\n +\t\t\t\trole: "presentation",\n +\t\t\t\ttabIndex: -1\n +\t\t\t});\n +\n +\t\tthis.panels = $();\n +\n +\t\tthis.anchors.each(function( i, anchor ) {\n +\t\t\tvar selector, panel, panelId,\n +\t\t\t\tanchorId = $( anchor ).uniqueId().attr( "id" ),\n +\t\t\t\ttab = $( anchor ).closest( "li" ),\n +\t\t\t\toriginalAriaControls = tab.attr( "aria-controls" );\n +\n +\t\t\t// inline tab\n +\t\t\tif ( isLocal( anchor ) ) {\n +\t\t\t\tselector = anchor.hash;\n +\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n +\t\t\t// remote tab\n +\t\t\t} else {\n +\t\t\t\tpanelId = that._tabId( tab );\n +\t\t\t\tselector = "#" + panelId;\n +\t\t\t\tpanel = that.element.find( selector );\n +\t\t\t\tif ( !panel.length ) {\n +\t\t\t\t\tpanel = that._createPanel( panelId );\n +\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n +\t\t\t\t}\n +\t\t\t\tpanel.attr( "aria-live", "polite" );\n +\t\t\t}\n +\n +\t\t\tif ( panel.length) {\n +\t\t\t\tthat.panels = that.panels.add( panel );\n +\t\t\t}\n +\t\t\tif ( originalAriaControls ) {\n +\t\t\t\ttab.data( "ui-tabs-aria-controls", originalAriaControls );\n +\t\t\t}\n +\t\t\ttab.attr({\n +\t\t\t\t"aria-controls": selector.substring( 1 ),\n +\t\t\t\t"aria-labelledby": anchorId\n +\t\t\t});\n +\t\t\tpanel.attr( "aria-labelledby", anchorId );\n +\t\t});\n +\n +\t\tthis.panels\n +\t\t\t.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )\n +\t\t\t.attr( "role", "tabpanel" );\n +\t},\n +\n +\t// allow overriding how to find the list for rare usage scenarios (#7715)\n +\t_getList: function() {\n +\t\treturn this.element.find( "ol,ul" ).eq( 0 );\n +\t},\n +\n +\t_createPanel: function( id ) {\n +\t\treturn $( "<div>" )\n +\t\t\t.attr( "id", id )\n +\t\t\t.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )\n +\t\t\t.data( "ui-tabs-destroy", true );\n +\t},\n +\n +\t_setupDisabled: function( disabled ) {\n +\t\tif ( $.isArray( disabled ) ) {\n +\t\t\tif ( !disabled.length ) {\n +\t\t\t\tdisabled = false;\n +\t\t\t} else if ( disabled.length === this.anchors.length ) {\n +\t\t\t\tdisabled = true;\n +\t\t\t}\n +\t\t}\n +\n +\t\t// disable tabs\n +\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n +\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n +\t\t\t\t$( li )\n +\t\t\t\t\t.addClass( "ui-state-disabled" )\n +\t\t\t\t\t.attr( "aria-disabled", "true" );\n +\t\t\t} else {\n +\t\t\t\t$( li )\n +\t\t\t\t\t.removeClass( "ui-state-disabled" )\n +\t\t\t\t\t.removeAttr( "aria-disabled" );\n +\t\t\t}\n +\t\t}\n +\n +\t\tthis.options.disabled = disabled;\n +\t},\n +\n +\t_setupEvents: function( event ) {\n +\t\tvar events = {\n +\t\t\tclick: function( event ) {\n +\t\t\t\tevent.preventDefault();\n +\t\t\t}\n +\t\t};\n +\t\tif ( event ) {\n +\t\t\t$.each( event.split(" "), function( index, eventName ) {\n +\t\t\t\tevents[ eventName ] = "_eventHandler";\n +\t\t\t});\n +\t\t}\n +\n +\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n +\t\tthis._on( this.anchors, events );\n +\t\tthis._on( this.tabs, { keydown: "_tabKeydown" } );\n +\t\tthis._on( this.panels, { keydown: "_panelKeydown" } );\n +\n +\t\tthis._focusable( this.tabs );\n +\t\tthis._hoverable( this.tabs );\n +\t},\n +\n +\t_setupHeightStyle: function( heightStyle ) {\n +\t\tvar maxHeight, overflow,\n +\t\t\tparent = this.element.parent();\n +\n +\t\tif ( heightStyle === "fill" ) {\n +\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n +\t\t\t// in order to get a reliable height\n +\t\t\t// we use the minHeight support test because we assume that only\n +\t\t\t// browsers that don\'t support minHeight will treat height as minHeight\n +\t\t\tif ( !$.support.minHeight ) {\n +\t\t\t\toverflow = parent.css( "overflow" );\n +\t\t\t\tparent.css( "overflow", "hidden");\n +\t\t\t}\n +\t\t\tmaxHeight = parent.height();\n +\t\t\tthis.element.siblings( ":visible" ).each(function() {\n +\t\t\t\tvar elem = $( this ),\n +\t\t\t\t\tposition = elem.css( "position" );\n +\n +\t\t\t\tif ( position === "absolute" || position === "fixed" ) {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t\tmaxHeight -= elem.outerHeight( true );\n +\t\t\t});\n +\t\t\tif ( overflow ) {\n +\t\t\t\tparent.css( "overflow", overflow );\n +\t\t\t}\n +\n +\t\t\tthis.element.children().not( this.panels ).each(function() {\n +\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n +\t\t\t});\n +\n +\t\t\tthis.panels.each(function() {\n +\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n +\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n +\t\t\t})\n +\t\t\t.css( "overflow", "auto" );\n +\t\t} else if ( heightStyle === "auto" ) {\n +\t\t\tmaxHeight = 0;\n +\t\t\tthis.panels.each(function() {\n +\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );\n +\t\t\t}).height( maxHeight );\n +\t\t}\n +\t},\n +\n +\t_eventHandler: function( event ) {\n +\t\tvar options = this.options,\n +\t\t\tactive = this.active,\n +\t\t\tanchor = $( event.currentTarget ),\n +\t\t\ttab = anchor.closest( "li" ),\n +\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n +\t\t\tcollapsing = clickedIsActive && options.collapsible,\n +\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n +\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n +\t\t\teventData = {\n +\t\t\t\toldTab: active,\n +\t\t\t\toldPanel: toHide,\n +\t\t\t\tnewTab: collapsing ? $() : tab,\n +\t\t\t\tnewPanel: toShow\n +\t\t\t};\n +\n +\t\tevent.preventDefault();\n +\n +\t\tif ( tab.hasClass( "ui-state-disabled" ) ||\n +\t\t\t\t// tab is already loading\n +\t\t\t\ttab.hasClass( "ui-tabs-loading" ) ||\n +\t\t\t\t// can\'t switch durning an animation\n +\t\t\t\tthis.running ||\n +\t\t\t\t// click on active header, but not collapsible\n +\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n +\t\t\t\t// allow canceling activation\n +\t\t\t\t( this._trigger( "beforeActivate", event, eventData ) === false ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n +\n +\t\tthis.active = clickedIsActive ? $() : tab;\n +\t\tif ( this.xhr ) {\n +\t\t\tthis.xhr.abort();\n +\t\t}\n +\n +\t\tif ( !toHide.length && !toShow.length ) {\n +\t\t\t$.error( "jQuery UI Tabs: Mismatching fragment identifier." );\n +\t\t}\n +\n +\t\tif ( toShow.length ) {\n +\t\t\tthis.load( this.tabs.index( tab ), event );\n +\t\t}\n +\t\tthis._toggle( event, eventData );\n +\t},\n +\n +\t// handles show/hide for selecting tabs\n +\t_toggle: function( event, eventData ) {\n +\t\tvar that = this,\n +\t\t\ttoShow = eventData.newPanel,\n +\t\t\ttoHide = eventData.oldPanel;\n +\n +\t\tthis.running = true;\n +\n +\t\tfunction complete() {\n +\t\t\tthat.running = false;\n +\t\t\tthat._trigger( "activate", event, eventData );\n +\t\t}\n +\n +\t\tfunction show() {\n +\t\t\teventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );\n +\n +\t\t\tif ( toShow.length && that.options.show ) {\n +\t\t\t\tthat._show( toShow, that.options.show, complete );\n +\t\t\t} else {\n +\t\t\t\ttoShow.show();\n +\t\t\t\tcomplete();\n +\t\t\t}\n +\t\t}\n +\n +\t\t// start out by hiding, then showing, then completing\n +\t\tif ( toHide.length && this.options.hide ) {\n +\t\t\tthis._hide( toHide, this.options.hide, function() {\n +\t\t\t\teventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );\n +\t\t\t\tshow();\n +\t\t\t});\n +\t\t} else {\n +\t\t\teventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );\n +\t\t\ttoHide.hide();\n +\t\t\tshow();\n +\t\t}\n +\n +\t\ttoHide.attr({\n +\t\t\t"aria-expanded": "false",\n +\t\t\t"aria-hidden": "true"\n +\t\t});\n +\t\teventData.oldTab.attr( "aria-selected", "false" );\n +\t\t// If we\'re switching tabs, remove the old tab from the tab order.\n +\t\t// If we\'re opening from collapsed state, remove the previous tab from the tab order.\n +\t\t// If we\'re collapsing, then keep the collapsing tab in the tab order.\n +\t\tif ( toShow.length && toHide.length ) {\n +\t\t\teventData.oldTab.attr( "tabIndex", -1 );\n +\t\t} else if ( toShow.length ) {\n +\t\t\tthis.tabs.filter(function() {\n +\t\t\t\treturn $( this ).attr( "tabIndex" ) === 0;\n +\t\t\t})\n +\t\t\t.attr( "tabIndex", -1 );\n +\t\t}\n +\n +\t\ttoShow.attr({\n +\t\t\t"aria-expanded": "true",\n +\t\t\t"aria-hidden": "false"\n +\t\t});\n +\t\teventData.newTab.attr({\n +\t\t\t"aria-selected": "true",\n +\t\t\ttabIndex: 0\n +\t\t});\n +\t},\n +\n +\t_activate: function( index ) {\n +\t\tvar anchor,\n +\t\t\tactive = this._findActive( index );\n +\n +\t\t// trying to activate the already active panel\n +\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// trying to collapse, simulate a click on the current active header\n +\t\tif ( !active.length ) {\n +\t\t\tactive = this.active;\n +\t\t}\n +\n +\t\tanchor = active.find( ".ui-tabs-anchor" )[ 0 ];\n +\t\tthis._eventHandler({\n +\t\t\ttarget: anchor,\n +\t\t\tcurrentTarget: anchor,\n +\t\t\tpreventDefault: $.noop\n +\t\t});\n +\t},\n +\n +\t_findActive: function( index ) {\n +\t\treturn index === false ? $() : this.tabs.eq( index );\n +\t},\n +\n +\t_getIndex: function( index ) {\n +\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n +\t\tif ( typeof index === "string" ) {\n +\t\t\tindex = this.anchors.index( this.anchors.filter( "[href$=\'" + index + "\']" ) );\n +\t\t}\n +\n +\t\treturn index;\n +\t},\n +\n +\t_destroy: function() {\n +\t\tif ( this.xhr ) {\n +\t\t\tthis.xhr.abort();\n +\t\t}\n +\n +\t\tthis.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );\n +\n +\t\tthis.tablist\n +\t\t\t.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )\n +\t\t\t.removeAttr( "role" );\n +\n +\t\tthis.anchors\n +\t\t\t.removeClass( "ui-tabs-anchor" )\n +\t\t\t.removeAttr( "role" )\n +\t\t\t.removeAttr( "tabIndex" )\n +\t\t\t.removeData( "href.tabs" )\n +\t\t\t.removeData( "load.tabs" )\n +\t\t\t.removeUniqueId();\n +\n +\t\tthis.tabs.add( this.panels ).each(function() {\n +\t\t\tif ( $.data( this, "ui-tabs-destroy" ) ) {\n +\t\t\t\t$( this ).remove();\n +\t\t\t} else {\n +\t\t\t\t$( this )\n +\t\t\t\t\t.removeClass( "ui-state-default ui-state-active ui-state-disabled " +\n +\t\t\t\t\t\t"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )\n +\t\t\t\t\t.removeAttr( "tabIndex" )\n +\t\t\t\t\t.removeAttr( "aria-live" )\n +\t\t\t\t\t.removeAttr( "aria-busy" )\n +\t\t\t\t\t.removeAttr( "aria-selected" )\n +\t\t\t\t\t.removeAttr( "aria-labelledby" )\n +\t\t\t\t\t.removeAttr( "aria-hidden" )\n +\t\t\t\t\t.removeAttr( "aria-expanded" )\n +\t\t\t\t\t.removeAttr( "role" );\n +\t\t\t}\n +\t\t});\n +\n +\t\tthis.tabs.each(function() {\n +\t\t\tvar li = $( this ),\n +\t\t\t\tprev = li.data( "ui-tabs-aria-controls" );\n +\t\t\tif ( prev ) {\n +\t\t\t\tli.attr( "aria-controls", prev );\n +\t\t\t} else {\n +\t\t\t\tli.removeAttr( "aria-controls" );\n +\t\t\t}\n +\t\t});\n +\n +\t\tthis.panels.show();\n +\n +\t\tif ( this.options.heightStyle !== "content" ) {\n +\t\t\tthis.panels.css( "height", "" );\n +\t\t}\n +\t},\n +\n +\tenable: function( index ) {\n +\t\tvar disabled = this.options.disabled;\n +\t\tif ( disabled === false ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( index === undefined ) {\n +\t\t\tdisabled = false;\n +\t\t} else {\n +\t\t\tindex = this._getIndex( index );\n +\t\t\tif ( $.isArray( disabled ) ) {\n +\t\t\t\tdisabled = $.map( disabled, function( num ) {\n +\t\t\t\t\treturn num !== index ? num : null;\n +\t\t\t\t});\n +\t\t\t} else {\n +\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n +\t\t\t\t\treturn num !== index ? num : null;\n +\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\t\tthis._setupDisabled( disabled );\n +\t},\n +\n +\tdisable: function( index ) {\n +\t\tvar disabled = this.options.disabled;\n +\t\tif ( disabled === true ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( index === undefined ) {\n +\t\t\tdisabled = true;\n +\t\t} else {\n +\t\t\tindex = this._getIndex( index );\n +\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\tif ( $.isArray( disabled ) ) {\n +\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n +\t\t\t} else {\n +\t\t\t\tdisabled = [ index ];\n +\t\t\t}\n +\t\t}\n +\t\tthis._setupDisabled( disabled );\n +\t},\n +\n +\tload: function( index, event ) {\n +\t\tindex = this._getIndex( index );\n +\t\tvar that = this,\n +\t\t\ttab = this.tabs.eq( index ),\n +\t\t\tanchor = tab.find( ".ui-tabs-anchor" ),\n +\t\t\tpanel = this._getPanelForTab( tab ),\n +\t\t\teventData = {\n +\t\t\t\ttab: tab,\n +\t\t\t\tpanel: panel\n +\t\t\t};\n +\n +\t\t// not remote\n +\t\tif ( isLocal( anchor[ 0 ] ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n +\n +\t\t// support: jQuery <1.8\n +\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n +\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n +\t\tif ( this.xhr && this.xhr.statusText !== "canceled" ) {\n +\t\t\ttab.addClass( "ui-tabs-loading" );\n +\t\t\tpanel.attr( "aria-busy", "true" );\n +\n +\t\t\tthis.xhr\n +\t\t\t\t.success(function( response ) {\n +\t\t\t\t\t// support: jQuery <1.8\n +\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n +\t\t\t\t\tsetTimeout(function() {\n +\t\t\t\t\t\tpanel.html( response );\n +\t\t\t\t\t\tthat._trigger( "load", event, eventData );\n +\t\t\t\t\t}, 1 );\n +\t\t\t\t})\n +\t\t\t\t.complete(function( jqXHR, status ) {\n +\t\t\t\t\t// support: jQuery <1.8\n +\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n +\t\t\t\t\tsetTimeout(function() {\n +\t\t\t\t\t\tif ( status === "abort" ) {\n +\t\t\t\t\t\t\tthat.panels.stop( false, true );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\ttab.removeClass( "ui-tabs-loading" );\n +\t\t\t\t\t\tpanel.removeAttr( "aria-busy" );\n +\n +\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n +\t\t\t\t\t\t\tdelete that.xhr;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}, 1 );\n +\t\t\t\t});\n +\t\t}\n +\t},\n +\n +\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n +\t_ajaxSettings: function( anchor, event, eventData ) {\n +\t\tvar that = this;\n +\t\treturn {\n +\t\t\turl: anchor.attr( "href" ),\n +\t\t\tbeforeSend: function( jqXHR, settings ) {\n +\t\t\t\treturn that._trigger( "beforeLoad", event,\n +\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n +\t\t\t}\n +\t\t};\n +\t},\n +\n +\t_getPanelForTab: function( tab ) {\n +\t\tvar id = $( tab ).attr( "aria-controls" );\n +\t\treturn this.element.find( this._sanitizeSelector( "#" + id ) );\n +\t}\n +});\n +\n +// DEPRECATED\n +if ( $.uiBackCompat !== false ) {\n +\n +\t// helper method for a lot of the back compat extensions\n +\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n +\t\treturn {\n +\t\t\ttab: tab,\n +\t\t\tpanel: panel,\n +\t\t\tindex: this.anchors.index( tab )\n +\t\t};\n +\t};\n +\n +\t// url method\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\turl: function( index, url ) {\n +\t\t\tthis.anchors.eq( index ).attr( "href", url );\n +\t\t}\n +\t});\n +\n +\t// TODO: Remove _ajaxSettings() method when removing this extension\n +\t// ajaxOptions and cache options\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tajaxOptions: null,\n +\t\t\tcache: false\n +\t\t},\n +\n +\t\t_create: function() {\n +\t\t\tthis._super();\n +\n +\t\t\tvar that = this;\n +\n +\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n +\t\t\t\t// tab is already cached\n +\t\t\t\tif ( $.data( ui.tab[ 0 ], "cache.tabs" ) ) {\n +\t\t\t\t\tevent.preventDefault();\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\n +\t\t\t\tui.jqXHR.success(function() {\n +\t\t\t\t\tif ( that.options.cache ) {\n +\t\t\t\t\t\t$.data( ui.tab[ 0 ], "cache.tabs", true );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}});\n +\t\t},\n +\n +\t\t_ajaxSettings: function( anchor, event, ui ) {\n +\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n +\t\t\treturn $.extend( {}, ajaxOptions, {\n +\t\t\t\terror: function( xhr, status ) {\n +\t\t\t\t\ttry {\n +\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n +\t\t\t\t\t\t// called after the user has selected another tab.\n +\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n +\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n +\t\t\t\t\t\tajaxOptions.error(\n +\t\t\t\t\t\t\txhr, status, ui.tab.closest( "li" ).index(), ui.tab[ 0 ] );\n +\t\t\t\t\t}\n +\t\t\t\t\tcatch ( error ) {}\n +\t\t\t\t}\n +\t\t\t}, this._superApply( arguments ) );\n +\t\t},\n +\n +\t\t_setOption: function( key, value ) {\n +\t\t\t// reset cache if switching from cached to not cached\n +\t\t\tif ( key === "cache" && value === false ) {\n +\t\t\t\tthis.anchors.removeData( "cache.tabs" );\n +\t\t\t}\n +\t\t\tthis._super( key, value );\n +\t\t},\n +\n +\t\t_destroy: function() {\n +\t\t\tthis.anchors.removeData( "cache.tabs" );\n +\t\t\tthis._super();\n +\t\t},\n +\n +\t\turl: function( index ){\n +\t\t\tthis.anchors.eq( index ).removeData( "cache.tabs" );\n +\t\t\tthis._superApply( arguments );\n +\t\t}\n +\t});\n +\n +\t// abort method\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\tabort: function() {\n +\t\t\tif ( this.xhr ) {\n +\t\t\t\tthis.xhr.abort();\n +\t\t\t}\n +\t\t}\n +\t});\n +\n +\t// spinner\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tspinner: "<em>Loading…</em>"\n +\t\t},\n +\t\t_create: function() {\n +\t\t\tthis._super();\n +\t\t\tthis._on({\n +\t\t\t\ttabsbeforeload: function( event, ui ) {\n +\t\t\t\t\t// Don\'t react to nested tabs or tabs that don\'t use a spinner\n +\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n +\t\t\t\t\t\t\t!this.options.spinner ) {\n +\t\t\t\t\t\treturn;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tvar span = ui.tab.find( "span" ),\n +\t\t\t\t\t\thtml = span.html();\n +\t\t\t\t\tspan.html( this.options.spinner );\n +\t\t\t\t\tui.jqXHR.complete(function() {\n +\t\t\t\t\t\tspan.html( html );\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\t});\n +\n +\t// enable/disable events\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tenable: null,\n +\t\t\tdisable: null\n +\t\t},\n +\n +\t\tenable: function( index ) {\n +\t\t\tvar options = this.options,\n +\t\t\t\ttrigger;\n +\n +\t\t\tif ( index && options.disabled === true ||\n +\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n +\t\t\t\ttrigger = true;\n +\t\t\t}\n +\n +\t\t\tthis._superApply( arguments );\n +\n +\t\t\tif ( trigger ) {\n +\t\t\t\tthis._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n +\t\t\t}\n +\t\t},\n +\n +\t\tdisable: function( index ) {\n +\t\t\tvar options = this.options,\n +\t\t\t\ttrigger;\n +\n +\t\t\tif ( index && options.disabled === false ||\n +\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n +\t\t\t\ttrigger = true;\n +\t\t\t}\n +\n +\t\t\tthis._superApply( arguments );\n +\n +\t\t\tif ( trigger ) {\n +\t\t\t\tthis._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n +\t\t\t}\n +\t\t}\n +\t});\n +\n +\t// add/remove methods and events\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tadd: null,\n +\t\t\tremove: null,\n +\t\t\ttabTemplate: "<li><a href=\'#{href}\'><span>#{label}</span></a></li>"\n +\t\t},\n +\n +\t\tadd: function( url, label, index ) {\n +\t\t\tif ( index === undefined ) {\n +\t\t\t\tindex = this.anchors.length;\n +\t\t\t}\n +\n +\t\t\tvar doInsertAfter, panel,\n +\t\t\t\toptions = this.options,\n +\t\t\t\tli = $( options.tabTemplate\n +\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n +\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n +\t\t\t\tid = !url.indexOf( "#" ) ?\n +\t\t\t\t\turl.replace( "#", "" ) :\n +\t\t\t\t\tthis._tabId( li );\n +\n +\t\t\tli.addClass( "ui-state-default ui-corner-top" ).data( "ui-tabs-destroy", true );\n +\t\t\tli.attr( "aria-controls", id );\n +\n +\t\t\tdoInsertAfter = index >= this.tabs.length;\n +\n +\t\t\t// try to find an existing element before creating a new one\n +\t\t\tpanel = this.element.find( "#" + id );\n +\t\t\tif ( !panel.length ) {\n +\t\t\t\tpanel = this._createPanel( id );\n +\t\t\t\tif ( doInsertAfter ) {\n +\t\t\t\t\tif ( index > 0 ) {\n +\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tpanel.appendTo( this.element );\n +\t\t\t\t\t}\n +\t\t\t\t} else {\n +\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tpanel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ).hide();\n +\n +\t\t\tif ( doInsertAfter ) {\n +\t\t\t\tli.appendTo( this.tablist );\n +\t\t\t} else {\n +\t\t\t\tli.insertBefore( this.tabs[ index ] );\n +\t\t\t}\n +\n +\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n +\t\t\t\treturn n >= index ? ++n : n;\n +\t\t\t});\n +\n +\t\t\tthis.refresh();\n +\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n +\t\t\t\tthis.option( "active", 0 );\n +\t\t\t}\n +\n +\t\t\tthis._trigger( "add", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n +\t\t\treturn this;\n +\t\t},\n +\n +\t\tremove: function( index ) {\n +\t\t\tindex = this._getIndex( index );\n +\t\t\tvar options = this.options,\n +\t\t\t\ttab = this.tabs.eq( index ).remove(),\n +\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n +\n +\t\t\t// If selected tab was removed focus tab to the right or\n +\t\t\t// in case the last tab was removed the tab to the left.\n +\t\t\t// We check for more than 2 tabs, because if there are only 2,\n +\t\t\t// then when we remove this tab, there will only be one tab left\n +\t\t\t// so we don\'t need to detect which tab to activate.\n +\t\t\tif ( tab.hasClass( "ui-tabs-active" ) && this.anchors.length > 2 ) {\n +\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n +\t\t\t}\n +\n +\t\t\toptions.disabled = $.map(\n +\t\t\t\t$.grep( options.disabled, function( n ) {\n +\t\t\t\t\treturn n !== index;\n +\t\t\t\t}),\n +\t\t\t\tfunction( n ) {\n +\t\t\t\t\treturn n >= index ? --n : n;\n +\t\t\t\t});\n +\n +\t\t\tthis.refresh();\n +\n +\t\t\tthis._trigger( "remove", null, this._ui( tab.find( "a" )[ 0 ], panel[ 0 ] ) );\n +\t\t\treturn this;\n +\t\t}\n +\t});\n +\n +\t// length method\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\tlength: function() {\n +\t\t\treturn this.anchors.length;\n +\t\t}\n +\t});\n +\n +\t// panel ids (idPrefix option + title attribute)\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tidPrefix: "ui-tabs-"\n +\t\t},\n +\n +\t\t_tabId: function( tab ) {\n +\t\t\tvar a = tab.is( "li" ) ? tab.find( "a[href]" ) : tab;\n +\t\t\ta = a[0];\n +\t\t\treturn $( a ).closest( "li" ).attr( "aria-controls" ) ||\n +\t\t\t\ta.title && a.title.replace( /\\s/g, "_" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, "" ) ||\n +\t\t\t\tthis.options.idPrefix + getNextTabId();\n +\t\t}\n +\t});\n +\n +\t// _createPanel method\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tpanelTemplate: "<div></div>"\n +\t\t},\n +\n +\t\t_createPanel: function( id ) {\n +\t\t\treturn $( this.options.panelTemplate )\n +\t\t\t\t.attr( "id", id )\n +\t\t\t\t.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )\n +\t\t\t\t.data( "ui-tabs-destroy", true );\n +\t\t}\n +\t});\n +\n +\t// selected option\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\t_create: function() {\n +\t\t\tvar options = this.options;\n +\t\t\tif ( options.active === null && options.selected !== undefined ) {\n +\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n +\t\t\t}\n +\t\t\tthis._super();\n +\t\t\toptions.selected = options.active;\n +\t\t\tif ( options.selected === false ) {\n +\t\t\t\toptions.selected = -1;\n +\t\t\t}\n +\t\t},\n +\n +\t\t_setOption: function( key, value ) {\n +\t\t\tif ( key !== "selected" ) {\n +\t\t\t\treturn this._super( key, value );\n +\t\t\t}\n +\n +\t\t\tvar options = this.options;\n +\t\t\tthis._super( "active", value === -1 ? false : value );\n +\t\t\toptions.selected = options.active;\n +\t\t\tif ( options.selected === false ) {\n +\t\t\t\toptions.selected = -1;\n +\t\t\t}\n +\t\t},\n +\n +\t\t_eventHandler: function() {\n +\t\t\tthis._superApply( arguments );\n +\t\t\tthis.options.selected = this.options.active;\n +\t\t\tif ( this.options.selected === false ) {\n +\t\t\t\tthis.options.selected = -1;\n +\t\t\t}\n +\t\t}\n +\t});\n +\n +\t// show and select event\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tshow: null,\n +\t\t\tselect: null\n +\t\t},\n +\t\t_create: function() {\n +\t\t\tthis._super();\n +\t\t\tif ( this.options.active !== false ) {\n +\t\t\t\tthis._trigger( "show", null, this._ui(\n +\t\t\t\t\tthis.active.find( ".ui-tabs-anchor" )[ 0 ],\n +\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n +\t\t\t}\n +\t\t},\n +\t\t_trigger: function( type, event, data ) {\n +\t\t\tvar tab, panel,\n +\t\t\t\tret = this._superApply( arguments );\n +\n +\t\t\tif ( !ret ) {\n +\t\t\t\treturn false;\n +\t\t\t}\n +\n +\t\t\tif ( type === "beforeActivate" ) {\n +\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n +\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n +\t\t\t\tret = this._super( "select", event, {\n +\t\t\t\t\ttab: tab.find( ".ui-tabs-anchor" )[ 0],\n +\t\t\t\t\tpanel: panel[ 0 ],\n +\t\t\t\t\tindex: tab.closest( "li" ).index()\n +\t\t\t\t});\n +\t\t\t} else if ( type === "activate" && data.newTab.length ) {\n +\t\t\t\tret = this._super( "show", event, {\n +\t\t\t\t\ttab: data.newTab.find( ".ui-tabs-anchor" )[ 0 ],\n +\t\t\t\t\tpanel: data.newPanel[ 0 ],\n +\t\t\t\t\tindex: data.newTab.closest( "li" ).index()\n +\t\t\t\t});\n +\t\t\t}\n +\t\t\treturn ret;\n +\t\t}\n +\t});\n +\n +\t// select method\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\tselect: function( index ) {\n +\t\t\tindex = this._getIndex( index );\n +\t\t\tif ( index === -1 ) {\n +\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n +\t\t\t\t\tindex = this.options.selected;\n +\t\t\t\t} else {\n +\t\t\t\t\treturn;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n +\t\t}\n +\t});\n +\n +\t// cookie option\n +\t(function() {\n +\n +\tvar listId = 0;\n +\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tcookie: null // e.g. { expires: 7, path: \'/\', domain: \'jquery.com\', secure: true }\n +\t\t},\n +\t\t_create: function() {\n +\t\t\tvar options = this.options,\n +\t\t\t\tactive;\n +\t\t\tif ( options.active == null && options.cookie ) {\n +\t\t\t\tactive = parseInt( this._cookie(), 10 );\n +\t\t\t\tif ( active === -1 ) {\n +\t\t\t\t\tactive = false;\n +\t\t\t\t}\n +\t\t\t\toptions.active = active;\n +\t\t\t}\n +\t\t\tthis._super();\n +\t\t},\n +\t\t_cookie: function( active ) {\n +\t\t\tvar cookie = [ this.cookie ||\n +\t\t\t\t( this.cookie = this.options.cookie.name || "ui-tabs-" + (++listId) ) ];\n +\t\t\tif ( arguments.length ) {\n +\t\t\t\tcookie.push( active === false ? -1 : active );\n +\t\t\t\tcookie.push( this.options.cookie );\n +\t\t\t}\n +\t\t\treturn $.cookie.apply( null, cookie );\n +\t\t},\n +\t\t_refresh: function() {\n +\t\t\tthis._super();\n +\t\t\tif ( this.options.cookie ) {\n +\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n +\t\t\t}\n +\t\t},\n +\t\t_eventHandler: function() {\n +\t\t\tthis._superApply( arguments );\n +\t\t\tif ( this.options.cookie ) {\n +\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n +\t\t\t}\n +\t\t},\n +\t\t_destroy: function() {\n +\t\t\tthis._super();\n +\t\t\tif ( this.options.cookie ) {\n +\t\t\t\tthis._cookie( null, this.options.cookie );\n +\t\t\t}\n +\t\t}\n +\t});\n +\n +\t})();\n +\n +\t// load event\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\t_trigger: function( type, event, data ) {\n +\t\t\tvar _data = $.extend( {}, data );\n +\t\t\tif ( type === "load" ) {\n +\t\t\t\t_data.panel = _data.panel[ 0 ];\n +\t\t\t\t_data.tab = _data.tab.find( ".ui-tabs-anchor" )[ 0 ];\n +\t\t\t}\n +\t\t\treturn this._super( type, event, _data );\n +\t\t}\n +\t});\n +\n +\t// fx option\n +\t// The new animation options (show, hide) conflict with the old show callback.\n +\t// The old fx option wins over show/hide anyway (always favor back-compat).\n +\t// If a user wants to use the new animation API, they must give up the old API.\n +\t$.widget( "ui.tabs", $.ui.tabs, {\n +\t\toptions: {\n +\t\t\tfx: null // e.g. { height: "toggle", opacity: "toggle", duration: 200 }\n +\t\t},\n +\n +\t\t_getFx: function() {\n +\t\t\tvar hide, show,\n +\t\t\t\tfx = this.options.fx;\n +\n +\t\t\tif ( fx ) {\n +\t\t\t\tif ( $.isArray( fx ) ) {\n +\t\t\t\t\thide = fx[ 0 ];\n +\t\t\t\t\tshow = fx[ 1 ];\n +\t\t\t\t} else {\n +\t\t\t\t\thide = show = fx;\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\treturn fx ? { show: show, hide: hide } : null;\n +\t\t},\n +\n +\t\t_toggle: function( event, eventData ) {\n +\t\t\tvar that = this,\n +\t\t\t\ttoShow = eventData.newPanel,\n +\t\t\t\ttoHide = eventData.oldPanel,\n +\t\t\t\tfx = this._getFx();\n +\n +\t\t\tif ( !fx ) {\n +\t\t\t\treturn this._super( event, eventData );\n +\t\t\t}\n +\n +\t\t\tthat.running = true;\n +\n +\t\t\tfunction complete() {\n +\t\t\t\tthat.running = false;\n +\t\t\t\tthat._trigger( "activate", event, eventData );\n +\t\t\t}\n +\n +\t\t\tfunction show() {\n +\t\t\t\teventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );\n +\n +\t\t\t\tif ( toShow.length && fx.show ) {\n +\t\t\t\t\ttoShow\n +\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n +\t\t\t\t\t\t\tcomplete();\n +\t\t\t\t\t\t});\n +\t\t\t\t} else {\n +\t\t\t\t\ttoShow.show();\n +\t\t\t\t\tcomplete();\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// start out by hiding, then showing, then completing\n +\t\t\tif ( toHide.length && fx.hide ) {\n +\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n +\t\t\t\t\teventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );\n +\t\t\t\t\tshow();\n +\t\t\t\t});\n +\t\t\t} else {\n +\t\t\t\teventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );\n +\t\t\t\ttoHide.hide();\n +\t\t\t\tshow();\n +\t\t\t}\n +\t\t}\n +\t});\n +}\n +\n +})( jQuery );\n +(function( $ ) {\n +\n +var incr + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +ements = 0;\n +\n +function addDescribedBy( elem, id ) {\n +\tvar describedby = (elem.attr( "aria-describedby" ) || "").split( /\\s+/ );\n +\tdescribedby.push( id );\n +\telem\n +\t\t.data( "ui-tooltip-id", id )\n +\t\t.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );\n +}\n +\n +function removeDescribedBy( elem ) {\n +\tvar id = elem.data( "ui-tooltip-id" ),\n +\t\tdescribedby = (elem.attr( "aria-describedby" ) || "").split( /\\s+/ ),\n +\t\tindex = $.inArray( id, describedby );\n +\tif ( index !== -1 ) {\n +\t\tdescribedby.splice( index, 1 );\n +\t}\n +\n +\telem.removeData( "ui-tooltip-id" );\n +\tdescribedby = $.trim( describedby.join( " " ) );\n +\tif ( describedby ) {\n +\t\telem.attr( "aria-describedby", describedby );\n +\t} else {\n +\t\telem.removeAttr( "aria-describedby" );\n +\t}\n +}\n +\n +$.widget( "ui.tooltip", {\n +\tversion: "1.9.2",\n +\toptions: {\n +\t\tcontent: function() {\n +\t\t\treturn $( this ).attr( "title" );\n +\t\t},\n +\t\thide: true,\n +\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n +\t\titems: "[title]:not([disabled])",\n +\t\tposition: {\n +\t\t\tmy: "left top+15",\n +\t\t\tat: "left bottom",\n +\t\t\tcollision: "flipfit flip"\n +\t\t},\n +\t\tshow: true,\n +\t\ttooltipClass: null,\n +\t\ttrack: false,\n +\n +\t\t// callbacks\n +\t\tclose: null,\n +\t\topen: null\n +\t},\n +\n +\t_create: function() {\n +\t\tthis._on({\n +\t\t\tmouseover: "open",\n +\t\t\tfocusin: "open"\n +\t\t});\n +\n +\t\t// IDs of generated tooltips, needed for destroy\n +\t\tthis.tooltips = {};\n +\t\t// IDs of parent tooltips where we removed the title attribute\n +\t\tthis.parents = {};\n +\n +\t\tif ( this.options.disabled ) {\n +\t\t\tthis._disable();\n +\t\t}\n +\t},\n +\n +\t_setOption: function( key, value ) {\n +\t\tvar that = this;\n +\n +\t\tif ( key === "disabled" ) {\n +\t\t\tthis[ value ? "_disable" : "_enable" ]();\n +\t\t\tthis.options[ key ] = value;\n +\t\t\t// disable element style changes\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tthis._super( key, value );\n +\n +\t\tif ( key === "content" ) {\n +\t\t\t$.each( this.tooltips, function( id, element ) {\n +\t\t\t\tthat._updateContent( element );\n +\t\t\t});\n +\t\t}\n +\t},\n +\n +\t_disable: function() {\n +\t\tvar that = this;\n +\n +\t\t// close open tooltips\n +\t\t$.each( this.tooltips, function( id, element ) {\n +\t\t\tvar event = $.Event( "blur" );\n +\t\t\tevent.target = event.currentTarget = element[0];\n +\t\t\tthat.close( event, true );\n +\t\t});\n +\n +\t\t// remove title attributes to prevent native tooltips\n +\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n +\t\t\tvar element = $( this );\n +\t\t\tif ( element.is( "[title]" ) ) {\n +\t\t\t\telement\n +\t\t\t\t\t.data( "ui-tooltip-title", element.attr( "title" ) )\n +\t\t\t\t\t.attr( "title", "" );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\t_enable: function() {\n +\t\t// restore title attributes\n +\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n +\t\t\tvar element = $( this );\n +\t\t\tif ( element.data( "ui-tooltip-title" ) ) {\n +\t\t\t\telement.attr( "title", element.data( "ui-tooltip-title" ) );\n +\t\t\t}\n +\t\t});\n +\t},\n +\n +\topen: function( event ) {\n +\t\tvar that = this,\n +\t\t\ttarget = $( event ? event.target : this.element )\n +\t\t\t\t// we need closest here due to mouseover bubbling,\n +\t\t\t\t// but always pointing at the same event target\n +\t\t\t\t.closest( this.options.items );\n +\n +\t\t// No element to show a tooltip for or the tooltip is already open\n +\t\tif ( !target.length || target.data( "ui-tooltip-id" ) ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\tif ( target.attr( "title" ) ) {\n +\t\t\ttarget.data( "ui-tooltip-title", target.attr( "title" ) );\n +\t\t}\n +\n +\t\ttarget.data( "ui-tooltip-open", true );\n +\n +\t\t// kill parent tooltips, custom or native, for hover\n +\t\tif ( event && event.type === "mouseover" ) {\n +\t\t\ttarget.parents().each(function() {\n +\t\t\t\tvar parent = $( this ),\n +\t\t\t\t\tblurEvent;\n +\t\t\t\tif ( parent.data( "ui-tooltip-open" ) ) {\n +\t\t\t\t\tblurEvent = $.Event( "blur" );\n +\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n +\t\t\t\t\tthat.close( blurEvent, true );\n +\t\t\t\t}\n +\t\t\t\tif ( parent.attr( "title" ) ) {\n +\t\t\t\t\tparent.uniqueId();\n +\t\t\t\t\tthat.parents[ this.id ] = {\n +\t\t\t\t\t\telement: this,\n +\t\t\t\t\t\ttitle: parent.attr( "title" )\n +\t\t\t\t\t};\n +\t\t\t\t\tparent.attr( "title", "" );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t}\n +\n +\t\tthis._updateContent( target, event );\n +\t},\n +\n +\t_updateContent: function( target, event ) {\n +\t\tvar content,\n +\t\t\tcontentOption = this.options.content,\n +\t\t\tthat = this,\n +\t\t\teventType = event ? event.type : null;\n +\n +\t\tif ( typeof contentOption === "string" ) {\n +\t\t\treturn this._open( event, target, contentOption );\n +\t\t}\n +\n +\t\tcontent = contentOption.call( target[0], function( response ) {\n +\t\t\t// ignore async response if tooltip was closed already\n +\t\t\tif ( !target.data( "ui-tooltip-open" ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\t// IE may instantly serve a cached response for ajax requests\n +\t\t\t// delay this call to _open so the other call to _open runs first\n +\t\t\tthat._delay(function() {\n +\t\t\t\t// jQuery creates a special event for focusin when it doesn\'t\n +\t\t\t\t// exist natively. To improve performance, the native event\n +\t\t\t\t// object is reused and the type is changed. Therefore, we can\'t\n +\t\t\t\t// rely on the type being correct after the event finished\n +\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n +\t\t\t\tif ( event ) {\n +\t\t\t\t\tevent.type = eventType;\n +\t\t\t\t}\n +\t\t\t\tthis._open( event, target, response );\n +\t\t\t});\n +\t\t});\n +\t\tif ( content ) {\n +\t\t\tthis._open( event, target, content );\n +\t\t}\n +\t},\n +\n +\t_open: function( event, target, content ) {\n +\t\tvar tooltip, events, delayedShow,\n +\t\t\tpositionOption = $.extend( {}, this.options.position );\n +\n +\t\tif ( !content ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// Content can be updated multiple times. If the tooltip already\n +\t\t// exists, then just update the content and bail.\n +\t\ttooltip = this._find( target );\n +\t\tif ( tooltip.length ) {\n +\t\t\ttooltip.find( ".ui-tooltip-content" ).html( content );\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// if we have a title, clear it to prevent the native tooltip\n +\t\t// we have to check first to avoid defining a title if none exists\n +\t\t// (we don\'t want to cause an element to start matching [title])\n +\t\t//\n +\t\t// We use removeAttr only for key events, to allow IE to export the correct\n +\t\t// accessible attributes. For mouse events, set to empty string to avoid\n +\t\t// native tooltip showing up (happens only when removing inside mouseover).\n +\t\tif ( target.is( "[title]" ) ) {\n +\t\t\tif ( event && event.type === "mouseover" ) {\n +\t\t\t\ttarget.attr( "title", "" );\n +\t\t\t} else {\n +\t\t\t\ttarget.removeAttr( "title" );\n +\t\t\t}\n +\t\t}\n +\n +\t\ttooltip = this._tooltip( target );\n +\t\taddDescribedBy( target, tooltip.attr( "id" ) );\n +\t\ttooltip.find( ".ui-tooltip-content" ).html( content );\n +\n +\t\tfunction position( event ) {\n +\t\t\tpositionOption.of = event;\n +\t\t\tif ( tooltip.is( ":hidden" ) ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\ttooltip.position( positionOption );\n +\t\t}\n +\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n +\t\t\tthis._on( this.document, {\n +\t\t\t\tmousemove: position\n +\t\t\t});\n +\t\t\t// trigger once to override element-relative positioning\n +\t\t\tposition( event );\n +\t\t} else {\n +\t\t\ttooltip.position( $.extend({\n +\t\t\t\tof: target\n +\t\t\t}, this.options.position ) );\n +\t\t}\n +\n +\t\ttooltip.hide();\n +\n +\t\tthis._show( tooltip, this.options.show );\n +\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n +\t\t// as the tooltip is visible, position the tooltip using the most recent\n +\t\t// event.\n +\t\tif ( this.options.show && this.options.show.delay ) {\n +\t\t\tdelayedShow = setInterval(function() {\n +\t\t\t\tif ( tooltip.is( ":visible" ) ) {\n +\t\t\t\t\tposition( positionOption.of );\n +\t\t\t\t\tclearInterval( delayedShow );\n +\t\t\t\t}\n +\t\t\t}, $.fx.interval );\n +\t\t}\n +\n +\t\tthis._trigger( "open", event, { tooltip: tooltip } );\n +\n +\t\tevents = {\n +\t\t\tkeyup: function( event ) {\n +\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n +\t\t\t\t\tvar fakeEvent = $.Event(event);\n +\t\t\t\t\tfakeEvent.currentTarget = target[0];\n +\t\t\t\t\tthis.close( fakeEvent, true );\n +\t\t\t\t}\n +\t\t\t},\n +\t\t\tremove: function() {\n +\t\t\t\tthis._removeTooltip( tooltip );\n +\t\t\t}\n +\t\t};\n +\t\tif ( !event || event.type === "mouseover" ) {\n +\t\t\tevents.mouseleave = "close";\n +\t\t}\n +\t\tif ( !event || event.type === "focusin" ) {\n +\t\t\tevents.focusout = "close";\n +\t\t}\n +\t\tthis._on( true, target, events );\n +\t},\n +\n +\tclose: function( event ) {\n +\t\tvar that = this,\n +\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n +\t\t\ttooltip = this._find( target );\n +\n +\t\t// disabling closes the tooltip, so we need to track when we\'re closing\n +\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n +\t\tif ( this.closing ) {\n +\t\t\treturn;\n +\t\t}\n +\n +\t\t// only set title if we had one before (see comment in _open())\n +\t\tif ( target.data( "ui-tooltip-title" ) ) {\n +\t\t\ttarget.attr( "title", target.data( "ui-tooltip-title" ) );\n +\t\t}\n +\n +\t\tremoveDescribedBy( target );\n +\n +\t\ttooltip.stop( true );\n +\t\tthis._hide( tooltip, this.options.hide, function() {\n +\t\t\tthat._removeTooltip( $( this ) );\n +\t\t});\n +\n +\t\ttarget.removeData( "ui-tooltip-open" );\n +\t\tthis._off( target, "mouseleave focusout keyup" );\n +\t\t// Remove \'remove\' binding only on delegated targets\n +\t\tif ( target[0] !== this.element[0] ) {\n +\t\t\tthis._off( target, "remove" );\n +\t\t}\n +\t\tthis._off( this.document, "mousemove" );\n +\n +\t\tif ( event && event.type === "mouseleave" ) {\n +\t\t\t$.each( this.parents, function( id, parent ) {\n +\t\t\t\t$( parent.element ).attr( "title", parent.title );\n +\t\t\t\tdelete that.parents[ id ];\n +\t\t\t});\n +\t\t}\n +\n +\t\tthis.closing = true;\n +\t\tthis._trigger( "close", event, { tooltip: tooltip } );\n +\t\tthis.closing = false;\n +\t},\n +\n +\t_tooltip: function( element ) {\n +\t\tvar id = "ui-tooltip-" + increments++,\n +\t\t\ttooltip = $( "<div>" )\n +\t\t\t\t.attr({\n +\t\t\t\t\tid: id,\n +\t\t\t\t\trole: "tooltip"\n +\t\t\t\t})\n +\t\t\t\t.addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +\n +\t\t\t\t\t( this.options.tooltipClass || "" ) );\n +\t\t$( "<div>" )\n +\t\t\t.addClass( "ui-tooltip-content" )\n +\t\t\t.appendTo( tooltip );\n +\t\ttooltip.appendTo( this.document[0].body );\n +\t\tif ( $.fn.bgiframe ) {\n +\t\t\ttooltip.bgiframe();\n +\t\t}\n +\t\tthis.tooltips[ id ] = element;\n +\t\treturn tooltip;\n +\t},\n +\n +\t_find: function( target ) {\n +\t\tvar id = target.data( "ui-tooltip-id" );\n +\t\treturn id ? $( "#" + id ) : $();\n +\t},\n +\n +\t_removeTooltip: function( tooltip ) {\n +\t\ttooltip.remove();\n +\t\tdelete this.tooltips[ tooltip.attr( "id" ) ];\n +\t},\n +\n +\t_destroy: function() {\n +\t\tvar that = this;\n +\n +\t\t// close open tooltips\n +\t\t$.each( this.tooltips, function( id, element ) {\n +\t\t\t// Delegate to close method to handle common cleanup\n +\t\t\tvar event = $.Event( "blur" );\n +\t\t\tevent.target = event.currentTarget = element[0];\n +\t\t\tthat.close( event, true );\n +\n +\t\t\t// Remove immediately; destroying an open tooltip doesn\'t use the\n +\t\t\t// hide animation\n +\t\t\t$( "#" + id ).remove();\n +\n +\t\t\t// Restore the title\n +\t\t\tif ( element.data( "ui-tooltip-title" ) ) {\n +\t\t\t\telement.attr( "title", element.data( "ui-tooltip-title" ) );\n +\t\t\t\telement.removeData( "ui-tooltip-title" );\n +\t\t\t}\n +\t\t});\n +\t}\n +});\n +\n +}( jQuery ) );\n +;(jQuery.effects || (function($, undefined) {\n +\n +var backCompat = $.uiBackCompat !== false,\n +\t// prefix used for storing data on .data()\n +\tdataSpace = "ui-effects-";\n +\n +$.effects = {\n +\teffect: {}\n +};\n +\n +/*!\n + * jQuery Color Animations v2.0.0\n + * http://jquery.com/\n *\n - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n - * Dual licensed under the MIT or GPL Version 2 licenses.\n + * Copyright 2012 jQuery Foundation and other contributors\n + * Released under the MIT license.\n * http://jquery.org/license\n *\n - * http://docs.jquery.com/UI/Effects/Transfer\n - *\n - * Depends:\n - *\tjquery.effects.core.js\n - */(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a(\'<div class="ui-effects-transfer"></div>\').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery); + * Date: Mon Aug 13 13:41:02 2012 -0500\n + */\n +(function( jQuery, undefined ) {\n +\n +\tvar stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),\n +\n +\t// plusequals test for += 100 -= 100\n +\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n +\t// a set of RE\'s that can match strings and generate color tuples.\n +\tstringParsers = [{\n +\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n +\t\t\tparse: function( execResult ) {\n +\t\t\t\treturn [\n +\t\t\t\t\texecResult[ 1 ],\n +\t\t\t\t\texecResult[ 2 ],\n +\t\t\t\t\texecResult[ 3 ],\n +\t\t\t\t\texecResult[ 4 ]\n +\t\t\t\t];\n +\t\t\t}\n +\t\t}, {\n +\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n +\t\t\tparse: function( execResult ) {\n +\t\t\t\treturn [\n +\t\t\t\t\texecResult[ 1 ] * 2.55,\n +\t\t\t\t\texecResult[ 2 ] * 2.55,\n +\t\t\t\t\texecResult[ 3 ] * 2.55,\n +\t\t\t\t\texecResult[ 4 ]\n +\t\t\t\t];\n +\t\t\t}\n +\t\t}, {\n +\t\t\t// this regex ignores A-F because it\'s compared against an already lowercased string\n +\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n +\t\t\tparse: function( execResult ) {\n +\t\t\t\treturn [\n +\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n +\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n +\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n +\t\t\t\t];\n +\t\t\t}\n +\t\t}, {\n +\t\t\t// this regex ignores A-F because it\'s compared against an already lowercased string\n +\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n +\t\t\tparse: function( execResult ) {\n +\t\t\t\treturn [\n +\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n +\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n +\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n +\t\t\t\t];\n +\t\t\t}\n +\t\t}, {\n +\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n +\t\t\tspace: "hsla",\n +\t\t\tparse: function( execResult ) {\n +\t\t\t\treturn [\n +\t\t\t\t\texecResult[ 1 ],\n +\t\t\t\t\texecResult[ 2 ] / 100,\n +\t\t\t\t\texecResult[ 3 ] / 100,\n +\t\t\t\t\texecResult[ 4 ]\n +\t\t\t\t];\n +\t\t\t}\n +\t\t}],\n +\n +\t// jQuery.Color( )\n +\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n +\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n +\t},\n +\tspaces = {\n +\t\trgba: {\n +\t\t\tprops: {\n +\t\t\t\tred: {\n +\t\t\t\t\tidx: 0,\n +\t\t\t\t\ttype: "byte"\n +\t\t\t\t},\n +\t\t\t\tgreen: {\n +\t\t\t\t\tidx: 1,\n +\t\t\t\t\ttype: "byte"\n +\t\t\t\t},\n +\t\t\t\tblue: {\n +\t\t\t\t\tidx: 2,\n +\t\t\t\t\ttype: "byte"\n +\t\t\t\t}\n +\t\t\t}\n +\t\t},\n +\n +\t\thsla: {\n +\t\t\tprops: {\n +\t\t\t\thue: {\n +\t\t\t\t\tidx: 0,\n +\t\t\t\t\ttype: "degrees"\n +\t\t\t\t},\n +\t\t\t\tsaturation: {\n +\t\t\t\t\tidx: 1,\n +\t\t\t\t\ttype: "percent"\n +\t\t\t\t},\n +\t\t\t\tlightness: {\n +\t\t\t\t\tidx: 2,\n +\t\t\t\t\ttype: "percent"\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t},\n +\tpropTypes = {\n +\t\t"byte": {\n +\t\t\tfloor: true,\n +\t\t\tmax: 255\n +\t\t},\n +\t\t"percent": {\n +\t\t\tmax: 1\n +\t\t},\n +\t\t"degrees": {\n +\t\t\tmod: 360,\n +\t\t\tfloor: true\n +\t\t}\n +\t},\n +\tsupport = color.support = {},\n +\n +\t// element for support tests\n +\tsupportElem = jQuery( "<p>" )[ 0 ],\n +\n +\t// colors = jQuery.Color.names\n +\tcolors,\n +\n +\t// local aliases of functions called often\n +\teach = jQuery.each;\n +\n +// determine rgba support immediately\n +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";\n +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;\n +\n +// define cache name and alpha properties\n +// for rgba and hsla spaces\n +each( spaces, function( spaceName, space ) {\n +\tspace.cache = "_" + spaceName;\n +\tspace.props.alpha = {\n +\t\tidx: 3,\n +\t\ttype: "percent",\n +\t\tdef: 1\n +\t};\n +});\n +\n +function clamp( value, prop, allowEmpty ) {\n +\tvar type = propTypes[ prop.type ] || {};\n +\n +\tif ( value == null ) {\n +\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n +\t}\n +\n +\t// ~~ is an short way of doing floor for positive numbers\n +\tvalue = type.floor ? ~~value : parseFloat( value );\n +\n +\t// IE will pass in empty strings as value for alpha,\n +\t// which will hit this case\n +\tif ( isNaN( value ) ) {\n +\t\treturn prop.def;\n +\t}\n +\n +\tif ( type.mod ) {\n +\t\t// we add mod before modding to make sure that negatives values\n +\t\t// get converted properly: -10 -> 350\n +\t\treturn (value + type.mod) % type.mod;\n +\t}\n +\n +\t// for now all property types without mod have min and max\n +\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n +}\n +\n +function stringParse( string ) {\n +\tvar inst = color(),\n +\t\trgba = inst._rgba = [];\n +\n +\tstring = string.toLowerCase();\n +\n +\teach( stringParsers, function( i, parser ) {\n +\t\tvar parsed,\n +\t\t\tmatch = parser.re.exec( string ),\n +\t\t\tvalues = match && parser.parse( match ),\n +\t\t\tspaceName = parser.space || "rgba";\n +\n +\t\tif ( values ) {\n +\t\t\tparsed = inst[ spaceName ]( values );\n +\n +\t\t\t// if this was an rgba parse the assignment might happen twice\n +\t\t\t// oh well....\n +\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n +\t\t\trgba = inst._rgba = parsed._rgba;\n +\n +\t\t\t// exit each( stringParsers ) here because we matched\n +\t\t\treturn false;\n +\t\t}\n +\t});\n +\n +\t// Found a stringParser that handled it\n +\tif ( rgba.length ) {\n +\n +\t\t// if this came from a parsed string, force "transparent" when alpha is 0\n +\t\t// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)\n +\t\tif ( rgba.join() === "0,0,0,0" ) {\n +\t\t\tjQuery.extend( rgba, colors.transparent );\n +\t\t}\n +\t\treturn inst;\n +\t}\n +\n +\t// named colors\n +\treturn colors[ string ];\n +}\n +\n +color.fn = jQuery.extend( color.prototype, {\n +\tparse: function( red, green, blue, alpha ) {\n +\t\tif ( red === undefined ) {\n +\t\t\tthis._rgba = [ null, null, null, null ];\n +\t\t\treturn this;\n +\t\t}\n +\t\tif ( red.jquery || red.nodeType ) {\n +\t\t\tred = jQuery( red ).css( green );\n +\t\t\tgreen = undefined;\n +\t\t}\n +\n +\t\tvar inst = this,\n +\t\t\ttype = jQuery.type( red ),\n +\t\t\trgba = this._rgba = [];\n +\n +\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n +\t\tif ( green !== undefined ) {\n +\t\t\tred = [ red, green, blue, alpha ];\n +\t\t\ttype = "array";\n +\t\t}\n +\n +\t\tif ( type === "string" ) {\n +\t\t\treturn this.parse( stringParse( red ) || colors._default );\n +\t\t}\n +\n +\t\tif ( type === "array" ) {\n +\t\t\teach( spaces.rgba.props, function( key, prop ) {\n +\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n +\t\t\t});\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tif ( type === "object" ) {\n +\t\t\tif ( red instanceof color ) {\n +\t\t\t\teach( spaces, function( spaceName, space ) {\n +\t\t\t\t\tif ( red[ space.cache ] ) {\n +\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t} else {\n +\t\t\t\teach( spaces, function( spaceName, space ) {\n +\t\t\t\t\tvar cache = space.cache;\n +\t\t\t\t\teach( space.props, function( key, prop ) {\n +\n +\t\t\t\t\t\t// if the cache doesn\'t exist, and we know how to convert\n +\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n +\n +\t\t\t\t\t\t\t// if the value was null, we don\'t need to copy it\n +\t\t\t\t\t\t\t// if the key was alpha, we don\'t need to copy it either\n +\t\t\t\t\t\t\tif ( key === "alpha" || red[ key ] == null ) {\n +\t\t\t\t\t\t\t\treturn;\n +\t\t\t\t\t\t\t}\n +\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n +\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n +\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n +\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n +\t\t\t\t\t});\n +\n +\t\t\t\t\t// everything defined but alpha?\n +\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n +\t\t\t\t\t\t// use the default of 1\n +\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n +\t\t\t\t\t\tif ( space.from ) {\n +\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t\treturn this;\n +\t\t}\n +\t},\n +\tis: function( compare ) {\n +\t\tvar is = color( compare ),\n +\t\t\tsame = true,\n +\t\t\tinst = this;\n +\n +\t\teach( spaces, function( _, space ) {\n +\t\t\tvar localCache,\n +\t\t\t\tisCache = is[ space.cache ];\n +\t\t\tif (isCache) {\n +\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n +\t\t\t\teach( space.props, function( _, prop ) {\n +\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n +\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n +\t\t\t\t\t\treturn same;\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t\treturn same;\n +\t\t});\n +\t\treturn same;\n +\t},\n +\t_space: function() {\n +\t\tvar used = [],\n +\t\t\tinst = this;\n +\t\teach( spaces, function( spaceName, space ) {\n +\t\t\tif ( inst[ space.cache ] ) {\n +\t\t\t\tused.push( spaceName );\n +\t\t\t}\n +\t\t});\n +\t\treturn used.pop();\n +\t},\n +\ttransition: function( other, distance ) {\n +\t\tvar end = color( other ),\n +\t\t\tspaceName = end._space(),\n +\t\t\tspace = spaces[ spaceName ],\n +\t\t\tstartColor = this.alpha() === 0 ? color( "transparent" ) : this,\n +\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n +\t\t\tresult = start.slice();\n +\n +\t\tend = end[ space.cache ];\n +\t\teach( space.props, function( key, prop ) {\n +\t\t\tvar index = prop.idx,\n +\t\t\t\tstartValue = start[ index ],\n +\t\t\t\tendValue = end[ index ],\n +\t\t\t\ttype = propTypes[ prop.type ] || {};\n +\n +\t\t\t// if null, don\'t override start value\n +\t\t\tif ( endValue === null ) {\n +\t\t\t\treturn;\n +\t\t\t}\n +\t\t\t// if null - use end\n +\t\t\tif ( startValue === null ) {\n +\t\t\t\tresult[ index ] = endValue;\n +\t\t\t} else {\n +\t\t\t\tif ( type.mod ) {\n +\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n +\t\t\t\t\t\tstartValue += type.mod;\n +\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n +\t\t\t\t\t\tstartValue -= type.mod;\n +\t\t\t\t\t}\n +\t\t\t\t}\n +\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n +\t\t\t}\n +\t\t});\n +\t\treturn this[ spaceName ]( result );\n +\t},\n +\tblend: function( opaque ) {\n +\t\t// if we are already opaque - return ourself\n +\t\tif ( this._rgba[ 3 ] === 1 ) {\n +\t\t\treturn this;\n +\t\t}\n +\n +\t\tvar rgb = this._rgba.slice(),\n +\t\t\ta = rgb.pop(),\n +\t\t\tblend = color( opaque )._rgba;\n +\n +\t\treturn color( jQuery.map( rgb, function( v, i ) {\n +\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n +\t\t}));\n +\t},\n +\ttoRgbaString: function() {\n +\t\tvar prefix = "rgba(",\n +\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n +\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n +\t\t\t});\n +\n +\t\tif ( rgba[ 3 ] === 1 ) {\n +\t\t\trgba.pop();\n +\t\t\tprefix = "rgb(";\n +\t\t}\n +\n +\t\treturn prefix + rgba.join() + ")";\n +\t},\n +\ttoHslaString: function() {\n +\t\tvar prefix = "hsla(",\n +\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n +\t\t\t\tif ( v == null ) {\n +\t\t\t\t\tv = i > 2 ? 1 : 0;\n +\t\t\t\t}\n +\n +\t\t\t\t// catch 1 and 2\n +\t\t\t\tif ( i && i < 3 ) {\n +\t\t\t\t\tv = Math.round( v * 100 ) + "%";\n +\t\t\t\t}\n +\t\t\t\treturn v;\n +\t\t\t});\n +\n +\t\tif ( hsla[ 3 ] === 1 ) {\n +\t\t\thsla.pop();\n +\t\t\tprefix = "hsl(";\n +\t\t}\n +\t\treturn prefix + hsla.join() + ")";\n +\t},\n +\ttoHexString: function( includeAlpha ) {\n +\t\tvar rgba = this._rgba.slice(),\n +\t\t\talpha = rgba.pop();\n +\n +\t\tif ( includeAlpha ) {\n +\t\t\trgba.push( ~~( alpha * 255 ) );\n +\t\t}\n +\n +\t\treturn "#" + jQuery.map( rgba, function( v ) {\n +\n +\t\t\t// default to 0 when nulls exist\n +\t\t\tv = ( v || 0 ).toString( 16 );\n +\t\t\treturn v.length === 1 ? "0" + v : v;\n +\t\t}).join("");\n +\t},\n +\ttoString: function() {\n +\t\treturn this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();\n +\t}\n +});\n +color.fn.parse.prototype = color.fn;\n +\n +// hsla conversions adapted from:\n +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n +\n +function hue2rgb( p, q, h ) {\n +\th = ( h + 1 ) % 1;\n +\tif ( h * 6 < 1 ) {\n +\t\treturn p + (q - p) * h * 6;\n +\t}\n +\tif ( h * 2 < 1) {\n +\t\treturn q;\n +\t}\n +\tif ( h * 3 < 2 ) {\n +\t\treturn p + (q - p) * ((2/3) - h) * 6;\n +\t}\n +\treturn p;\n +}\n +\n +spaces.hsla.to = function ( rgba ) {\n +\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n +\t\treturn [ null, null, null, rgba[ 3 ] ];\n +\t}\n +\tvar r = rgba[ 0 ] / 255,\n +\t\tg = rgba[ 1 ] / 255,\n +\t\tb = rgba[ 2 ] / 255,\n +\t\ta = rgba[ 3 ],\n +\t\tmax = Math.max( r, g, b ),\n +\t\tmin = Math.min( r, g, b ),\n +\t\tdiff = max - min,\n +\t\tadd = max + min,\n +\t\tl = add * 0.5,\n +\t\th, s;\n +\n +\tif ( min === max ) {\n +\t\th = 0;\n +\t} else if ( r === max ) {\n +\t\th = ( 60 * ( g - b ) / diff ) + 360;\n +\t} else if ( g === max ) {\n +\t\th = ( 60 * ( b - r ) / diff ) + 120;\n +\t} else {\n +\t\th = ( 60 * ( r - g ) / diff ) + 240;\n +\t}\n +\n +\tif ( l === 0 || l === 1 ) {\n +\t\ts = l;\n +\t} else if ( l <= 0.5 ) {\n +\t\ts = diff / add;\n +\t} else {\n +\t\ts = diff / ( 2 - add );\n +\t}\n +\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n +};\n +\n +spaces.hsla.from = function ( hsla ) {\n +\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n +\t\treturn [ null, null, null, hsla[ 3 ] ];\n +\t}\n +\tvar h = hsla[ 0 ] / 360,\n +\t\ts = hsla[ 1 ],\n +\t\tl = hsla[ 2 ],\n +\t\ta = hsla[ 3 ],\n +\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n +\t\tp = 2 * l - q;\n +\n +\treturn [\n +\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n +\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n +\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n +\t\ta\n +\t];\n +};\n +\n +\n +each( spaces, function( spaceName, space ) {\n +\tvar props = space.props,\n +\t\tcache = space.cache,\n +\t\tto = space.to,\n +\t\tfrom = space.from;\n +\n +\t// makes rgba() and hsla()\n +\tcolor.fn[ spaceName ] = function( value ) {\n +\n +\t\t// generate a cache for this space if it doesn\'t exist\n +\t\tif ( to && !this[ cache ] ) {\n +\t\t\tthis[ cache ] = to( this._rgba );\n +\t\t}\n +\t\tif ( value === undefined ) {\n +\t\t\treturn this[ cache ].slice();\n +\t\t}\n +\n +\t\tvar ret,\n +\t\t\ttype = jQuery.type( value ),\n +\t\t\tarr = ( type === "array" || type === "object" ) ? value : arguments,\n +\t\t\tlocal = this[ cache ].slice();\n +\n +\t\teach( props, function( key, prop ) {\n +\t\t\tvar val = arr[ type === "object" ? key : prop.idx ];\n +\t\t\tif ( val == null ) {\n +\t\t\t\tval = local[ prop.idx ];\n +\t\t\t}\n +\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n +\t\t});\n +\n +\t\tif ( from ) {\n +\t\t\tret = color( from( local ) );\n +\t\t\tret[ cache ] = local;\n +\t\t\treturn ret;\n +\t\t} else {\n +\t\t\treturn color( local );\n +\t\t}\n +\t};\n +\n +\t// makes red() green() blue() alpha() hue() saturation() lightness()\n +\teach( props, function( key, prop ) {\n +\t\t// alpha is included in more than one space\n +\t\tif ( color.fn[ key ] ) {\n +\t\t\treturn;\n +\t\t}\n +\t\tcolor.fn[ key ] = function( value ) {\n +\t\t\tvar vtype = jQuery.type( value ),\n +\t\t\t\tfn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),\n +\t\t\t\tlocal = this[ fn ](),\n +\t\t\t\tcur = local[ prop.idx ],\n +\t\t\t\tmatch;\n +\n +\t\t\tif ( vtype === "undefined" ) {\n +\t\t\t\treturn cur;\n +\t\t\t}\n +\n +\t\t\tif ( vtype === "function" ) {\n +\t\t\t\tvalue = value.call( this, cur );\n +\t\t\t\tvtype = jQuery.type( value );\n +\t\t\t}\n +\t\t\tif ( value == null && prop.empty ) {\n +\t\t\t\treturn this;\n +\t\t\t}\n +\t\t\tif ( vtype === "string" ) {\n +\t\t\t\tmatch = rplusequals.exec( value );\n +\t\t\t\tif ( match ) {\n +\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );\n +\t\t\t\t}\n +\t\t\t}\n +\t\t\tlocal[ prop.idx ] = value;\n +\t\t\treturn this[ fn ]( local );\n +\t\t};\n +\t});\n +});\n +\n +// add .fx.step functions\n +each( stepHooks, function( i, hook ) {\n +\tjQuery.cssHooks[ hook ] = {\n +\t\tset: function( elem, value ) {\n +\t\t\tvar parsed, curElem,\n +\t\t\t\tbackgroundColor = "";\n +\n +\t\t\tif ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) {\n +\t\t\t\tvalue = color( parsed || value );\n +\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n +\t\t\t\t\tcurElem = hook === "backgroundColor" ? elem.parentNode : elem;\n +\t\t\t\t\twhile (\n +\t\t\t\t\t\t(backgroundColor === "" || backgroundColor === "transparent") &&\n +\t\t\t\t\t\tcurElem && curElem.style\n +\t\t\t\t\t) {\n +\t\t\t\t\t\ttry {\n +\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, "backgroundColor" );\n +\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n +\t\t\t\t\t\t} catch ( e ) {\n +\t\t\t\t\t\t}\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== "transparent" ?\n +\t\t\t\t\t\tbackgroundColor :\n +\t\t\t\t\t\t"_default" );\n +\t\t\t\t}\n +\n +\t\t\t\tvalue = value.toRgbaString();\n +\t\t\t}\n +\t\t\ttry {\n +\t\t\t\telem.style[ hook ] = value;\n +\t\t\t} catch( error ) {\n +\t\t\t\t// wrapped to prevent IE from throwing errors on "invalid" values like \'auto\' or \'inherit\'\n +\t\t\t}\n +\t\t}\n +\t};\n +\tjQuery.fx.step[ hook ] = function( fx ) {\n +\t\tif ( !fx.colorInit ) {\n +\t\t\tfx.start = color( fx.elem, hook );\n +\t\t\tfx.end = color( fx.end );\n +\t\t\tfx.colorInit = true;\n +\t\t}\n +\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n +\t};\n +});\n +\n +jQuery.cssHooks.borderColor = {\n +\texpand: function( value ) {\n +\t\tvar expanded = {};\n +\n +\t\teach( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {\n +\t\t\texpanded[ "border" + part + "Color" ] = value;\n +\t\t});\n +\t\treturn expanded;\n +\t}\n +};\n +\n +// Basic color names only.\n +// Usage of any of the other color names requires adding yourself or including\n +// jquery.color.svg-names.js.\n +colors = jQuery.Color.names = {\n +\t// 4.1. Basic color keywords\n +\taqua: "#00ffff",\n +\tblack: "#000000",\n +\tblue: "#0000ff",\n +\tfuchsia: "#ff00ff",\n +\tgray: "#808080",\n +\tgreen: "#008000",\n +\tlime: "#00ff00",\n +\tmaroon: "#800000",\n +\tnavy: "#000080",\n +\tolive: "#808000",\n +\tpurple: "#800080",\n +\tred: "#ff0000",\n +\tsilver: "#c0c0c0",\n +\tteal: "#008080",\n +\twhite: "#ffffff",\n +\tyellow: "#ffff00",\n +\n +\t// 4.2.3. "transparent" color keyword\n +\ttransparent: [ null, null, null, 0 ],\n +\n +\t_default: "#ffffff"\n +};\n +\n +})( jQuery );\n +\n +\n +\n +/******************************************************************************/\n +/****************************** CLASS ANIMATIONS ******************************/\n +/******************************************************************************/\n +(function() {\n +\n +var classAnimationActions = [ "add", "remove", "toggle" ],\n +\tshorthandStyles = {\n +\t\tborder: 1,\n +\t\tborderBottom: 1,\n +\t\tborderColor: 1,\n +\t\tborderLeft: 1,\n +\t\tborderRight: 1,\n +\t\tborderTop: 1,\n +\t\tborderWidth: 1,\n +\t\tmargin: 1,\n +\t\tpadding: 1\n +\t};\n +\n +$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {\n +\t$.fx.step[ prop ] = function( fx ) {\n +\t\tif ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n +\t\t\tjQuery.style( fx.elem, prop, fx.end );\n +\t\t\tfx.setAttr = true;\n +\t\t}\n +\t};\n +});\n +\n +function getElementStyles() {\n +\tvar style = this.ownerDocument.defaultView ?\n +\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n +\t\t\tthis.currentStyle,\n +\t\tnewStyle = {},\n +\t\tkey,\n +\t\tlen;\n +\n +\t// webkit enumerates style porperties\n +\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n +\t\tlen = style.length;\n +\t\twhile ( len-- ) {\n +\t\t\tkey = style[ len ];\n +\t\t\tif ( typeof style[ key ] === "string" ) {\n +\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n +\t\t\t}\n +\t\t}\n +\t} else {\n +\t\tfor ( key in style ) {\n +\t\t\tif ( typeof style[ key ] === "string" ) {\n +\t\t\t\tnewStyle[ key ] = style[ key ];\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn newStyle;\n +}\n +\n +\n +function styleDifference( oldStyle, newStyle ) {\n +\tvar diff = {},\n +\t\tname, value;\n +\n +\tfor ( name in newStyle ) {\n +\t\tvalue = newStyle[ name ];\n +\t\tif ( oldStyle[ name ] !== value ) {\n +\t\t\tif ( !shorthandStyles[ name ] ) {\n +\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n +\t\t\t\t\tdiff[ name ] = value;\n +\t\t\t\t}\n +\t\t\t}\n +\t\t}\n +\t}\n +\n +\treturn diff;\n +}\n +\n +$.effects.animateClass = function( value, duration, easing, callback ) {\n +\tvar o = $.speed( duration, easing, callback );\n +\n +\treturn this.queue( function() {\n +\t\tvar animated = $( this ),\n +\t\t\tbaseClass = animated.attr( "class" ) || "",\n +\t\t\tapplyClassChange,\n +\t\t\tallAnimations = o.children ? animated.find( "*" ).andSelf() : animated;\n +\n +\t\t// map the animated objects to store the original styles.\n +\t\tallAnimations = allAnimations.map(function() {\n +\t\t\tvar el = $( this );\n +\t\t\treturn {\n +\t\t\t\tel: el,\n +\t\t\t\tstart: getElementStyles.call( this )\n +\t\t\t};\n +\t\t});\n +\n +\t\t// apply class change\n +\t\tapplyClassChange = function() {\n +\t\t\t$.each( classAnimationActions, function(i, action) {\n +\t\t\t\tif ( value[ action ] ) {\n +\t\t\t\t\tanimated[ action + "Class" ]( value[ action ] );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t};\n +\t\tapplyClassChange();\n +\n +\t\t// map all animated objects again - calculate new styles and diff\n +\t\tallAnimations = allAnimations.map(function() {\n +\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n +\t\t\tthis.diff = styleDifference( this.start, this.end );\n +\t\t\treturn this;\n +\t\t});\n +\n +\t\t// apply original class\n +\t\tanimated.attr( "class", baseClass );\n +\n +\t\t// map all animated objects again - this time collecting a promise\n +\t\tallAnimations = allAnimations.map(function() {\n +\t\t\tvar styleInfo = this,\n +\t\t\t\tdfd = $.Deferred(),\n +\t\t\t\topts = jQuery.extend({}, o, {\n +\t\t\t\t\tqueue: false,\n +\t\t\t\t\tcomplete: function() {\n +\t\t\t\t\t\tdfd.resolve( styleInfo );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\n +\t\t\tthis.el.animate( this.diff, opts );\n +\t\t\treturn dfd.promise();\n +\t\t});\n +\n +\t\t// once all animations have completed:\n +\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n +\n +\t\t\t// set the final class\n +\t\t\tapplyClassChange();\n +\n +\t\t\t// for each animated element,\n +\t\t\t// clear all css properties that were animated\n +\t\t\t$.each( arguments, function() {\n +\t\t\t\tvar el = this.el;\n +\t\t\t\t$.each( this.diff, function(key) {\n +\t\t\t\t\tel.css( key, \'\' );\n +\t\t\t\t});\n +\t\t\t});\n +\n +\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n +\t\t\t// it also handles dequeuing the next anim...\n +\t\t\to.complete.call( animated[ 0 ] );\n +\t\t});\n +\t});\n +};\n +\n +$.fn.extend({\n +\t_addClass: $.fn.addClass,\n +\taddClass: function( classNames, speed, easing, callback ) {\n +\t\treturn speed ?\n +\t\t\t$.effects.animateClass.call( this,\n +\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n +\t\t\tthis._addClass( classNames );\n +\t},\n +\n +\t_removeClass: $.fn.removeClass,\n +\tremoveClass: function( classNames, speed, easing, callback ) {\n +\t\treturn speed ?\n +\t\t\t$.effects.animateClass.call( this,\n +\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n +\t\t\tthis._removeClass( classNames );\n +\t},\n +\n +\t_toggleClass: $.fn.toggleClass,\n +\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n +\t\tif ( typeof force === "boolean" || force === undefined ) {\n +\t\t\tif ( !speed ) {\n +\t\t\t\t// without speed parameter\n +\t\t\t\treturn this._toggleClass( classNames, force );\n +\t\t\t} else {\n +\t\t\t\treturn $.effects.animateClass.call( this,\n +\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n +\t\t\t\t\tspeed, easing, callback );\n +\t\t\t}\n +\t\t} else {\n +\t\t\t// without force parameter\n +\t\t\treturn $.effects.animateClass.call( this,\n +\t\t\t\t{ toggle: classNames }, force, speed, easing );\n +\t\t}\n +\t},\n +\n +\tswitchClass: function( remove, add, speed, easing, callback) {\n +\t\treturn $.effects.animateClass.call( this, {\n +\t\t\tadd: add,\n +\t\t\tremove: remove\n +\t\t}, speed, easing, callback );\n +\t}\n +});\n +\n +})();\n +\n +/******************************************************************************/\n +/*********************************** EFFECTS **********************************/\n +/******************************************************************************/\n +\n +(function() {\n +\n +$.extend( $.effects, {\n +\tversion: "1.9.2",\n +\n +\t// Saves a set of properties in a data storage\n +\tsave: function( element, set ) {\n +\t\tfor( var i=0; i < set.length; i++ ) {\n +\t\t\tif ( set[ i ] !== null ) {\n +\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\t// Restores a set of previously saved properties from a data storage\n +\trestore: function( element, set ) {\n +\t\tvar val, i;\n +\t\tfor( i=0; i < set.length; i++ ) {\n +\t\t\tif ( set[ i ] !== null ) {\n +\t\t\t\tval = element.data( dataSpace + set[ i ] );\n +\t\t\t\t// support: jQuery 1.6.2\n +\t\t\t\t// http://bugs.jquery.com/ticket/9917\n +\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n +\t\t\t\t// We can\'t differentiate between "" and 0 here, so we just assume\n +\t\t\t\t// empty string since it\'s likely to be a more common value...\n +\t\t\t\tif ( val === undefined ) {\n +\t\t\t\t\tval = "";\n +\t\t\t\t}\n +\t\t\t\telement.css( set[ i ], val );\n +\t\t\t}\n +\t\t}\n +\t},\n +\n +\tsetMode: function( el, mode ) {\n +\t\tif (mode === "toggle") {\n +\t\t\tmode = el.is( ":hidden" ) ? "show" : "hide";\n +\t\t}\n +\t\treturn mode;\n +\t},\n +\n +\t// Translates a [top,left] array into a baseline value\n +\t// this should be a little more flexible in the future to handle a string & hash\n +\tgetBaseline: function( origin, original ) {\n +\t\tvar y, x;\n +\t\tswitch ( origin[ 0 ] ) {\n +\t\t\tcase "top": y = 0; break;\n +\t\t\tcase "middle": y = 0.5; break;\n +\t\t\tcase "bottom": y = 1; break;\n +\t\t\tdefault: y = origin[ 0 ] / original.height;\n +\t\t}\n +\t\tswitch ( origin[ 1 ] ) {\n +\t\t\tcase "left": x = 0; break;\n +\t\t\tcase "center": x = 0.5; break;\n +\t\t\tcase "right": x = 1; break;\n +\t\t\tdefault: x = origin[ 1 ] / original.width;\n +\t\t}\n +\t\treturn {\n +\t\t\tx: x,\n +\t\t\ty: y\n +\t\t};\n +\t},\n +\n +\t// Wraps the element around a wrapper that copies position properties\n +\tcreateWrapper: function( element ) {\n +\n +\t\t// if the element is already wrapped, return it\n +\t\tif ( element.parent().is( ".ui-effects-wrapper" )) {\n +\t\t\treturn element.parent();\n +\t\t}\n +\n +\t\t// wrap the element\n +\t\tvar props = {\n +\t\t\t\twidth: element.outerWidth(true),\n +\t\t\t\theight: element.outerHeight(true),\n +\t\t\t\t"float": element.css( "float" )\n +\t\t\t},\n +\t\t\twrapper = $( "<div></div>" )\n +\t\t\t\t.addClass( "ui-effects-wrapper" )\n +\t\t\t\t.css({\n +\t\t\t\t\tfontSize: "100%",\n +\t\t\t\t\tbackground: "transparent",\n +\t\t\t\t\tborder: "none",\n +\t\t\t\t\tmargin: 0,\n +\t\t\t\t\tpadding: 0\n +\t\t\t\t}),\n +\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n +\t\t\tsize = {\n +\t\t\t\twidth: element.width(),\n +\t\t\t\theight: element.height()\n +\t\t\t},\n +\t\t\tactive = document.activeElement;\n +\n +\t\t// support: Firefox\n +\t\t// Firefox incorrectly exposes anonymous content\n +\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n +\t\ttry {\n +\t\t\tactive.id;\n +\t\t} catch( e ) {\n +\t\t\tactive = document.body;\n +\t\t}\n +\n +\t\telement.wrap( wrapper );\n +\n +\t\t// Fixes #7595 - Elements lose focus when wrapped.\n +\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n +\t\t\t$( active ).focus();\n +\t\t}\n +\n +\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n +\n +\t\t// transfer positioning properties to the wrapper\n +\t\tif ( element.css( "position" ) === "static" ) {\n +\t\t\twrapper.css({ position: "relative" });\n +\t\t\telement.css({ position: "relative" });\n +\t\t} else {\n +\t\t\t$.extend( props, {\n +\t\t\t\tposition: element.css( "position" ),\n +\t\t\t\tzIndex: element.css( "z-index" )\n +\t\t\t});\n +\t\t\t$.each([ "top", "left", "bottom", "right" ], function(i, pos) {\n +\t\t\t\tprops[ pos ] = element.css( pos );\n +\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n +\t\t\t\t\tprops[ pos ] = "auto";\n +\t\t\t\t}\n +\t\t\t});\n +\t\t\telement.css({\n +\t\t\t\tposition: "relative",\n +\t\t\t\ttop: 0,\n +\t\t\t\tleft: 0,\n +\t\t\t\tright: "auto",\n +\t\t\t\tbottom: "auto"\n +\t\t\t});\n +\t\t}\n +\t\telement.css(size);\n +\n +\t\treturn wrapper.css( props ).show();\n +\t},\n +\n +\tremoveWrapper: function( element ) {\n +\t\tvar active = document.activeElement;\n +\n +\t\tif ( element.parent().is( ".ui-effects-wrapper" ) ) {\n +\t\t\telement.parent().replaceWith( element );\n +\n +\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n +\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n +\t\t\t\t$( active ).focus();\n +\t\t\t}\n +\t\t}\n +\n +\n +\t\treturn element;\n +\t},\n +\n +\tsetTransition: function( element, list, factor, value ) {\n +\t\tvalue = value || {};\n +\t\t$.each( list, function( i, x ) {\n +\t\t\tvar unit = element.cssUnit( x );\n +\t\t\tif ( unit[ 0 ] > 0 ) {\n +\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n +\t\t\t}\n +\t\t});\n +\t\treturn value;\n +\t}\n +});\n +\n +// return an effect options object for the given parameters:\n +function _normalizeArguments( effect, options, speed, callback ) {\n +\n +\t// allow passing all options as the first parameter\n +\tif ( $.isPlainObject( effect ) ) {\n +\t\toptions = effect;\n +\t\teffect = effect.effect;\n +\t}\n +\n +\t// convert to an object\n +\teffect = { effect: effect };\n +\n +\t// catch (effect, null, ...)\n +\tif ( options == null ) {\n +\t\toptions = {};\n +\t}\n +\n +\t// catch (effect, callback)\n +\tif ( $.isFunction( options ) ) {\n +\t\tcallback = options;\n +\t\tspeed = null;\n +\t\toptions = {};\n +\t}\n +\n +\t// catch (effect, speed, ?)\n +\tif ( typeof options === "number" || $.fx.speeds[ options ] ) {\n +\t\tcallback = speed;\n +\t\tspeed = options;\n +\t\toptions = {};\n +\t}\n +\n +\t// catch (effect, options, callback)\n +\tif ( $.isFunction( speed ) ) {\n +\t\tcallback = speed;\n +\t\tspeed = null;\n +\t}\n +\n +\t// add options to effect\n +\tif ( options ) {\n +\t\t$.extend( effect, options );\n +\t}\n +\n +\tspeed = speed || options.duration;\n +\teffect.duration = $.fx.off ? 0 :\n +\t\ttypeof speed === "number" ? speed :\n +\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n +\t\t$.fx.speeds._default;\n +\n +\teffect.complete = callback || options.complete;\n +\n +\treturn effect;\n +}\n +\n +function standardSpeed( speed ) {\n +\t// valid standard speeds\n +\tif ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) {\n +\t\treturn true;\n +\t}\n +\n +\t// invalid strings - treat as "normal" speed\n +\tif ( typeof speed === "string" && !$.effects.effect[ speed ] ) {\n +\t\t// TODO: remove in 2.0 (#7115)\n +\t\tif ( backCompat && $.effects[ speed ] ) {\n +\t\t\treturn false;\n +\t\t}\n +\t\treturn true;\n +\t}\n +\n +\treturn false;\n +}\n +\n +$.fn.extend({\n +\teffect: function( /* effect, options, speed, callback */ ) {\n +\t\tvar args = _normalizeArguments.apply( this, arguments ),\n +\t\t\tmode = args.mode,\n +\t\t\tqueue = args.queue,\n +\t\t\teffectMethod = $.effects.effect[ args.effect ],\n +\n +\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n +\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n +\n +\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n +\t\t\t// delegate to the original method (e.g., .show()) if possible\n +\t\t\tif ( mode ) {\n +\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n +\t\t\t} else {\n +\t\t\t\treturn this.each( function() {\n +\t\t\t\t\tif ( args.complete ) {\n +\t\t\t\t\t\targs.complete.call( this );\n +\t\t\t\t\t}\n +\t\t\t\t});\n +\t\t\t}\n +\t\t}\n +\n +\t\tfunction run( next ) {\n +\t\t\tvar elem = $( this ),\n +\t\t\t\tcomplete = args.complete,\n +\t\t\t\tmode = args.mode;\n +\n +\t\t\tfunction done() {\n +\t\t\t\tif ( $.isFunction( complete ) ) {\n +\t\t\t\t\tcomplete.call( elem[0] );\n +\t\t\t\t}\n +\t\t\t\tif ( $.isFunction( next ) ) {\n +\t\t\t\t\tnext();\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t// if the element is hiddden and mode is hide,\n +\t\t\t// or element is visible and mode is show\n +\t\t\tif ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {\n +\t\t\t\tdone();\n +\t\t\t} else {\n +\t\t\t\teffectMethod.call( elem[0], args, done );\n +\t\t\t}\n +\t\t}\n +\n +\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n +\t\tif ( effectMethod ) {\n +\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || "fx", run );\n +\t\t} else {\n +\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n +\t\t\treturn oldEffectMethod.call(this, {\n +\t\t\t\toptions: args,\n +\t\t\t\tduration: args.duration,\n +\t\t\t\tcallback: args.complete,\n +\t\t\t\tmode: args.mode\n +\t\t\t});\n +\t\t}\n +\t},\n +\n +\t_show: $.fn.show,\n +\tshow: function( speed ) {\n +\t\tif ( standardSpeed( speed ) ) {\n +\t\t\treturn this._show.apply( this, arguments );\n +\t\t} else {\n +\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n +\t\t\targs.mode = "show";\n +\t\t\treturn this.effect.call( this, args );\n +\t\t}\n +\t},\n +\n +\t_hide: $.fn.hide,\n +\thide: function( speed ) {\n +\t\tif ( standardSpeed( speed ) ) {\n +\t\t\treturn this._hide.apply( this, arguments );\n +\t\t} else {\n +\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n +\t\t\targs.mode = "hide";\n +\t\t\treturn this.effect.call( this, args );\n +\t\t}\n +\t},\n +\n +\t// jQuery core overloads toggle and creates _toggle\n +\t__toggle: $.fn.toggle,\n +\ttoggle: function( speed ) {\n +\t\tif ( standardSpeed( speed ) || typeof speed === "boolean" || $.isFunction( speed ) ) {\n +\t\t\treturn this.__toggle.apply( this, arguments );\n +\t\t} else {\n +\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n +\t\t\targs.mode = "toggle";\n +\t\t\treturn this.effect.call( this, args );\n +\t\t}\n +\t},\n +\n +\t// helper functions\n +\tcssUnit: function(key) {\n +\t\tvar style = this.css( key ),\n +\t\t\tval = [];\n +\n +\t\t$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {\n +\t\t\tif ( style.indexOf( unit ) > 0 ) {\n +\t\t\t\tval = [ parseFloat( style ), unit ];\n +\t\t\t}\n +\t\t});\n +\t\treturn val;\n +\t}\n +});\n +\n +})();\n +\n +/******************************************************************************/\n +/*********************************** EASING ***********************************/\n +/******************************************************************************/\n +\n +(function() {\n +\n +// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n +\n +var baseEasings = {};\n +\n +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {\n +\tbaseEasings[ name ] = function( p ) {\n +\t\treturn Math.pow( p, i + 2 );\n +\t};\n +});\n +\n +$.extend( baseEasings, {\n +\tSine: function ( p ) {\n +\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n +\t},\n +\tCirc: function ( p ) {\n +\t\treturn 1 - Math.sqrt( 1 - p * p );\n +\t},\n +\tElastic: function( p ) {\n +\t\treturn p === 0 || p === 1 ? p :\n +\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n +\t},\n +\tBack: function( p ) {\n +\t\treturn p * p * ( 3 * p - 2 );\n +\t},\n +\tBounce: function ( p ) {\n +\t\tvar pow2,\n +\t\t\tbounce = 4;\n +\n +\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n +\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n +\t}\n +});\n +\n +$.each( baseEasings, function( name, easeIn ) {\n +\t$.easing[ "easeIn" + name ] = easeIn;\n +\t$.easing[ "easeOut" + name ] = function( p ) {\n +\t\treturn 1 - easeIn( 1 - p );\n +\t};\n +\t$.easing[ "easeInOut" + name ] = function( p ) {\n +\t\treturn p < 0.5 ?\n +\t\t\teaseIn( p * 2 ) / 2 :\n +\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n +\t};\n +});\n +\n +})();\n +\n +})(jQuery));\n +(function( $, undefined ) {\n +\n +var rvertical = /up|down|vertical/,\n +\trpositivemotion = /up|left|vertical|horizontal/;\n +\n +$.effects.effect.blind = function( o, done ) {\n +\t// Create element\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "height", "width" ],\n +\t\tmode = $.effects.setMode( el, o.mode || "hide" ),\n +\t\tdirection = o.direction || "up",\n +\t\tvertical = rvertical.test( direction ),\n +\t\tref = vertical ? "height" : "width",\n +\t\tref2 = vertical ? "top" : "left",\n +\t\tmotion = rpositivemotion.test( direction ),\n +\t\tanimation = {},\n +\t\tshow = mode === "show",\n +\t\twrapper, distance, margin;\n +\n +\t// if already wrapped, the wrapper\'s properties are my property. #6245\n +\tif ( el.parent().is( ".ui-effects-wrapper" ) ) {\n +\t\t$.effects.save( el.parent(), props );\n +\t} else {\n +\t\t$.effects.save( el, props );\n +\t}\n +\tel.show();\n +\twrapper = $.effects.createWrapper( el ).css({\n +\t\toverflow: "hidden"\n +\t});\n +\n +\tdistance = wrapper[ ref ]();\n +\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n +\n +\tanimation[ ref ] = show ? distance : 0;\n +\tif ( !motion ) {\n +\t\tel\n +\t\t\t.css( vertical ? "bottom" : "right", 0 )\n +\t\t\t.css( vertical ? "top" : "left", "auto" )\n +\t\t\t.css({ position: "absolute" });\n +\n +\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n +\t}\n +\n +\t// start at 0 if we are showing\n +\tif ( show ) {\n +\t\twrapper.css( ref, 0 );\n +\t\tif ( ! motion ) {\n +\t\t\twrapper.css( ref2, margin + distance );\n +\t\t}\n +\t}\n +\n +\t// Animate\n +\twrapper.animate( animation, {\n +\t\tduration: o.duration,\n +\t\teasing: o.easing,\n +\t\tqueue: false,\n +\t\tcomplete: function() {\n +\t\t\tif ( mode === "hide" ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t}\n +\t});\n +\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.bounce = function( o, done ) {\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "height", "width" ],\n +\n +\t\t// defaults:\n +\t\tmode = $.effects.setMode( el, o.mode || "effect" ),\n +\t\thide = mode === "hide",\n +\t\tshow = mode === "show",\n +\t\tdirection = o.direction || "up",\n +\t\tdistance = o.distance,\n +\t\ttimes = o.times || 5,\n +\n +\t\t// number of internal animations\n +\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n +\t\tspeed = o.duration / anims,\n +\t\teasing = o.easing,\n +\n +\t\t// utility:\n +\t\tref = ( direction === "up" || direction === "down" ) ? "top" : "left",\n +\t\tmotion = ( direction === "up" || direction === "left" ),\n +\t\ti,\n +\t\tupAnim,\n +\t\tdownAnim,\n +\n +\t\t// we will need to re-assemble the queue to stack our animations in place\n +\t\tqueue = el.queue(),\n +\t\tqueuelen = queue.length;\n +\n +\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n +\tif ( show || hide ) {\n +\t\tprops.push( "opacity" );\n +\t}\n +\n +\t$.effects.save( el, props );\n +\tel.show();\n +\t$.effects.createWrapper( el ); // Create Wrapper\n +\n +\t// default distance for the BIGGEST bounce is the outer Distance / 3\n +\tif ( !distance ) {\n +\t\tdistance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;\n +\t}\n +\n +\tif ( show ) {\n +\t\tdownAnim = { opacity: 1 };\n +\t\tdownAnim[ ref ] = 0;\n +\n +\t\t// if we are showing, force opacity 0 and set the initial position\n +\t\t// then do the "first" animation\n +\t\tel.css( "opacity", 0 )\n +\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n +\t\t\t.animate( downAnim, speed, easing );\n +\t}\n +\n +\t// start at the smallest distance if we are hiding\n +\tif ( hide ) {\n +\t\tdistance = distance / Math.pow( 2, times - 1 );\n +\t}\n +\n +\tdownAnim = {};\n +\tdownAnim[ ref ] = 0;\n +\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n +\tfor ( i = 0; i < times; i++ ) {\n +\t\tupAnim = {};\n +\t\tupAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;\n +\n +\t\tel.animate( upAnim, speed, easing )\n +\t\t\t.animate( downAnim, speed, easing );\n +\n +\t\tdistance = hide ? distance * 2 : distance / 2;\n +\t}\n +\n +\t// Last Bounce when Hiding\n +\tif ( hide ) {\n +\t\tupAnim = { opacity: 0 };\n +\t\tupAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;\n +\n +\t\tel.animate( upAnim, speed, easing );\n +\t}\n +\n +\tel.queue(function() {\n +\t\tif ( hide ) {\n +\t\t\tel.hide();\n +\t\t}\n +\t\t$.effects.restore( el, props );\n +\t\t$.effects.removeWrapper( el );\n +\t\tdone();\n +\t});\n +\n +\t// inject all the animations we just queued to be first in line (after "inprogress")\n +\tif ( queuelen > 1) {\n +\t\tqueue.splice.apply( queue,\n +\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n +\t}\n +\tel.dequeue();\n +\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.clip = function( o, done ) {\n +\t// Create element\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "height", "width" ],\n +\t\tmode = $.effects.setMode( el, o.mode || "hide" ),\n +\t\tshow = mode === "show",\n +\t\tdirection = o.direction || "vertical",\n +\t\tvert = direction === "vertical",\n +\t\tsize = vert ? "height" : "width",\n +\t\tposition = vert ? "top" : "left",\n +\t\tanimation = {},\n +\t\twrapper, animate, distance;\n +\n +\t// Save & Show\n +\t$.effects.save( el, props );\n +\tel.show();\n +\n +\t// Create Wrapper\n +\twrapper = $.effects.createWrapper( el ).css({\n +\t\toverflow: "hidden"\n +\t});\n +\tanimate = ( el[0].tagName === "IMG" ) ? wrapper : el;\n +\tdistance = animate[ size ]();\n +\n +\t// Shift\n +\tif ( show ) {\n +\t\tanimate.css( size, 0 );\n +\t\tanimate.css( position, distance / 2 );\n +\t}\n +\n +\t// Create Animation Object:\n +\tanimation[ size ] = show ? distance : 0;\n +\tanimation[ position ] = show ? 0 : distance / 2;\n +\n +\t// Animate\n +\tanimate.animate( animation, {\n +\t\tqueue: false,\n +\t\tduration: o.duration,\n +\t\teasing: o.easing,\n +\t\tcomplete: function() {\n +\t\t\tif ( !show ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t}\n +\t});\n +\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.drop = function( o, done ) {\n +\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],\n +\t\tmode = $.effects.setMode( el, o.mode || "hide" ),\n +\t\tshow = mode === "show",\n +\t\tdirection = o.direction || "left",\n +\t\tref = ( direction === "up" || direction === "down" ) ? "top" : "left",\n +\t\tmotion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",\n +\t\tanimation = {\n +\t\t\topacity: show ? 1 : 0\n +\t\t},\n +\t\tdistance;\n +\n +\t// Adjust\n +\t$.effects.save( el, props );\n +\tel.show();\n +\t$.effects.createWrapper( el );\n +\n +\tdistance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2;\n +\n +\tif ( show ) {\n +\t\tel\n +\t\t\t.css( "opacity", 0 )\n +\t\t\t.css( ref, motion === "pos" ? -distance : distance );\n +\t}\n +\n +\t// Animation\n +\tanimation[ ref ] = ( show ?\n +\t\t( motion === "pos" ? "+=" : "-=" ) :\n +\t\t( motion === "pos" ? "-=" : "+=" ) ) +\n +\t\tdistance;\n +\n +\t// Animate\n +\tel.animate( animation, {\n +\t\tqueue: false,\n +\t\tduration: o.duration,\n +\t\teasing: o.easing,\n +\t\tcomplete: function() {\n +\t\t\tif ( mode === "hide" ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t}\n +\t});\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.explode = function( o, done ) {\n +\n +\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n +\t\tcells = rows,\n +\t\tel = $( this ),\n +\t\tmode = $.effects.setMode( el, o.mode || "hide" ),\n +\t\tshow = mode === "show",\n +\n +\t\t// show and then visibility:hidden the element before calculating offset\n +\t\toffset = el.show().css( "visibility", "hidden" ).offset(),\n +\n +\t\t// width and height of a piece\n +\t\twidth = Math.ceil( el.outerWidth() / cells ),\n +\t\theight = Math.ceil( el.outerHeight() / rows ),\n +\t\tpieces = [],\n +\n +\t\t// loop\n +\t\ti, j, left, top, mx, my;\n +\n +\t// children animate complete:\n +\tfunction childComplete() {\n +\t\tpieces.push( this );\n +\t\tif ( pieces.length === rows * cells ) {\n +\t\t\tanimComplete();\n +\t\t}\n +\t}\n +\n +\t// clone the element for each row and cell.\n +\tfor( i = 0; i < rows ; i++ ) { // ===>\n +\t\ttop = offset.top + i * height;\n +\t\tmy = i - ( rows - 1 ) / 2 ;\n +\n +\t\tfor( j = 0; j < cells ; j++ ) { // |||\n +\t\t\tleft = offset.left + j * width;\n +\t\t\tmx = j - ( cells - 1 ) / 2 ;\n +\n +\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n +\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n +\t\t\tel\n +\t\t\t\t.clone()\n +\t\t\t\t.appendTo( "body" )\n +\t\t\t\t.wrap( "<div></div>" )\n +\t\t\t\t.css({\n +\t\t\t\t\tposition: "absolute",\n +\t\t\t\t\tvisibility: "visible",\n +\t\t\t\t\tleft: -j * width,\n +\t\t\t\t\ttop: -i * height\n +\t\t\t\t})\n +\n +\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n +\t\t\t// where the original was located +left and +top equal to the size of pieces\n +\t\t\t\t.parent()\n +\t\t\t\t.addClass( "ui-effects-explode" )\n +\t\t\t\t.css({\n +\t\t\t\t\tposition: "absolute",\n +\t\t\t\t\toverflow: "hidden",\n +\t\t\t\t\twidth: width,\n +\t\t\t\t\theight: height,\n +\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n +\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n +\t\t\t\t\topacity: show ? 0 : 1\n +\t\t\t\t}).animate({\n +\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n +\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n +\t\t\t\t\topacity: show ? 1 : 0\n +\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n +\t\t}\n +\t}\n +\n +\tfunction animComplete() {\n +\t\tel.css({\n +\t\t\tvisibility: "visible"\n +\t\t});\n +\t\t$( pieces ).remove();\n +\t\tif ( !show ) {\n +\t\t\tel.hide();\n +\t\t}\n +\t\tdone();\n +\t}\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.fade = function( o, done ) {\n +\tvar el = $( this ),\n +\t\tmode = $.effects.setMode( el, o.mode || "toggle" );\n +\n +\tel.animate({\n +\t\topacity: mode\n +\t}, {\n +\t\tqueue: false,\n +\t\tduration: o.duration,\n +\t\teasing: o.easing,\n +\t\tcomplete: done\n +\t});\n +};\n +\n +})( jQuery );\n +(function( $, undefined ) {\n +\n +$.effects.effect.fold = function( o, done ) {\n +\n +\t// Create element\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "height", "width" ],\n +\t\tmode = $.effects.setMode( el, o.mode || "hide" ),\n +\t\tshow = mode === "show",\n +\t\thide = mode === "hide",\n +\t\tsize = o.size || 15,\n +\t\tpercent = /([0-9]+)%/.exec( size ),\n +\t\thorizFirst = !!o.horizFirst,\n +\t\twidthFirst = show !== horizFirst,\n +\t\tref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],\n +\t\tduration = o.duration / 2,\n +\t\twrapper, distance,\n +\t\tanimation1 = {},\n +\t\tanimation2 = {};\n +\n +\t$.effects.save( el, props );\n +\tel.show();\n +\n +\t// Create Wrapper\n +\twrapper = $.effects.createWrapper( el ).css({\n +\t\toverflow: "hidden"\n +\t});\n +\tdistance = widthFirst ?\n +\t\t[ wrapper.width(), wrapper.height() ] :\n +\t\t[ wrapper.height(), wrapper.width() ];\n +\n +\tif ( percent ) {\n +\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n +\t}\n +\tif ( show ) {\n +\t\twrapper.css( horizFirst ? {\n +\t\t\theight: 0,\n +\t\t\twidth: size\n +\t\t} : {\n +\t\t\theight: size,\n +\t\t\twidth: 0\n +\t\t});\n +\t}\n +\n +\t// Animation\n +\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n +\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n +\n +\t// Animate\n +\twrapper\n +\t\t.animate( animation1, duration, o.easing )\n +\t\t.animate( animation2, duration, o.easing, function() {\n +\t\t\tif ( hide ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t});\n +\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.highlight = function( o, done ) {\n +\tvar elem = $( this ),\n +\t\tprops = [ "backgroundImage", "backgroundColor", "opacity" ],\n +\t\tmode = $.effects.setMode( elem, o.mode || "show" ),\n +\t\tanimation = {\n +\t\t\tbackgroundColor: elem.css( "backgroundColor" )\n +\t\t};\n +\n +\tif (mode === "hide") {\n +\t\tanimation.opacity = 0;\n +\t}\n +\n +\t$.effects.save( elem, props );\n +\n +\telem\n +\t\t.show()\n +\t\t.css({\n +\t\t\tbackgroundImage: "none",\n +\t\t\tbackgroundColor: o.color || "#ffff99"\n +\t\t})\n +\t\t.animate( animation, {\n +\t\t\tqueue: false,\n +\t\t\tduration: o.duration,\n +\t\t\teasing: o.easing,\n +\t\t\tcomplete: function() {\n +\t\t\t\tif ( mode === "hide" ) {\n +\t\t\t\t\telem.hide();\n +\t\t\t\t}\n +\t\t\t\t$.effects.restore( elem, props );\n +\t\t\t\tdone();\n +\t\t\t}\n +\t\t});\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.pulsate = function( o, done ) {\n +\tvar elem = $( this ),\n +\t\tmode = $.effects.setMode( elem, o.mode || "show" ),\n +\t\tshow = mode === "show",\n +\t\thide = mode === "hide",\n +\t\tshowhide = ( show || mode === "hide" ),\n +\n +\t\t// showing or hiding leaves of the "last" animation\n +\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n +\t\tduration = o.duration / anims,\n +\t\tanimateTo = 0,\n +\t\tqueue = elem.queue(),\n +\t\tqueuelen = queue.length,\n +\t\ti;\n +\n +\tif ( show || !elem.is(":visible")) {\n +\t\telem.css( "opacity", 0 ).show();\n +\t\tanimateTo = 1;\n +\t}\n +\n +\t// anims - 1 opacity "toggles"\n +\tfor ( i = 1; i < anims; i++ ) {\n +\t\telem.animate({\n +\t\t\topacity: animateTo\n +\t\t}, duration, o.easing );\n +\t\tanimateTo = 1 - animateTo;\n +\t}\n +\n +\telem.animate({\n +\t\topacity: animateTo\n +\t}, duration, o.easing);\n +\n +\telem.queue(function() {\n +\t\tif ( hide ) {\n +\t\t\telem.hide();\n +\t\t}\n +\t\tdone();\n +\t});\n +\n +\t// We just queued up "anims" animations, we need to put them next in the queue\n +\tif ( queuelen > 1 ) {\n +\t\tqueue.splice.apply( queue,\n +\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n +\t}\n +\telem.dequeue();\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.puff = function( o, done ) {\n +\tvar elem = $( this ),\n +\t\tmode = $.effects.setMode( elem, o.mode || "hide" ),\n +\t\thide = mode === "hide",\n +\t\tpercent = parseInt( o.percent, 10 ) || 150,\n +\t\tfactor = percent / 100,\n +\t\toriginal = {\n +\t\t\theight: elem.height(),\n +\t\t\twidth: elem.width(),\n +\t\t\touterHeight: elem.outerHeight(),\n +\t\t\touterWidth: elem.outerWidth()\n +\t\t};\n +\n +\t$.extend( o, {\n +\t\teffect: "scale",\n +\t\tqueue: false,\n +\t\tfade: true,\n +\t\tmode: mode,\n +\t\tcomplete: done,\n +\t\tpercent: hide ? percent : 100,\n +\t\tfrom: hide ?\n +\t\t\toriginal :\n +\t\t\t{\n +\t\t\t\theight: original.height * factor,\n +\t\t\t\twidth: original.width * factor,\n +\t\t\t\touterHeight: original.outerHeight * factor,\n +\t\t\t\touterWidth: original.outerWidth * factor\n +\t\t\t}\n +\t});\n +\n +\telem.effect( o );\n +};\n +\n +$.effects.effect.scale = function( o, done ) {\n +\n +\t// Create element\n +\tvar el = $( this ),\n +\t\toptions = $.extend( true, {}, o ),\n +\t\tmode = $.effects.setMode( el, o.mode || "effect" ),\n +\t\tpercent = parseInt( o.percent, 10 ) ||\n +\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),\n +\t\tdirection = o.direction || "both",\n +\t\torigin = o.origin,\n +\t\toriginal = {\n +\t\t\theight: el.height(),\n +\t\t\twidth: el.width(),\n +\t\t\touterHeight: el.outerHeight(),\n +\t\t\touterWidth: el.outerWidth()\n +\t\t},\n +\t\tfactor = {\n +\t\t\ty: direction !== "horizontal" ? (percent / 100) : 1,\n +\t\t\tx: direction !== "vertical" ? (percent / 100) : 1\n +\t\t};\n +\n +\t// We are going to pass this effect to the size effect:\n +\toptions.effect = "size";\n +\toptions.queue = false;\n +\toptions.complete = done;\n +\n +\t// Set default origin and restore for show/hide\n +\tif ( mode !== "effect" ) {\n +\t\toptions.origin = origin || ["middle","center"];\n +\t\toptions.restore = true;\n +\t}\n +\n +\toptions.from = o.from || ( mode === "show" ? {\n +\t\theight: 0,\n +\t\twidth: 0,\n +\t\touterHeight: 0,\n +\t\touterWidth: 0\n +\t} : original );\n +\toptions.to = {\n +\t\theight: original.height * factor.y,\n +\t\twidth: original.width * factor.x,\n +\t\touterHeight: original.outerHeight * factor.y,\n +\t\touterWidth: original.outerWidth * factor.x\n +\t};\n +\n +\t// Fade option to support puff\n +\tif ( options.fade ) {\n +\t\tif ( mode === "show" ) {\n +\t\t\toptions.from.opacity = 0;\n +\t\t\toptions.to.opacity = 1;\n +\t\t}\n +\t\tif ( mode === "hide" ) {\n +\t\t\toptions.from.opacity = 1;\n +\t\t\toptions.to.opacity = 0;\n +\t\t}\n +\t}\n +\n +\t// Animate\n +\tel.effect( options );\n +\n +};\n +\n +$.effects.effect.size = function( o, done ) {\n +\n +\t// Create element\n +\tvar original, baseline, factor,\n +\t\tel = $( this ),\n +\t\tprops0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],\n +\n +\t\t// Always restore\n +\t\tprops1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],\n +\n +\t\t// Copy for children\n +\t\tprops2 = [ "width", "height", "overflow" ],\n +\t\tcProps = [ "fontSize" ],\n +\t\tvProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],\n +\t\thProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],\n +\n +\t\t// Set options\n +\t\tmode = $.effects.setMode( el, o.mode || "effect" ),\n +\t\trestore = o.restore || mode !== "effect",\n +\t\tscale = o.scale || "both",\n +\t\torigin = o.origin || [ "middle", "center" ],\n +\t\tposition = el.css( "position" ),\n +\t\tprops = restore ? props0 : props1,\n +\t\tzero = {\n +\t\t\theight: 0,\n +\t\t\twidth: 0,\n +\t\t\touterHeight: 0,\n +\t\t\touterWidth: 0\n +\t\t};\n +\n +\tif ( mode === "show" ) {\n +\t\tel.show();\n +\t}\n +\toriginal = {\n +\t\theight: el.height(),\n +\t\twidth: el.width(),\n +\t\touterHeight: el.outerHeight(),\n +\t\touterWidth: el.outerWidth()\n +\t};\n +\n +\tif ( o.mode === "toggle" && mode === "show" ) {\n +\t\tel.from = o.to || zero;\n +\t\tel.to = o.from || original;\n +\t} else {\n +\t\tel.from = o.from || ( mode === "show" ? zero : original );\n +\t\tel.to = o.to || ( mode === "hide" ? zero : original );\n +\t}\n +\n +\t// Set scaling factor\n +\tfactor = {\n +\t\tfrom: {\n +\t\t\ty: el.from.height / original.height,\n +\t\t\tx: el.from.width / original.width\n +\t\t},\n +\t\tto: {\n +\t\t\ty: el.to.height / original.height,\n +\t\t\tx: el.to.width / original.width\n +\t\t}\n +\t};\n +\n +\t// Scale the css box\n +\tif ( scale === "box" || scale === "both" ) {\n +\n +\t\t// Vertical props scaling\n +\t\tif ( factor.from.y !== factor.to.y ) {\n +\t\t\tprops = props.concat( vProps );\n +\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n +\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n +\t\t}\n +\n +\t\t// Horizontal props scaling\n +\t\tif ( factor.from.x !== factor.to.x ) {\n +\t\t\tprops = props.concat( hProps );\n +\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n +\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n +\t\t}\n +\t}\n +\n +\t// Scale the content\n +\tif ( scale === "content" || scale === "both" ) {\n +\n +\t\t// Vertical props scaling\n +\t\tif ( factor.from.y !== factor.to.y ) {\n +\t\t\tprops = props.concat( cProps ).concat( props2 );\n +\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n +\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n +\t\t}\n +\t}\n +\n +\t$.effects.save( el, props );\n +\tel.show();\n +\t$.effects.createWrapper( el );\n +\tel.css( "overflow", "hidden" ).css( el.from );\n +\n +\t// Adjust\n +\tif (origin) { // Calculate baseline shifts\n +\t\tbaseline = $.effects.getBaseline( origin, original );\n +\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n +\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n +\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n +\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n +\t}\n +\tel.css( el.from ); // set top & left\n +\n +\t// Animate\n +\tif ( scale === "content" || scale === "both" ) { // Scale the children\n +\n +\t\t// Add margins/font-size\n +\t\tvProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);\n +\t\thProps = hProps.concat([ "marginLeft", "marginRight" ]);\n +\t\tprops2 = props0.concat(vProps).concat(hProps);\n +\n +\t\tel.find( "*[width]" ).each( function(){\n +\t\t\tvar child = $( this ),\n +\t\t\t\tc_original = {\n +\t\t\t\t\theight: child.height(),\n +\t\t\t\t\twidth: child.width(),\n +\t\t\t\t\touterHeight: child.outerHeight(),\n +\t\t\t\t\touterWidth: child.outerWidth()\n +\t\t\t\t};\n +\t\t\tif (restore) {\n +\t\t\t\t$.effects.save(child, props2);\n +\t\t\t}\n +\n +\t\t\tchild.from = {\n +\t\t\t\theight: c_original.height * factor.from.y,\n +\t\t\t\twidth: c_original.width * factor.from.x,\n +\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n +\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n +\t\t\t};\n +\t\t\tchild.to = {\n +\t\t\t\theight: c_original.height * factor.to.y,\n +\t\t\t\twidth: c_original.width * factor.to.x,\n +\t\t\t\touterHeight: c_original.height * factor.to.y,\n +\t\t\t\touterWidth: c_original.width * factor.to.x\n +\t\t\t};\n +\n +\t\t\t// Vertical props scaling\n +\t\t\tif ( factor.from.y !== factor.to.y ) {\n +\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n +\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n +\t\t\t}\n +\n +\t\t\t// Horizontal props scaling\n +\t\t\tif ( factor.from.x !== factor.to.x ) {\n +\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n +\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n +\t\t\t}\n +\n +\t\t\t// Animate children\n +\t\t\tchild.css( child.from );\n +\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n +\n +\t\t\t\t// Restore children\n +\t\t\t\tif ( restore ) {\n +\t\t\t\t\t$.effects.restore( child, props2 );\n +\t\t\t\t}\n +\t\t\t});\n +\t\t});\n +\t}\n +\n +\t// Animate\n +\tel.animate( el.to, {\n +\t\tqueue: false,\n +\t\tduration: o.duration,\n +\t\teasing: o.easing,\n +\t\tcomplete: function() {\n +\t\t\tif ( el.to.opacity === 0 ) {\n +\t\t\t\tel.css( "opacity", el.from.opacity );\n +\t\t\t}\n +\t\t\tif( mode === "hide" ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\tif ( !restore ) {\n +\n +\t\t\t\t// we need to calculate our new positioning based on the scaling\n +\t\t\t\tif ( position === "static" ) {\n +\t\t\t\t\tel.css({\n +\t\t\t\t\t\tposition: "relative",\n +\t\t\t\t\t\ttop: el.to.top,\n +\t\t\t\t\t\tleft: el.to.left\n +\t\t\t\t\t});\n +\t\t\t\t} else {\n +\t\t\t\t\t$.each([ "top", "left" ], function( idx, pos ) {\n +\t\t\t\t\t\tel.css( pos, function( _, str ) {\n +\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n +\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n +\n +\t\t\t\t\t\t\t// if original was "auto", recalculate the new value from wrapper\n +\t\t\t\t\t\t\tif ( str === "auto" ) {\n +\t\t\t\t\t\t\t\treturn toRef + "px";\n +\t\t\t\t\t\t\t}\n +\n +\t\t\t\t\t\t\treturn val + toRef + "px";\n +\t\t\t\t\t\t});\n +\t\t\t\t\t});\n +\t\t\t\t}\n +\t\t\t}\n +\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t}\n +\t});\n +\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.shake = function( o, done ) {\n +\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "height", "width" ],\n +\t\tmode = $.effects.setMode( el, o.mode || "effect" ),\n +\t\tdirection = o.direction || "left",\n +\t\tdistance = o.distance || 20,\n +\t\ttimes = o.times || 3,\n +\t\tanims = times * 2 + 1,\n +\t\tspeed = Math.round(o.duration/anims),\n +\t\tref = (direction === "up" || direction === "down") ? "top" : "left",\n +\t\tpositiveMotion = (direction === "up" || direction === "left"),\n +\t\tanimation = {},\n +\t\tanimation1 = {},\n +\t\tanimation2 = {},\n +\t\ti,\n +\n +\t\t// we will need to re-assemble the queue to stack our animations in place\n +\t\tqueue = el.queue(),\n +\t\tqueuelen = queue.length;\n +\n +\t$.effects.save( el, props );\n +\tel.show();\n +\t$.effects.createWrapper( el );\n +\n +\t// Animation\n +\tanimation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;\n +\tanimation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;\n +\tanimation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;\n +\n +\t// Animate\n +\tel.animate( animation, speed, o.easing );\n +\n +\t// Shakes\n +\tfor ( i = 1; i < times; i++ ) {\n +\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n +\t}\n +\tel\n +\t\t.animate( animation1, speed, o.easing )\n +\t\t.animate( animation, speed / 2, o.easing )\n +\t\t.queue(function() {\n +\t\t\tif ( mode === "hide" ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t});\n +\n +\t// inject all the animations we just queued to be first in line (after "inprogress")\n +\tif ( queuelen > 1) {\n +\t\tqueue.splice.apply( queue,\n +\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n +\t}\n +\tel.dequeue();\n +\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.slide = function( o, done ) {\n +\n +\t// Create element\n +\tvar el = $( this ),\n +\t\tprops = [ "position", "top", "bottom", "left", "right", "width", "height" ],\n +\t\tmode = $.effects.setMode( el, o.mode || "show" ),\n +\t\tshow = mode === "show",\n +\t\tdirection = o.direction || "left",\n +\t\tref = (direction === "up" || direction === "down") ? "top" : "left",\n +\t\tpositiveMotion = (direction === "up" || direction === "left"),\n +\t\tdistance,\n +\t\tanimation = {};\n +\n +\t// Adjust\n +\t$.effects.save( el, props );\n +\tel.show();\n +\tdistance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );\n +\n +\t$.effects.createWrapper( el ).css({\n +\t\toverflow: "hidden"\n +\t});\n +\n +\tif ( show ) {\n +\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );\n +\t}\n +\n +\t// Animation\n +\tanimation[ ref ] = ( show ?\n +\t\t( positiveMotion ? "+=" : "-=") :\n +\t\t( positiveMotion ? "-=" : "+=")) +\n +\t\tdistance;\n +\n +\t// Animate\n +\tel.animate( animation, {\n +\t\tqueue: false,\n +\t\tduration: o.duration,\n +\t\teasing: o.easing,\n +\t\tcomplete: function() {\n +\t\t\tif ( mode === "hide" ) {\n +\t\t\t\tel.hide();\n +\t\t\t}\n +\t\t\t$.effects.restore( el, props );\n +\t\t\t$.effects.removeWrapper( el );\n +\t\t\tdone();\n +\t\t}\n +\t});\n +};\n +\n +})(jQuery);\n +(function( $, undefined ) {\n +\n +$.effects.effect.transfer = function( o, done ) {\n +\tvar elem = $( this ),\n +\t\ttarget = $( o.to ),\n +\t\ttargetFixed = target.css( "position" ) === "fixed",\n +\t\tbody = $("body"),\n +\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n +\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n +\t\tendPosition = target.offset(),\n +\t\tanimation = {\n +\t\t\ttop: endPosition.top - fixTop ,\n +\t\t\tleft: endPosition.left - fixLeft ,\n +\t\t\theight: target.innerHeight(),\n +\t\t\twidth: target.innerWidth()\n +\t\t},\n +\t\tstartPosition = elem.offset(),\n +\t\ttransfer = $( \'<div class="ui-effects-transfer"></div>\' )\n +\t\t\t.appendTo( document.body )\n +\t\t\t.addClass( o.className )\n +\t\t\t.css({\n +\t\t\t\ttop: startPosition.top - fixTop ,\n +\t\t\t\tleft: startPosition.left - fixLeft ,\n +\t\t\t\theight: elem.innerHeight(),\n +\t\t\t\twidth: elem.innerWidth(),\n +\t\t\t\tposition: targetFixed ? "fixed" : "absolute"\n +\t\t\t})\n +\t\t\t.animate( animation, o.duration, o.easing, function() {\n +\t\t\t\ttransfer.remove();\n +\t\t\t\tdone();\n +\t\t\t});\n +};\n +\n +})(jQuery);\n + ]]></string> </value> </item> diff --git a/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.min.js.xml b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..9dfeca78108b6051dc690145ee54e8b7d050d8f1 --- /dev/null +++ b/bt5/erp5_jquery_ui/PathTemplateItem/portal_skins/erp5_jquery/jquery/ui/js/jquery-ui.min.js.xml @@ -0,0 +1,120 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts58256134.5</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>jquery-ui.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>237802</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>jquery-ui-1.9.2.custom.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*! jQuery UI - v1.9.2 - 2013-01-15\n +* http://jqueryui.com\n +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.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\n +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */\n +\n +(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method \'"+o+"\'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method \'"+o+"\' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\\w+)\\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\\+\\-]\\d+%?/,f=/^\\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style=\'display:block;width:50px;height:50px;overflow:hidden;\'><div style=\'height:100px;width:auto;\'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\\d/.test(i[0])&&(i[0]="+"+i[0]),/^\\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e(\'<div class="ui-draggable-iframeFix" style="background: #fff;"></div>\').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.left<u[0]&&(s=u[0]+this.offset.click.left),t.pageY-this.offset.click.top<u[1]&&(o=u[1]+this.offset.click.top),t.pageX-this.offset.click.left>u[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.top<u[1]||f-this.offset.click.top>u[3]?f-this.offset.click.top<u[1]?f+n.grid[1]:f-n.grid[1]:f:f;var l=n.grid[0]?this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX;s=u?l-this.offset.click.left<u[0]||l-this.offset.click.left>u[2]?l-this.offset.click.left<u[0]?l+n.grid[0]:l-n.grid[0]:l:l}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(e){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("draggable"),i=this,s=function(t){var n=this.offset.click.top,r=this.offset.click.left,i=this.positionAbs.top,s=this.positionAbs.left,o=t.height,u=t.width,a=t.top,f=t.left;return e.ui.isOver(i+n,s+r,a,f,o,u)};e.each(r.sortables,function(s){var o=!1,u=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!=u&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(u.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n){var r=e("body"),i=e(this).data("draggable").options;r.css("cursor")&&(i._cursor=r.css("cursor")),r.css("cursor",i.cursor)},stop:function(t,n){var r=e(this).data("draggable").options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(t,n){var r=e(this).data("draggable");r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"&&(r.overflowOffset=r.scrollParent.offset())},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=!1;if(r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"){if(!i.axis||i.axis!="x")r.overflowOffset.top+r.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop-i.scrollSpeed);if(!i.axis||i.axis!="y")r.overflowOffset.left+r.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft-i.scrollSpeed)}else{if(!i.axis||i.axis!="x")t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed));if(!i.axis||i.axis!="y")t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))}s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n){var r=e(this).data("draggable"),i=r.options;r.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!=r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=i.snapTolerance,o=n.offset.left,u=o+r.helperProportions.width,a=n.offset.top,f=a+r.helperProportions.height;for(var l=r.snapElements.length-1;l>=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s<o&&o<h+s&&p-s<a&&a<d+s||c-s<o&&o<h+s&&p-s<f&&f<d+s||c-s<u&&u<h+s&&p-s<a&&a<d+s||c-s<u&&u<h+s&&p-s<f&&f<d+s)){r.snapElements[l].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=!1;continue}if(i.snapMode!="inner"){var v=Math.abs(p-f)<=s,m=Math.abs(d-a)<=s,g=Math.abs(c-u)<=s,y=Math.abs(h-o)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p-r.helperProportions.height,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c-r.helperProportions.width}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h}).left-r.margins.left)}var b=v||m||g||y;if(i.snapMode!="outer"){var v=Math.abs(p-a)<=s,m=Math.abs(d-f)<=s,g=Math.abs(c-o)<=s,y=Math.abs(h-u)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d-r.helperProportions.height,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h-r.helperProportions.width}).left-r.margins.left)}!r.snapElements[l].snapping&&(v||m||g||y||b)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=v||m||g||y||b}}}),e.ui.plugin.add("draggable","stack",{start:function(t,n){var r=e(this).data("draggable").options,i=e.makeArray(e(r.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!i.length)return;var s=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=s+e}),this[0].style.zIndex=s+i.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);(function(e,t){e.widget("ui.droppable",{version:"1.9.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,n=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];for(var n=0;n<t.length;n++)t[n]==this&&t.splice(n,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t=="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current;if(!r||(r.currentItem||r.element)[0]==this.element[0])return!1;var i=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope==r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,n,r){if(!n.offset)return!1;var i=(t.positionAbs||t.position.absolute).left,s=i+t.helperProportions.width,o=(t.positionAbs||t.position.absolute).top,u=o+t.helperProportions.height,a=n.offset.left,f=a+n.proportions.width,l=n.offset.top,c=l+n.proportions.height;switch(r){case"fit":return a<=i&&s<=f&&l<=o&&u<=c;case"intersect":return a<i+t.helperProportions.width/2&&s-t.helperProportions.width/2<f&&l<o+t.helperProportions.height/2&&u-t.helperProportions.height/2<c;case"pointer":var h=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,d=e.ui.isOver(p,h,l,a,n.proportions.height,n.proportions.width);return d;case"touch":return(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c)&&(i>=a&&i<=f||s>=a&&s<=f||i<a&&s>f);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o<r.length;o++){if(r[o].options.disabled||t&&!r[o].accept.call(r[o].element[0],t.currentItem||t.element))continue;for(var u=0;u<s.length;u++)if(s[u]==r[o].element[0]){r[o].proportions.height=0;continue e}r[o].visible=r[o].element.css("display")!="none";if(!r[o].visible)continue;i=="mousedown"&&r[o]._activate.call(r[o],n),r[o].offset=r[o].element.offset(),r[o].proportions={width:r[o].element[0].offsetWidth,height:r[o].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r=e.ui.intersect(t,this,this.options.tolerance),i=!r&&this.isover==1?"isout":r&&this.isover==0?"isover":null;if(!i)return;var s;if(this.options.greedy){var o=this.options.scope,u=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===o});u.length&&(s=e.data(u[0],"droppable"),s.greedyChild=i=="isover"?1:0)}s&&i=="isover"&&(s.isover=0,s.isout=1,s._out.call(s,n)),this[i]=1,this[i=="isout"?"isover":"isout"]=0,this[i=="isover"?"_over":"_out"].call(this,n),s&&i=="isout"&&(s.isout=0,s.isover=1,s._over.call(s,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e(\'<div class="ui-wrapper" style="overflow: hidden;"></div>\').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i<r.length;i++){var s=e.trim(r[i]),o="ui-resizable-"+s,u=e(\'<div class="ui-resizable-handle \'+o+\'"></div>\');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")}).insertAfter(n),n.remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),i<u.maxWidth&&(u.maxWidth=i),o<u.maxHeight&&(u.maxHeight=o);this._vBoundaries=u},_updateCache:function(e){var t=this.options;this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e,t){var n=this.options,i=this.position,s=this.size,o=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),o=="sw"&&(e.left=i.left+(s.width-e.width),e.top=null),o=="nw"&&(e.top=i.top+(s.height-e.height),e.left=i.left+(s.width-e.width)),e},_respectSize:function(e,t){var n=this.helper,i=this._vBoundaries,s=this._aspectRatio||t.shiftKey,o=this.axis,u=r(e.width)&&i.maxWidth&&i.maxWidth<e.width,a=r(e.height)&&i.maxHeight&&i.maxHeight<e.height,f=r(e.width)&&i.minWidth&&i.minWidth>e.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r<this._proportionallyResizeElements.length;r++){var i=this._proportionallyResizeElements[r];if(!this.borderDif){var s=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],o=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];this.borderDif=e.map(s,function(e,t){var n=parseInt(e,10)||0,r=parseInt(o[t],10)||0;return n+r})}i.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset();if(this._helper){this.helper=this.helper||e(\'<div style="overflow:hidden;"></div>\');var r=e.ui.ie6?1:0,i=e.ui.ie6?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+i,height:this.element.outerHeight()+i,position:"absolute",left:this.elementOffset.left-r+"px",top:this.elementOffset.top-r+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class=\'ui-selectable-helper\'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.right<i||a.top>u||a.bottom<s):r.tolerance=="fit"&&(f=a.left>i&&a.right<o&&a.top>s&&a.bottom<u),f?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,n._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),n._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&!t.metaKey&&!t.ctrlKey&&!a.startselected&&(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,n._trigger("unselecting",t,{unselecting:a.element})))}),!1},_mouseStop:function(t){var n=this;this.dragged=!1;var r=this.options;return e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&(r.active===!1||r.active==null)&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var n=t._create;t._create=function(){if(this.options.navigation){var t=this,r=this.element.find(this.options.header),i=r.next(),s=r.add(i).find("a").filter(this.options.navigationFilter)[0];s&&r.add(i).each(function(n){if(e.contains(this,s))return t.options.active=Math.floor(n/2),!1})}n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var n=t._create,r=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),n.call(this)},_setOption:function(e){if(e==="autoHeight"||e==="clearStyle"||e==="fillSpace")this.options.heightStyle=this._mergeHeightStyle();r.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;if(e.fillSpace)return"fill";if(e.clearStyle)return"content";if(e.autoHeight)return"auto"}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var n=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var n=t._findActive;t._findActive=function(e){return e===-1&&(e=!1),e&&typeof e!="number"&&(e=this.headers.index(this.headers.filter(e)),e===-1&&(e=!1)),n.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var n=t._trigger;t._trigger=function(e,t,r){var i=n.apply(this,arguments);return i?(e==="beforeActivate"?i=n.call(this,"changestart",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel}):e==="activate"&&(i=n.call(this,"change",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel})),i):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var n=t._create;t._create=function(){var e=this.options;e.animate===null&&(e.animated?e.animated==="slide"?e.animate=300:e.animated==="bounceslide"?e.animate={duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animate=e.animated:e.animate=!1),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.i + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +sLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,"\\\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find("[name=\'"+n+"\']"):i=e("[name=\'"+n+"\']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.9.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).toggleClass("ui-state-active"),t.buttonElement.attr("aria-pressed",t.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for=\'"+this.element.attr("id")+"\']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class=\'ui-button-icon-primary ui-icon "+r.primary+"\'></span>"),r.secondary&&t.append("<span class=\'ui-button-icon-secondary ui-icon "+r.secondary+"\'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($(\'<div id="\'+this._mainDivId+\'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>\'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($(\'<div class="\'+this._inlineClass+\' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>\')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$(\'<span class="\'+this._appendClass+\'">\'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$(\'<button type="button"></button>\').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$(\'<input type="text" id="\'+o+\'" style="position: absolute; top: -100px; width: 0px;"/>\'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="\'"&&!p("\'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"\'":p("\'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="\'"&&!u("\'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"\'":u("\'")?l+="\'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="\'"&&!r("\'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"\'":r("\'")?t+="\'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\\\\\/g,"\\\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?\'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="\'+m+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(n?"e":"w")+\'">\'+m+"</span></a>":i?"":\'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="\'+m+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(n?"e":"w")+\'">\'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?\'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="\'+y+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(n?"w":"e")+\'">\'+y+"</span></a>":i?"":\'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="\'+y+\'"><span class="ui-icon ui-icon-circle-triangle-\'+(n?"w":"e")+\'">\'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":\'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">\'+this._get(e,"closeText")+"</button>",x=r?\'<div class="ui-datepicker-buttonpane ui-widget-content">\'+(n?S:"")+(this._isInRange(e,E)?\'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">\'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+=\'<div class="ui-datepicker-group\';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+=\'">\'}U+=\'<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix\'+R+\'">\'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+\'</div><table class="ui-datepicker-calendar"><thead>\'+"<tr>";var z=N?\'<th class="ui-datepicker-week-col">\'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?\' class="ui-datepicker-week-end"\':"")+">"+\'<span title="\'+C[X]+\'">\'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?\'<td class="ui-datepicker-week-col">\'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+=\'<td class="\'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+\'"\'+((!tt||_)&&et[2]?\' title="\'+et[2]+\'"\':"")+(nt?"":\' data-handler="selectDay" data-event="click" data-month="\'+G.getMonth()+\'" data-year="\'+G.getFullYear()+\'"\')+">"+(tt&&!_?" ":nt?\'<span class="ui-state-default">\'+G.getDate()+"</span>":\'<a class="ui-state-default\'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+\'" href="#">\'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?\'<div class="ui-datepicker-row-break"></div>\':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?\'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>\':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c=\'<div class="ui-datepicker-title">\',h="";if(s||!a)h+=\'<span class="ui-datepicker-month">\'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+=\'<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">\';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+=\'<option value="\'+v+\'"\'+(v==t?\' selected="selected"\':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?" ":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+=\'<span class="ui-datepicker-year">\'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+=\'<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">\';for(;b<=w;b++)e.yearshtml+=\'<option value="\'+b+\'"\'+(b==n?\' selected="selected"\':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?" ":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.2",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||" ",s,o,u,a,f;s=(this.uiDialog=e("<div>")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),o=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").bind("mousedown",function(){s.focus()}).prependTo(s),u=e("<a href=\'#\'></a>").addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(o),(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(u),a=e("<span>").uniqueId().addClass("ui-dialog-title").html(i).prependTo(o),f=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(f),s.attr({role:"dialog","aria-labelledby":a.attr("id")}),o.find("*").add(o).disableSelection(),this._hoverable(u),this._focusable(u),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n=this,r=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(r=!0)}),r?(e.each(t,function(t,r){var i,s;r=e.isFunction(r)?{click:r,text:t}:r,r=e.extend({type:"button"},r),s=r.click,r.click=function(){s.apply(n.element[0],arguments)},i=e("<button></button>",r).appendTo(n.uiButtonSet),e.fn.button&&i.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(n){function u(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}n=n===t?this.options.resizable:n;var r=this,i=this.options,s=this.uiDialog.css("position"),o=typeof n=="string"?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,n){e(this).addClass("ui-dialog-resizing"),r._trigger("resizeStart",t,u(n))},resize:function(e,t){r._trigger("resize",e,u(t))},stop:function(t,n){e(this).removeClass("ui-dialog-resizing"),i.height=e(this).height(),i.width=e(this).width(),r._trigger("resizeStop",t,u(n)),e.ui.dialog.overlay.resize()}}).css("position",s).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var n=this,s={},o=!1;e.each(t,function(e,t){n._setOption(e,t),e in r&&(o=!0),e in i&&(s[e]=t)}),o&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,r){var i,s,o=this.uiDialog;switch(t){case"buttons":this._createButtons(r);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+r);break;case"dialogClass":o.removeClass(this.options.dialogClass).addClass(n+r);break;case"disabled":r?o.addClass("ui-dialog-disabled"):o.removeClass("ui-dialog-disabled");break;case"draggable":i=o.is(":data(draggable)"),i&&!r&&o.draggable("destroy"),!i&&r&&this._makeDraggable();break;case"position":this._position(r);break;case"resizable":s=o.is(":data(resizable)"),s&&!r&&o.resizable("destroy"),s&&typeof r=="string"&&o.resizable("option","handles",r),!s&&r!==!1&&this._makeResizable(r);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(r||" "))}this._super(t,r)},_size:function(){var t,n,r,i=this.options,s=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),n=Math.max(0,i.minHeight-t),i.height==="auto"?e.support.minHeight?this.element.css({minHeight:n,height:"auto"}):(this.uiDialog.show(),r=this.element.css("height","auto").height(),s||this.uiDialog.hide(),this.element.height(Math.max(r,n))):this.element.height(Math.max(i.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(t){this.instances.length===0&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(t){if(e(t.target).zIndex()<e.ui.dialog.overlay.maxZ)return!1})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var n=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(r){var i=e.ui.dialog.overlay.instances;i.length!==0&&i[i.length-1]===n&&t.options.closeOnEscape&&!r.isDefaultPrevented()&&r.keyCode&&r.keyCode===e.ui.keyCode.ESCAPE&&(t.close(r),r.preventDefault())}),n.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&n.bgiframe(),this.instances.push(n),n},destroy:function(t){var n=e.inArray(t,this.instances),r=0;n!==-1&&this.oldInstances.push(this.instances.splice(n,1)[0]),this.instances.length===0&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){r=Math.max(r,this.css("z-index"))}),this.maxZ=r},height:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),t<n?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),n=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),t<n?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,"\\\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup=\'true\']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\\-—–\\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){e.widget("ui.progressbar",{version:"1.9.2",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class=\'ui-progressbar-value ui-widget-header ui-corner-left\'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class=\'ui-slider-handle ui-state-default ui-corner-all\' href=\'#\'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class=\'ui-spinner ui-widget ui-widget-content ui-corner-all\'></span>"},_buttonHtml:function(){return"<a class=\'ui-spinner-button ui-spinner-up ui-corner-tr\'><span class=\'ui-icon "+this.options.icons.up+"\'>▲</span>"+"</a>"+"<a class=\'ui-spinner-button ui-spinner-down ui-corner-br\'>"+"<span class=\'ui-icon "+this.options.icons.down+"\'>▼</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"").replace(/\\s/g,"%20")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&\'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g,"\\\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$=\'"+e+"\']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading…</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href=\'#{href}\'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\\{href\\}/g,n).replace(/#\\{label\\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\\s/g,"_").replace(/[^\\w\\u00c0-\\uFFFF\\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r,i,s=this._superApply(arguments);return s?(e==="beforeActivate"?(r=n.newTab.length?n.newTab:n.oldTab,i=n.newPanel.length?n.newPanel:n.oldPanel,s=this._super("select",t,{tab:r.find(".ui-tabs-anchor")[0],panel:i[0],index:r.closest("li").index()})):e==="activate"&&n.newTab.length&&(s=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),s):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);jQuery.effects||function(e,t){var n=e.uiBackCompat!==!1,r="ui-effects-";e.effects={effect:{}},function(t,n){function p(e,t,n){var r=a[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function d(e){var n=o(),r=n._rgba=[];return e=e.toLowerCase(),h(s,function(t,i){var s,o=i.re.exec(e),a=o&&i.parse(o),f=i.space||"rgba";if(a)return s=n[f](a),n[u[f].cache]=s[u[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&t.extend(r,c.transparent),n):c[e]}function v(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),i=/^([\\-+])=\\s*(\\d+\\.?\\d*)/,s=[{re:/rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],o=t.Color=function(e,n,r,i){return new t.Color.fn.parse(e,n,r,i)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},a={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},f=o.support={},l=t("<p>")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[];i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(l){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i;if(t&&t.length&&t[0]&&t[t[0]]){i=t.length;while(i--)r=t[i],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.2",save:function(e,t){for(var n=0;n<t.length;n++)t[n]!==null&&e.data(r+t[n],e[0].style[t[n]])},restore:function(e,n){var i,s;for(s=0;s<n.length;s++)n[s]!==null&&(i=e.data(r+n[s]),i===t&&(i=""),e.css(n[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function a(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,s=t.mode;(r.is(":hidden")?s==="hide":s==="show")?u():o.call(r[0],t,u)}var t=i.apply(this,arguments),r=t.mode,s=t.queue,o=e.effects.effect[t.effect],u=!o&&n&&e.effects[t.effect];return e.fx.off||!o&&!u?r?this[r](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):o?s===!1?this.each(a):this.queue(s||"fx",a):u.call(this,{options:t,duration:t.duration,callback:t.complete,mode:t.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e(\'<div class="ui-effects-transfer"></div>\').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery); + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_jquery_ui/bt/change_log b/bt5/erp5_jquery_ui/bt/change_log index 40ee0ff3c08f67dcef80796571a59ac2322cd3ac..23a929774129b5214dad055ab1c9ca3bce4b4411 100644 --- a/bt5/erp5_jquery_ui/bt/change_log +++ b/bt5/erp5_jquery_ui/bt/change_log @@ -1,3 +1,6 @@ +2013-01-15 Kazuhiko +* jquery-ui 1.9.2. + 2012-07-30 Kazuhiko * jquery-ui 1.8.22. diff --git a/bt5/erp5_jquery_ui/bt/revision b/bt5/erp5_jquery_ui/bt/revision index dec2bf5d6199c7cd0d84f3dc1e76a73ccc336302..b5045cc4046dbc1d7cafa4c603fd3cdf35dc5dde 100644 --- a/bt5/erp5_jquery_ui/bt/revision +++ b/bt5/erp5_jquery_ui/bt/revision @@ -1 +1 @@ -19 \ No newline at end of file +21 \ No newline at end of file diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml index ac4ad49aad74ef8af7dbcea3b77665c931deb984..463e05474a4e7a578e9b8afbd1423e24ab24dee2 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml @@ -75,6 +75,11 @@ while real_context.isTempObject():\n real_context = real_context.getParentValue()\n real_context_url = real_context.getRelativeUrl()\n \n +real_context_url_list = real_context_url.split("/")\n +current_language = context.Localizer.get_selected_language()\n +if current_language in real_context_url_list:\n + real_context_url = "/".join(filter(lambda x: x != current_language, real_context_url_list))\n +\n # first filter if we have a custom Pad for the context\n for knowledge_pad in knowledge_pads:\n pad_state = knowledge_pad.getValidationState()\n @@ -88,7 +93,7 @@ for knowledge_pad in knowledge_pads:\n return knowledge_pad, knowledge_pads\n elif len(publication_section_list) == 0 and default_pad_group in MARKER and pad_state in visible_state_list:\n # ERP5 Site front gadget \n - return knowledge_pad, knowledge_pads \n + return knowledge_pad, knowledge_pads\n \n # no customized version found for this context so\n # try finding pad by group\n diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getJavaScriptRelativeUrlList.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getJavaScriptRelativeUrlList.xml index fd02ab8ed12279a9dd2b328b92bc196899975844..9da4d39d021fa7706f2dfd51a4265c887c021f4b 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getJavaScriptRelativeUrlList.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getJavaScriptRelativeUrlList.xml @@ -59,7 +59,7 @@ #\n # BBB: For the history, erp5_xhtml_appearance.js is included by default when\n # js_list is not pre-defined before the global definitions.\n -js_list = (\'jquery/core/jquery.js\', \'jquery/ui/js/jquery-ui.js\', \'erp5.js\', \'erp5_knowledge_box.js\',)\n +js_list = (\'jquery/core/jquery.min.js\', \'jquery/ui/js/jquery-ui.min.js\', \'erp5.js\', \'erp5_knowledge_box.js\',)\n return js_list\n </string> </value> </item> diff --git a/bt5/erp5_knowledge_pad/bt/revision b/bt5/erp5_knowledge_pad/bt/revision index 5d1d1b123b85a650151ddcc8869d7c658cedc0e0..d7a801b1e025b77dc5494decd11cc783390f53cf 100644 --- a/bt5/erp5_knowledge_pad/bt/revision +++ b/bt5/erp5_knowledge_pad/bt/revision @@ -1 +1 @@ -755 \ No newline at end of file +757 \ No newline at end of file diff --git a/bt5/erp5_l10n_fr/MessageTranslationTemplateItem/fr/erp5_content/translation.po b/bt5/erp5_l10n_fr/MessageTranslationTemplateItem/fr/erp5_content/translation.po index 24798d0648713d8e04a2895dbe9be8791c9db770..d742556510882450497a448d9ef96d747a924a37 100644 --- a/bt5/erp5_l10n_fr/MessageTranslationTemplateItem/fr/erp5_content/translation.po +++ b/bt5/erp5_l10n_fr/MessageTranslationTemplateItem/fr/erp5_content/translation.po @@ -642,6 +642,9 @@ msgstr "Djibouti" msgid "Djiboutian" msgstr "Djiboutien" +msgid "Doctor" +msgstr "Docteur" + msgid "Documentation" msgstr "Documentation" @@ -1347,6 +1350,9 @@ msgstr "Fabrication de machines et équipements n.c.a." msgid "Madagascar" msgstr "Madagascar" +msgid "Madam" +msgstr "Madame" + msgid "Mahorais" msgstr "Mahorais" @@ -1509,6 +1515,12 @@ msgstr "Services d'exploitation minière et de forage pour le pétrole et le gaz msgid "Minute" msgstr "Minute" +msgid "Miss" +msgstr "Mademoiselle" + +msgid "Mister" +msgstr "Monsieur" + msgid "Moldovan" msgstr "Moldave" diff --git a/bt5/erp5_l10n_fr/bt/revision b/bt5/erp5_l10n_fr/bt/revision index cbd6012bc6f6c4ceb791c8b2ae7ff8d5978d3875..e0d1ea1e9ac39d1d0d9353874b9ca7b440121f23 100644 --- a/bt5/erp5_l10n_fr/bt/revision +++ b/bt5/erp5_l10n_fr/bt/revision @@ -1 +1 @@ -204 \ No newline at end of file +205 \ No newline at end of file diff --git a/bt5/erp5_mrp/SkinTemplateItem/portal_skins/erp5_mrp/ProductionOrder_zSelectMovement.xml b/bt5/erp5_mrp/SkinTemplateItem/portal_skins/erp5_mrp/ProductionOrder_zSelectMovement.xml index 142d9db13fd1031e60913270735edb1036f652c2..090d9ee37503308f66cc115a4fe2184548430e74 100644 --- a/bt5/erp5_mrp/SkinTemplateItem/portal_skins/erp5_mrp/ProductionOrder_zSelectMovement.xml +++ b/bt5/erp5_mrp/SkinTemplateItem/portal_skins/erp5_mrp/ProductionOrder_zSelectMovement.xml @@ -16,7 +16,8 @@ <key> <string>arguments_src</string> </key> <value> <string>from_table_list:list\r\n where_expression\r\n -order_by_expression</string> </value> +order_by_expression\r\n +limit_expression</string> </value> </item> <item> <key> <string>cache_time_</string> </key> @@ -44,7 +45,7 @@ order_by_expression</string> </value> </item> <item> <key> <string>max_cache_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>max_rows_</string> </key> @@ -83,7 +84,9 @@ WHERE\n <dtml-if order_by_expression>\n ORDER BY <dtml-var order_by_expression>\n </dtml-if>\n - +<dtml-if limit_expression>\n +LIMIT <dtml-var limit_expression>\n +</dtml-if> ]]></string> </value> </item> diff --git a/bt5/erp5_mrp/bt/revision b/bt5/erp5_mrp/bt/revision index d7b14a6c47450ae9b84d7ccecc7de768a95042d9..b1eab89dbc94ec2b1d30843dbc5a7f61343a7350 100644 --- a/bt5/erp5_mrp/bt/revision +++ b/bt5/erp5_mrp/bt/revision @@ -1 +1 @@ -476 \ No newline at end of file +477 \ No newline at end of file diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Task_zSelectMovement.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Task_zSelectMovement.xml index 6e1b7cdeeffab24d6b887c4b26634f562afa81ea..d5da1b0d936c52ec21f1600bf9bb381496082cdf 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Task_zSelectMovement.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Task_zSelectMovement.xml @@ -16,7 +16,8 @@ <key> <string>arguments_src</string> </key> <value> <string>from_table_list:list\r\n where_expression\r\n -order_by_expression</string> </value> +order_by_expression\r\n +limit_expression</string> </value> </item> <item> <key> <string>cache_time_</string> </key> @@ -44,11 +45,11 @@ order_by_expression</string> </value> </item> <item> <key> <string>max_cache_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>max_rows_</string> </key> - <value> <int>1000</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>src</string> </key> @@ -84,6 +85,9 @@ WHERE\n \n <dtml-if order_by_expression>\n ORDER BY <dtml-var order_by_expression>\n +</dtml-if>\n +<dtml-if limit_expression>\n +LIMIT <dtml-var limit_expression>\n </dtml-if> ]]></string> </value> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project_trade/SaleOrder_viewDetailedReportMacro.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project_trade/SaleOrder_viewDetailedReportMacro.xml index 91caea7c7a144c278f3612558d7c3d4760a95ee5..a7af3c220c577b82e2a9a44fcbb54f0c014238ff 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project_trade/SaleOrder_viewDetailedReportMacro.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project_trade/SaleOrder_viewDetailedReportMacro.xml @@ -101,8 +101,10 @@ <text:span text:style-name=\'T1\' i18n:translate="Resources" i18n:domain="erp5_ui">Resources</text:span>: <tal:block tal:replace="python:\', \'.join(line_item.getSourceTradeTitleList([]))">JP Smets, B. Faye</tal:block></text:p>\n <text:p text:style-name=\'Project_20_Box\' tal:condition="line_item/getOutcomeDescription">\n <text:span text:style-name=\'T1\' i18n:translate="Result" i18n:domain="erp5_ui">Result</text:span>: <tal:block tal:replace="line_item/getOutcomeDescription">description of result</tal:block>\n - </text:p>\n - <text:p text:style-name=\'Text_20_body\' tal:content="line_item/getDescription">Description of project line.</text:p>\n + </text:p>\n + <tal:block tal:repeat="partial_description python: line_item.getDescription().split(\'\\n\')">\n + <text:p text:style-name=\'Text_20_body\' tal:content="partial_description">Project Line description</text:p>\n + </tal:block>\n <tal:block tal:define="global current_line python:line_item"/>\n <tal:block metal:use-macro="here/SaleOrder_viewDetailedReportMacro/macros/line"/>\n </tal:block>\n @@ -129,7 +131,10 @@ </tal:block>\n <text:span text:style-name=\'T1\' i18n:translate="End" i18n:domain="erp5_ui">End</text:span>: <tal:block tal:replace="line_item/getStopDate">2006-01-01</tal:block>\n </text:p>\n - <text:p text:style-name=\'Text_20_body\' tal:content="line_item/getDescription">Description of project line.</text:p>\n + <tal:block tal:repeat="partial_description python: line_item.getDescription().split(\'\\n\')">\n + <text:p text:style-name=\'Text_20_body\' tal:content="partial_description">Milestone description</text:p>\n + </tal:block>\n +\n <tal:block tal:define="global depth python:depth - 1"/>\n </tal:block>\n \n @@ -138,8 +143,7 @@ </tal:block>\n </office:text>\n </office:body>\n -</office:document-content>\n - +</office:document-content> ]]></unicode> </value> </item> diff --git a/bt5/erp5_project/bt/revision b/bt5/erp5_project/bt/revision index d2014d1325a1a06af2e4fc4ef62f8224143b5657..2cc890563420dd916788cc3b8fe0a060451ab9f7 100644 --- a/bt5/erp5_project/bt/revision +++ b/bt5/erp5_project/bt/revision @@ -1 +1 @@ -817 \ No newline at end of file +820 \ No newline at end of file diff --git a/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile%20Group/view.xml b/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile%20Group/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..27f22b1608d6aed9908c81c3a494feda9b7a4fcf --- /dev/null +++ b/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile%20Group/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/ImageTileGroup_view</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile%20Transformed/view.xml b/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile%20Transformed/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..230f9453b99d1059021474e83f6e3c9ea51f91c9 --- /dev/null +++ b/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile%20Transformed/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/ImageTileTransformed_view</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile/view.xml b/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..a00b4ced65a58a3c6ac36d38e6b6d02bd9e64a29 --- /dev/null +++ b/bt5/erp5_safeimage/ActionTemplateItem/portal_types/Image%20Tile/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/ImageTile_view</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/DocumentTemplateItem/TileImage.py b/bt5/erp5_safeimage/DocumentTemplateItem/TileImage.py new file mode 100644 index 0000000000000000000000000000000000000000..4dce76abfe50dc3cad0670ee02c948c3cd673f25 --- /dev/null +++ b/bt5/erp5_safeimage/DocumentTemplateItem/TileImage.py @@ -0,0 +1,18 @@ +from Products.ERP5.Document.Image import Image +from zLOG import LOG,INFO,ERROR,WARNING + +class TileImage(Image): + """ + Tile Images split images in many small parts and then store informations as sub objects + """ + + def _setFile(self, *args, **kw): + """Set the file content and reset image information.""" + if "TileGroup0" in self.objectIds(): + self.manage_delObjects("TileGroup0") + if "ImageProperties.xml" in self.objectIds(): + self.manage_delObjects("ImageProperties.xml") + self._update_image_info() + processor = self.Image_getERP5ZoomifyProcessor(self) + processor.ZoomifyProcess(self.getId(),*args) + diff --git a/bt5/erp5_safeimage/DocumentTemplateItem/TileImageTransformed.py b/bt5/erp5_safeimage/DocumentTemplateItem/TileImageTransformed.py new file mode 100644 index 0000000000000000000000000000000000000000..466787ccecd19c9b734940556b1aa542d84022ef --- /dev/null +++ b/bt5/erp5_safeimage/DocumentTemplateItem/TileImageTransformed.py @@ -0,0 +1,17 @@ +from Products.ERP5.Document.Image import Image +from zLOG import LOG,INFO,ERROR,WARNING + + +class TileImageTransformed(Image): + """ + Tile Images split images in many small parts and then store informations as sub objects + """ + def _setFile(self, *args, **kw): + """Set the file content and reset image information.""" + if "TileGroup0" in self.objectIds(): + self.manage_delObjects("TileGroup0") + if "ImageProperties.xml" in self.objectIds(): + self.manage_delObjects("ImageProperties.xml") + self._update_image_info() + processor = self.Image_getERP5ZoomifyProcessor(self,True) + processor.ZoomifyProcess(self.getId(),*args) diff --git a/bt5/erp5_safeimage/ExtensionTemplateItem/ERP5SafeImage_Selenium.py b/bt5/erp5_safeimage/ExtensionTemplateItem/ERP5SafeImage_Selenium.py new file mode 100644 index 0000000000000000000000000000000000000000..1fcd8a01b04b85fa06fbf3828f0e67ab45f2d60d --- /dev/null +++ b/bt5/erp5_safeimage/ExtensionTemplateItem/ERP5SafeImage_Selenium.py @@ -0,0 +1,51 @@ +import Image as PIL_Image +import os +import transaction +from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase + + +class FileUpload(file): + """Act as an uploaded file. + """ + __allow_access_to_unprotected_subobjects__ = 1 + def __init__(self, path, name): + self.filename = name + file.__init__(self, path) + self.headers = {} + +def makeFilePath(name): + # return os.path.join(os.path.dirname(__file__), 'tmp', name) + return name + +def makeFileUpload(name, as_name=None): + if as_name is None: + as_name = name + path = makeFilePath(name) + return FileUpload(path, as_name) + + +def uploadImage(self): + portal = self.getPortalObject() + image = portal.restrictedTraverse('portal_skins/erp5_safeimage/img/image_test.jpg') + path_image = "tmp/selenium_image_test.jpg" + fd = os.open(path_image, os.O_CREAT | os.O_RDWR) + os.write(fd,str(image.data)) + os.close(fd) + tile_image_transformed = makeFileUpload(path_image) + tile_transformed = self.image_module.newContent(portal_type='Image Tile Transformed', + title='testTileTransformed', id='testTileTransformed', + file=tile_image_transformed, filename='testTileTransformed') + if tile_transformed: + return True + else: + return False + +def cleanUp(self): + portal = self.getPortalObject() + print "exists path: %r" %os.path.exists("tmp/selenium_image_test.jpg") + if os.path.exists("tmp/selenium_image_test.jpg"): + print "REMOVE IMAGE: %s" %(os.remove("tmp/selenium_image_test.jpg")) + portal.image_module.manage_delObjects(ids=['testTileTransformed']) + return True + else: + return False diff --git a/bt5/erp5_safeimage/ExtensionTemplateItem/ERP5ZoomifyImage.py b/bt5/erp5_safeimage/ExtensionTemplateItem/ERP5ZoomifyImage.py new file mode 100644 index 0000000000000000000000000000000000000000..64117892a6d4df4a741515d090b5081606edb659 --- /dev/null +++ b/bt5/erp5_safeimage/ExtensionTemplateItem/ERP5ZoomifyImage.py @@ -0,0 +1,576 @@ +############################################################################## +# Copyright (C) 2005 Adam Smith asmith@agile-software.com +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +import os, sys, shutil, tempfile +import Image +from cStringIO import StringIO +from zLOG import LOG,ERROR,INFO,WARNING +from OFS.Image import File, Image +import os, transaction +from AccessControl import getSecurityManager, ClassSecurityInfo +from Globals import package_home +import Image as PIL_Image +import thread +import random +import base64 +from OFS.Folder import Folder + +class ZoomifyBase: + + _v_imageFilename = '' + format = '' + originalWidth = 0 + originalHeight = 0 + _v_scaleInfo = [] + numberOfTiles = 0 + _v_tileGroupMappings = {} + qualitySetting = 80 + tileSize = 256 + my_file = StringIO() + + def openImage(self): + """ load the image data """ + + pass + return + + def getImageInfo(self): + """ """ + + image = self.openImage() + self.format = image.format + self.originalWidth, self.originalHeight = image.size + image = None + width, height = (self.originalWidth, self.originalHeight) + self._v_scaleInfo = [(width, height)] + while (width > self.tileSize) or (height > self.tileSize): + width, height = (width / 2, height / 2) + self._v_scaleInfo.insert(0, (width, height)) + totalTiles=0 + tier, rows, columns = (0,0,0) + for tierInfo in self._v_scaleInfo: + rows = height/self.tileSize + if height % self.tileSize > 0: + rows +=1 + columns = width/self.tileSize + if width%self.tileSize > 0: + columns += 1 + totalTiles += rows * columns + tier += 1 + + def getImageMetadata(self): + """ given an image name, load it and extract metadata """ + + image = self.openImage() + self.format = image.format + self.originalWidth, self.originalHeight = image.size + image = None + # get scaling information + width, height = (self.originalWidth, self.originalHeight) + self._v_scaleInfo = [(width, height)] + while (width > self.tileSize) or (height > self.tileSize): + width, height = (width / 2, height / 2) + self._v_scaleInfo.insert(0, (width, height)) + # tile and tile group information + self.preProcess() + return + + def createDataContainer(self, imageName): + """ create a container for tile groups and tile metadata """ + + pass + return + + def getAssignedTileContainerName(self, tileFileName=None): + """ return the name of the tile group for the indicated tile """ + if tileFileName: + if hasattr(self, '_v_tileGroupMappings') and self._v_tileGroupMappings: + containerName = self._v_tileGroupMappings.get(tileFileName, None) + if containerName: + return containerName + x = self.getNewTileContainerName() + return x + + def getNewTileContainerName(self, tileGroupNumber=0): + """ return the name of the next tile group container """ + + return 'TileGroup' + str(tileGroupNumber) + + def createTileContainer(self, tileContainerName=None): + """ create a container for the next group of tiles within the data container """ + + pass + return + + def getTileFileName(self, scaleNumber, columnNumber, rowNumber): + """ get the name of the file the tile will be saved as """ + + return '%s-%s-%s.jpg' % (str(scaleNumber), str(columnNumber), str(rowNumber)) + + def getFileReference(self, scaleNumber, columnNumber, rowNumber): + """ get the full path of the file the tile will be saved as """ + + pass + return + + def getNumberOfTiles(self): + """ get the number of tiles generated + Should this be implemented as a safeguard, or just use the count of + tiles gotten from processing? (This would make subclassing a little + easier.) """ + + return self.numberOfTiles + + def getXMLOutput(self): + """ create xml metadata about the tiles """ + + numberOfTiles = self.getNumberOfTiles() + xmlOutput = '<IMAGE_PROPERTIES WIDTH="%s" HEIGHT="%s" NUMTILES="%s" NUMIMAGES="1" VERSION="1.8" TILESIZE="%s" />' + xmlOutput = xmlOutput % (str(self.originalWidth), + str(self.originalHeight), str(numberOfTiles), str(self.tileSize)) + return xmlOutput + + def saveXMLOutput(self): + """ save xml metadata about the tiles """ + + pass + return + + def saveTile(self, image, scaleNumber, column, row): + """ save the cropped region """ + + pass + return + + def processImage(self): + """ starting with the original image, start processing each row """ + tier=(len(self._v_scaleInfo) -1) + row = 0 + ul_y, lr_y = (0,0) + root, ext = os.path.splitext(self._v_imageFilename) + if not root: + root = self._v_imageFilename + ext = '.jpg' + image = self.openImage() + while row * self.tileSize < self.originalHeight: + ul_y = row * self.tileSize + if (ul_y + self.tileSize) < self.originalHeight: + lr_y = ul_y + self.tileSize + else: + lr_y = self.originalHeight + print "Going to open image" + imageRow = image.crop([0, ul_y, self.originalWidth, lr_y]) + saveFilename = root + str(tier) + '-' + str(row) + ext + if imageRow.mode != 'RGB': + imageRow = imageRow.convert('RGB') + imageRow.save(os.path.join(tempfile.gettempdir(), saveFilename), + 'JPEG', quality=100) + print "os path exist : %r" % os.path.exists(os.path.join( + tempfile.gettempdir(), saveFilename)) + if os.path.exists(os.path.join(tempfile.gettempdir(), saveFilename)): + self.processRowImage(tier=tier, row=row) + row += 1 + + def processRowImage(self, tier=0, row=0): + """ for an image, create and save tiles """ + + print '*** processing tier: ' + str(tier) + ' row: ' + str(row) + tierWidth, tierHeight = self._v_scaleInfo[tier] + rowsForTier = tierHeight/self.tileSize + if tierHeight % self.tileSize > 0: + rowsForTier +=1 + root, ext = os.path.splitext(self._v_imageFilename) + if not root: + root = self._v_imageFilename + ext = '.jpg' + imageRow = None + if tier == (len(self._v_scaleInfo) -1): + firstTierRowFile = root + str(tier) + '-' + str(row) + ext + if os.path.exists(os.path.join(tempfile.gettempdir(),firstTierRowFile)): + imageRow = PIL_Image.open(os.path.join(tempfile.gettempdir(), + firstTierRowFile)) + else: + # create this row from previous tier's rows + imageRow = PIL_Image.new('RGB', (tierWidth, self.tileSize)) + firstRowFile = root + str(tier+1) + '-' + str(row + row) + ext + firstRowWidth, firstRowHeight = (0,0) + secondRowWidth, secondRowHeight = (0,0) + if os.path.exists(os.path.join(tempfile.gettempdir(),firstRowFile)): + firstRowImage = PIL_Image.open(os.path.join(tempfile.gettempdir(), + firstRowFile)) + firstRowWidth, firstRowHeight = firstRowImage.size + imageRow.paste(firstRowImage, (0,0)) + os.remove(os.path.join(tempfile.gettempdir(), firstRowFile)) + secondRowFile = root + str(tier+1) + '-' + str(row + row +1) + ext + # there may not be a second row at the bottom of the image... + if os.path.exists(os.path.join(tempfile.gettempdir(), secondRowFile)): + secondRowImage = PIL_Image.open(os.path.join(tempfile.gettempdir(), + secondRowFile)) + secondRowWidth, secondRowHeight = secondRowImage.size + imageRow.paste(secondRowImage, (0, firstRowHeight)) + os.remove(os.path.join(tempfile.gettempdir(), secondRowFile)) + # the last row may be less than self.tileSize... + if (firstRowHeight + secondRowHeight) < (self.tileSize*2): + imageRow = imageRow.crop((0, 0, tierWidth, + (firstRowHeight+secondRowHeight))) + if imageRow: + # cycle through columns, then rows + column = 0 + imageWidth, imageHeight = imageRow.size + ul_x, ul_y, lr_x, lr_y = (0,0,0,0) # final crop coordinates + while not ((lr_x == imageWidth) and (lr_y == imageHeight)): + # set lower right cropping point + if (ul_x + self.tileSize) < imageWidth: + lr_x = ul_x + self.tileSize + else: + lr_x = imageWidth + if (ul_y + self.tileSize) < imageHeight: + lr_y = ul_y + self.tileSize + else: + lr_y = imageHeight + self.saveTile(imageRow.crop([ul_x, ul_y, lr_x, lr_y]), tier, + column, row) + self.numberOfTiles += 1 + # set upper left cropping point + if (lr_x == imageWidth): + ul_x=0 + ul_y = lr_y + column = 0 + else: + ul_x = lr_x + column += 1 + if tier > 0: + # a bug was discovered when a row was exactly 1 pixel in height + # this extra checking accounts for that + if imageHeight > 1: + tempImage = imageRow.resize((imageWidth/2, imageHeight/2), + PIL_Image.ANTIALIAS) + tempImage.save(os.path.join(tempfile.gettempdir(), root + str(tier) + + '-' + str(row) + ext)) + tempImage = None + rowImage = None + if tier > 0: + if row % 2 != 0: + self.processRowImage(tier=(tier-1), row=((row-1)/2)) + elif row == rowsForTier-1: + self.processRowImage(tier=(tier-1), row=(row/2)) + + def ZoomifyProcess(self, imageNames): + """ the method the client calls to generate zoomify metadata """ + + pass + return + + def preProcess(self): + """ plan for the arrangement of the tile groups """ + + tier = 0 + tileGroupNumber = 0 + numberOfTiles = 0 + for width, height in self._v_scaleInfo: + #cycle through columns, then rows + row, column = (0,0) + ul_x, ul_y, lr_x, lr_y = (0,0,0,0) #final crop coordinates + while not ((lr_x == width) and (lr_y == height)): + tileFileName = self.getTileFileName(tier, column, row) + tileContainerName = self.getNewTileContainerName( + tileGroupNumber=tileGroupNumber) + if numberOfTiles ==0: + self.createTileContainer(tileContainerName=tileContainerName) + elif (numberOfTiles % self.tileSize) == 0: + tileGroupNumber += 1 + tileContainerName = self.getNewTileContainerName( + tileGroupNumber=tileGroupNumber) + self.createTileContainer(tileContainerName=tileContainerName) + self._v_tileGroupMappings[tileFileName] = tileContainerName + numberOfTiles += 1 + # for the next tile, set lower right cropping point + if (ul_x + self.tileSize) < width: + lr_x = ul_x + self.tileSize + else: + lr_x = width + if (ul_y + self.tileSize) < height: + lr_y = ul_y + self.tileSize + else: + lr_y = height + # for the next tile, set upper left cropping point + if (lr_x == width): + ul_x=0 + ul_y = lr_y + column = 0 + row += 1 + else: + ul_x = lr_x + column += 1 + tier += 1 + + +class ZoomifyZopeProcessor(ZoomifyBase): + """ basic functionality to provide Zoomify functionality inside Zope """ + + _v_imageObject = None + _v_saveFolderObject = None + _v_transactionCount = 0 + security = ClassSecurityInfo() + security.declareObjectProtected('Add Documents, Images, and Files') + + def openImage(self): + """ load the image data """ + + return PIL_Image.open(self._v_imageObject.name) + + def createDefaultViewer(self): + """ add the default Zoomify viewer to the Zoomify metadata """ + + # also, add the default zoomifyViewer here if a zoomify viewer is acquirable + # (could this be done a better way, like using the 'web methods' + # approach that points to ZMI screens that are DTML or ZPT files + # in the product package)? + if not hasattr(self._v_saveFolderObject, 'default_ZoomifyViewer'): + defaultViewerPath = os.path.join(package_home(globals()), 'www', + 'zoomifyViewer.swf') + if os.path.isfile(defaultViewerPath): + fileContent = open(defaultViewerPath).read() + self._v_saveFolderObject._setObject('default_ZoomifyViewer', + File('default_ZoomifyViewer', '', fileContent, + 'application/x-shockwave-flash', '')) + transaction.savepoint() + return + + def createDataContainer(self): + """ create a folder that contains all the tiles of the image """ + + self._v_saveToLocation = str(self._v_imageObject.getId()) + '_data' + parent = self._v_imageObject.aq_parent + if hasattr(parent, self._v_saveToLocation): + # allow for tiles to be updated from a changed image + parent._delObject(self._v_saveToLocation) + if not hasattr(parent, self._v_saveToLocation): + newFolder = Folder() + newFolder.id = self._v_saveToLocation + parent._setObject(self._v_saveToLocation, newFolder) + self._v_saveFolderObject = parent[self._v_saveToLocation] + transaction.savepoint() + return + + def createTileContainer(self, tileContainerName=None): + """ create a container for the next group of tiles within the data container """ + + if hasattr(self._v_saveFolderObject, tileContainerName): + # allow for tiles to be updated from a changed image + self._v_saveFolderObject._delObject(tileContainerName) + if not hasattr(self._v_saveFolderObject, tileContainerName): + newFolder = Folder() + newFolder.id = tileContainerName + self._v_saveFolderObject._setObject(tileContainerName, newFolder) + transaction.savepoint() + return + + def getNumberOfTiles(self): + """ get the number of tiles generated + Should this be implemented as a safeguard, or just use the count of + tiles gotten from processing? (This would make subclassing a little + easier.) """ + return self.numberOfTiles + + def saveXMLOutput(self): + """ save xml metadata about the tiles """ + + if hasattr(self._v_saveFolderObject, 'ImageProperties.xml'): + # allow file to be updated from a changed image, regenerated tiles + self._v_saveFolderObject._delObject('ImageProperties.xml') + self._v_saveFolderObject._setObject('ImageProperties.xml', + File('ImageProperties.xml', '', self.getXMLOutput(), + 'text/xml', '')) + transaction.savepoint() + return + + def saveTile(self, image, scaleNumber, column, row): + """ save the cropped region """ + + w,h = image.size + if w != 0 and h != 0: + tileFileName = self.getTileFileName(scaleNumber, column, row) + tileContainerName = self.getAssignedTileContainerName( + tileFileName=tileFileName) + tileImageData = StringIO() + image.save(tileImageData, 'JPEG', quality=self.qualitySetting) + tileImageData.seek(0) + if hasattr(self._v_saveFolderObject, tileContainerName): + tileFolder = getattr(self._v_saveFolderObject, tileContainerName) + # if an image of this name already exists, delete and replace it. + if hasattr(tileFolder, tileFileName): + tileFolder._delObject(tileFileName) + # finally, save the image data as a Zope Image object + tileFolder._setObject(tileFileName, Image(tileFileName, '', + '', 'image/jpeg', '')) + tileFolder._getOb(tileFileName).manage_upload(tileImageData) + self._v_transactionCount += 1 + if self._v_transactionCount % 10 == 0: + transaction.savepoint() + return + + def encrypto(self): + if self.transformed: + # def encrypto(self,message='Attack at dawn'): + # """encrypto each thing""" + # key ='abcdefghijklmnop' + # iv = Random.new().read(AES.block_size) + # EncodeIV = lambda : base64.b64encode(iv) + # EncodeAES = lambda c, s: base64.b64encode(c.encrypt(message)) + # IVcoded = EncodeIV() + # cipher = AES.new(key,AES.MODE_CFB,iv) + # msg = EncodeAES(cipher,key) + # return msg + pass + else: + pass + return + + def _process(self): + """ the actual zoomify processing workflow """ + + self.createDataContainer() + self.createDefaultViewer() + self.openImage() + self.getImageMetadata() + self.processImage() + self.saveTransformedFile() + self.saveXMLOutput() + self.encrypto() + return + + def saveTransformedFile(self): + pass + return + + def _ZoomifyProcess(self): + """ factored out ZODB connection handling """ + + #import Zope + #app = Zope.app() + #get_transaction().begin() + self._process() + #app._p_jar.close() + #del app + return + + security.declareProtected('Add Documents, Images, and Files', 'ZoomifyProcess') + def ZoomifyProcess(self, id, imageObject=None): + """ factored out threading of process (removed for now) """ + if imageObject: + self._v_imageObject = imageObject + self._v_imageFilename = id + self._ZoomifyProcess() + return + +class ERP5ZoomifyZopeProcessor(ZoomifyZopeProcessor): + + def __init__(self, document,transformed=None): + self.document = document + self.transformed = transformed + self.count = 0 + + def createTileContainer(self, tileContainerName=None): + """ create each TileGroup """ + + self.document.newContent(portal_type="Image Tile Group", + title=tileContainerName, id=tileContainerName, + filename=tileContainerName) + return + + def createDefaultViewer(self): + """ add the default Zoomify viewer to the Zoomify metadata """ + pass + return + + def createDataContainer(self, imageName="None"): + """Creates nothing coz we are already in the container""" + pass + return + + def _updateTransformedFile(self,tile_group_id,tile_title): + """create and save the transform file""" + num = random.choice([0,1]) + while num >= 0: + algorithm = random.choice(['sepia','brightness','noise','lighten', + 'posterize','edge','none']) + if algorithm == 'lighten': + param1 = random.choice([-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.1,0.2, + 0.3,0.4,0.5,0.6]) + param2 = 0 + elif algorithm == 'posterize': + param1 = random.choice([4,5,6,7,8,9,10,11,12,13,14,15,16,17, + 18,19,20,21]) + param2 = 0 + elif algorithm == 'brightness': + param1 = random.choice([-80,-60,-40,-20,20,40,60,80]) + param2 = random.choice([-0.3,-0.2,-0.1,0,0.1,0.5,0.9]) + else: + param1 = 0 + param2 = 0 + my_text = '%s %s %s %s %s %s \n' %(tile_group_id, tile_title, + algorithm, param1, param2, num) + self.my_file.write(my_text) + num = num - 1 + + + def saveTile(self, image, scaleNumber, column,row): + """save the cropped region""" + tileFileName = self.getTileFileName(scaleNumber, column, row) + tileContainerName = self.getAssignedTileContainerName( + tileFileName=tileFileName) + namesplit = tileFileName.split('.') + w,h = image.size + if w != 0 and h !=0: + tile_group_id = self.getAssignedTileContainerName() + tile_group=self.document[tile_group_id] + tileImageData= StringIO() + image.save(tileImageData, 'JPEG', quality=self.qualitySetting) + tileImageData.seek(0) + if tile_group is None: + raise AttributeError('unable to fine tile group %r' % tile_group_id) + w = tile_group.newContent(portal_type='Image', title=namesplit[0], + id=namesplit[0], file=tileImageData, filename=namesplit[0]) + if self.transformed: + self._updateTransformedFile(tile_group_id, namesplit[0]) + return + + def saveXMLOutput(self): + """save the xml file""" + my_string = StringIO() + my_string.write(self.getXMLOutput()) + my_string.seek(0) + self.document.newContent(portal_type='Embedded File', + id='ImageProperties.xml', file=my_string, + filename='ImageProperties.xml') + return + + def saveTransformedFile(self): + """add in Zope the transform file """ + if self.transformed: + self.my_file.seek(0) + self.document.newContent(portal_type='Embedded File', + id='TransformFile.txt', file=self.my_file, + filename='TransformFile.txt') + return + + +def getERP5ZoomifyProcessor(document,transformed=False): + return ERP5ZoomifyZopeProcessor(document,transformed) + diff --git a/bt5/erp5_safeimage/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/bt5/erp5_safeimage/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml new file mode 100644 index 0000000000000000000000000000000000000000..3bf5fda1f21c9d84b231a0d5e73bf092ee3dea28 --- /dev/null +++ b/bt5/erp5_safeimage/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml @@ -0,0 +1,17 @@ +<allowed_content_type_list> + <portal_type id="Image Module"> + <item>Image Tile</item> + <item>Image Tile Transformed</item> + </portal_type> + <portal_type id="Image Tile"> + <item>Embedded File</item> + <item>Image Tile Group</item> + </portal_type> + <portal_type id="Image Tile Group"> + <item>Image</item> + </portal_type> + <portal_type id="Image Tile Transformed"> + <item>Embedded File</item> + <item>Image Tile Group</item> + </portal_type> +</allowed_content_type_list> \ No newline at end of file diff --git a/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile%20Group.xml b/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile%20Group.xml new file mode 100644 index 0000000000000000000000000000000000000000..8166a751948af5a78f3fe2191a09a6a981adb2d5 --- /dev/null +++ b/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile%20Group.xml @@ -0,0 +1,62 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>acquire_local_roles</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>Tile Group Image contains the parts of the images. In other words, it contains the image processed by Zoomfy.</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Image Tile Group</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>Image</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile%20Transformed.xml b/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile%20Transformed.xml new file mode 100644 index 0000000000000000000000000000000000000000..b2f0c69348d823c370892c4ecf9cd4774f0a16be --- /dev/null +++ b/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile%20Transformed.xml @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>acquire_local_roles</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>Tile of each image, which contains a XML\'s file and the Tile\'s Group Folder and JSON file specifying the processing. </string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Image Tile Transformed</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>TileImageTransformed</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple> + <string>BaseExtensibleTraversableMixin</string> + </tuple> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile.xml b/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile.xml new file mode 100644 index 0000000000000000000000000000000000000000..71be546e6b338de4e07c9a5d8d282dbff7cfd689 --- /dev/null +++ b/bt5/erp5_safeimage/PortalTypeTemplateItem/portal_types/Image%20Tile.xml @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>acquire_local_roles</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>Tile of each image, which contains a XML\'s file and the Tile\'s Group Folder</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Image Tile</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>TileImage</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple> + <string>BaseExtensibleTraversableMixin</string> + </tuple> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/bt5/erp5_safeimage/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml new file mode 100644 index 0000000000000000000000000000000000000000..6ab5f09fc714f95a1d7b9b5c2d8d303f9444be76 --- /dev/null +++ b/bt5/erp5_safeimage/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml @@ -0,0 +1,14 @@ +<workflow_chain> + <chain> + <type>Image Tile</type> + <workflow>edit_workflow, validation_workflow</workflow> + </chain> + <chain> + <type>Image Tile Group</type> + <workflow>edit_workflow, validation_workflow</workflow> + </chain> + <chain> + <type>Image Tile Transformed</type> + <workflow>edit_workflow, validation_workflow</workflow> + </chain> +</workflow_chain> \ No newline at end of file diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f2d478bf72654b6d9f8ec98b3420df36ebfe7e7 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage.xml @@ -0,0 +1,59 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>__ac_roles__</string> </key> + <value> + <tuple> + <string>Manager</string> + <string>Owner</string> + <string>Anonymous</string> + <string>Authenticated</string> + <string>Associate</string> + </tuple> + </value> + </item> + <item> + <key> <string>_local_properties</string> </key> + <value> + <tuple> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>business_template_skin_layer_priority</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>float</string> </value> + </item> + </dictionary> + </tuple> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>business_template_skin_layer_priority</string> </key> + <value> <float>3.0</float> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>erp5_safeimage</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary.xml new file mode 100644 index 0000000000000000000000000000000000000000..23cdfbbfad5f3aeb0d4fdf3ae2e21c0adb63affb --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary.xml @@ -0,0 +1,137 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left</string> + <string>right</string> + <string>center</string> + <string>bottom</string> + <string>hidden</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>left</string> </key> + <value> + <list> + <string>my_view_mode_listbox</string> + <string>my_view_mode_contributor_title_list</string> + <string>my_view_mode_description</string> + <string>my_view_mode_file</string> + <string>my_view_mode_int_index</string> + <string>my_view_mode_reference</string> + <string>my_view_mode_short_title</string> + <string>my_view_mode_title</string> + </list> + </value> + </item> + <item> + <key> <string>right</string> </key> + <value> + <list/> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_contributor_title_list.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_contributor_title_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..f0fbf15f011600da54d7c7fce35c34e137286f21 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_contributor_title_list.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_contributor_title_list</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_contributor_title_list</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_description.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_description.xml new file mode 100644 index 0000000000000000000000000000000000000000..fe615226243ef986868d6c7a2199a6f87198f984 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_description.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_description</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_description</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_file.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_file.xml new file mode 100644 index 0000000000000000000000000000000000000000..a13f2523a2e8dbc62a062049078131471683cbef --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_file.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_file</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_file</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_int_index.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_int_index.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4932787686a0bae6aec7edb4a2c9472190f2b61 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_int_index.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_int_index</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_int_index</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_listbox.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_listbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a48ba79b8c47d7dc41f9cfe585b5ec2a1a0e58f --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_listbox.xml @@ -0,0 +1,140 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>columns</string> + <string>portal_types</string> + <string>selection_name</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_listbox</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> + <list> + <tuple> + <string>Discussion Thread</string> + <string>Discussion Thread</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list> + <tuple> + <string>Image</string> + <string>Image</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>tile_image_group_selection</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>SafeImageFieldLibrary_listbox</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_reference.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_reference.xml new file mode 100644 index 0000000000000000000000000000000000000000..2cb78e742aa295c0bf9d05fce2fffb81643f19f9 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_reference.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_reference</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_reference</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_short_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_short_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..254fb372deed71b9bef7b13bea0d5c7095939412 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_short_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_short_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_short_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..04198d6c170fa34d9d8b35f9e3cb009a670a728c --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Base_viewSafeImageFieldLibrary/my_view_mode_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_view_mode_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5SafeImage_view.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5SafeImage_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..6de558f49330d0f3f74452071bfb47998ae48fd4 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5SafeImage_view.xml @@ -0,0 +1,129 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_text</string> </key> + <value> <unicode encoding="cdata"><![CDATA[ + +<!DOCTYPE html>\n +<html>\n + <head>\n + <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">\n + <title>SafeImage</title>\n + <link href="css/bootstrap.min.css" rel="stylesheet"/>\n + <link rel="stylesheet" href="css/default_style.css" type="text/css">\n + <link rel="stylesheet" href="css/style.css" type="text/css">\n + </head>\n + <body>\n + <div class="navbar">\n + <div class="navbar-inner">\n + <div class="container-fluid">\n + <div class="row-fluid">\n + <div class="span10">\n + <ul class="nav">\n + <li><a href="#">Dashboard</a></li>\n + <li><a href="#about">About</a></li>\n + <li><a href="#contact">Contact</a></li>\n + </ul>\n + </div>\n + </div>\n + </div>\n + </div>\n + </div>\n + <div class="container-fluid">\n + <div class="row-fluid">\n + <div class="span3">\n + <div class="well">\n + <ul class="nav nav-list">\n + <li class="nav-header">Images</li>\n + </ul>\n + </div>\n + </div>\n + <section class="span9" id="main">\n + <!--Body content-->\n + </section>\n + </div>\n + </div>\n + <tal:block tal:define="portal_url python:here.getPortalObject().absolute_url()">\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'js/template.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'jquery/core/jquery.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'urlHandler.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'ICanHaz.min.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'openlayers/OpenLayers.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'js/CanvasImage.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'js/ERP5_OpenLayers.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'js/form.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'js/safeimage.js\')"></script>\n + <script type="text/javascript" \n + tal:attributes="src python: \'%s/%s\' % (portal_url,\'js/pixastic.js\')"></script>\n + </tal:block>\n + </body>\n +</html> + +]]></unicode> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>expand</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ERP5SafeImage_view</string> </value> + </item> + <item> + <key> <string>output_encoding</string> </key> + <value> <unicode>utf-8</unicode> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <unicode></unicode> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_getTileImageMetadataList.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_getTileImageMetadataList.xml new file mode 100644 index 0000000000000000000000000000000000000000..cda9a84ffce31380b85a4bee67ca88caf76b8cf7 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_getTileImageMetadataList.xml @@ -0,0 +1,96 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>import json\n +portal = context.getPortalObject()\n +context.REQUEST.response.setHeader(\'Access-Control-Allow-Origin\', \'*\')\n +print portal.portal_catalog(portal_type="Image Title", src__=1)\n +#return printed\n +data = {}\n +data["image_list"] = []\n +image_list = data["image_list"]\n +for tile_image in portal.portal_catalog(portal_type="Image Tile"):\n + title = tile_image.getTitle() \n + id = tile_image.getId()\n + image_list.append({"title":title, "id": id})\n + \n +return json.dumps(data)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>_proxy_roles</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ERP5Site_getTileImageMetadataList</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple> + <string>Prints, but never reads \'printed\' variable.</string> + </tuple> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_getTileImageTransformMetadataList.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_getTileImageTransformMetadataList.xml new file mode 100644 index 0000000000000000000000000000000000000000..d7e6463481b98f3ceddb1e5b32c620f68aceea58 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_getTileImageTransformMetadataList.xml @@ -0,0 +1,86 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>import json\n +\n +context.REQUEST.response.setHeader(\'Access-Control-Allow-Origin\', \'*\')\n +data = {}\n +data["image_list"] = []\n +image_list = data["image_list"]\n +for tile_image in context.portal_catalog(portal_type="Image Tile Transformed"):\n + title = tile_image.getTitle() \n + id = tile_image.getId()\n + image_list.append({"title":title, "id": id})\n + \n +return json.dumps(data)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>_proxy_roles</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ERP5Site_getTileImageTransformMetadataList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_viewSafeImage.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_viewSafeImage.xml new file mode 100644 index 0000000000000000000000000000000000000000..7d909b3b87d8407ec0fc0db75c94a42baf80830f --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ERP5Site_viewSafeImage.xml @@ -0,0 +1,88 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_text</string> </key> + <value> <unicode encoding="cdata"><![CDATA[ + +<!DOCTYPE html>\n +<html>\n +<head>\n + <meta charset="UTF-8"> \n + <script type="text/javascript" src="jquery-1.7.2.js"></script>\n + <script type="text/javascript">\n + $(document).ready(function(){\n + $.get(\'http://localhost:12001/erp5/portal_skins/erp5_tile/ERP5Site_getTileImageMetadataList\', function(data) {\n + $(\'#result\').html(data);\n + alert(\'Load was performed.\');\n + });\n + \n +\n + });\n + </script>\n +</head>\n +<body> \n +\n + <button>Get JSON data</button>\n + <div id="result"></div>\n +\n +</body>\n +</html> + +]]></unicode> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>expand</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ERP5Site_viewSafeImage</string> </value> + </item> + <item> + <key> <string>output_encoding</string> </key> + <value> <string>utf-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <unicode></unicode> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ICanHaz.min.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ICanHaz.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..61a952f8fd1133a03c8ae4575fd9cd0f113d2a1b --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ICanHaz.min.js.xml @@ -0,0 +1,55 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54117421.77</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>ICanHaz.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +(function(){var q=function(){function c(a){return(""+a).replace(/&(?!\\w+;)|[<>"\']/g,function(a){return k[a]||a})}var e=Object.prototype.toString;Array.isArray=Array.isArray||function(a){return"[object Array]"==e.call(a)};var i=String.prototype.trim,g;if(i)g=function(a){return null==a?"":i.call(a)};else{var h,m;/\\S/.test("\\u00a0")?(h=/^[\\s\\xA0]+/,m=/[\\s\\xA0]+$/):(h=/^\\s+/,m=/\\s+$/);g=function(a){return null==a?"":a.toString().replace(h,"").replace(m,"")}}var k={"&":"&","<":"<",">":">",\'"\':""",\n +"\'":"'"},o={},p=function(){};p.prototype={otag:"{{",ctag:"}}",pragmas:{},buffer:[],pragmas_implemented:{"IMPLICIT-ITERATOR":!0},context:{},render:function(a,d,b,f){if(!f)this.context=d,this.buffer=[];if(this.includes("",a)){var a=this.render_pragmas(a),j=this.render_section(a,d,b);!1===j&&(j=this.render_tags(a,d,b,f));if(f)return j;this.sendLines(j)}else{if(f)return a;this.send(a)}},send:function(a){""!==a&&this.buffer.push(a)},sendLines:function(a){if(a)for(var a=a.split("\\n"),d=0;d<a.length;d++)this.send(a[d])},\n +render_pragmas:function(a){if(!this.includes("%",a))return a;var d=this,b=this.getCachedRegex("render_pragmas",function(a,d){return RegExp(a+"%([\\\\w-]+) ?([\\\\w]+=[\\\\w]+)?"+d,"g")});return a.replace(b,function(a,b,e){if(!d.pragmas_implemented[b])throw{message:"This implementation of mustache doesn\'t understand the \'"+b+"\' pragma"};d.pragmas[b]={};e&&(a=e.split("="),d.pragmas[b][a[0]]=a[1]);return""})},render_partial:function(a,d,b){a=g(a);if(!b||void 0===b[a])throw{message:"unknown_partial \'"+a+"\'"};\n +return!d||"object"!=typeof d[a]?this.render(b[a],d,b,!0):this.render(b[a],d[a],b,!0)},render_section:function(a,d,b){if(!this.includes("#",a)&&!this.includes("^",a))return!1;var f=this,j=this.getCachedRegex("render_section",function(a,b){return RegExp("^([\\\\s\\\\S]*?)"+a+"(\\\\^|\\\\#)\\\\s*(.+)\\\\s*"+b+"\\n*([\\\\s\\\\S]*?)"+a+"\\\\/\\\\s*\\\\3\\\\s*"+b+"\\\\s*([\\\\s\\\\S]*)$","g")});return a.replace(j,function(a,j,e,c,g,h){var a=j?f.render_tags(j,d,b,!0):"",h=h?f.render(h,d,b,!0):"",n,c=f.find(c,d);"^"===e?n=!c||Array.isArray(c)&&\n +0===c.length?f.render(g,d,b,!0):"":"#"===e&&(n=Array.isArray(c)?f.map(c,function(a){return f.render(g,f.create_context(a),b,!0)}).join(""):f.is_object(c)?f.render(g,f.create_context(c),b,!0):"function"==typeof c?c.call(d,g,function(a){return f.render(a,d,b,!0)}):c?f.render(g,d,b,!0):"");return a+n+h})},render_tags:function(a,d,b,f){for(var j=this,e=function(){return j.getCachedRegex("render_tags",function(a,b){return RegExp(a+"(=|!|>|&|\\\\{|%)?([^#\\\\^]+?)\\\\1?"+b+"+","g")})},g=e(),h=function(a,f,h){switch(f){case "!":return"";\n +case "=":return j.set_delimiters(h),g=e(),"";case ">":return j.render_partial(h,d,b);case "{":case "&":return j.find(h,d);default:return c(j.find(h,d))}},a=a.split("\\n"),i=0;i<a.length;i++)a[i]=a[i].replace(g,h,this),f||this.send(a[i]);if(f)return a.join("\\n")},set_delimiters:function(a){a=a.split(" ");this.otag=this.escape_regex(a[0]);this.ctag=this.escape_regex(a[1])},escape_regex:function(a){if(!arguments.callee.sRE)arguments.callee.sRE=RegExp("(\\\\/|\\\\.|\\\\*|\\\\+|\\\\?|\\\\||\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|\\\\\\\\)",\n +"g");return a.replace(arguments.callee.sRE,"\\\\$1")},find:function(a,d){function b(a){return!1===a||0===a||a}var a=g(a),f;if(a.match(/([a-z_]+)\\./ig)){var c=this.walk_context(a,d);b(c)&&(f=c)}else b(d[a])?f=d[a]:b(this.context[a])&&(f=this.context[a]);return"function"==typeof f?f.apply(d):void 0!==f?f:""},walk_context:function(a,d){for(var b=a.split("."),f=void 0!=d[b[0]]?d:this.context,c=f[b.shift()];void 0!=c&&0<b.length;)f=c,c=c[b.shift()];return"function"==typeof c?c.apply(f):c},includes:function(a,\n +d){return-1!=d.indexOf(this.otag+a)},create_context:function(a){if(this.is_object(a))return a;var d=".";if(this.pragmas["IMPLICIT-ITERATOR"])d=this.pragmas["IMPLICIT-ITERATOR"].iterator;var b={};b[d]=a;return b},is_object:function(a){return a&&"object"==typeof a},map:function(a,d){if("function"==typeof a.map)return a.map(d);for(var b=[],c=a.length,e=0;e<c;e++)b.push(d(a[e]));return b},getCachedRegex:function(a,d){var b=o[this.otag];b||(b=o[this.otag]={});var c=b[this.ctag];c||(c=b[this.ctag]={});\n +(b=c[a])||(b=c[a]=d(this.otag,this.ctag));return b}};return{name:"mustache.js",version:"0.4.0",to_html:function(a,c,b,f){var e=new p;if(f)e.send=f;e.render(a,c||{},b);if(!f)return e.buffer.join("\\n")}}}();(function(){var c={VERSION:"0.10",templates:{},$:"undefined"!==typeof window?window.jQuery||window.Zepto||null:null,addTemplate:function(e,i){if("object"===typeof e)for(var g in e)this.addTemplate(g,e[g]);else c[e]?console.error("Invalid name: "+e+"."):c.templates[e]?console.error(\'Template "\'+e+\n +\' " exists\'):(c.templates[e]=i,c[e]=function(g,i){var g=g||{},k=q.to_html(c.templates[e],g,c.templates);return c.$&&!i?c.$(k):k})},clearAll:function(){for(var e in c.templates)delete c[e];c.templates={}},refresh:function(){c.clearAll();c.grabTemplates()},grabTemplates:function(){var e,i=document.getElementsByTagName("script"),g,h=[];for(e=0,l=i.length;e<l;e++)if((g=i[e])&&g.innerHTML&&g.id&&("text/html"===g.type||"text/x-icanhaz"===g.type))c.addTemplate(g.id,"".trim?g.innerHTML.trim():g.innerHTML.replace(/^\\s+/,\n +"").replace(/\\s+$/,"")),h.unshift(g);for(e=0,l=h.length;e<l;e++)h[e].parentNode.removeChild(h[e])}};"undefined"!==typeof require?module.exports=c:window.ich=c;"undefined"!==typeof document&&(c.$?c.$(function(){c.grabTemplates()}):document.addEventListener("DOMContentLoaded",function(){c.grabTemplates()},!0))})()})();\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>5445</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>ICanHaz.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..bb8a99eee6aea08bc3a7817c3c2c3a42dc5b1641 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view.xml @@ -0,0 +1,177 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>Base_edit</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string>multipart/form-data</string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left (Document Reference)</string> + <string>right (Publication Information)</string> + <string>center_left</string> + <string>center_right</string> + <string>center</string> + <string>hidden</string> + <string>bottom</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>listbox</string> + </list> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list> + <string>my_description</string> + </list> + </value> + </item> + <item> + <key> <string>center_left</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>center_right</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list> + <string>my_contributor_title_list</string> + </list> + </value> + </item> + <item> + <key> <string>left (Document Reference)</string> </key> + <value> + <list> + <string>my_title</string> + <string>my_short_title</string> + </list> + </value> + </item> + <item> + <key> <string>right (Publication Information)</string> </key> + <value> + <list> + <string>my_reference</string> + <string>my_int_index</string> + <string>my_file</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ImageTileGroup_view</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>ImageTileGroup_view</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_view</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Folder</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>update_action_title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/listbox.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/listbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1e75d993b392f9bd5fd52660fd7821c9d76ceff --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/listbox.xml @@ -0,0 +1,140 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>columns</string> + <string>portal_types</string> + <string>selection_name</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_listbox</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> + <list> + <tuple> + <string>Discussion Thread</string> + <string>Discussion Thread</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list> + <tuple> + <string>Image</string> + <string>Image</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>tile_image_group_selection</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Tile Image Group</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_contributor_title_list.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_contributor_title_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3c1167d57ae988473a69cf37403ccf2b13bb748 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_contributor_title_list.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_contributor_title_list</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_contributor_title_list</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_description.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_description.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd085f319033e790fd4089c94b3e45d2bf35c44a --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_description.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_description</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_description</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_file.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_file.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c91d9859fdb1e75312e06360461ca9c433e72f1 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_file.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_file</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_file</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_int_index.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_int_index.xml new file mode 100644 index 0000000000000000000000000000000000000000..2603d897d6b31e81d305edc734947cd5d4e9c557 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_int_index.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_int_index</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_int_index</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_reference.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_reference.xml new file mode 100644 index 0000000000000000000000000000000000000000..f411c77514f970b97647c0bc0c8d91094ca15e37 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_reference.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_reference</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_reference</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_short_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_short_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e6cd3cae48457621c20063e2cab7607bffdcbf8 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_short_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_short_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_short_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..045ff8cb5f8ada0a5fad8eb77ac77eba5a3f89dc --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileGroup_view/my_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..719e26e1019756b2d63b162f4e9bf86f4eecd5f3 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view.xml @@ -0,0 +1,177 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>Base_edit</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string>multipart/form-data</string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left (Document Reference)</string> + <string>right (Publication Information)</string> + <string>center_left</string> + <string>center_right</string> + <string>center</string> + <string>hidden</string> + <string>bottom</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>listbox</string> + </list> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list> + <string>my_description</string> + </list> + </value> + </item> + <item> + <key> <string>center_left</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>center_right</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list> + <string>my_contributor_title_list</string> + </list> + </value> + </item> + <item> + <key> <string>left (Document Reference)</string> </key> + <value> + <list> + <string>my_title</string> + <string>my_short_title</string> + </list> + </value> + </item> + <item> + <key> <string>right (Publication Information)</string> </key> + <value> + <list> + <string>my_reference</string> + <string>my_int_index</string> + <string>my_file</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ImageTileTransformed_view</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>ImageTile_view</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_view</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Folder</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>update_action_title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/listbox.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/listbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..e841833bb762cdfe17e308cb41c739f5fac1350c --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/listbox.xml @@ -0,0 +1,172 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>columns</string> + <string>count_method</string> + <string>list_method</string> + <string>portal_types</string> + <string>selection_name</string> + <string>sort</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_listbox</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> + <list> + <tuple> + <string>Discussion Thread</string> + <string>Discussion Thread</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>tile_image_transformed_selection</string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> + <list> + <tuple> + <string>Date</string> + <string>Â asc</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Tile Image Transformed</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Method" module="Products.Formulator.MethodField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>method_name</string> </key> + <value> <string>objectValues</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_contributor_title_list.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_contributor_title_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3c1167d57ae988473a69cf37403ccf2b13bb748 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_contributor_title_list.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_contributor_title_list</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_contributor_title_list</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_description.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_description.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd085f319033e790fd4089c94b3e45d2bf35c44a --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_description.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_description</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_description</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_file.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_file.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c91d9859fdb1e75312e06360461ca9c433e72f1 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_file.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_file</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_file</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_int_index.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_int_index.xml new file mode 100644 index 0000000000000000000000000000000000000000..2603d897d6b31e81d305edc734947cd5d4e9c557 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_int_index.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_int_index</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_int_index</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_reference.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_reference.xml new file mode 100644 index 0000000000000000000000000000000000000000..f411c77514f970b97647c0bc0c8d91094ca15e37 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_reference.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_reference</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_reference</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_short_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_short_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e6cd3cae48457621c20063e2cab7607bffdcbf8 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_short_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_short_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_short_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..045ff8cb5f8ada0a5fad8eb77ac77eba5a3f89dc --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTileTransformed_view/my_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..642e7693c594e1394c9cab298eb5abb53542e69f --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view.xml @@ -0,0 +1,177 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>Base_edit</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string>multipart/form-data</string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left (Document Reference)</string> + <string>right (Publication Information)</string> + <string>center_left</string> + <string>center_right</string> + <string>center</string> + <string>hidden</string> + <string>bottom</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>listbox</string> + </list> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list> + <string>my_description</string> + </list> + </value> + </item> + <item> + <key> <string>center_left</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>center_right</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list> + <string>my_contributor_title_list</string> + </list> + </value> + </item> + <item> + <key> <string>left (Document Reference)</string> </key> + <value> + <list> + <string>my_title</string> + <string>my_short_title</string> + </list> + </value> + </item> + <item> + <key> <string>right (Publication Information)</string> </key> + <value> + <list> + <string>my_reference</string> + <string>my_int_index</string> + <string>my_file</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ImageTile_view</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>ImageTile_view</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_view</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Folder</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>update_action_title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/listbox.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/listbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3c6b5f2bbf22e7d74dd8bf2169fbd173a14819d --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/listbox.xml @@ -0,0 +1,172 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>columns</string> + <string>count_method</string> + <string>list_method</string> + <string>portal_types</string> + <string>selection_name</string> + <string>sort</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_listbox</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> + <list> + <tuple> + <string>Discussion Thread</string> + <string>Discussion Thread</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>tile_image_selection</string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> + <list> + <tuple> + <string>Date</string> + <string>Â asc</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Tile Image</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Method" module="Products.Formulator.MethodField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>method_name</string> </key> + <value> <string>objectValues</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_contributor_title_list.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_contributor_title_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3c1167d57ae988473a69cf37403ccf2b13bb748 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_contributor_title_list.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_contributor_title_list</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_contributor_title_list</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_description.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_description.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd085f319033e790fd4089c94b3e45d2bf35c44a --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_description.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_description</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_description</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_file.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_file.xml new file mode 100644 index 0000000000000000000000000000000000000000..c8a0a799afa1e47d8bf1e5396306825ab9c0cae8 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_file.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_file</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_file</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewDMSFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_int_index.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_int_index.xml new file mode 100644 index 0000000000000000000000000000000000000000..2603d897d6b31e81d305edc734947cd5d4e9c557 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_int_index.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_int_index</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_int_index</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_reference.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_reference.xml new file mode 100644 index 0000000000000000000000000000000000000000..f411c77514f970b97647c0bc0c8d91094ca15e37 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_reference.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_reference</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_reference</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_short_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_short_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e6cd3cae48457621c20063e2cab7607bffdcbf8 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_short_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_short_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_short_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_title.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_title.xml new file mode 100644 index 0000000000000000000000000000000000000000..045ff8cb5f8ada0a5fad8eb77ac77eba5a3f89dc --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/ImageTile_view/my_title.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_title</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_view_mode_title</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewSafeImageFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Image_getERP5ZoomifyProcessor.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Image_getERP5ZoomifyProcessor.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ecd699dc008923159a7aa2b286d7f16222249ad --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Image_getERP5ZoomifyProcessor.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>getERP5ZoomifyProcessor</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5ZoomifyImage</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Image_getERP5ZoomifyProcessor</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Image_getERP5ZoomifyProcessor</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/OpenLayers.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/OpenLayers.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..d56bbd49257388bc13bcf4c7349e3ee0085c899f --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/OpenLayers.js.xml @@ -0,0 +1,1679 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts53603535.46</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>OpenLayers.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>739725</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*\n +\n + OpenLayers.js -- OpenLayers Map Viewer Library\n +\n + Copyright (c) 2006-2012 by OpenLayers Contributors\n + Published under the 2-clause BSD license.\n + See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.\n +\n + Includes compressed code under the following licenses:\n +\n + (For uncompressed versions of the code used, please see the\n + OpenLayers Github repository: <https://github.com/openlayers/openlayers>)\n +\n +*/\n +\n +/**\n + * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>\n + * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)\n + *\n + * Licensed under the Apache License, Version 2.0 (the "License");\n + * you may not use this file except in compliance with the License.\n + * You may obtain a copy of the License at\n + * http://www.apache.org/licenses/LICENSE-2.0\n + */\n +\n +/**\n + * OpenLayers.Util.pagePosition is based on Yahoo\'s getXY method, which is\n + * Copyright (c) 2006, Yahoo! Inc.\n + * All rights reserved.\n + * \n + * Redistribution and use of this software in source and binary forms, with or\n + * without modification, are permitted provided that the following conditions\n + * are met:\n + * \n + * * Redistributions of source code must retain the above copyright notice,\n + * this list of conditions and the following disclaimer.\n + * \n + * * Redistributions in binary form must reproduce the above copyright notice,\n + * this list of conditions and the following disclaimer in the documentation\n + * and/or other materials provided with the distribution.\n + * \n + * * Neither the name of Yahoo! Inc. nor the names of its contributors may be\n + * used to endorse or promote products derived from this software without\n + * specific prior written permission of Yahoo! Inc.\n + * \n + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\n + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \n + * POSSIBILITY OF SUCH DAMAGE.\n + */\n +var OpenLayers={VERSION_NUMBER:"Release 2.12",singleFile:!0,_getScriptLocation:function(){for(var a=/(^|(.*?\\/))(OpenLayers[^\\/]*?\\.js)(\\?|$)/,b=document.getElementsByTagName("script"),c,d="",e=0,f=b.length;e<f;e++)if(c=b[e].getAttribute("src"))if(c=c.match(a)){d=c[1];break}return function(){return d}}(),ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};\n +OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}!("function"==typeof window.Event&&b instanceof window.Event)&&(b.hasOwnProperty&&b.hasOwnProperty("toString"))&&(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\\s\\s*/,"").replace(/\\s\\s*$/,"")},camelize:function(a){for(var a=a.split("-"),b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\\.+/),h=0;h<g.length;h++)0==h&&(f=b),f=f[g[h]];"function"==\n +typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\\$\\{([\\w.]+?)\\}/g,numberRegEx:/^([+-]?)(?=\\d|\\.\\d)\\d*(\\.\\d*)?([Ee]([+-]?\\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a){return OpenLayers.String.isNumeric(a)?parseFloat(a):a}};\n +OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");\n +0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b}};OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};\n +OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=\n +a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+\n +","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},\n +getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+\n +d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){var b=null;if(a){switch(a.CLASS_NAME){case "OpenLayers.LonLat":b=new OpenLayers.Bounds(a.lon,a.lat,a.lon,a.lat);break;case "OpenLayers.Geometry.Point":b=new OpenLayers.Bounds(a.x,a.y,a.x,a.y);break;case "OpenLayers.Bounds":b=a}if(b){this.centerLonLat=null;if(null==this.left||b.left<this.left)this.left=\n +b.left;if(null==this.bottom||b.bottom<this.bottom)this.bottom=b.bottom;if(null==this.right||b.right>this.right)this.right=b.right;if(null==this.top||b.top>this.top)this.top=b.top}}},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});var b=b||{},c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,\n +a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;var a=OpenLayers.Util.toFloat(a),b=OpenLayers.Util.toFloat(b),d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};if(b.worldBounds)var c=this.wrapDateLine(b.worldBounds),a=a.wrapDateLine(b.worldBounds);else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==\n +a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,\n +{inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c),a=this.contains(a.right,a.top,c);return b?d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=\n +null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){var b=b||{},c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=\n +a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&(c>a.left&&e.right-d>a.right)&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};\n +OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\\\s)"+b+"(\\\\s|$)").test(c)},\n +addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\\\s+)"+b+"(\\\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){var a=OpenLayers.Util.getElement(a),c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];\n +c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&(-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position"))&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+\n +OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});\n +OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");\n +return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};\n +(function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),\n +b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!!(a&&1===a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};"undefined"===typeof window.$&&(window.$=OpenLayers.Util.getElement);\n +OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;c>=0;c--)a[c]==b&&a.splice(c,1);return a};OpenLayers.Util.indexOf=function(a,b){if(typeof a.indexOf=="function")return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};\n +OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){if(b)a.id=b;if(c){a.style.left=c.x+"px";a.style.top=c.y+"px"}if(d){a.style.width=d.w+"px";a.style.height=d.h+"px"}if(e)a.style.position=e;if(f)a.style.border=f;if(g)a.style.overflow=g;if(parseFloat(h)>=0&&parseFloat(h)<1){a.style.filter="alpha(opacity="+h*100+")";a.style.opacity=h}else if(parseFloat(h)==1){a.style.filter="";a.style.opacity=""}};\n +OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var i=document.createElement("div");if(d)i.style.backgroundImage="url("+d+")";a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,g,h);return i};\n +OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var i=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,null,g);if(h){i.style.display="none";b=function(){i.style.display="";OpenLayers.Event.stopObservingElement(i)};OpenLayers.Event.observe(i,"load",b);OpenLayers.Event.observe(i,"error",b)}i.style.alt=a;i.galleryImg="no";if(d)i.src=d;return i};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;\n +OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=false;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&a>=5.5&&a<7}return OpenLayers.Util.alphaHackNeeded};\n +OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,i);b=a.childNodes[0];if(e)b.src=e;OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);if(OpenLayers.Util.alphaHack()){if(a.style.display!="none")a.style.display="inline-block";h==null&&(h="scale");a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+b.src+"\', sizingMethod=\'"+h+"\')";if(parseFloat(a.style.opacity)>=0&&parseFloat(a.style.opacity)<\n +1)a.style.filter=a.style.filter+(" alpha(opacity="+a.style.opacity*100+")");b.style.filter="alpha(opacity=0)"}};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){var j=OpenLayers.Util.createDiv(),i=OpenLayers.Util.createImage(null,null,null,null,null,null,null,i);i.className="olAlphaImg";j.appendChild(i);OpenLayers.Util.modifyAlphaImageDiv(j,a,b,c,d,e,f,g,h);return j};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};\n +OpenLayers.Util.applyDefaults=function(a,b){var a=a||{},c=typeof window.Event=="function"&&b instanceof window.Event,d;for(d in b)if(a[d]===void 0||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];if(!c&&b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString"))a.toString=b.toString;return a};\n +OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(d!=null&&typeof d!="function"){if(typeof d=="object"&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++){f=d[g];e.push(encodeURIComponent(f===null||f===void 0?"":f))}d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(d.pop()===" "?b:d.length?"&"+b:"?"+b);return c};\n +OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};\n +OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;if(!b)b=a.textContent;if(!b)b=a.firstChild.nodeValue},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&c!=null;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;\n +OpenLayers.Util.toFloat=function(a,b){if(b==null)b=OpenLayers.Util.DEFAULT_PRECISION;typeof a!=="number"&&(a=parseFloat(a));return b===0?a:parseFloat(a.toPrecision(b))};OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return a*180/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};\n +OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),i=Math.sin(g),g=Math.cos(g),j=Math.sin(h),h=Math.cos(h),k=f,l=2*Math.PI,m=20;Math.abs(k-l)>1.0E-12&&--m>0;){var n=Math.sin(k),o=Math.cos(k),p=Math.sqrt(h*n*h*n+(g*j-i*h*o)*(g*j-i*h*o));if(p==0)return 0;var o=i*j+g*h*o,q=Math.atan2(p,o),r=Math.asin(g*\n +h*n/p),s=Math.cos(r)*Math.cos(r),n=o-2*i*j/s,t=c/16*s*(4+c*(4-3*s)),l=k,k=f+(1-t)*c*Math.sin(r)*(q+t*p*(n+t*o*(-1+2*n*n)))}if(m==0)return NaN;d=s*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(q-c*p*(n+c/4*(o*(-1+2*n*n)-c/6*n*(-3+4*p*p)*(-3+4*n*n))))).toFixed(3)/1E3};\n +OpenLayers.Util.destinationVincenty=function(a,b,c){for(var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon,a=a.lat,i=d.rad(b),b=Math.sin(i),i=Math.cos(i),a=(1-h)*Math.tan(d.rad(a)),j=1/Math.sqrt(1+a*a),k=a*j,l=Math.atan2(a,i),a=j*b,m=1-a*a,f=m*(f*f-g*g)/(g*g),n=1+f/16384*(4096+f*(-768+f*(320-175*f))),o=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*n),p=2*Math.PI;Math.abs(f-p)>1.0E-12;)var q=Math.cos(2*l+f),r=Math.sin(f),s=Math.cos(f),t=o*r*(q+o/4*(s*(-1+2*q*q)-o/6*q*(-3+4*r*r)*(-3+4*\n +q*q))),p=f,f=c/(g*n)+t;c=k*r-j*s*i;g=Math.atan2(k*s+j*r*i,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(r*b,j*s-k*r*i);i=h/16*m*(4+h*(4-3*m));q=b-(1-i)*h*a*(f+i*r*(q+i*s*(-1+2*q*q)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(q),d.deg(g))};\n +OpenLayers.Util.getParameters=function(a){var a=a===null||a===void 0?window.location.href:a,b="";if(OpenLayers.String.contains(a,"?"))var b=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,b=a.substring(b,c);for(var a={},b=b.split(/[&;]/),c=0,d=b.length;c<d;++c){var e=b[c].split("=");if(e[0]){var f=e[0];try{f=decodeURIComponent(f)}catch(g){f=unescape(f)}e=(e[1]||"").replace(/\\+/g," ");try{e=decodeURIComponent(e)}catch(h){e=unescape(e)}e=e.split(",");e.length==1&&(e=e[0]);\n +a[f]=e}}return a};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a==null&&(a="id_");OpenLayers.Util.lastSeqID=OpenLayers.Util.lastSeqID+1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.3701,km:39370.1,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;\n +OpenLayers.METERS_PER_INCH=0.0254000508001016;\n +OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,\n +Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/\n +OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,\n +Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,\n +SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/\n +OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});\n +OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,\n +"us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return a>1?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;if(a){b==null&&(b="degrees");c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH)}return c};\n +OpenLayers.Util.getScaleFromResolution=function(a,b){b==null&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};\n +OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&OpenLayers.Element.getStyle(a,"position")=="absolute"&&(a.style.top==""||a.style.left==""),e=null;if(a.getBoundingClientRect){a=a.getBoundingClientRect();e=c.scrollTop;b[0]=a.left+c.scrollLeft;b[1]=a.top+e}else if(document.getBoxObjectFor&&!d){a=document.getBoxObjectFor(a);c=document.getBoxObjectFor(c);b[0]=a.screenX-c.screenX;\n +b[1]=a.screenY-c.screenY}else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;){b[0]=b[0]+e.offsetLeft;b[1]=b[1]+e.offsetTop;e=e.offsetParent}c=OpenLayers.BROWSER_NAME;if(c=="opera"||c=="safari"&&OpenLayers.Element.getStyle(a,"position")=="absolute")b[1]=b[1]-document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]=b[0]-e.scrollLeft;if(c!="opera"||e.tagName!="TR")b[1]=b[1]-e.scrollTop;e=e.offsetParent}}return b};\n +OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;if(a==void 0){a=OpenLayers.BROWSER_NAME=="msie"&&document.compatMode!="CSS1Compat"?document.body:document.documentElement;arguments.callee.viewportElement=a}return a};\n +OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var a=OpenLayers.Util.createUrlObject(a,c),b=OpenLayers.Util.createUrlObject(b,c),d;for(d in a)if(d!=="args"&&a[d]!=b[d])return false;for(d in a.args){if(a.args[d]!=b.args[d])return false;delete b.args[d]}for(d in b.args)return false;return true};\n +OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\\w+:\\/\\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;if(a.indexOf("/")===0)a=d+a;else{c=c.pathname.split("/");c.pop();a=d+c.join("/")+"/"+a}}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?c.port=="80"||c.port=="0"?"":c.port:c.port==""||c.port=="0"?"80":c.port;d.hash=b.ignoreHash||\n +c.hash==="#"?"":c.hash;var e=c.search;if(!e){e=a.indexOf("?");e=e!=-1?a.substr(e):""}d.args=OpenLayers.Util.getParameters(e);d.pathname=c.pathname.charAt(0)=="/"?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=b==-1?c!=-1?a.substr(0,c):a:c!=-1?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return a.indexOf("webkit")==-1&&a.indexOf("gecko")!=-1}();\n +OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();b.indexOf("opera")!=-1?a="opera":b.indexOf("msie")!=-1?a="msie":b.indexOf("safari")!=-1?a="safari":b.indexOf("mozilla")!=-1&&(a=b.indexOf("firefox")!=-1?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};\n +OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=false,i=null,j=g;j&&j.tagName.toLowerCase()!="body";){var k=OpenLayers.Element.getStyle(j,"position");if(k=="absolute"){h=true;break}else if(k&&k!="static")break;j=j.parentNode}if(h&&(g.clientHeight===0||g.clientWidth===0)){i=document.createElement("div");i.style.visibility="hidden";i.style.position="absolute";\n +i.style.overflow="visible";i.style.width=document.body.clientWidth+"px";i.style.height=document.body.clientHeight+"px";i.appendChild(f)}f.style.position="absolute";if(b)if(b.w){d=b.w;f.style.width=d+"px"}else if(b.h){e=b.h;f.style.height=e+"px"}if(c&&c.displayClass)f.className=c.displayClass;b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes){a=0;for(c=b.childNodes.length;a<c;a++)if(b.childNodes[a].style)b.childNodes[a].style.overflow="visible"}f.appendChild(b);\n +i?g.appendChild(i):g.appendChild(f);if(!d){d=parseInt(b.scrollWidth);f.style.width=d+"px"}e||(e=parseInt(b.scrollHeight));f.removeChild(b);if(i){i.removeChild(f);g.removeChild(i)}else g.removeChild(f);return new OpenLayers.Size(d,e)};\n +OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(a==null){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);\n +OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};\n +OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");var a=(a+540)%360-180,d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round((f-d)/(1/60)*10),f=f/10;if(f>=60){f=f-60;d=d+1;if(d>=60){d=d-60;e=e+1}}e<10&&(e="0"+e);e=e+"\\u00b0";if(c.indexOf("dm")>=0){d<10&&(d="0"+d);e=e+(d+"\'");if(c.indexOf("dms")>=0){f<10&&(f="0"+f);e=e+(f+\'"\')}}return e=b=="lon"?e+(a<0?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(a<0?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(){throw Error("Read not implemented.");},write:function(){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.CSWGetRecords=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetRecords.DEFAULTS),b=OpenLayers.Format.CSWGetRecords["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSWGetRecords version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetRecords.DEFAULTS={version:"2.0.2"};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+\n +"_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&\n +this.handler.setMap(a)},draw:function(a){if(null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title))this.div.title=this.title;null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=\n +a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),\n +!0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Event={observers:!1,KEY_SPACE:32,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,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,\n +b){b||(a.preventDefault?a.preventDefault():a.returnValue=!1);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent))b="keydown";this.observers||(this.observers={});if(!a._eventCacheID){var e=\n +"eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=\n +b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){var d=d||!1,a=OpenLayers.Util.getElement(a),e=a._eventCacheID;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent))b="keydown";var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var i=g[h];if(i.name==b&&i.observer==c&&i.useCapture==d){g.splice(h,1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;\n +break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);\n +OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=\n +{};null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(){},attachToElement:function(a){this.element?OpenLayers.Event.stopObservingElement(this.element):\n +(this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=0,c=this.BROWSER_EVENTS.length;b<c;b++)OpenLayers.Event.observe(a,this.BROWSER_EVENTS[b],this.eventHandler);OpenLayers.Event.observe(a,"dragstart",OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&\n +!this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==\n +b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&!(d=c[e],d=d.func.apply(d.obj,[b]),void 0!=d&&!1==d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},\n +handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=c[h],d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;var a=document.body;if(a&&(!(0!=a.scrollTop||0!=a.scrollLeft)||!navigator.userAgent.match(/iPhone/i)))this.element.offsets=null},getMousePosition:function(a){this.includeXY?\n +this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[b.scrollLeft,b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+\n +this.element.scrolls[0]-this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);\n +delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",{buttonElement:c}),OpenLayers.Event.stop(a),\n +b=!1}else this.startEvt&&(this.completeRegEx.test(a.type)&&(b=OpenLayers.Util.pagePosition(c),this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})),this.cancelRegEx.test(a.type)&&delete this.startEvt,OpenLayers.Event.stop(a),b=!1);this.startRegEx.test(a.type)&&(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else delete this.startEvt;return b}});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:{w:180,h:90},layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:!1,handlers:null,resolutionFactor:1,maximized:!1,initialize:function(a){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[a])},destroy:function(){this.mapDiv&&(this.handlers.click&&this.handlers.click.destroy(),this.handlers.drag&&this.handlers.drag.destroy(),\n +this.ovmap&&this.ovmap.viewPortDiv.removeChild(this.extentRectangle),this.extentRectangle=null,this.rectEvents&&(this.rectEvents.destroy(),this.rectEvents=null),this.ovmap&&(this.ovmap.destroy(),this.ovmap=null),this.element.removeChild(this.mapDiv),this.mapDiv=null,this.div.removeChild(this.element),this.element=null,this.maximizeDiv&&(this.div.removeChild(this.maximizeDiv),this.maximizeDiv=null),this.minimizeDiv&&(this.div.removeChild(this.minimizeDiv),this.minimizeDiv=null),this.map.events.un({buttonclick:this.onButtonClick,\n +moveend:this.update,changebaselayer:this.baseLayerDraw,scope:this}),OpenLayers.Control.prototype.destroy.apply(this,arguments))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(0===this.layers.length)if(this.map.baseLayer)this.layers=[this.map.baseLayer.clone()];else return this.map.events.register("changebaselayer",this,this.baseLayerDraw),this.div;this.element=document.createElement("div");this.element.className=this.displayClass+"Element";this.element.style.display="none";\n +this.mapDiv=document.createElement("div");this.mapDiv.style.width=this.size.w+"px";this.mapDiv.style.height=this.size.h+"px";this.mapDiv.style.position="relative";this.mapDiv.style.overflow="hidden";this.mapDiv.id=OpenLayers.Util.createUniqueID("overviewMap");this.extentRectangle=document.createElement("div");this.extentRectangle.style.position="absolute";this.extentRectangle.style.zIndex=1E3;this.extentRectangle.className=this.displayClass+"ExtentRectangle";this.element.appendChild(this.mapDiv);\n +this.div.appendChild(this.element);if(this.outsideViewport)this.element.style.display="";else{this.div.className+=" "+this.displayClass+"Container";var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+"MaximizeButton",null,null,a,"absolute");this.maximizeDiv.style.display="none";this.maximizeDiv.className=this.displayClass+"MaximizeButton olButton";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");\n +this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_minimizeDiv",null,null,a,"absolute");this.minimizeDiv.style.display="none";this.minimizeDiv.className=this.displayClass+"MinimizeButton olButton";this.div.appendChild(this.minimizeDiv);this.minimizeControl()}this.map.getExtent()&&this.update();this.map.events.on({buttonclick:this.onButtonClick,moveend:this.update,scope:this});this.maximized&&this.maximizeControl();return this.div},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",\n +this,this.baseLayerDraw)},rectDrag:function(a){var b=this.handlers.drag.last.x-a.x,c=this.handlers.drag.last.y-a.y;if(0!=b||0!=c){var d=this.rectPxBounds.top,e=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),f=this.rectPxBounds.getWidth(),c=Math.max(0,d-c),c=Math.min(c,this.ovmap.size.h-this.hComp-a),b=Math.max(0,e-b),b=Math.min(b,this.ovmap.size.w-this.wComp-f);this.setRectPxBounds(new OpenLayers.Bounds(b,c+a,b+f,c))}},mapDivClick:function(a){var b=this.rectPxBounds.getCenterPixel(),\n +c=a.xy.x-b.x,d=a.xy.y-b.y,e=this.rectPxBounds.top,f=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),b=this.rectPxBounds.getWidth(),d=Math.max(0,e+d),d=Math.min(d,this.ovmap.size.h-a),c=Math.max(0,f+c),c=Math.min(c,this.ovmap.size.w-b);this.setRectPxBounds(new OpenLayers.Bounds(c,d+a,c+b,d));this.updateMapToRect()},onButtonClick:function(a){a.buttonElement===this.minimizeDiv?this.minimizeControl():a.buttonElement===this.maximizeDiv&&this.maximizeControl()},maximizeControl:function(a){this.element.style.display=\n +"";this.showToggle(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.element.style.display="none";this.showToggle(!0);null!=a&&OpenLayers.Event.stop(a)},showToggle:function(a){this.maximizeDiv.style.display=a?"":"none";this.minimizeDiv.style.display=a?"none":""},update:function(){null==this.ovmap&&this.createMap();(this.autoPan||!this.isSuitableOverview())&&this.updateOverview();this.updateRectToMap()},isSuitableOverview:function(){var a=this.map.getExtent(),b=this.map.maxExtent,\n +a=new OpenLayers.Bounds(Math.max(a.left,b.left),Math.max(a.bottom,b.bottom),Math.min(a.right,b.right),Math.min(a.top,b.top));this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()));b=this.ovmap.getResolution()/this.map.getResolution();return b>this.minRatio&&b<=this.maxRatio&&this.ovmap.getExtent().containsBounds(a)},updateOverview:function(){var a=this.map.getResolution(),b=this.ovmap.getResolution(),c=b/a;c>this.maxRatio?\n +b=this.minRatio*a:c<=this.minRatio&&(b=this.maxRatio*a);this.ovmap.getProjection()!=this.map.getProjection()?(a=this.map.center.clone(),a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject())):a=this.map.center;this.ovmap.setCenter(a,this.ovmap.getZoomForResolution(b*this.resolutionFactor));this.updateRectToMap()},createMap:function(){var a=OpenLayers.Util.extend({controls:[],maxResolution:"auto",fallThrough:!1},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,a);this.ovmap.viewPortDiv.appendChild(this.extentRectangle);\n +OpenLayers.Event.stopObserving(window,"unload",this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=(this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-right-width")))?this.wComp:2;this.hComp=(this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-bottom-width")))?\n +this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.mapDivClick},{single:!0,"double":!1,stopSingle:!0,stopDouble:!0,pixelTolerance:1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,!0);this.rectEvents.register("mouseover",this,function(){!this.handlers.drag.active&&!this.map.dragging&&this.handlers.drag.activate()});\n +this.rectEvents.register("mouseout",this,function(){this.handlers.drag.dragging||this.handlers.drag.deactivate()});if(this.ovmap.getProjection()!=this.map.getProjection()){var a=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units,b=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=a&&b?OpenLayers.INCHES_PER_UNIT[a]/OpenLayers.INCHES_PER_UNIT[b]:1}},updateRectToMap:function(){var a=this.getRectBoundsFromMapBounds(this.ovmap.getProjection()!=\n +this.map.getProjection()?this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()):this.map.getExtent());a&&this.setRectPxBounds(a)},updateMapToRect:function(){var a=this.getMapBoundsFromRectBounds(this.rectPxBounds);this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject()));this.map.panTo(a.getCenterLonLat())},setRectPxBounds:function(a){var b=Math.max(a.top,0),c=Math.max(a.left,0),d=\n +Math.min(a.top+Math.abs(a.getHeight()),this.ovmap.size.h-this.hComp),a=Math.min(a.left+a.getWidth(),this.ovmap.size.w-this.wComp),e=Math.max(a-c,0),f=Math.max(d-b,0);e<this.minRectSize||f<this.minRectSize?(this.extentRectangle.className=this.displayClass+this.minRectDisplayClass,e=c+e/2-this.minRectSize/2,this.extentRectangle.style.top=Math.round(b+f/2-this.minRectSize/2)+"px",this.extentRectangle.style.left=Math.round(e)+"px",this.extentRectangle.style.height=this.minRectSize+"px",this.extentRectangle.style.width=\n +this.minRectSize+"px"):(this.extentRectangle.className=this.displayClass+"ExtentRectangle",this.extentRectangle.style.top=Math.round(b)+"px",this.extentRectangle.style.left=Math.round(c)+"px",this.extentRectangle.style.height=Math.round(f)+"px",this.extentRectangle.style.width=Math.round(e)+"px");this.rectPxBounds=new OpenLayers.Bounds(Math.round(c),Math.round(d),Math.round(a),Math.round(b))},getRectBoundsFromMapBounds:function(a){var b=this.getOverviewPxFromLonLat({lon:a.left,lat:a.bottom}),a=this.getOverviewPxFromLonLat({lon:a.right,\n +lat:a.top}),c=null;b&&a&&(c=new OpenLayers.Bounds(b.x,b.y,a.x,a.y));return c},getMapBoundsFromRectBounds:function(a){var b=this.getLonLatFromOverviewPx({x:a.left,y:a.bottom}),a=this.getLonLatFromOverviewPx({x:a.right,y:a.top});return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},getLonLatFromOverviewPx:function(a){var b=this.ovmap.size,c=this.ovmap.getResolution(),d=this.ovmap.getExtent().getCenterLonLat();return{lon:d.lon+(a.x-b.w/2)*c,lat:d.lat-(a.y-b.h/2)*c}},getOverviewPxFromLonLat:function(a){var b=\n +this.ovmap.getResolution(),c=this.ovmap.getExtent();if(c)return{x:Math.round(1/b*(a.lon-c.left)),y:Math.round(1/b*(c.top-a.lat))}},CLASS_NAME:"OpenLayers.Control.OverviewMap"});OpenLayers.Animation=function(a){var b=!(!a.requestAnimationFrame&&!a.webkitRequestAnimationFrame&&!a.mozRequestAnimationFrame&&!a.oRequestAnimationFrame&&!a.msRequestAnimationFrame),c=function(){var b=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,16)};return function(c,d){b.apply(a,[c,d])}}(),d=0,e={};return{isNative:b,requestFrame:c,start:function(a,b,h){var b=0<b?b:Number.POSITIVE_INFINITY,\n +i=++d,j=+new Date;e[i]=function(){e[i]&&+new Date-j<=b?(a(),e[i]&&c(e[i],h)):delete e[i]};c(e[i],h);return i},stop:function(a){delete e[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.time=0;OpenLayers.Animation.stop(this.animationId);this.animationId=null;this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,\n +this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&this.callbacks.eachStep.call(this,\n +a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};\n +OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};\n +OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\\+title=[^\\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;window.Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),window.Proj4js&&\n +this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};\n +OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};\n +OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};\n +OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{var b=b.getCode(),c=c.getCode(),d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};\n +(function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;a.y=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,m,n,o,p;g=0;for(m=d.length;g<m;++g){n=d[g];e(c,n,b);e(n,c,a);for(p=g+1;p<m;++p)o=d[p],e(n,o,f),e(o,n,f)}}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326",\n +"EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,\n +maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!0,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+\n +"theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);this.maxExtent&&!(this.maxExtent instanceof OpenLayers.Bounds)&&(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));this.minExtent&&!(this.minExtent instanceof OpenLayers.Bounds)&&(this.minExtent=new OpenLayers.Bounds(this.minExtent));this.restrictedExtent&&\n +!(this.restrictedExtent instanceof OpenLayers.Bounds)&&(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));this.center&&!(this.center instanceof OpenLayers.LonLat)&&(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=\n +this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.width="100px";this.layerContainerDiv.style.height=\n +"100px";this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);9>parseFloat(navigator.appVersion.split("MSIE")[1])?this.events.register("resize",this,this.updateSize):(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),\n +e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),\n +OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,\n +"unload",this.unloadDestroy);b&&b.layers&&(delete this.center,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;\n +this.panTween&&(this.panTween.stop(),this.panTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy?OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy):this.events.unregister("resize",this,this.updateSize);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);\n +this.layers=null}this.viewPortDiv&&this.div.removeChild(this.viewPortDiv);this.viewPortDiv=null;this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==\n +typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=\n +this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=\n +"";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,\n +b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",\n +{map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):\n +this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null!=this.baseLayer&&!this.allOverlays&&this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),\n +!1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&\n +(a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,\n +a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();\n +if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,a.h=this.div.offsetHeight;\n +if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&this.size&&(this.center=\n +this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)(0!=a||0!=b)&&this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter()),a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},\n +panTo:function(a){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(a)){this.panTween||(this.panTween=new OpenLayers.Tween(this.panMethod));var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(){this.moveTo(a);\n +this.dragging=false;this.events.triggerEvent("moveend")},this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,i=0;this.restrictedExtent&&(h=c,i=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-i&&f>=this.minPx.y+i?Math.round(b):0;if(a||b){this.dragging||(this.dragging=\n +!0,this.events.triggerEvent("movestart"));this.center=null;a&&(this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-a+"px",this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-b+"px",this.minPx.y-=b,this.maxPx.y-=b);d=0;for(e=this.layers.length;d<e;++d)if(c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange))c.moveByPx(a,b),c.events.triggerEvent("move");this.events.triggerEvent("move")}},adjustZoom:function(a){var b=\n +this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;if(this.getResolutionForZoom(a)>c)for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}return a},moveTo:function(a,b,c){null!=a&&!(a instanceof OpenLayers.LonLat)&&(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));if(this.baseLayer.wrapDateLine){var d=b,b=this.adjustZoom(b);b!==d&&(a=this.getCenter())}var d=c.dragging||this.dragging,e=c.forceZoomChange;!this.getCachedCenter()&&\n +!this.isValidLonLat(a)&&(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&\n +(a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart");f&&(!e&&this.center&&this.centerLayerContainer(a),this.center=\n +a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,i=Math.round(f.getWidth()/a),j=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-i)/2-g/a,y:(this.size.h-j)/2-h/a};this.maxPx={x:this.minPx.x+Math.round(f.getWidth()/\n +a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)if(f=this.layers[b],f!==this.baseLayer&&!f.isBaseLayer&&(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),\n +g&&f.visibility))f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e});this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=parseInt(this.layerContainerDiv.style.left),a=parseInt(this.layerContainerDiv.style.top),\n +e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.layerContainerDiv.style.left=e+"px";this.layerContainerDiv.style.top=b+"px";d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():\n +null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=\n +null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,\n +b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a){this.isValidZoomLevel(a)&&this.setCenter(null,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,\n +b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},zoomToMaxExtent:function(a){this.zoomToExtent(this.getMaxExtent({restricted:a?a.restricted:!0}))},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*\n +c/2,e=this.getCachedCenter();this.zoomToExtent(new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c),b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);\n +a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution(),a=b.add(-c/2,0),d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=\n +null;if(null!=a)var b=parseInt(this.layerContainerDiv.style.left),c=parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);return b},getLayerPxFromViewPortPx:function(a){var b=null;if(null!=a){var b=-parseInt(this.layerContainerDiv.style.left),c=-parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);if(isNaN(b.x)||isNaN(b.y))b=null}return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){return this.getLayerPxFromViewPortPx(this.getPixelFromLonLat(a))},\n +CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,\n +numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},\n +destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=\n +this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});if(a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),a.maxExtent&&!(a.maxExtent instanceof OpenLayers.Bounds)&&(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),a.minExtent&&!(a.minExtent instanceof\n +OpenLayers.Bounds)))a.minExtent=new OpenLayers.Bounds(a.minExtent);OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),\n +this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&(this.inRange&&this.visibility)&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(){var a=this.visibility;this.isBaseLayer||(a=a&&this.inRange);this.display(a)},moveByPx:function(){},setMap:function(a){null==\n +this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},\n +removeMap:function(){},getImageSize:function(){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),\n +this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,\n +b,c,d={},e=!0;a=0 + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==\n +d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,\n +this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,\n +this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,\n +this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&("number"!==typeof c&&null!=this.maxExtent)&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==\n +typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){return this.getResolutionForZoom(this.map.getZoom())},getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize();return this.getZoomForResolution(Math.max(a.getWidth()/\n +c.w,a.getHeight()/c.h),b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom)var b=Math.floor(a),c=Math.ceil(a),a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c]);else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<\n +d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&\n +(b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,\n +null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter)var b=this.gutter*this.map.getResolution(),a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+b,a.top+b);this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var a=null;return a=this.sphericalMercator?this.map.calculateBounds():OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this)},getLonLatFromViewPortPx:function(a){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments)},getViewPortPxFromLonLat:function(a){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments)},initMercatorParameters:function(){this.RESOLUTIONS=[];for(var a=0;a<=this.MAX_ZOOM_LEVEL;++a)this.RESOLUTIONS[a]=\n +156543.03390625/Math.pow(2,a);this.units="m";this.projection=this.projection||"EPSG:900913"},forwardMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(e.x,e.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,\n +y:d},b,a);return new OpenLayers.LonLat(e.x,e.y)}}()};OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:!0,isBaseLayer:!0,isFixed:!0,pane:null,mapObject:null,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);null==this.pane&&(this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane"))},destroy:function(){this.pane=this.mapObject=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=\n +parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";"msie"==OpenLayers.BROWSER_NAME&&(this.pane.style.background="url("+OpenLayers.Util.getImageLocation("blank.gif")+")");this.isFixed?this.map.viewPortDiv.appendChild(this.pane):this.map.layerContainerDiv.appendChild(this.pane);this.loadMapObject();null==this.mapObject&&this.loadWarningMessage()},removeMap:function(a){this.pane&&this.pane.parentNode&&this.pane.parentNode.removeChild(this.pane);\n +OpenLayers.Layer.prototype.removeMap.apply(this,arguments)},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var a=this.map.getSize(),b=Math.min(a.w,300),c=Math.min(a.h,200),b=new OpenLayers.Size(b,c),a=(new OpenLayers.Pixel(a.w/2,a.h/2)).add(-b.w/2,-b.h/2),a=OpenLayers.Util.createDiv(this.name+"_warning",a,b,null,null,null,"auto");a.style.padding="7px";a.style.backgroundColor="yellow";a.innerHTML=this.getWarningHTML();this.div.appendChild(a)},getWarningHTML:function(){return""},\n +display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display},setZIndex:function(a){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1},moveByPx:function(a,b){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);this.dragPanMapObject?this.dragPanMapObject(a,-b):this.moveTo(this.map.getCachedCenter())},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,\n +arguments);if(null!=this.mapObject){var d=this.map.getCenter(),e=this.map.getZoom();if(null!=d){var f=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectCenter()),g=this.getOLZoomFromMapObjectZoom(this.getMapObjectZoom());if(!d.equals(f)||e!=g)!b&&f&&this.dragPanMapObject&&this.smoothDragPan?(e=this.map.getViewPortPxFromLonLat(f),d=this.map.getViewPortPxFromLonLat(d),this.dragPanMapObject(d.x-e.x,e.y-d.y)):(d=this.getMapObjectLonLatFromOLLonLat(d),e=this.getMapObjectZoomFromOLZoom(e),this.setMapObjectCenter(d,\n +e,c))}}},getLonLatFromViewPortPx:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectLonLatFromMapObjectPixel(this.getMapObjectPixelFromOLPixel(a))));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLPixelFromMapObjectPixel(this.getMapObjectPixelFromMapObjectLonLat(this.getMapObjectLonLatFromOLLonLat(a))));return b},getOLLonLatFromMapObjectLonLat:function(a){var b=\n +null;null!=a&&(b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),b=new OpenLayers.LonLat(b,a));return b},getMapObjectLonLatFromOLLonLat:function(a){var b=null;null!=a&&(b=this.getMapObjectLonLatFromLonLat(a.lon,a.lat));return b},getOLPixelFromMapObjectPixel:function(a){var b=null;null!=a&&(b=this.getXFromMapObjectPixel(a),a=this.getYFromMapObjectPixel(a),b=new OpenLayers.Pixel(b,a));return b},getMapObjectPixelFromOLPixel:function(a){var b=null;null!=a&&(b=this.getMapObjectPixelFromXY(a.x,\n +a.y));return b},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){for(var a=["minZoomLevel","maxZoomLevel","numZoomLevels"],b=0,c=a.length;b<c;b++){var d=a[b];this[d]=null!=this.options[d]?this.options[d]:this.map[d]}if(null==this.minZoomLevel||this.minZoomLevel<this.MIN_ZOOM_LEVEL)this.minZoomLevel=this.MIN_ZOOM_LEVEL;a=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;b=null==this.options.numZoomLevels&&null!=this.options.maxZoomLevel||null==this.numZoomLevels&&null!=this.maxZoomLevel?\n +this.maxZoomLevel-this.minZoomLevel+1:this.numZoomLevels;this.numZoomLevels=null!=b?Math.min(b,a):a;this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(null!=this.RESOLUTIONS){a=0;this.resolutions=[];for(b=this.minZoomLevel;b<=this.maxZoomLevel;b++)this.resolutions[a++]=this.RESOLUTIONS[b];this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1]}},getResolution:function(){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getResolution.apply(this,\n +arguments);var a=null,b=this.map.getSize(),c=this.getExtent();null!=b&&null!=c&&(a=Math.max(c.getWidth()/b.w,c.getHeight()/b.h));return a},getExtent:function(){var a=this.map.getSize(),b=this.getLonLatFromViewPortPx({x:0,y:0}),a=this.getLonLatFromViewPortPx({x:a.w,y:a.h});return null!=b&&null!=a?new OpenLayers.Bounds(b.lon,a.lat,a.lon,b.lat):null},getZoomForResolution:function(a){return null!=this.resolutions?OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments):this.getZoomForExtent(OpenLayers.Layer.prototype.getExtent.apply(this,\n +[]))},getOLZoomFromMapObjectZoom:function(a){var b=null;null!=a&&(b=a-this.minZoomLevel,this.map.baseLayer!==this&&(b=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));return b},getMapObjectZoomFromOLZoom:function(a){var b=null;null!=a&&(b=a+this.minZoomLevel,this.map.baseLayer!==this&&(b=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));return b},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,6.866455078125E-4,3.4332275390625E-4,1.71661376953125E-4,8.58306884765625E-5,4.291534423828125E-5,2.145767211914062E-5,1.072883605957031E-5,5.36441802978515E-6,2.68220901489257E-6,1.341104507446289E-6,6.705522537231445E-7],\n +type:null,wrapDateLine:!0,sphericalMercator:!1,version:null,initialize:function(a,b){b=b||{};b.version||(b.version="function"===typeof GMap2?"2":"3");var c=OpenLayers.Layer.Google["v"+b.version.replace(/\\./g,"_")];if(c)OpenLayers.Util.applyDefaults(b,c);else throw"Unsupported Google Maps API version: "+b.version;OpenLayers.Util.applyDefaults(b,c.DEFAULTS);b.maxExtent&&(b.maxExtent=b.maxExtent.clone());OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[a,b]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,\n +[a,b]);this.sphericalMercator&&(OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator),this.initMercatorParameters())},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions())},setVisibility:function(a){var b=null==this.opacity?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(b)},display:function(a){this._dragging||this.setGMapVisibility(a);OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments)},moveTo:function(a,\n +b,c){this._dragging=c;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging},setOpacity:function(a){a!==this.opacity&&(null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"}),this.opacity=a);if(this.getVisibility()){var b=this.getMapContainer();OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}},destroy:function(){if(this.map){this.setGMapVisibility(!1);var a=OpenLayers.Layer.Google.cache[this.map.id];a&&1>=a.count&&\n +this.removeGMapElements()}OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments)},removeGMapElements:function(){var a=OpenLayers.Layer.Google.cache[this.map.id];if(a){var b=this.mapObject&&this.getMapContainer();b&&b.parentNode&&b.parentNode.removeChild(b);(b=a.termsOfUse)&&b.parentNode&&b.parentNode.removeChild(b);(a=a.poweredBy)&&a.parentNode&&a.parentNode.removeChild(a)}},removeMap:function(a){this.visibility&&this.mapObject&&this.setGMapVisibility(!1);var b=OpenLayers.Layer.Google.cache[a.id];\n +b&&(1>=b.count?(this.removeGMapElements(),delete OpenLayers.Layer.Google.cache[a.id]):--b.count);delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments)},getOLBoundsFromMapObjectBounds:function(a){var b=null;null!=a&&(b=a.getSouthWest(),a=a.getNorthEast(),this.sphericalMercator?(b=this.forwardMercator(b.lng(),b.lat()),a=this.forwardMercator(a.lng(),a.lat())):(b=new OpenLayers.LonLat(b.lng(),b.lat()),\n +a=new OpenLayers.LonLat(a.lng(),a.lat())),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat));return b},getWarningHTML:function(){return OpenLayers.i18n("googleWarning")},getMapObjectCenter:function(){return this.mapObject.getCenter()},getMapObjectZoom:function(){return this.mapObject.getZoom()},getLongitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),a.lat()).lon:a.lng()},getLatitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),\n +a.lat()).lat:a.lat()},getXFromMapObjectPixel:function(a){return a.x},getYFromMapObjectPixel:function(a){return a.y},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};\n +OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){this.type||(this.type=G_NORMAL_MAP);var a,b,c,d=OpenLayers.Layer.Google.cache[this.map.id];if(d)a=d.mapObject,b=d.termsOfUse,c=d.poweredBy,++d.count;else{var d=this.map.viewPortDiv,e=document.createElement("div");e.id=this.map.id+"_GMap2Container";e.style.position="absolute";e.style.width="100%";e.style.height="100%";d.appendChild(e);try{a=new GMap2(e),b=e.lastChild,d.appendChild(b),b.style.zIndex=\n +"1100",b.style.right="",b.style.bottom="",b.className="olLayerGoogleCopyright",c=e.lastChild,d.appendChild(c),c.style.zIndex="1100",c.style.right="",c.style.bottom="",c.className="olLayerGooglePoweredBy gmnoprint"}catch(f){throw f;}OpenLayers.Layer.Google.cache[this.map.id]={mapObject:a,termsOfUse:b,poweredBy:c,count:1}}this.mapObject=a;this.termsOfUse=b;this.poweredBy=c;-1===OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)&&this.mapObject.addMapType(this.type);"function"==typeof a.getDragObject?\n +this.dragObject=a.getDragObject():this.dragPanMapObject=null;!1===this.isBaseLayer&&this.setGMapVisibility("none"!==this.div.style.display)},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded())this.mapObject.checkResize();else{if(!this._resized)var a=this,b=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(b);delete a._resized;a.mapObject.checkResize();a.moveTo(a.map.getCenter(),a.map.getZoom())});this._resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];\n +if(b){var c=this.mapObject.getContainer();!0===a?(this.mapObject.setMapType(this.type),c.style.display="",this.termsOfUse.style.left="",this.termsOfUse.style.display="",this.poweredBy.style.display="",b.displayed=this.id):(b.displayed===this.id&&delete b.displayed,b.displayed||(c.style.display="none",this.termsOfUse.style.display="none",this.termsOfUse.style.left="-9999px",this.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getContainer()},getMapObjectBoundsFromOLBounds:function(a){var b=\n +null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new GLatLngBounds(new GLatLng(b.lat,b.lon),new GLatLng(a.lat,a.lon)));return b},setMapObjectCenter:function(a,b){this.mapObject.setCenter(a,b)},dragPanMapObject:function(a,b){this.dragObject.moveBy(new GSize(-a,b))},getMapObjectLonLatFromMapObjectPixel:function(a){return this.mapObject.fromContainerPixelToLatLng(a)},\n +getMapObjectPixelFromMapObjectLonLat:function(a){return this.mapObject.fromLatLngToContainerPixel(a)},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new GLatLng(c.lat,c.lon)):c=new GLatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new GPoint(a,b)}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,\n +arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&\n +b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,\n +b)},createTextNode:function(a){"string"!==typeof a&&(a=""+a);return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else for(var a=a.getElementsByTagName("*"),e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)("*"==b||b==e.namespaceURI)&&d.push(e);return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,\n +c);else for(var a=a.attributes,e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){for(var b=!0,a=a.firstChild;a;a=\n +a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){for(var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY,a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,\n +c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){var b=b||{},c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,\n +b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,\n +b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,\n +b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if((!b||b===(a.localName||a.nodeName.split(":").pop()))&&(!c||c===a.namespaceURI))break a;a=null;break a;case 3:if(/^\\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,\n +e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,b)}return c},getXMLDoc:function(){!OpenLayers.Format.XML.document&&!this.xmldom&&(document.implementation&&\n +document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);\n +OpenLayers.Format.XML.document=null;OpenLayers.Format.WFST=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.WFST.DEFAULTS),b=OpenLayers.Format.WFST["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported WFST version: "+a.version;return new b(a)};OpenLayers.Format.WFST.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:!0,xy:!0,stateName:null,initialize:function(a){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]=\n +"wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},getSrsName:function(a,b){var c=b&&b.srsName;c||(c=a&&a.layer?a.layer.projection.getCode():this.srsName);return c},read:function(a,b){b=b||{};OpenLayers.Util.applyDefaults(b,{output:"features"});"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var c={};a&&this.readNode(a,c,!0);c.features&&"features"===b.output&&\n +(c=c.features);return c},readers:{wfs:{FeatureCollection:function(a,b){b.features=[];this.readChildNodes(a,b)}}},write:function(a,b){var c=this.writeNode("wfs:Transaction",{features:a,options:b}),d=this.schemaLocationAttr();d&&this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",d);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},writers:{wfs:{GetFeature:function(a){var b=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,handle:a&&a.handle,\n +outputFormat:a&&a.outputFormat,maxFeatures:a&&a.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(a)}});if("string"==typeof this.featureType)this.writeNode("Query",a,b);else for(var c=0,d=this.featureType.length;c<d;c++)a.featureType=this.featureType[c],this.writeNode("Query",a,b);return b},Transaction:function(a){var a=a||{},b=a.options||{},c=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version,handle:b.handle}}),d,e=a.features;if(e){!0===b.multi&&OpenLayers.Util.extend(this.geometryTypes,\n +{"OpenLayers.Geometry.Point":"MultiPoint","OpenLayers.Geometry.LineString":!0===this.multiCurve?"MultiCurve":"MultiLineString","OpenLayers.Geometry.Polygon":!0===this.multiSurface?"MultiSurface":"MultiPolygon"});var f,g,a=0;for(d=e.length;a<d;++a)g=e[a],(f=this.stateName[g.state])&&this.writeNode(f,{feature:g,options:b},c);!0===b.multi&&this.setGeometryTypes()}if(b.nativeElements){a=0;for(d=b.nativeElements.length;a<d;++a)this.writeNode("wfs:Native",b.nativeElements[a],c)}return c},Native:function(a){return this.createElementNSPlus("wfs:Native",\n +{attributes:{vendorId:a.vendorId,safeToIgnore:a.safeToIgnore},value:a.value})},Insert:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Insert",{attributes:{handle:a&&a.handle}});this.srsName=this.getSrsName(b);this.writeNode("feature:_typeName",b,a);return a},Update:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Update",{attributes:{handle:a&&a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+\n +this.featurePrefix,this.featureNS);var c=b.modified;if(null!==this.geometryName&&(!c||void 0!==c.geometry))this.srsName=this.getSrsName(b),this.writeNode("Property",{name:this.geometryName,value:b.geometry},a);for(var d in b.attributes)void 0!==b.attributes[d]&&(!c||!c.attributes||c.attributes&&void 0!==c.attributes[d])&&this.writeNode("Property",{name:d,value:b.attributes[d]},a);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a},Property:function(a){var b=this.createElementNSPlus("wfs:Property");\n +this.writeNode("Name",a.name,b);null!==a.value&&this.writeNode("Value",a.value,b);return b},Name:function(a){return this.createElementNSPlus("wfs:Name",{value:a})},Value:function(a){var b;a instanceof OpenLayers.Geometry?(b=this.createElementNSPlus("wfs:Value"),a=this.writeNode("feature:_geometry",a).firstChild,b.appendChild(a)):b=this.createElementNSPlus("wfs:Value",{value:a});return b},Delete:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Delete",{attributes:{handle:a&&\n +a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a}}},schemaLocationAttr:function(a){var a=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},a),b=OpenLayers.Util.extend({},this.schemaLocations);a.schema&&(b[a.featurePrefix]=a.schema);var a=[],c,d;for(d in b)(c=this.namespaces[d])&&\n +a.push(c+" "+b[d]);return a.join(" ")||void 0},setFilterProperty:function(a){if(a.filters)for(var b=0,c=a.filters.length;b<c;++b)OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this,a.filters[b]);else a instanceof OpenLayers.Filter.Spatial&&!a.property&&(a.property=this.geometryName)},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},defaultPrefix:"ogc",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b={exceptionReport:null};a.documentElement&&(this.readChildNodes(a,b),null===b.exceptionReport&&(b=(new OpenLayers.Format.OWSCommon).read(a)));return b},readers:{ogc:{ServiceExceptionReport:function(a,\n +b){b.exceptionReport={exceptions:[]};this.readChildNodes(a,b.exceptionReport)},ServiceException:function(a,b){var c={code:a.getAttribute("code"),locator:a.getAttribute("locator"),text:this.getChildValue(a)};b.exceptions.push(c)}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,errorProperty:null,name:null,stringifyOutput:!1,parser:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);a=this.CLASS_NAME;this.name=a.substring(a.lastIndexOf(".")+1)},getVersion:function(a,b){var c;a?(c=this.version,c||(c=a.getAttribute("version"),c||(c=this.defaultVersion))):c=b&&b.version||this.version||this.defaultVersion;return c},getParser:function(a){var a=\n +a||this.defaultVersion,b=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=a){var c=OpenLayers.Format[this.name]["v"+a.replace(/\\./g,"_")+b];if(!c)throw"Can\'t find a "+this.name+" parser for version "+a+b;this.parser=new c(this.options)}return this.parser},write:function(a,b){this.parser=this.getParser(this.getVersion(null,b));var c=this.parser.write(a,b);return!1===this.stringifyOutput?c:OpenLayers.Format.XML.prototype.write.apply(this,[c])},read:function(a,b){"string"==typeof a&&\n +(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var c=this.getVersion(a.documentElement);this.parser=this.getParser(c);var d=this.parser.read(a,b);if(null!==this.errorProperty&&void 0===d[this.errorProperty]){var e=new OpenLayers.Format.OGCExceptionReport;d.error=e.read(a)}d.version=c;return d},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&\n +(this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?\n +this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};\n +OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=\n +null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||\n +this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){var a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a,\n +b=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=\n +a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});\n +OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,\n +hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,\n +strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),\n +this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length){f=!0;g=0;for(h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a)}0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&\n +(b.label=""+b.label);return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0],a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),(!0===a.stroke||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),\n +(!0===a.fill||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));\n +return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,\n +c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\\$\\{\\w+\\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=\n +OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};\n +OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,type:"FID",initialize:function(a){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},evaluate:function(a){for(var b=0,c=this.fids.length;b<c;b++)if((a.fid||a.id)==this.fids[b])return!0;return!1},clone:function(){var a=new OpenLayers.Filter.FeatureId;OpenLayers.Util.extend(a,this);a.fids=this.fids.slice();return a},CLASS_NAME:"OpenLayers.Filter.FeatureId"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<\n +c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1,a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;\n +b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()==b.toUpperCase():a==b;break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()!=b.toUpperCase():a!=b;break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=\n +a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a)}return b},value2regex:function(a,b,c){if("."==a)throw Error("\'.\' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\\\"+(c?c:"!")+"(.|$)","g"),"\\\\$1");this.value=this.value.replace(RegExp("\\\\"+b,"g"),".");this.value=this.value.replace(RegExp("\\\\"+\n +a,"g"),".*");this.value=this.value.replace(RegExp("\\\\\\\\.\\\\*","g"),"\\\\"+a);return this.value=this.value.replace(RegExp("\\\\\\\\\\\\.","g"),"\\\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\\\)?\\\\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\\\)?\\\\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\\\\\/g,"\\\\");return a=a.replace(/\\.\\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});\n +OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Filter.Function=OpenLayers.Class(OpenLayers.Filter,{name:null,params:null,CLASS_NAME:"OpenLayers.Filter.Function"});OpenLayers.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){var b={};this.readers.ogc.Filter.apply(this,[a,b]);return b.filter},readers:{ogc:{_expression:function(a){for(var b="",c=a.firstChild;c;c=\n +c.nextSibling)switch(c.nodeType){case 1:a=this.readNode(c);a.property?b+="${"+a.property+"}":void 0!==a.value&&(b+=a.value);break;case 3:case 4:b+=c.nodeValue}return b},Filter:function(a,b){var c={fids:[],filters:[]};this.readChildNodes(a,c);0<c.fids.length?b.filter=new OpenLayers.Filter.FeatureId({fids:c.fids}):0<c.filters.length&&(b.filter=c.filters[0])},FeatureId:function(a,b){var c=a.getAttribute("fid");c&&b.fids.push(c)},And:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});\n +this.readChildNodes(a,c);b.filters.push(c)},Or:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(a,c);b.filters.push(c)},Not:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThan:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThan:function(a,\n +b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},\n +PropertyIsBetween:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(a,c);b.filters.push(c)},Literal:function(a,b){b.value=OpenLayers.String.numericIf(this.getChildValue(a))},PropertyName:function(a,b){b.property=this.getChildValue(a)},LowerBoundary:function(a,b){b.lowerBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,a))},UpperBoundary:function(a,b){b.upperBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,\n +a))},Intersects:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.INTERSECTS)},Within:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.WITHIN)},Contains:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.CONTAINS)},DWithin:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.DWITHIN)},Distance:function(a,b){b.distance=parseInt(this.getChildValue(a));b.distanceUnits=a.getAttribute("units")},Function:function(){}}},readSpatial:function(a,b,c){c=new OpenLayers.Filter.Spatial({type:c});\n +this.readChildNodes(a,c);c.value=c.components[0];delete c.components;b.filters.push(c)},writeOgcExpression:function(a,b){if(a instanceof OpenLayers.Filter.Function){var c=this.writeNode("Function",a,b);b.appendChild(c)}else this.writeNode("Literal",a,b);return b},write:function(a){return this.writers.ogc.Filter.apply(this,[a])},writeFeatureIdNodes:function(a,b){for(var c=0,d=a.fids.length;c<d;++c)this.writeNode("FeatureId",a.fids[c],b)},writers:{ogc:{Filter:function(a){var b=this.createElementNSPlus("ogc:Filter");\n +"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},FeatureId:function(a){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:a}})},And:function(a){for(var b=this.createElementNSPlus("ogc:And"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Or:function(a){for(var b=\n +this.createElementNSPlus("ogc:Or"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Not:function(a){var b=this.createElementNSPlus("ogc:Not"),a=a.filters[0];"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},PropertyIsLessThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThan");\n +this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLessThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");\n +this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsBetween:function(a){var b=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",a,b);this.writeNode("LowerBoundary",a,b);this.writeNode("UpperBoundary",a,b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",{value:a.property})},Literal:function(a){return this.createElementNSPlus("ogc:Literal",{value:a})},LowerBoundary:function(a){var b=this.createElementNSPlus("ogc:LowerBoundary");\n +this.writeOgcExpression(a.lowerBoundary,b);return b},UpperBoundary:function(a){var b=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",a.upperBoundary,b);return b},INTERSECTS:function(a){return this.writeSpatial(a,"Intersects")},WITHIN:function(a){return this.writeSpatial(a,"Within")},CONTAINS:function(a){return this.writeSpatial(a,"Contains")},DWITHIN:function(a){var b=this.writeSpatial(a,"DWithin");this.writeNode("Distance",a,b);return b},Distance:function(a){return this.createElementNSPlus("ogc:Distance",\n +{attributes:{units:a.distanceUnits},value:a.distance})},Function:function(a){for(var b=this.createElementNSPlus("ogc:Function",{attributes:{name:a.name}}),a=a.params,c=0,d=a.length;c<d;c++)this.writeOgcExpression(a[c],b);return b}}},getFilterType:function(a){var b=this.filterMap[a.type];if(!b)throw"Filter writing not supported for rule type: "+a.type;return b},filterMap:{"&&":"And","||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan",\n +"<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike",BBOX:"BBOX",DWITHIN:"DWITHIN",WITHIN:"WITHIN",CONTAINS:"CONTAINS",INTERSECTS:"INTERSECTS",FID:"FeatureId"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();\n +return this.bounds},calculateBounds:function(){},distanceTo:function(){},getVertices:function(){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):\n +Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};\n +OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point,c=c&&c.tolerance,e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,i=a.y2-a.y1,j=b.y2-b.y1,k=b.x2-b.x1,l=j*h-k*i,j=k*g-j*f,g=h*g-i*f;0==l?0==j&&0==g&&(e=!0):(f=j/l,l=g/l,0<=f&&(1>=f&&0<=l&&1>=l)&&(d?(h=a.x1+f*h,l=a.y1+f*i,e=new OpenLayers.Geometry.Point(h,l)):e=!0));if(c)if(e){if(d){a=[a,b];b=0;a:for(;2>b;++b){f=a[b];for(i=1;3>i;++i)if(h=f["x"+i],l=f["y"+i],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(l-e.y,2)),d<c){e.x=h;e.y=l;break a}}}}else{a=\n +[a,b];b=0;a:for(;2>b;++b){h=a[b];l=a[(b+1)%2];for(i=1;3>i;++i)if(f={x:h["x"+i],y:h["y"+i]},g=OpenLayers.Geometry.distanceToSegment(f,l),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}}}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,i=g-e,j=h-f,k=(i*(c-e)+j*(d-f))/(Math.pow(i,2)+Math.pow(j,2));0>=k||(1<=k?(e=g,f=h):(e+=k*i,f+=k*j));return{distance:Math.sqrt(Math.pow(e-c,2)+Math.pow(f-d,2)),x:e,y:f}};OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof\n +OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=!c?d:{x0:e,y0:f,x1:g,y1:h,distance:d}):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){var a=\n +a*(Math.PI/180),c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,\n +a,b),this.bounds=null);return this},getVertices:function(){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());\n +OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&(null!=a.bottom&&null!=a.right&&null!=a.top)&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<\n +c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=\n +this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&\n +this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);!isNaN(h)&&(!isNaN(f.x)&&!isNaN(f.y))&&(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var i=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,i+=f.y*h;return new OpenLayers.Geometry.Point(e/d,i/d)},getGeodesicLength:function(a){for(var b=\n +0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,i=this.components.length;h<\n +i&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(!a||!a.CLASS_NAME||this.CLASS_NAME!=a.CLASS_NAME)b=!1;else if(!OpenLayers.Util.isArray(a.components)||a.components.length!=this.components.length)b=!1;else for(var c=0,d=this.components.length;c<d;++c)if(!this.components[c].equals(a.components[c])){b=!1;break}return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,\n +b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<\n +f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments(),a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments(),\n +e,f,g,h,i,j,k,l=0,m=d.length;a:for(;l<m;++l){c=d[l];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var n=0,o=a.length;for(;n<o;++n){i=a[n];if(i.x1>f)break;if(!(i.x2<e)&&(j=i.y1,k=i.y2,!(Math.min(j,k)>Math.max(g,h))&&!(Math.max(j,k)<Math.min(g,h))&&OpenLayers.Geometry.segmentsIntersect(c,i))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:\n +{x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],i=!1,j,k,l,m={point:!0,tolerance:d},n=null,o=0,p=f.length-2;o<=p;++o)if(d=f[o],g.push(d.clone()),j=f[o+1],k={x1:d.x,y1:d.y,x2:j.x,y2:j.y},k=OpenLayers.Geometry.segmentsIntersect(a,k,m),k instanceof OpenLayers.Geometry.Point&&((l=k.x===a.x1&&k.y===a.y1||k.x===a.x2&&k.y===a.y2||k.equals(d)||k.equals(j)?!0:!1)||c))k.equals(h[h.length-\n +1])||h.push(k.clone()),!(0===o&&k.equals(d))&&!k.equals(j)&&(i=!0,k.equals(d)||g.push(k),e.push(new OpenLayers.Geometry.LineString(g)),g=[k.clone()]);i&&(g.push(j.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var q=a.x1<a.x2?1:-1,r=a.y1<a.y2?1:-1,n={lines:e,points:h.sort(function(a,b){return q*a.x-q*b.x||r*a.y-r*b.y})};return n},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var i=this.getVertices(),j,k,l,m,n,o=[];g=[];\n +for(var p=0,q=i.length-2;p<=q;++p){j=i[p];k=i[p+1];l={x1:j.x,y1:j.y,x2:k.x,y2:k.y};h=h||[a];d&&o.push(j.clone());for(var r=0;r<h.length;++r)if(m=h[r].splitWithSegment(l,b))if(n=m.lines,0<n.length&&(n.unshift(r,1),Array.prototype.splice.apply(h,n),r+=n.length-2),d)for(var s=0,t=m.points.length;s<t;++s)n=m.points[s],n.equals(j)||(o.push(n),g.push(new OpenLayers.Geometry.LineString(o)),o=n.equals(k)?[]:[n.clone()])}d&&(0<g.length&&0<o.length)&&(o.push(k.clone()),g.push(new OpenLayers.Geometry.LineString(o)))}else c=\n +a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),\n +h=a.x,i=a.y,j,k=0,l=g.length;k<l;++k)if(j=g[k],d=OpenLayers.Geometry.distanceToSegment(a,j),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(j.x2>h&&(i>j.y1&&i<j.y2||i<j.y1&&i>j.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:i}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),m,n,o=h.lengt + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +h,p={point:!0},k=0,l=g.length;a:for(;k<l;++k){i=g[k];j=i.x1;n=i.y1;for(var q=0;q<o;++q)if(d=h[q],m=OpenLayers.Geometry.segmentsIntersect(i,\n +d,p)){f=0;e={distance:0,x0:m.x,y0:m.y,x1:m.x,y1:m.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:j,y:n},d),d.distance<f&&(f=d.distance,e={distance:f,x0:j,y0:n,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&i&&(d=a.distanceTo(new OpenLayers.Geometry.Point(i.x2,i.y2),b),k=c?d.distance:d,k<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:k))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();\n +if(3>b.length)return this;var c=function(a,b,d,i){for(var j=0,k=0,l=b,m;l<d;l++){m=a[b];var n=a[d],o=a[l],o=Math.abs(0.5*(m.x*n.y+n.x*o.y+o.x*m.y-n.x*m.y-o.x*n.y-m.x*o.y));m=Math.sqrt(Math.pow(m.x-n.x,2)+Math.pow(m.y-n.y,2));m=2*(o/m);m>j&&(j=m,k=l)}j>i&&k!=b&&(e.push(k),c(a,b,k,i),c(a,k,d,i))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},\n +CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],split:function(a,b){for(var c=null,d=b&&b.mutual,e,f,g,h,i=[],j=[a],k=0,l=this.components.length;k<l;++k){f=this.components[k];g=!1;for(var m=0;m<j.length;++m)if(e=f.split(j[m],b)){if(d){g=e[0];for(var n=0,o=g.length;n<o;++n)0===n&&i.length?i[i.length-1].addComponent(g[n]):i.push(new OpenLayers.Geometry.MultiLineString([g[n]]));g=!0;e=e[1]}if(e.length){e.unshift(m,\n +1);Array.prototype.splice.apply(j,e);break}}g||(i.length?i[i.length-1].addComponent(f.clone()):i=[new OpenLayers.Geometry.MultiLineString(f.clone())])}i&&1<i.length?g=!0:i=[];j&&1<j.length?h=!0:j=[];if(g||h)c=d?[i,j]:j;return c},splitWith:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h,i,j;if(a instanceof OpenLayers.Geometry.LineString){j=[];i=[a];for(var k=0,l=this.components.length;k<l;++k){g=!1;f=this.components[k];for(var m=0;m<i.length;++m)if(e=i[m].split(f,b)){d&&(g=e[0],g.length&&(g.unshift(m,\n +1),Array.prototype.splice.apply(i,g),m+=g.length-2),e=e[1],0===e.length&&(e=[f.clone()]));g=0;for(var n=e.length;g<n;++g)0===g&&j.length?j[j.length-1].addComponent(e[g]):j.push(new OpenLayers.Geometry.MultiLineString([e[g]]));g=!0}g||(j.length?j[j.length-1].addComponent(f.clone()):j=[new OpenLayers.Geometry.MultiLineString([f.clone()])])}}else c=a.split(this);i&&1<i.length?h=!0:i=[];j&&1<j.length?g=!0:j=[];if(h||g)c=d?[i,j]:j;return c},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();if(null!=b||!a.equals(d))c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments);OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,\n +arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,\n +b);this.bounds=null}return this},getCentroid:function(){if(this.components&&2<this.components.length){for(var a=0,b=0,c=0;c<this.components.length-1;c++)var d=this.components[c],e=this.components[c+1],a=a+(d.x+e.x)*(d.x*e.y-e.x*d.y),b=b+(d.y+e.y)*(d.x*e.y-e.x*d.y);c=-1*this.getArea();return new OpenLayers.Geometry.Point(a/(6*c),b/(6*c))}return null},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=\n +this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){for(var b=OpenLayers.Number.limitSigDigs,\n +c=b(a.x,14),a=b(a.y,14),d=this.components.length-1,e,f,g,h,i,j=0,k=0;k<d;++k)if(e=this.components[k],g=b(e.x,14),e=b(e.y,14),f=this.components[k+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){j=-1;break}}else{i=b((a-f)*((h-g)/(f-e))+h,14);if(i==c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){j=-1;break}i<=c||g!=h&&(i<Math.min(g,h)||i>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++j}return-1==j?1:!!(j&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==\n +a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<\n +d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=\n +this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b){c=0;for(d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}}else{c=0;for(d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);}if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,\n +[a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:!0,xy:!0,initialize:function(a){this.regExes={trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g};OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=this.getElementsByTagNameNS(a.documentElement,this.gmlns,this.featureName),b=[],c=0;c<a.length;c++){var d=this.parseFeature(a[c]);d&&b.push(d)}return b},parseFeature:function(a){for(var b="MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope".split(" "),c,d,e,f=0;f<b.length;++f)if(c=b[f],d=this.getElementsByTagNameNS(a,this.gmlns,c),0<d.length){if(e=this.parseGeometry[c.toLowerCase()])e=e.apply(this,\n +[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var g;c=this.getElementsByTagNameNS(a,this.gmlns,"Box");for(f=0;f<c.length;++f)b=c[f],d=this.parseGeometry.box.apply(this,[b]),b=b.parentNode,"boundedBy"===(b.localName||b.nodeName.split(":").pop())?g=d:e=d.toGeometry();var h;this.extractAttributes&&(h=this.parseAttributes(a));h=new OpenLayers.Feature.Vector(e,h);h.bounds=\n +g;h.gml={featureType:a.firstChild.nodeName.split(":")[1],featureNS:a.firstChild.namespaceURI,featureNSPrefix:a.firstChild.prefix};for(var a=a.firstChild,i;a&&!(1==a.nodeType&&(i=a.getAttribute("fid")||a.getAttribute("id")));)a=a.nextSibling;h.fid=i;return h},parseGeometry:{point:function(a){var b,c;c=[];b=this.getElementsByTagNameNS(a,this.gmlns,"pos");0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));0==c.length&&(b=this.getElementsByTagNameNS(a,\n +this.gmlns,"coordinates"),0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.removeSpace,""),c=c.split(",")));0==c.length&&(b=this.getElementsByTagNameNS(a,this.gmlns,"coord"),0<b.length&&(a=this.getElementsByTagNameNS(b[0],this.gmlns,"X"),b=this.getElementsByTagNameNS(b[0],this.gmlns,"Y"),0<a.length&&0<b.length&&(c=[a[0].firstChild.nodeValue,b[0].firstChild.nodeValue])));2==c.length&&(c[2]=null);return this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],\n +c[0],c[2])},multipoint:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Point"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.point.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a,b){var c,d;d=[];var e=[];c=this.getElementsByTagNameNS(a,this.gmlns,"posList");if(0<c.length){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.split(this.regExes.splitSpace);var f=parseInt(c[0].getAttribute("dimension")),\n +g,h,i;for(c=0;c<d.length/f;++c)g=c*f,h=d[g],i=d[g+1],g=2==f?null:d[g+2],this.xy?e.push(new OpenLayers.Geometry.Point(h,i,g)):e.push(new OpenLayers.Geometry.Point(i,h,g))}if(0==d.length&&(c=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),0<c.length)){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.replace(this.regExes.trimComma,",");f=d.split(this.regExes.splitSpace);for(c=0;c<f.length;++c)d=f[c].split(","),2==d.length&&(d[2]=null),this.xy?e.push(new OpenLayers.Geometry.Point(d[0],\n +d[1],d[2])):e.push(new OpenLayers.Geometry.Point(d[1],d[0],d[2]))}d=null;0!=e.length&&(d=b?new OpenLayers.Geometry.LinearRing(e):new OpenLayers.Geometry.LineString(e));return d},multilinestring:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LineString"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiLineString(b)},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LinearRing"),\n +b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d],!0]))&&b.push(c);return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Polygon"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.polygon.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPolygon(b)},envelope:function(a){var b=[],c,d,e=this.getElementsByTagNameNS(a,this.gmlns,"lowerCorner");if(0<e.length){c=\n +[];0<e.length&&(c=e[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var f=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}a=this.getElementsByTagNameNS(a,this.gmlns,"upperCorner");if(0<a.length){c=[];0<a.length&&(c=a[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var g=this.xy?new OpenLayers.Geometry.Point(c[0],\n +c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}f&&g&&(b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b=new OpenLayers.Geometry.LinearRing(b),d=new OpenLayers.Geometry.Polygon([b]));return d},box:function(a){var b=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),c=a=null;0<b.length&&(b=b[0].firstChild.nodeValue,\n +b=b.split(" "),2==b.length&&(a=b[0].split(","),c=b[1].split(",")));if(null!==a&&null!==c)return new OpenLayers.Bounds(parseFloat(a[0]),parseFloat(a[1]),parseFloat(c[0]),parseFloat(c[1]))}},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d,e;a;){if(1==a.nodeType){a=a.childNodes;for(c=0;c<a.length;++c)if(d=a[c],1==d.nodeType)if(e=d.childNodes,1==e.length){if(e=e[0],3==e.nodeType||4==e.nodeType)d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,e=e.nodeValue.replace(this.regExes.trimSpace,""),\n +b[d]=e}else b[d.nodeName.split(":").pop()]=null;break}a=a.nextSibling}return b},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName),c=0;c<a.length;c++)b.appendChild(this.createFeatureXML(a[c]));return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.geometryName);c.appendChild(b);\n +var b=this.createElementNS(this.gmlns,"gml:"+this.featureName),d=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.layerName);d.setAttribute("fid",a.fid||a.id);d.appendChild(c);for(var e in a.attributes){var c=this.createTextNode(a.attributes[e]),f=this.createElementNS(this.featureNS,this.featurePrefix+":"+e.substring(e.lastIndexOf(":")+1));f.appendChild(c);d.appendChild(f)}b.appendChild(d);return b},buildGeometryNode:function(a){this.externalProjection&&this.internalProjection&&(a=\n +a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME;return this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()].apply(this,[a])},buildGeometry:{point:function(a){var b=this.createElementNS(this.gmlns,"gml:Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPoint"),a=a.components,c,d,e=0;e<a.length;e++)c=this.createElementNS(this.gmlns,"gml:pointMember"),d=this.buildGeometry.point.apply(this,\n +[a[e]]),c.appendChild(d),b.appendChild(c);return b},linestring:function(a){var b=this.createElementNS(this.gmlns,"gml:LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiLineString"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,"gml:lineStringMember"),d=this.buildGeometry.linestring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},linearring:function(a){var b=this.createElementNS(this.gmlns,\n +"gml:LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:Polygon"),a=a.components,c,d,e=0;e<a.length;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.gmlns,"gml:"+c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPolygon"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,\n +"gml:polygonMember"),d=this.buildGeometry.polygon.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},bounds:function(a){var b=this.createElementNS(this.gmlns,"gml:Box");b.appendChild(this.buildCoordinatesNode(a));return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.gmlns,"gml:coordinates");b.setAttribute("decimal",".");b.setAttribute("cs",",");b.setAttribute("ts"," ");var c=[];if(a instanceof OpenLayers.Bounds)c.push(a.left+","+a.bottom),c.push(a.right+","+a.top);\n +else for(var a=a.components?a.components:[a],d=0;d<a.length;d++)c.push(a[d].x+","+a[d].y);c=this.createTextNode(c.join(" "));b.appendChild(c);return b},CLASS_NAME:"OpenLayers.Format.GML"});OpenLayers.Format.GML||(OpenLayers.Format.GML={});\n +OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:!0,srsName:null,xy:!0,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g,featureMember:/^(.*:)?featureMembers?$/},\n +initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.setGeometryTypes();a&&a.featureNS&&this.setNamespace("feature",a.featureNS);this.singleFeatureType=!a||typeof a.featureType==="string"},read:function(a){typeof a=="string"&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));if(a&&a.nodeType==9)a=a.documentElement;var b=[];this.readNode(a,{features:b},true);if(b.length==0){var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember");if(c.length)for(var a=\n +0,d=c.length;a<d;++a)this.readNode(c[a],{features:b},true);else{c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMembers");c.length&&this.readNode(c[0],{features:b},true)}}return b},readNode:function(a,b,c){if(c===true&&this.autoConfig===true){this.featureType=null;delete this.namespaceAlias[this.featureNS];delete this.namespaces.feature;this.featureNS=null}if(!this.featureNS&&!(a.prefix in this.namespaces)&&a.parentNode.namespaceURI==this.namespaces.gml&&this.regExes.featureMember.test(a.parentNode.nodeName)){this.featureType=\n +a.nodeName.split(":").pop();this.setNamespace("feature",a.namespaceURI);this.featureNS=a.namespaceURI;this.autoConfig=true}return OpenLayers.Format.XML.prototype.readNode.apply(this,[a,b])},readers:{gml:{featureMember:function(a,b){this.readChildNodes(a,b)},featureMembers:function(a,b){this.readChildNodes(a,b)},name:function(a,b){b.name=this.getChildValue(a)},boundedBy:function(a,b){var c={};this.readChildNodes(a,c);if(c.components&&c.components.length>0)b.bounds=c.components[0]},Point:function(a,\n +b){var c={points:[]};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(c.points[0])},coordinates:function(a,b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace),d,e=c.length,f=Array(e),g=0;g<e;++g){d=c[g].split(",");f[g]=this.xy?new OpenLayers.Geometry.Point(d[0],d[1],d[2]):new OpenLayers.Geometry.Point(d[1],d[0],d[2])}b.points=f},coord:function(a,b){var c={};this.readChildNodes(a,\n +c);if(!b.points)b.points=[];b.points.push(new OpenLayers.Geometry.Point(c.x,c.y,c.z))},X:function(a,b){b.x=this.getChildValue(a)},Y:function(a,b){b.y=this.getChildValue(a)},Z:function(a,b){b.z=this.getChildValue(a)},MultiPoint:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPoint(c.components)]},pointMember:function(a,b){this.readChildNodes(a,b)},LineString:function(a,b){var c={};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.LineString(c.points))},\n +MultiLineString:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiLineString(c.components)]},lineStringMember:function(a,b){this.readChildNodes(a,b)},Polygon:function(a,b){var c={outer:null,inner:[]};this.readChildNodes(a,c);c.inner.unshift(c.outer);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.Polygon(c.inner))},LinearRing:function(a,b){var c={};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.LinearRing(c.points)]},\n +MultiPolygon:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)]},polygonMember:function(a,b){this.readChildNodes(a,b)},GeometryCollection:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.Collection(c.components)]},geometryMember:function(a,b){this.readChildNodes(a,b)}},feature:{"*":function(a,b){var c,d=a.localName||a.nodeName.split(":").pop();b.features?!this.singleFeatureType&&\n +OpenLayers.Util.indexOf(this.featureType,d)!==-1?c="_typeName":d===this.featureType&&(c="_typeName"):a.childNodes.length==0||a.childNodes.length==1&&a.firstChild.nodeType==3?this.extractAttributes&&(c="_attribute"):c="_geometry";c&&this.readers.feature[c].apply(this,[a,b])},_typeName:function(a,b){var c={components:[],attributes:{}};this.readChildNodes(a,c);if(c.name)c.attributes.name=c.name;var d=new OpenLayers.Feature.Vector(c.components[0],c.attributes);if(!this.singleFeatureType){d.type=a.nodeName.split(":").pop();\n +d.namespace=a.namespaceURI}var e=a.getAttribute("fid")||this.getAttributeNS(a,this.namespaces.gml,"id");if(e)d.fid=e;this.internalProjection&&(this.externalProjection&&d.geometry)&&d.geometry.transform(this.externalProjection,this.internalProjection);if(c.bounds)d.bounds=c.bounds;b.features.push(d)},_geometry:function(a,b){if(!this.geometryName)this.geometryName=a.nodeName.split(":").pop();this.readChildNodes(a,b)},_attribute:function(a,b){var c=a.localName||a.nodeName.split(":").pop(),d=this.getChildValue(a);\n +b.attributes[c]=d}},wfs:{FeatureCollection:function(a,b){this.readChildNodes(a,b)}}},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:{featureMember:function(a){var b=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",a,b);return b},MultiPoint:function(a){for(var b=\n +this.createElementNSPlus("gml:MultiPoint"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("pointMember",a[c],b);return b},pointMember:function(a){var b=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",a,b);return b},MultiLineString:function(a){for(var b=this.createElementNSPlus("gml:MultiLineString"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("lineStringMember",a[c],b);return b},lineStringMember:function(a){var b=this.createElementNSPlus("gml:lineStringMember");\n +this.writeNode("LineString",a,b);return b},MultiPolygon:function(a){for(var b=this.createElementNSPlus("gml:MultiPolygon"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("polygonMember",a[c],b);return b},polygonMember:function(a){var b=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",a,b);return b},GeometryCollection:function(a){for(var b=this.createElementNSPlus("gml:GeometryCollection"),c=0,d=a.components.length;c<d;++c)this.writeNode("geometryMember",a.components[c],\n +b);return b},geometryMember:function(a){var b=this.createElementNSPlus("gml:geometryMember"),a=this.writeNode("feature:_geometry",a);b.appendChild(a.firstChild);return b}},feature:{_typeName:function(a){var b=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:a.fid}});a.geometry&&this.writeNode("feature:_geometry",a.geometry,b);for(var c in a.attributes){var d=a.attributes[c];d!=null&&this.writeNode("feature:_attribute",{name:c,value:d},b)}return b},_geometry:function(a){this.externalProjection&&\n +this.internalProjection&&(a=a.clone().transform(this.internalProjection,this.externalProjection));var b=this.createElementNSPlus("feature:"+this.geometryName),a=this.writeNode("gml:"+this.geometryTypes[a.CLASS_NAME],a,b);this.srsName&&a.setAttribute("srsName",this.srsName);return b},_attribute:function(a){return this.createElementNSPlus("feature:"+a.name,{value:a.value})}},wfs:{FeatureCollection:function(a){for(var b=this.createElementNSPlus("wfs:FeatureCollection"),c=0,d=a.length;c<d;++c)this.writeNode("gml:featureMember",\n +a[c],b);return b}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:!1,multiCurve:!0,surface:!1,multiSurface:!0,initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a,b){this.readChildNodes(a,b)},Curve:function(a,b){var c={points:[]};this.readChildNodes(a,c);b.components||\n +(b.components=[]);b.components.push(new OpenLayers.Geometry.LineString(c.points))},segments:function(a,b){this.readChildNodes(a,b)},LineStringSegment:function(a,b){var c={};this.readChildNodes(a,c);c.points&&Array.prototype.push.apply(b.points,c.points)},pos:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),c=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2]);b.points=[c]},posList:function(a,\n +b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),d=parseInt(a.getAttribute("dimension"))||2,e,f,g,h=Array(c.length/d),i=0,j=c.length;i<j;i+=d)e=c[i],f=c[i+1],g=2==d?void 0:c[i+2],h[i/d]=this.xy?new OpenLayers.Geometry.Point(e,f,g):new OpenLayers.Geometry.Point(f,e,g);b.points=h},Surface:function(a,b){this.readChildNodes(a,b)},patches:function(a,b){this.readChildNodes(a,b)},PolygonPatch:function(a,b){this.readers.gml.Polygon.apply(this,[a,b])},exterior:function(a,\n +b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},interior:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},MultiCurve:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiLineString(c.components)])},curveMember:function(a,b){this.readChildNodes(a,b)},MultiSurface:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)])},\n +surfaceMember:function(a,b){this.readChildNodes(a,b)},surfaceMembers:function(a,b){this.readChildNodes(a,b)},pointMembers:function(a,b){this.readChildNodes(a,b)},lineStringMembers:function(a,b){this.readChildNodes(a,b)},polygonMembers:function(a,b){this.readChildNodes(a,b)},geometryMembers:function(a,b){this.readChildNodes(a,b)},Envelope:function(a,b){var c={points:Array(2)};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,\n +d.y,c.x,c.y))},lowerCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[0]=c.points[0]},upperCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[1]=c.points[0]}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,\n +this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a){for(var b=this.createElementNSPlus("gml:featureMembers"),c=0,d=a.length;c<d;++c)this.writeNode("feature:_typeName",a[c],b);return b},Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("pos",a,b);return b},pos:function(a){return this.createElementNSPlus("gml:pos",{value:this.xy?a.x+\n +" "+a.y:a.y+" "+a.x})},LineString:function(a){var b=this.createElementNSPlus("gml:LineString");this.writeNode("posList",a.components,b);return b},Curve:function(a){var b=this.createElementNSPlus("gml:Curve");this.writeNode("segments",a,b);return b},segments:function(a){var b=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",a,b);return b},LineStringSegment:function(a){var b=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",a.components,b);return b},\n +posList:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+" "+d.y:d.y+" "+d.x;return this.createElementNSPlus("gml:posList",{value:c.join(" ")})},Surface:function(a){var b=this.createElementNSPlus("gml:Surface");this.writeNode("patches",a,b);return b},patches:function(a){var b=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",a,b);return b},PolygonPatch:function(a){var b=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});\n +this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},exterior:function(a){var b=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",a,b);return b},interior:function(a){var b=this.createElementNSPlus("gml:interior");\n +this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",a.components,b);return b},MultiCurve:function(a){for(var b=this.createElementNSPlus("gml:MultiCurve"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("curveMember",a[c],b);return b},curveMember:function(a){var b=this.createElementNSPlus("gml:curveMember");this.curve?this.writeNode("Curve",a,b):this.writeNode("LineString",a,b);return b},MultiSurface:function(a){for(var b=\n +this.createElementNSPlus("gml:MultiSurface"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("surfaceMember",a[c],b);return b},surfaceMember:function(a){var b=this.createElementNSPlus("gml:surfaceMember");this.surface?this.writeNode("Surface",a,b):this.writeNode("Polygon",a,b);return b},Envelope:function(a){var b=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",a,b);this.writeNode("upperCorner",a,b);this.srsName&&b.setAttribute("srsName",this.srsName);return b},lowerCorner:function(a){return this.createElementNSPlus("gml:lowerCorner",\n +{value:this.xy?a.left+" "+a.bottom:a.bottom+" "+a.left})},upperCorner:function(a){return this.createElementNSPlus("gml:upperCorner",{value:this.xy?a.right+" "+a.top:a.top+" "+a.right})}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":!0===\n +this.curve?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":!1===this.multiCurve?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":!0===this.surface?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":!1===this.multiSurface?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,\n +c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escapeChar");c.value2regex(d,e,\n +f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,feature:OpenLayers.Format.GML.v3.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",\n +{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{matchCase:a.matchCase,wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Envelope",\n +a.value);a.projection&&c.setAttribute("srsName",a.projection);b.appendChild(c);return b},SortBy:function(a){for(var b=this.createElementNSPlus("ogc:SortBy"),c=0,d=a.length;c<d;c++)this.writeNode("ogc:SortProperty",a[c],b);return b},SortProperty:function(a){var b=this.createElementNSPlus("ogc:SortProperty");this.writeNode("ogc:PropertyName",a,b);this.writeNode("ogc:SortOrder","DESC"==a.order?"DESC":"ASC",b);return b},SortOrder:function(a){return this.createElementNSPlus("ogc:SortOrder",{value:a})}},\n +OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature},writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Envelope",a.value);a.projection&&\n +d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(a){var b=this.version;b||((a=a.getAttribute("xmlns:ows"))&&"1.1"===a.substring(a.lastIndexOf("/")+1)&&(b="1.1.0"),b||(b=this.defaultVersion));return b},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{ows:{Exception:function(a,b){var c={code:a.getAttribute("exceptionCode"),locator:a.getAttribute("locator"),texts:[]};b.exceptions.push(c);this.readChildNodes(a,c)},ExceptionText:function(a,b){var c=this.getChildValue(a);b.texts.push(c)},\n +ServiceIdentification:function(a,b){b.serviceIdentification={};this.readChildNodes(a,b.serviceIdentification)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},Keywords:function(a,b){b.keywords={};this.readChildNodes(a,b.keywords)},Keyword:function(a,b){b[this.getChildValue(a)]=!0},ServiceType:function(a,b){b.serviceType={codeSpace:a.getAttribute("codeSpace"),value:this.getChildValue(a)}},ServiceTypeVersion:function(a,b){b.serviceTypeVersion=\n +this.getChildValue(a)},Fees:function(a,b){b.fees=this.getChildValue(a)},AccessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ServiceProvider:function(a,b){b.serviceProvider={};this.readChildNodes(a,b.serviceProvider)},ProviderName:function(a,b){b.providerName=this.getChildValue(a)},ProviderSite:function(a,b){b.providerSite=this.getAttributeNS(a,this.namespaces.xlink,"href")},ServiceContact:function(a,b){b.serviceContact={};this.readChildNodes(a,b.serviceContact)},IndividualName:function(a,\n +b){b.individualName=this.getChildValue(a)},PositionName:function(a,b){b.positionName=this.getChildValue(a)},ContactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,b.contactInfo)},Phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},Voice:function(a,b){b.voice=this.getChildValue(a)},Address:function(a,b){b.address={};this.readChildNodes(a,b.address)},DeliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},AdministrativeArea:function(a,\n +b){b.administrativeArea=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ElectronicMailAddress:function(a,b){b.electronicMailAddress=this.getChildValue(a)},Role:function(a,b){b.role=this.getChildValue(a)},OperationsMetadata:function(a,b){b.operationsMetadata={};this.readChildNodes(a,b.operationsMetadata)},Operation:function(a,b){var c=a.getAttribute("name");b[c]={};this.readChildNodes(a,b[c])},DCP:function(a,\n +b){b.dcp={};this.readChildNodes(a,b.dcp)},HTTP:function(a,b){b.http={};this.readChildNodes(a,b.http)},Get:function(a,b){b.get||(b.get=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.get.push(c)},Post:function(a,b){b.post||(b.post=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.post.push(c)},Parameter:function(a,b){b.parameters||(b.parameters={});var c=a.getAttribute("name");b.parameters[c]={};this.readChildNodes(a,\n +b.parameters[c])},Constraint:function(a,b){b.constraints||(b.constraints={});var c=a.getAttribute("name");b.constraints[c]={};this.readChildNodes(a,b.constraints[c])},Value:function(a,b){b[this.getChildValue(a)]=!0},OutputFormat:function(a,b){b.formats.push({value:this.getChildValue(a)});this.readChildNodes(a,b)},WGS84BoundingBox:function(a,b){var c={};c.crs=a.getAttribute("crs");b.BoundingBox?b.BoundingBox.push(c):(b.projection=c.crs,c=b);this.readChildNodes(a,c)},BoundingBox:function(a,b){this.readers.ows.WGS84BoundingBox.apply(this,\n +[a,b])},LowerCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.left=c[0];b.bottom=c[1]},UpperCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.right=c[0];b.top=c[1];b.bounds=new OpenLayers.Bounds(b.left,b.bottom,b.right,b.top);delete b.left;delete b.bottom;delete b.right;delete b.top},\n +Language:function(a,b){b.language=this.getChildValue(a)}}},writers:{ows:{BoundingBox:function(a){var b=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:a.projection}});this.writeNode("ows:LowerCorner",a,b);this.writeNode("ows:UpperCorner",a,b);return b},LowerCorner:function(a){return this.createElementNSPlus("ows:LowerCorner",{value:a.bounds.left+" "+a.bounds.bottom})},UpperCorner:function(a){return this.createElementNSPlus("ows:UpperCorner",{value:a.bounds.right+" "+a.bounds.top})},Identifier:function(a){return this.createElementNSPlus("ows:Identifier",\n +{value:a})},Title:function(a){return this.createElementNSPlus("ows:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("ows:Abstract",{value:a})},OutputFormat:function(a){return this.createElementNSPlus("ows:OutputFormat",{value:a})}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.success=!1;b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("language"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Format.OWSCommon.v1.prototype.writers.ows},\n +CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v3.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,\n +b){b.numberOfFeatures=parseInt(a.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers.wfs.FeatureCollection.apply(this,arguments)},TransactionResponse:function(a,b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},TransactionSummary:function(a,b){b.success=!0},InsertResults:function(a,b){this.readChildNodes(a,b)},Feature:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,\n +feature:OpenLayers.Format.GML.v3.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.readers.ogc,ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows},writers:{wfs:OpenLayers.Util.applyDefaults({GetFeature:function(a){var b=OpenLayers.Format.WFST.v1.prototype.writers.wfs.GetFeature.apply(this,arguments);a&&this.setAttributes(b,{resultType:a.resultType,startIndex:a.startIndex,count:a.count});return b},Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,\n +featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType,srsName:a.srsName}});a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<d;b++)this.writeNode("wfs:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this,a.filter),this.writeNode("ogc:Filter",\n +a.filter,c));return c},PropertyName:function(a){return this.createElementNSPlus("wfs:PropertyName",{value:a.property})}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},\n +update:function(){},"delete":function(){},commit:function(){},abort:function(){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});\n +OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||!("function"==typeof JSON.parse&&"function"==typeof JSON.stringify))}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\\],:{}\\s]*$/.test(a.replace(/\\\\["\\\\\\/bfnrtu]/g,"@").replace(/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,"]").replace(/(?:^|:|,)(?:\\s*\\[)+/g,""))&&(c=eval("("+a+")"),"function"===\n +typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);\n +return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,\n +[a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),\n +"]");return c.join("")},string:function(a){var b={"\\u0008":"\\\\b","\\t":"\\\\t","\\n":"\\\\n","\\u000c":"\\\\f","\\r":"\\\\r",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\"};return/["\\\\\\x00-\\x1f]/.test(a)?\'"\'+a.replace(/([\\x00-\\x1f\\\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+\'"\':\'"\'+a+\'"\'},number:function(a){return isFinite(a)?""+a:"null"},"boolean":function(a){return""+a},date:function(a){function b(a){return 10>a?"0"+a:a}return\'"\'+a.getFullYear()+"-"+\n +b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+\'"\'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:!1,read:function(a,b,c){var b=b?b:"FeatureCollection",d=null,e=null;if(e="string"==typeof a?OpenLayers.Format.JSON.prototype.read.apply(this,[a,c]):a)if("string"!=typeof e.type)OpenLayers.Console.error("Bad GeoJSON - no type: "+a);else{if(this.isValidType(e,b))switch(b){case "Geometry":try{d=this.parseGeometry(e)}catch(f){OpenLayers.Console.error(f)}break;case "Feature":try{d=this.parseFeature(e),d.type="Feature"}catch(g){OpenLayers.Console.error(g)}break;\n +case "FeatureCollection":switch(d=[],e.type){case "Feature":try{d.push(this.parseFeature(e))}catch(h){d=null,OpenLayers.Console.error(h)}break;case "FeatureCollection":a=0;for(b=e.features.length;a<b;++a)try{d.push(this.parseFeature(e.features[a]))}catch(i){d=null,OpenLayers.Console.error(i)}break;default:try{var j=this.parseGeometry(e);d.push(new OpenLayers.Feature.Vector(j))}catch(k){d=null,OpenLayers.Console.error(k)}}}}else OpenLayers.Console.error("Bad JSON: "+a);return d},isValidType:function(a,\n +b){var c=!1;switch(b){case "Geometry":-1==OpenLayers.Util.indexOf("Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection".split(" "),a.type)?OpenLayers.Console.error("Unsupported geometry type: "+a.type):c=!0;break;case "FeatureCollection":c=!0;break;default:a.type==b?c=!0:OpenLayers.Console.error("Cannot convert types from "+a.type+" to "+b)}return c},parseFeature:function(a){var b,c,d;c=a.properties?a.properties:{};d=a.geometry&&a.geometry.bbox||a.bbox;try{b=this.parseGeometry(a.geometry)}catch(e){throw e;\n +}b=new OpenLayers.Feature.Vector(b,c);d&&(b.bounds=OpenLayers.Bounds.fromArray(d));a.id&&(b.fid=a.id);return b},parseGeometry:function(a){if(null==a)return null;var b,c=!1;if("GeometryCollection"==a.type){if(!OpenLayers.Util.isArray(a.geometries))throw"GeometryCollection must have geometries array: "+a;b=a.geometries.length;for(var c=Array(b),d=0;d<b;++d)c[d]=this.parseGeometry.apply(this,[a.geometries[d]]);b=new OpenLayers.Geometry.Collection(c);c=!0}else{if(!OpenLayers.Util.isArray(a.coordinates))throw"Geometry must have coordinates array: "+\n +a;if(!this.parseCoords[a.type.toLowerCase()])throw"Unsupported geometry type: "+a.type;try{b=this.parseCoords[a.type.toLowerCase()].apply(this,[a.coordinates])}catch(e){throw e;}}this.internalProjection&&(this.externalProjection&&!c)&&b.transform(this.externalProjection,this.internalProjection);return b},parseCoords:{point:function(a){if(!1==this.ignoreExtraDims&&2!=a.length)throw"Only 2D points are supported: "+a;return new OpenLayers.Geometry.Point(a[0],a[1])},multipoint:function(a){for(var b=[],\n +c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.LineString(b)},multilinestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.linestring.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiLineString(b)},\n +polygon:function(a){for(var b=[],c,d,e=0,f=a.length;e<f;++e){try{d=this.parseCoords.linestring.apply(this,[a[e]])}catch(g){throw g;}c=new OpenLayers.Geometry.LinearRing(d.components);b.push(c)}return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.polygon.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPolygon(b)},box:function(a){if(2!=a.length)throw"GeoJSON box coordinates must have 2 elements";\n +return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(a[0][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[0][1])])])}},write:function(a,b){var c={type:null};if(OpenLayers.Util.isArray(a)){c.type="FeatureCollection";var d=a.length;c.features=Array(d);for(var e=0;e<d;++e){var f=a[e];if(!f instanceof OpenLayers.Feature.Vector)throw"FeatureCollection only supports collections of features: "+\n +f;c.features[e]=this.extract.feature.apply(this,[f])}}else 0==a.CLASS_NAME.indexOf("OpenLayers.Geometry")?c=this.extract.geometry.apply(this,[a]):a instanceof OpenLayers.Feature.Vector&&(c=this.extract.feature.apply(this,[a]),a.layer&&a.layer.projection&&(c.crs=this.createCRSObject(a)));return OpenLayers.Format.JSON.prototype.write.apply(this,[c,b])},createCRSObject:function(a){var a=a.layer.projection.toString(),b={};a.match(/epsg:/i)&&(a=parseInt(a.substring(a.indexOf(":")+1)),b=4326==a?{type:"name",\n +properties:{name:"urn:ogc:def:crs:OGC:1.3:CRS84"}}:{type:"name",properties:{name:"EPSG:"+a}});return b},extract:{feature:function(a){var b=this.extract.geometry.apply(this,[a.geometry]),b={type:"Feature",properties:a.attributes,geometry:b};null!=a.fid&&(b.id=a.fid);return b},geometry:function(a){if(null==a)return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME.split(".")[2],a=this.extract[b.toLowerCase()].apply(this,\n +[a]);return"Collection"==b?{type:"GeometryCollection",geometries:a}:{type:b,coordinates:a}},point:function(a){return[a.x,a.y]},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,\n +[a.components[c]]));return b},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,[a.components[c]]));return b},multipolygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.polygon.apply(this,[a.components[c]]));return b},collection:function(a){for(var b=a.components.length,c=Array(b),d=0;d<b;++d)c[d]=this.extract.geometry.apply(this,[a.components[d]]);return c}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Protocol.Script=OpenLayers.Class(OpenLayers.Protocol,{url:null,params:null,callback:null,callbackTemplate:"OpenLayers.Protocol.Script.registry.${id}",callbackKey:"callback",callbackPrefix:"",scope:null,format:null,pendingRequests:null,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.pendingRequests={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);this.format||(this.format=new OpenLayers.Format.GeoJSON);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=\n +new OpenLayers.Format.QueryStringFilter({srsInBBOX:this.srsInBBOX});this.filterToParams=function(a,d){return b.write(a,d)}}},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.applyDefaults(a,this.options);a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.createRequest(a.url,a.params,OpenLayers.Function.bind(function(c){b.data=\n +c;this.handleRead(b,a)},this));b.priv=c;return b},createRequest:function(a,b,c){var c=OpenLayers.Protocol.Script.register(c),d=OpenLayers.String.format(this.callbackTemplate,{id:c}),b=OpenLayers.Util.extend({},b);b[this.callbackKey]=this.callbackPrefix+d;a=OpenLayers.Util.urlAppend(a,OpenLayers.Util.getParameterString(b));b=document.createElement("script");b.type="text/javascript";b.src=a;b.id="OpenLayers_Protocol_Script_"+c;this.pendingRequests[b.id]=b;document.getElementsByTagName("head")[0].appendChild(b);\n +return b},destroyRequest:function(a){OpenLayers.Protocol.Script.unregister(a.id.split("_").pop());delete this.pendingRequests[a.id];a.parentNode&&a.parentNode.removeChild(a)},handleRead:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){b.callback&&(a.data?(a.features=this.parseFeatures(a.data),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,this.destroyRequest(a.priv),b.callback.call(b.scope,a))},parseFeatures:function(a){return this.format.read(a)},\n +abort:function(a){if(a)this.destroyRequest(a.priv);else for(var b in this.pendingRequests)this.destroyRequest(this.pendingRequests[b])},destroy:function(){this.abort();delete this.params;delete this.format;OpenLayers.Protocol.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Protocol.Script"});(function(){var a=OpenLayers.Protocol.Script,b=0;a.registry={};a.register=function(c){var d="c"+ ++b;a.registry[d]=function(){c.apply(this,arguments)};return d};a.unregister=function(b){delete a.registry[b]}})();OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:!0,defaultControl:null,saveState:!1,allowDepress:!1,activeState:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.controls=[];this.activeState={}},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var a,b=this.controls.length-1;0<=b;b--)a=this.controls[b],a.events&&\n +a.events.un({activate:this.iconOn,deactivate:this.iconOff}),a.panel_div=null;this.activeState=null},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var a,b=0,c=this.controls.length;b<c;b++)a=this.controls[b],(a===this.defaultControl||this.saveState&&this.activeState[a.id])&&a.activate();!0===this.saveState&&(this.defaultControl=null);this.redraw();return!0}return!1},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){for(var a,\n +b=0,c=this.controls.length;b<c;b++)a=this.controls[b],this.activeState[a.id]=a.deactivate();this.redraw();return!0}return!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick);this.addControlsToMap(this.controls);return this.div},redraw:function(){for(var a=this.div.childNodes.length-1;0<=a;a--)this.div.removeChild(this.div.childNodes[a]);\n +this.div.innerHTML="";if(this.active)for(var a=0,b=this.controls.length;a<b;a++)this.div.appendChild(this.controls[a].panel_div)},activateControl:function(a){if(!this.active)return!1;if(a.type==OpenLayers.Control.TYPE_BUTTON)a.trigger();else if(a.type==OpenLayers.Control.TYPE_TOGGLE)a.active?a.deactivate():a.activate();else if(this.allowDepress&&a.active)a.deactivate();else{for(var b,c=0,d=this.controls.length;c<d;c++)b=this.controls[c],b!=a&&(b.type===OpenLayers.Control.TYPE_TOOL||null==b.type)&&\n +b.deactivate();a.activate()}},addControls:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.controls=this.controls.concat(a);for(var b=0,c=a.length;b<c;b++){var d=a[b],e=this.createControlMarkup(d);OpenLayers.Element.addClass(e,d.displayClass+"ItemInactive");OpenLayers.Element.addClass(e,"olButton");""!=d.title&&!e.title&&(e.title=d.title);d.panel_div=e}this.map&&(this.addControlsToMap(a),this.redraw())},createControlMarkup:function(){return document.createElement("div")},addControlsToMap:function(a){for(var b,\n +c=0,d=a.length;c<d;c++)b=a[c],!0===b.autoActivate?(b.autoActivate=!1,this.map.addControl(b),b.autoActivate=!0):(this.map.addControl(b),b.deactivate()),b.events.on({activate:this.iconOn,deactivate:this.iconOff})},iconOn:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\\\b("+this.displayClass+"Item)Inactive\\\\b"),"$1Active")},iconOff:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\\\b("+this.displayClass+"Item)Active\\\\b"),"$1Inactive")},onButtonClick:function(a){for(var b=\n +this.controls,a=a.buttonElement,c=b.length-1;0<=c;--c)if(b[c].panel_div===a){this.activateControl(b[c]);break}},getControlsBy:function(a,b){var c="function"==typeof b.test;return OpenLayers.Array.filter(this.controls,function(d){return d[a]==b||c&&b.test(d[a])})},getControlsByName:function(a){return this.getControlsBy("name",a)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomIn()},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomOut()},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map&&this.map.zoomToMaxExtent()},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.ZoomIn,new OpenLayers.Control.ZoomToMaxExtent,new OpenLayers.Control.ZoomOut])},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:!1,initialize:function(a,b,c,d){OpenLayers.Layer.prototype.initialize.apply(this,[a,d]);this.url=b;this.params||(this.params=OpenLayers.Util.extend({},c))},destroy:function(){this.params=this.url=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions()));\n +return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=OpenLayers.Util.extend(this.params,a);a=this.redraw();null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});return a},redraw:function(a){return a?this.mergeNewParams({_olSalt:Math.random()}):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c*=a.charCodeAt(d)*this.URL_HASH_FACTOR,\n +c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){var c=b||this.url,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);return OpenLayers.Util.urlAppend(c,e)},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Tile=OpenLayers.Class({events:null,eventListeners:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:!1,initialize:function(a,b,c,d,e,f){this.layer=a;this.position=b.clone();this.setBounds(c);this.url=d;e&&(this.size=e.clone());this.id=OpenLayers.Util.createUniqueID("Tile_");OpenLayers.Util.extend(this,f);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners)},unload:function(){this.isLoading&&(this.isLoading=\n +!1,this.events.triggerEvent("unload"))},destroy:function(){this.position=this.size=this.bounds=this.layer=null;this.eventListeners&&this.events.un(this.eventListeners);this.events.destroy();this.events=this.eventListeners=null},draw:function(a){a||this.clear();var b=this.shouldDraw();b&&!a&&(b=!1!==this.events.triggerEvent("beforedraw"));return b},shouldDraw:function(){var a=!1,b=this.layer.maxExtent;if(b){var c=this.layer.map,c=c.baseLayer.wrapDateLine&&c.getMaxExtent();this.bounds.intersectsBounds(b,\n +{inclusive:!1,worldBounds:c})&&(a=!0)}return a||this.layer.displayOutsideMaxExtent},setBounds:function(a){a=a.clone();if(this.layer.map.baseLayer.wrapDateLine)var b=this.layer.map.getMaxExtent(),c=this.layer.map.getResolution(),a=a.wrapDateLine(b,{leftTolerance:c,rightTolerance:c});this.bounds=a},moveTo:function(a,b,c){null==c&&(c=!0);this.setBounds(a);this.position=b.clone();c&&this.draw()},clear:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,imageReloadAttempts:null,layerAlphaHack:null,asyncRequestId:null,blankImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7",maxGetUrlLength:null,canvasContext:null,crossOriginKeyword:null,initialize:function(a,b,c,d,e,f){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=d;this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();if(null!=this.maxGetUrlLength||\n +this.layer.gutter||this.layerAlphaHack)this.frame=document.createElement("div"),this.frame.style.position="absolute",this.frame.style.overflow="hidden";null!=this.maxGetUrlLength&&OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame)},destroy:function(){this.imgDiv&&(this.clear(),this.frame=this.imgDiv=null);this.asyncRequestId=null;OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);a?(this.layer!=this.layer.map.baseLayer&&\n +this.la + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +yer.reproject&&(this.bounds=this.getBoundsFromBaseLayer(this.position)),this.isLoading?this._loadEvent="reload":(this.isLoading=!0,this._loadEvent="loadstart"),this.positionTile(),this.renderTile()):this.unload();return a},renderTile:function(){this.layer.div.appendChild(this.getTile());if(this.layer.async){var a=this.asyncRequestId=(this.asyncRequestId||0)+1;this.layer.getURLasync(this.bounds,function(b){a==this.asyncRequestId&&(this.url=b,this.initImage())},this)}else this.url=this.layer.getURL(this.bounds),\n +this.initImage()},positionTile:function(){var a=this.getTile().style,b=this.frame?this.size:this.layer.getImageSize(this.bounds);a.left=this.position.x+"%";a.top=this.position.y+"%";a.width=b.w+"%";a.height=b.h+"%"},clear:function(){OpenLayers.Tile.prototype.clear.apply(this,arguments);var a=this.imgDiv;if(a){OpenLayers.Event.stopObservingElement(a);var b=this.getTile();b.parentNode===this.layer.div&&this.layer.div.removeChild(b);this.setImgSrc();!0===this.layerAlphaHack&&(a.style.filter="");OpenLayers.Element.removeClass(a,\n +"olImageLoadError")}this.canvasContext=null},getImage:function(){if(!this.imgDiv){this.imgDiv=document.createElement("img");this.imgDiv.className="olTileImage";this.imgDiv.galleryImg="no";var a=this.imgDiv.style;if(this.frame){var b=0,c=0;this.layer.gutter&&(b=100*(this.layer.gutter/this.layer.tileSize.w),c=100*(this.layer.gutter/this.layer.tileSize.h));a.left=-b+"%";a.top=-c+"%";a.width=2*b+100+"%";a.height=2*c+100+"%"}a.visibility="hidden";a.opacity=0;1>this.layer.opacity&&(a.filter="alpha(opacity="+\n +100*this.layer.opacity+")");a.position="absolute";this.layerAlphaHack&&(a.paddingTop=a.height,a.height="0",a.width="100%");this.frame&&this.frame.appendChild(this.imgDiv)}return this.imgDiv},initImage:function(){this.events.triggerEvent(this._loadEvent);var a=this.getImage();if(this.url&&a.getAttribute("src")==this.url)this.onImageLoad();else{var b=OpenLayers.Function.bind(function(){OpenLayers.Event.stopObservingElement(a);OpenLayers.Event.observe(a,"load",OpenLayers.Function.bind(this.onImageLoad,\n +this));OpenLayers.Event.observe(a,"error",OpenLayers.Function.bind(this.onImageError,this));this.imageReloadAttempts=0;this.setImgSrc(this.url)},this);a.getAttribute("src")==this.blankImageUrl?b():(OpenLayers.Event.observe(a,"load",b),OpenLayers.Event.observe(a,"error",b),this.crossOriginKeyword&&a.removeAttribute("crossorigin"),a.src=this.blankImageUrl)}},setImgSrc:function(a){var b=this.imgDiv;b.style.visibility="hidden";b.style.opacity=0;a&&(this.crossOriginKeyword&&("data:"!==a.substr(0,5)?b.setAttribute("crossorigin",\n +this.crossOriginKeyword):b.removeAttribute("crossorigin")),b.src=a)},getTile:function(){return this.frame?this.frame:this.getImage()},createBackBuffer:function(){if(this.imgDiv&&!this.isLoading){var a;this.frame?(a=this.frame.cloneNode(!1),a.appendChild(this.imgDiv)):a=this.imgDiv;this.imgDiv=null;return a}},onImageLoad:function(){var a=this.imgDiv;OpenLayers.Event.stopObservingElement(a);a.style.visibility="inherit";a.style.opacity=this.layer.opacity;this.isLoading=!1;this.canvasContext=null;this.events.triggerEvent("loadend");\n +if(7>parseFloat(navigator.appVersion.split("MSIE")[1])&&this.layer&&this.layer.div){var b=document.createElement("span");b.style.display="none";var c=this.layer.div;c.appendChild(b);window.setTimeout(function(){b.parentNode===c&&b.parentNode.removeChild(b)},0)}!0===this.layerAlphaHack&&(a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+a.src+"\', sizingMethod=\'scale\')")},onImageError:function(){var a=this.imgDiv;null!=a.src&&(this.imageReloadAttempts++,this.imageReloadAttempts<=\n +OpenLayers.IMAGE_RELOAD_ATTEMPTS?this.setImgSrc(this.layer.getURL(this.bounds)):(OpenLayers.Element.addClass(a,"olImageLoadError"),this.events.triggerEvent("loaderror"),this.onImageLoad()))},getCanvasContext:function(){if(OpenLayers.CANVAS_SUPPORTED&&this.imgDiv&&!this.isLoading){if(!this.canvasContext){var a=document.createElement("canvas");a.width=this.size.w;a.height=this.size.h;this.canvasContext=a.getContext("2d");this.canvasContext.drawImage(this.imgDiv,0,0)}return this.canvasContext}},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,tileClass:OpenLayers.Tile.Image,grid:null,singleTile:!1,ratio:1.5,buffer:0,transitionEffect:null,numLoadingTiles:0,tileLoadingDelay:85,serverResolutions:null,moveTimerId:null,deferMoveGriddedTiles:null,tileQueueId:null,tileQueue:null,loading:!1,backBuffer:null,gridResolution:null,backBufferResolution:null,backBufferLonLat:null,backBufferTimerId:null,removeBackBufferDelay:null,\n +className:null,initialize:function(a,b,c,d){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.grid=[];this.tileQueue=[];null===this.removeBackBufferDelay&&(this.removeBackBufferDelay=this.singleTile?0:2500);null===this.className&&(this.className=this.singleTile?"olLayerGridSingleTile":"olLayerGrid");OpenLayers.Animation.isNative||(this.deferMoveGriddedTiles=OpenLayers.Function.bind(function(){this.moveGriddedTiles(true);this.moveTimerId=null},this))},setMap:function(a){OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this,\n +a);OpenLayers.Element.addClass(this.div,this.className)},removeMap:function(){null!==this.moveTimerId&&(window.clearTimeout(this.moveTimerId),this.moveTimerId=null);this.clearTileQueue();null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null)},destroy:function(){this.removeBackBuffer();this.clearGrid();this.tileSize=this.grid=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){this.clearTileQueue();if(this.grid){for(var a=\n +0,b=this.grid.length;a<b;a++)for(var c=this.grid[a],d=0,e=c.length;d<e;d++)this.destroyTile(c[d]);this.grid=[];this.gridResolution=null}},clone:function(a){null==a&&(a=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];a.gridResolution=null;a.backBuffer=null;a.backBufferTimerId=null;a.tileQueue=[];a.tileQueueId=null;a.loading=!1;a.moveTimerId=null;\n +return a},moveTo:function(a,b,c){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);a=a||this.map.getExtent();if(null!=a){var d=!this.grid.length||b,e=this.getTilesBounds(),f=this.map.getResolution(),g=this.getServerResolution(f);if(this.singleTile){if(d||!c&&!e.containsBounds(a))b&&"resize"!==this.transitionEffect&&this.removeBackBuffer(),(!b||"resize"===this.transitionEffect)&&this.applyBackBuffer(g),this.initSingleTile(a)}else(d=d||!e.intersectsBounds(a,{worldBounds:this.map.baseLayer.wrapDateLine&&\n +this.map.getMaxExtent()}),f!==g?(a=this.map.calculateBounds(null,g),d&&this.transformDiv(g/f)):(this.div.style.width="100%",this.div.style.height="100%",this.div.style.left="0%",this.div.style.top="0%"),d)?(b&&"resize"===this.transitionEffect&&this.applyBackBuffer(g),this.initGriddedTiles(a)):this.moveGriddedTiles()}},getTileData:function(a){var b=null,c=a.lon,d=a.lat,e=this.grid.length;if(this.map&&e){var f=this.map.getResolution(),a=this.tileSize.w,g=this.tileSize.h,h=this.grid[0][0].bounds,i=h.left,\n +h=h.top;if(c<i&&this.map.baseLayer.wrapDateLine)var j=this.map.getMaxExtent().getWidth(),k=Math.ceil((i-c)/j),c=c+j*k;c=(c-i)/(f*a);d=(h-d)/(f*g);f=Math.floor(c);i=Math.floor(d);0<=i&&i<e&&(e=this.grid[i][f])&&(b={tile:e,i:Math.floor((c-f)*a),j:Math.floor((d-i)*g)})}return b},queueTileDraw:function(a){a=a.object;~OpenLayers.Util.indexOf(this.tileQueue,a)||this.tileQueue.push(a);this.tileQueueId||(this.tileQueueId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.drawTileFromQueue,this),null,\n +this.div));return!1},drawTileFromQueue:function(){0===this.tileQueue.length?this.clearTileQueue():this.tileQueue.shift().draw(!0)},clearTileQueue:function(){OpenLayers.Animation.stop(this.tileQueueId);this.tileQueueId=null;this.tileQueue=[]},destroyTile:function(a){this.removeTileMonitoringHooks(a);a.destroy()},getServerResolution:function(a){a=a||this.map.getResolution();if(this.serverResolutions&&-1===OpenLayers.Util.indexOf(this.serverResolutions,a)){var b,c;for(b=this.serverResolutions.length-\n +1;0<=b;b--)if(c=this.serverResolutions[b],c>a){a=c;break}if(-1===b)throw"no appropriate resolution in serverResolutions";}return a},getServerZoom:function(){var a=this.getServerResolution();return this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,a):this.map.getZoomForResolution(a)+(this.zoomOffset||0)},transformDiv:function(a){this.div.style.width=100*a+"%";this.div.style.height=100*a+"%";var b=this.map.getSize(),c=parseInt(this.map.layerContainerDiv.style.left,10),d=(parseInt(this.map.layerContainerDiv.style.top,\n +10)-b.h/2)*(a-1);this.div.style.left=(c-b.w/2)*(a-1)+"%";this.div.style.top=d+"%"},getResolutionScale:function(){return parseInt(this.div.style.width,10)/100},applyBackBuffer:function(a){null!==this.backBufferTimerId&&this.removeBackBuffer();var b=this.backBuffer;if(!b){b=this.createBackBuffer();if(!b)return;this.div.insertBefore(b,this.div.firstChild);this.backBuffer=b;var c=this.grid[0][0].bounds;this.backBufferLonLat={lon:c.left,lat:c.top};this.backBufferResolution=this.gridResolution}var c=b.style,\n +d=this.backBufferResolution/a;c.width=100*d+"%";c.height=100*d+"%";a=this.getViewPortPxFromLonLat(this.backBufferLonLat,a);c=parseInt(this.map.layerContainerDiv.style.left,10);d=parseInt(this.map.layerContainerDiv.style.top,10);b.style.left=Math.round(a.x-c)+"%";b.style.top=Math.round(a.y-d)+"%"},createBackBuffer:function(){var a;if(0<this.grid.length){a=document.createElement("div");a.id=this.div.id+"_bb";a.className="olBackBuffer";a.style.position="absolute";a.style.width="100%";a.style.height=\n +"100%";for(var b=0,c=this.grid.length;b<c;b++)for(var d=0,e=this.grid[b].length;d<e;d++){var f=this.grid[b][d].createBackBuffer();f&&(f.style.top=b*this.tileSize.h+"%",f.style.left=d*this.tileSize.w+"%",a.appendChild(f))}}return a},removeBackBuffer:function(){this.backBuffer&&(this.div.removeChild(this.backBuffer),this.backBufferResolution=this.backBuffer=null,null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null))},moveByPx:function(){this.singleTile||\n +this.moveGriddedTiles()},setTileSize:function(a){this.singleTile&&(a=this.map.getSize(),a.h=parseInt(a.h*this.ratio),a.w=parseInt(a.w*this.ratio));OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getTilesBounds:function(){var a=null,b=this.grid.length;if(b)var a=this.grid[b-1][0].bounds,b=this.grid[0].length*a.getWidth(),c=this.grid.length*a.getHeight(),a=new OpenLayers.Bounds(a.left,a.bottom,a.left+b,a.bottom+c);return a},initSingleTile:function(a){this.clearTileQueue();var b=\n +a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio,b=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2),c=this.map.getLayerPxFromLonLat({lon:b.left,lat:b.top});this.grid.length||(this.grid[0]=[]);(a=this.grid[0][0])?a.moveTo(b,c):(a=this.addTile(b,c),this.addTileMonitoringHooks(a),a.draw(),this.grid[0][0]=a);this.removeExcessTiles(1,1);this.gridResolution=this.getServerResolution()},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=\n +a.left-b.lon,f=Math.floor(e/d)-this.buffer,e=-(e/d-f)*this.tileSize.w,f=b.lon+f*d,a=a.top-(b.lat+c),g=Math.ceil(a/c)+this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:f,tileoffsetlat:b.lat+g*c,tileoffsetx:e,tileoffsety:-(g-a/c)*this.tileSize.h}},getTileOrigin:function(){var a=this.tileOrigin;if(!a)var a=this.getMaxExtent(),b={tl:["left","top"],tr:["right","top"],bl:["left","bottom"],br:["right","bottom"]}[this.tileOriginCorner],a=new OpenLayers.LonLat(a[b[0]],a[b[1]]);return a},initGriddedTiles:function(a){this.clearTileQueue();\n +var b=this.map.getSize(),c=Math.ceil(b.h/this.tileSize.h)+Math.max(1,2*this.buffer),b=Math.ceil(b.w/this.tileSize.w)+Math.max(1,2*this.buffer),d=this.getTileOrigin(),e=this.getServerResolution(),d=this.calculateGridLayout(a,d,e),e=Math.round(d.tileoffsetx),f=Math.round(d.tileoffsety),g=d.tileoffsetlon,h=d.tileoffsetlat,i=d.tilelon,j=d.tilelat,k=e,l=g,m=0,n=parseInt(this.map.layerContainerDiv.style.left),o=parseInt(this.map.layerContainerDiv.style.top),d=[],p=this.map.getCenter();do{var q=this.grid[m++];\n +q||(q=[],this.grid.push(q));var g=l,e=k,r=0;do{var s=new OpenLayers.Bounds(g,h,g+i,h+j),t=e,t=t-n,u=f,u=u-o,u=new OpenLayers.Pixel(t,u);(t=q[r++])?t.moveTo(s,u,!1):(t=this.addTile(s,u),this.addTileMonitoringHooks(t),q.push(t));s=s.getCenterLonLat();d.push({tile:t,distance:Math.pow(s.lon-p.lon,2)+Math.pow(s.lat-p.lat,2)});g+=i;e+=this.tileSize.w}while(g<=a.right+i*this.buffer||r<b);h-=j;f+=this.tileSize.h}while(h>=a.bottom-j*this.buffer||m<c);this.removeExcessTiles(m,r);this.gridResolution=this.getServerResolution();\n +d.sort(function(a,b){return a.distance-b.distance});a=0;for(c=d.length;a<c;++a)d[a].tile.draw()},getMaxExtent:function(){return this.maxExtent},addTile:function(a,b){var c=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);c.events.register("beforedraw",this,this.queueTileDraw);return c},addTileMonitoringHooks:function(a){a.onLoadStart=function(){!1===this.loading&&(this.loading=!0,this.events.triggerEvent("loadstart"));this.events.triggerEvent("tileloadstart",{tile:a});this.numLoadingTiles++};\n +a.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded",{tile:a});0===this.tileQueue.length&&0===this.numLoadingTiles&&(this.loading=!1,this.events.triggerEvent("loadend"),this.backBuffer&&(this.backBufferTimerId=window.setTimeout(OpenLayers.Function.bind(this.removeBackBuffer,this),this.removeBackBufferDelay)))};a.onLoadError=function(){this.events.triggerEvent("tileerror",{tile:a})};a.events.on({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,\n +scope:this})},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},moveGriddedTiles:function(a){if(!a&&!OpenLayers.Animation.isNative)null!=this.moveTimerId&&window.clearTimeout(this.moveTimerId),this.moveTimerId=window.setTimeout(this.deferMoveGriddedTiles,this.tileLoadingDelay);else for(var a=this.buffer||1,b=this.getResolutionScale();;){var c=this.grid[0][0].position.x*b+parseInt(this.div.style.left,\n +10)+parseInt(this.map.layerContainerDiv.style.left),d=this.grid[0][0].position.y*b+parseInt(this.div.style.top,10)+parseInt(this.map.layerContainerDiv.style.top),e=this.tileSize.w*b,f=this.tileSize.h*b;if(c>-e*(a-1))this.shiftColumn(!0);else if(c<-e*a)this.shiftColumn(!1);else if(d>-f*(a-1))this.shiftRow(!0);else if(d<-f*a)this.shiftRow(!1);else break}},shiftRow:function(a){for(var b=this.grid,c=b[a?0:this.grid.length-1],d=this.getServerResolution(),e=a?-this.tileSize.h:this.tileSize.h,d=d*-e,f=a?\n +b.pop():b.shift(),g=0,h=c.length;g<h;g++){var i=c[g],j=i.bounds.clone(),i=i.position.clone();j.bottom+=d;j.top+=d;i.y+=e;f[g].moveTo(j,i)}a?b.unshift(f):b.push(f)},shiftColumn:function(a){for(var b=a?-this.tileSize.w:this.tileSize.w,c=this.getServerResolution()*b,d=0,e=this.grid.length;d<e;d++){var f=this.grid[d],g=f[a?0:f.length-1],h=g.bounds.clone(),g=g.position.clone();h.left+=c;h.right+=c;g.x+=b;var i=a?this.grid[d].pop():this.grid[d].shift();i.moveTo(h,g);a?f.unshift(i):f.push(i)}},removeExcessTiles:function(a,\n +b){for(var c,d;this.grid.length>a;){var e=this.grid.pop();c=0;for(d=e.length;c<d;c++){var f=e[c];this.destroyTile(f)}}c=0;for(d=this.grid.length;c<d;c++)for(;this.grid[c].length>b;)e=this.grid[c],f=e.pop(),this.destroyTile(f)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w,c=c*this.tileSize.h,e=this.getLonLatFromViewPortPx(a),a=b.left+d*Math.floor((e.lon-b.left)/d),b=b.bottom+\n +c*Math.floor((e.lat-b.bottom)/c);return new OpenLayers.Bounds(a,b,a+d,b+c)},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:"antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency".split(" "),request:null,response:null,initialize:function(a){this.request=new OpenLayers.Format.ArcXML.Request;this.response=new OpenLayers.Format.ArcXML.Response;if(a)if("feature"==a.requesttype){this.request.get_image=null;var b=this.request.get_feature.query;this.addCoordSys(b.featurecoordsys,a.featureCoordSys);\n +this.addCoordSys(b.filtercoordsys,a.filterCoordSys);a.polygon?(b.isspatial=!0,b.spatialfilter.polygon=a.polygon):a.envelope&&(b.isspatial=!0,b.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0},this.parseEnvelope(b.spatialfilter.envelope,a.envelope))}else"image"==a.requesttype?(this.request.get_feature=null,b=this.request.get_image.properties,this.parseEnvelope(b.envelope,a.envelope),this.addLayers(b.layerlist,a.layers),this.addImageSize(b.imagesize,a.tileSize),this.addCoordSys(b.featurecoordsys,\n +a.featureCoordSys),this.addCoordSys(b.filtercoordsys,a.filterCoordSys)):this.request=null;OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},parseEnvelope:function(a,b){b&&4==b.length&&(a.minx=b[0],a.miny=b[1],a.maxx=b[2],a.maxy=b[3])},addLayers:function(a,b){for(var c=0,d=b.length;c<d;c++)a.push(b[c])},addImageSize:function(a,b){null!==b&&(a.width=b.w,a.height=b.h,a.printwidth=b.w,a.printheight=b.h)},addCoordSys:function(a,b){"string"==typeof b?(a.id=parseInt(b),a.string=b):"object"==typeof b&&\n +null!==b.proj&&(a.id=b.proj.srsProjNumber,a.string=b.proj.srsCode)},iserror:function(a){var b=null;a?(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]),a=a.documentElement.getElementsByTagName("ERROR"),b=null!==a&&0<a.length):b=""!==this.response.error;return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null;a&&a.documentElement&&(b="ARCXML"==a.documentElement.nodeName?a.documentElement:a.documentElement.getElementsByTagName("ARCXML")[0]);\n +if(!b||"parsererror"===b.firstChild.nodeName){var c,d;try{c=a.firstChild.nodeValue,d=a.firstChild.childNodes[1].firstChild.nodeValue}catch(e){}throw{message:"Error parsing the ArcXML request",error:c,source:d};}return this.parseResponse(b)},write:function(a){a||(a=this.request);var b=this.createElementNS("","ARCXML");b.setAttribute("version","1.1");var c=this.createElementNS("","REQUEST");if(null!=a.get_image){var d=this.createElementNS("","GET_IMAGE");c.appendChild(d);var e=this.createElementNS("",\n +"PROPERTIES");d.appendChild(e);a=a.get_image.properties;null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),e.appendChild(d),0===a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id));null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),e.appendChild(d),0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id));null!=a.envelope&&(d=this.createElementNS("",\n +"ENVELOPE"),e.appendChild(d),d.setAttribute("minx",a.envelope.minx),d.setAttribute("miny",a.envelope.miny),d.setAttribute("maxx",a.envelope.maxx),d.setAttribute("maxy",a.envelope.maxy));d=this.createElementNS("","IMAGESIZE");e.appendChild(d);d.setAttribute("height",a.imagesize.height);d.setAttribute("width",a.imagesize.width);if(a.imagesize.height!=a.imagesize.printheight||a.imagesize.width!=a.imagesize.printwidth)d.setAttribute("printheight",a.imagesize.printheight),d.setArrtibute("printwidth",a.imagesize.printwidth);\n +null!=a.background&&(d=this.createElementNS("","BACKGROUND"),e.appendChild(d),d.setAttribute("color",a.background.color.r+","+a.background.color.g+","+a.background.color.b),null!==a.background.transcolor&&d.setAttribute("transcolor",a.background.transcolor.r+","+a.background.transcolor.g+","+a.background.transcolor.b));if(null!=a.layerlist&&0<a.layerlist.length){d=this.createElementNS("","LAYERLIST");e.appendChild(d);for(e=0;e<a.layerlist.length;e++){var f=this.createElementNS("","LAYERDEF");d.appendChild(f);\n +f.setAttribute("id",a.layerlist[e].id);f.setAttribute("visible",a.layerlist[e].visible);if("object"==typeof a.layerlist[e].query){var g=a.layerlist[e].query;if(0>g.where.length)continue;var h=null,h="boolean"==typeof g.spatialfilter&&g.spatialfilter?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY");h.setAttribute("where",g.where);"number"==typeof g.accuracy&&0<g.accuracy&&h.setAttribute("accuracy",g.accuracy);"number"==typeof g.featurelimit&&2E3>g.featurelimit&&h.setAttribute("featurelimit",\n +g.featurelimit);"string"==typeof g.subfields&&"#ALL#"!=g.subfields&&h.setAttribute("subfields",g.subfields);"string"==typeof g.joinexpression&&0<g.joinexpression.length&&h.setAttribute("joinexpression",g.joinexpression);"string"==typeof g.jointables&&0<g.jointables.length&&h.setAttribute("jointables",g.jointables);f.appendChild(h)}"object"==typeof a.layerlist[e].renderer&&this.addRenderer(f,a.layerlist[e].renderer)}}}else if(null!=a.get_feature&&(d=this.createElementNS("","GET_FEATURES"),d.setAttribute("outputmode",\n +"newxml"),d.setAttribute("checkesc","true"),a.get_feature.geometry?d.setAttribute("geometry",a.get_feature.geometry):d.setAttribute("geometry","false"),a.get_feature.compact&&d.setAttribute("compact",a.get_feature.compact),"number"==a.get_feature.featurelimit&&d.setAttribute("featurelimit",a.get_feature.featurelimit),d.setAttribute("globalenvelope","true"),c.appendChild(d),null!=a.get_feature.layer&&0<a.get_feature.layer.length&&(e=this.createElementNS("","LAYER"),e.setAttribute("id",a.get_feature.layer),\n +d.appendChild(e)),a=a.get_feature.query,null!=a))e=null,e=a.isspatial?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY"),d.appendChild(e),"number"==typeof a.accuracy&&e.setAttribute("accuracy",a.accuracy),null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),0==a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id),e.appendChild(d)),null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),\n +0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id),e.appendChild(d)),0<a.buffer&&(d=this.createElementNS("","BUFFER"),d.setAttribute("distance",a.buffer),e.appendChild(d)),a.isspatial&&(d=this.createElementNS("","SPATIALFILTER"),d.setAttribute("relation",a.spatialfilter.relation),e.appendChild(d),a.spatialfilter.envelope?(f=this.createElementNS("","ENVELOPE"),f.setAttribute("minx",a.spatialfilter.envelope.minx),f.setAttribute("miny",a.spatialfilter.envelope.miny),\n +f.setAttribute("maxx",a.spatialfilter.envelope.maxx),f.setAttribute("maxy",a.spatialfilter.envelope.maxy),d.appendChild(f)):"object"==typeof a.spatialfilter.polygon&&d.appendChild(this.writePolygonGeometry(a.spatialfilter.polygon))),null!=a.where&&0<a.where.length&&e.setAttribute("where",a.where);b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},addGroupRenderer:function(a,b){var c=this.createElementNS("","GROUPRENDERER");a.appendChild(c);for(var d=0;d<b.length;d++)this.addRenderer(c,\n +b[d])},addRenderer:function(a,b){if(OpenLayers.Util.isArray(b))this.addGroupRenderer(a,b);else{var c=this.createElementNS("",b.type.toUpperCase()+"RENDERER");a.appendChild(c);"VALUEMAPRENDERER"==c.tagName?this.addValueMapRenderer(c,b):"VALUEMAPLABELRENDERER"==c.tagName?this.addValueMapLabelRenderer(c,b):"SIMPLELABELRENDERER"==c.tagName?this.addSimpleLabelRenderer(c,b):"SCALEDEPENDENTRENDERER"==c.tagName&&this.addScaleDependentRenderer(c,b)}},addScaleDependentRenderer:function(a,b){("string"==typeof b.lower||\n +"number"==typeof b.lower)&&a.setAttribute("lower",b.lower);("string"==typeof b.upper||"number"==typeof b.upper)&&a.setAttribute("upper",b.upper);this.addRenderer(a,b.renderer)},addValueMapLabelRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);a.setAttribute("labelfield",b.labelfield);if("object"==typeof b.exacts)for(var c=0,d=b.exacts.length;c<d;c++){var e=b.exacts[c],f=this.createElementNS("","EXACT");"string"==typeof e.value&&f.setAttribute("value",e.value);"string"==typeof e.label&&\n +f.setAttribute("label",e.label);"string"==typeof e.method&&f.setAttribute("method",e.method);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"text"==e.symbol.type&&(g=this.createElementNS("","TEXTSYMBOL"));if(null!=g){for(var h=this.fontStyleKeys,i=0,j=h.length;i<j;i++){var k=h[i];e.symbol[k]&&g.setAttribute(k,e.symbol[k])}f.appendChild(g)}}}},addValueMapRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);if("object"==typeof b.ranges)for(var c=0,d=b.ranges.length;c<d;c++){var e=\n +b.ranges[c],f=this.createElementNS("","RANGE");f.setAttribute("lower",e.lower);f.setAttribute("upper",e.upper);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"simplepolygon"==e.symbol.type&&(g=this.createElementNS("","SIMPLEPOLYGONSYMBOL"));null!=g&&("string"==typeof e.symbol.boundarycolor&&g.setAttribute("boundarycolor",e.symbol.boundarycolor),"string"==typeof e.symbol.fillcolor&&g.setAttribute("fillcolor",e.symbol.fillcolor),"number"==typeof e.symbol.filltransparency&&g.setAttribute("filltransparency",\n +e.symbol.filltransparency),f.appendChild(g))}}else if("object"==typeof b.exacts){c=0;for(d=b.exacts.length;c<d;c++)e=b.exacts[c],f=this.createElementNS("","EXACT"),"string"==typeof e.value&&f.setAttribute("value",e.value),"string"==typeof e.label&&f.setAttribute("label",e.label),"string"==typeof e.method&&f.setAttribute("method",e.method),a.appendChild(f),"object"==typeof e.symbol&&(g=null,"simplemarker"==e.symbol.type&&(g=this.createElementNS("","SIMPLEMARKERSYMBOL")),null!=g&&("string"==typeof e.symbol.antialiasing&&\n +g.setAttribute("antialiasing",e.symbol.antialiasing),"string"==typeof e.symbol.color&&g.setAttribute("color",e.symbol.color),"string"==typeof e.symbol.outline&&g.setAttribute("outline",e.symbol.outline),"string"==typeof e.symbol.overlap&&g.setAttribute("overlap",e.symbol.overlap),"string"==typeof e.symbol.shadow&&g.setAttribute("shadow",e.symbol.shadow),"number"==typeof e.symbol.transparency&&g.setAttribute("transparency",e.symbol.transparency),"string"==typeof e.symbol.usecentroid&&g.setAttribute("usecentroid",\n +e.symbol.usecentroid),"number"==typeof e.symbol.width&&g.setAttribute("width",e.symbol.width),f.appendChild(g)))}},addSimpleLabelRenderer:function(a,b){a.setAttribute("field",b.field);for(var c="featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles".split(" "),d=0,e=c.length;d<e;d++){var f=c[d];b[f]&&a.setAttribute(f,b[f])}if("text"==b.symbol.type){var g=b.symbol,h=this.createElementNS("","TEXTSYMBOL");a.appendChild(h);c=this.fontStyleKeys;d=0;\n +for(e=c.length;d<e;d++)f=c[d],g[f]&&h.setAttribute(f,b[f])}},writePolygonGeometry:function(a){if(!(a instanceof OpenLayers.Geometry.Polygon))throw{message:"Cannot write polygon geometry to ArcXML with an "+a.CLASS_NAME+" object.",geometry:a};for(var b=this.createElementNS("","POLYGON"),c=0,d=a.components.length;c<d;c++){for(var e=a.components[c],f=this.createElementNS("","RING"),g=0,h=e.components.length;g<h;g++){var i=e.components[g],j=this.createElementNS("","POINT");j.setAttribute("x",i.x);j.setAttribute("y",\n +i.y);f.appendChild(j)}b.appendChild(f)}return b},parseResponse:function(a){"string"==typeof a&&(a=(new OpenLayers.Format.XML).read(a));var b=new OpenLayers.Format.ArcXML.Response,c=a.getElementsByTagName("ERROR");if(null!=c&&0<c.length)b.error=this.getChildValue(c,"Unknown error.");else{c=a.getElementsByTagName("RESPONSE");if(null==c||0==c.length)return b.error="No RESPONSE tag found in ArcXML response.",b;var d=c[0].firstChild.nodeName;"#text"==d&&(d=c[0].firstChild.nextSibling.nodeName);if("IMAGE"==\n +d)c=a.getElementsByTagName("ENVELOPE"),a=a.getElementsByTagName("OUTPUT"),null==c||0==c.length?b.error="No ENVELOPE tag found in ArcXML response.":null==a||0==a.length?b.error="No OUTPUT tag found in ArcXML response.":(c=this.parseAttributes(c[0]),d=this.parseAttributes(a[0]),b.image="string"==typeof d.type?{envelope:c,output:{type:d.type,data:this.getChildValue(a[0])}}:{envelope:c,output:d});else if("FEATURES"==d){if(a=c[0].getElementsByTagName("FEATURES"),c=a[0].getElementsByTagName("FEATURECOUNT"),\n +b.features.featurecount=c[0].getAttribute("count"),0<b.features.featurecount){c=a[0].getElementsByTagName("ENVELOPE");b.features.envelope=this.parseAttributes(c[0],"number");a=a[0].getElementsByTagName("FEATURE");for(c=0;c<a.length;c++){for(var d=new OpenLayers.Feature.Vector,e=a[c].getElementsByTagName("FIELD"),f=0;f<e.length;f++){var g=e[f].getAttribute("name"),h=e[f].getAttribute("value");d.attributes[g]=h}e=a[c].getElementsByTagName("POLYGON");if(0<e.length){e=e[0].getElementsByTagName("RING");\n +f=[];for(g=0;g<e.length;g++){h=[];h.push(this.parsePointGeometry(e[g]));for(var i=e[g].getElementsByTagName("HOLE"),j=0;j<i.length;j++)h.push(this.parsePointGeometry(i[j]));f.push(new OpenLayers.Geometry.Polygon(h))}d.geometry=1==f.length?f[0]:new OpenLayers.Geometry.MultiPolygon(f)}b.features.feature.push(d)}}}else b.error="Unidentified response type."}return b},parseAttributes:function(a,b){for(var c={},d=0;d<a.attributes.length;d++)c[a.attributes[d].nodeName]="number"==b?parseFloat(a.attributes[d].nodeValue):\n +a.attributes[d].nodeValue;return c},parsePointGeometry:function(a){var b=[],c=a.getElementsByTagName("COORDS");if(0<c.length){a=this.getChildValue(c[0]);a=a.split(/;/);for(c=0;c<a.length;c++){var d=a[c].split(/ /);b.push(new OpenLayers.Geometry.Point(d[0],d[1]))}}else if(a=a.getElementsByTagName("POINT"),0<a.length)for(c=0;c<a.length;c++)b.push(new OpenLayers.Geometry.Point(parseFloat(a[c].getAttribute("x")),parseFloat(a[c].getAttribute("y"))));return new OpenLayers.Geometry.LinearRing(b)},CLASS_NAME:"OpenLayers.Format.ArcXML"});\n +OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{get_image:{properties:{background:null,draw:!0,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:!1},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",\n +legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:!1,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]})},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});\n +OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{image:{envelope:null,output:""},features:{featurecount:0,envelope:null,feature:[]},error:""})},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});OpenLayers.ProxyHost="";\n +OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\\/\\/([^:]*:?[^@]*@)?([^:\\/\\?]*):?([^\\/\\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==e.hostname,d=d[4],\n +e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||(b?a="function"==typeof b?b(a):b+encodeURIComponent(a):OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:a}));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost}),a=OpenLayers.Util.applyDefaults(a,b),b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]="XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,\n +e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==\n +d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);\n +if(b.status&&(200>b.status||300<=b.status))this.events.triggerEvent("failure",a),f&&f(b)},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?\n +a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}};OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:""},featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:!0,name:"ArcIMS",isBaseLayer:!0,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:!0,async:!0,name:"ArcIMS"},initialize:function(a,b,c){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:c.serviceName},\n +this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(c,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,this.params,c]);if(this.transparent&&(this.isBaseLayer||(this.isBaseLayer=!1),"image/jpeg"==this.format))this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png";null===this.options.layers&&(this.options.layers=[])},getURL:function(a){var b="",a=this.adjustBounds(a),a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",\n +envelope:a.toArray(),tileSize:this.tileSize})),a=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:a.write(),async:!1});if(null!=a){b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;b=this.getUrlOrImage((new OpenLayers.Format.ArcXML).read(b).image.output)}return b},getURLasync:function(a,b,c){a=this.adjustBounds(a);a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:a.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),\n +async:!0,data:a.write(),callback:function(a){var e=a.responseXML;if(!e||!e.documentElement)e=a.responseText;a=(new OpenLayers.Format.ArcXML).read(e);b.call(c,this.getUrlOrImage(a.image.output))},scope:this})},getUrlOrImage:function(a){var b="";a.url?b=a.url:a.data&&(b="data:image/"+a.type+";base64,"+a.data);return b},setLayerQuery:function(a,b){for(var c=0;c<this.options.layers.length;c++)if(a==this.options.layers[c].id){this.options.layers[c].query=b;return}this.options.layers.push({id:a,visible:!0,\n +query:b})},getFeatureInfo:function(a,b,c){var d=c.buffer||1,e=c.callback||function(){},f=c.scope||window,g={};OpenLayers.Util.extend(g,this.options);g.requesttype="feature";a instanceof OpenLayers.LonLat?(g.polygon=null,g.envelope=[a.lon-d,a.lat-d,a.lon+d,a.lat+d]):a instanceof OpenLayers.Geometry.Polygon&&(g.envelope=null,g.polygon=a);var h=new OpenLayers.Format.ArcXML(g);OpenLayers.Util.extend(h.request.get_feature,c);h.request.get_feature.layer=b.id;"number"==typeof b.query.accuracy?h.request.get_feature.query.accuracy=\n +b.query.accuracy:(a=this.map.getCenter(),c=this.map.getViewPortPxFromLonLat(a),c.x++,c=this.map.getLonLatFromPixel(c),h.request.get_feature.query.accuracy=c.lon-a.lon);h.request.get_feature.query.where=b.query.where;h.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({CustomService:"Query"}),data:h.write(),callback:function(a){a=h.parseResponse(a.responseText);h.iserror()?e.call(f,null):e.call(f,a.features)}})},clone:function(a){null==\n +a&&(a=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("xml:lang"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)},AllowedValues:function(a,b){b.allowedValues={};this.readChildNodes(a,b.allowedValues)},AnyValue:function(a,b){b.anyValue=\n +!0},DataType:function(a,b){b.dataType=this.getChildValue(a)},Range:function(a,b){b.range={};this.readChildNodes(a,b.range)},MinimumValue:function(a,b){b.minValue=this.getChildValue(a)},MaximumValue:function(a,b){b.maxValue=this.getChildValue(a)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},SupportedCRS:function(a,b){b.supportedCRS=this.getChildValue(a)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Util.applyDefaults({Range:function(a){var b=this.createElementNSPlus("ows:Range",\n +{attributes:{"ows:rangeClosure":a.closure}});this.writeNode("ows:MinimumValue",a.minValue,b);this.writeNode("ows:MaximumValue",a.maxValue,b);return b},MinimumValue:function(a){return this.createElementNSPlus("ows:MinimumValue",{value:a})},MaximumValue:function(a){return this.createElementNSPlus("ows:MaximumValue",{value:a})},Value:function(a){return this.createElementNSPlus("ows:Value",{value:a})}},OpenLayers.Format.OWSCommon.v1.prototype.writers.ows)},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WCSGetCoverage=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.1.2",schemaLocation:"http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",write:function(a){a=this.writeNode("wcs:GetCoverage",\n +a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wcs:{GetCoverage:function(a){var b=this.createElementNSPlus("wcs:GetCoverage",{attributes:{version:a.version||this.VERSION,service:"WCS"}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("wcs:DomainSubset",a.domainSubset,b);this.writeNode("wcs:Output",a.output,b);return b},DomainSubset:function(a){var b=this.createElementNSPlus("wcs:DomainSubset",\n +{});this.writeNode("ows:BoundingBox",a.boundingBox,b);a.temporalSubset&&this.writeNode("wcs:TemporalSubset",a.temporalSubset,b);return b},TemporalSubset:function(a){for(var b=this.createElementNSPlus("wcs:TemporalSubset",{}),c=0,d=a.timePeriods.length;c<d;++c)this.writeNode("wcs:TimePeriod",a.timePeriods[c],b);return b},TimePeriod:function(a){var b=this.createElementNSPlus("wcs:TimePeriod",{});this.writeNode("wcs:BeginPosition",a.begin,b);this.writeNode("wcs:EndPosition",a.end,b);a.resolution&&this.writeNode("wcs:TimeResolution",\n +a.resolution,b);return b},BeginPosition:function(a){return this.createElementNSPlus("wcs:BeginPosition",{value:a})},EndPosition:function(a){return this.createElementNSPlus("wcs:EndPosition",{value:a})},TimeResolution:function(a){return this.createElementNSPlus("wcs:TimeResolution",{value:a})},Output:function(a){var b=this.createElementNSPlus("wcs:Output",{attributes:{format:a.format,store:a.store}});a.gridCRS&&this.writeNode("wcs:GridCRS",a.gridCRS,b);return b},GridCRS:function(a){var b=this.createElementNSPlus("wcs:GridCRS",\n +{});this.writeNode("wcs:GridBaseCRS",a.baseCRS,b);a.type&&this.writeNode("wcs:GridType",a.type,b);a.origin&&this.writeNode("wcs:GridOrigin",a.origin,b);this.writeNode("wcs:GridOffsets",a.offsets,b);a.CS&&this.writeNode("wcs:GridCS",a.CS,b);return b},GridBaseCRS:function(a){return this.createElementNSPlus("wcs:GridBaseCRS",{value:a})},GridOrigin:function(a){return this.createElementNSPlus("wcs:GridOrigin",{value:a})},GridType:function(a){return this.createElementNSPlus("wcs:GridType",{value:a})},GridOffsets:function(a){return this.createElementNSPlus("wcs:GridOffsets",\n +{value:a})},GridCS:function(a){return this.createElementNSPlus("wcs:GridCS",{value:a})}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WCSGetCoverage"});OpenLayers.Format.WPSExecute=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",gml:"http://www.opengis.net/gml",wps:"http://www.opengis.net/wps/1.0.0",wfs:"http://www.opengis.net/wfs",ogc:"http://www.opengis.net/ogc",wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",\n +schemaLocationAttr:function(){},write:function(a){var b;window.ActiveXObject?this.xmldom=b=new ActiveXObject("Microsoft.XMLDOM"):b=document.implementation.createDocument("","",null);a=this.writeNode("wps:Execute",a,b);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wps:{Execute:function(a){var b=this.createElementNSPlus("wps:Execute",{attributes:{version:this.VERSION,service:"WPS"}});this.writeNode("ows:Identifier",\n +a.identifier,b);this.writeNode("wps:DataInputs",a.dataInputs,b);this.writeNode("wps:ResponseForm",a.responseForm,b);return b},ResponseForm:function(a){var b=this.createElementNSPlus("wps:ResponseForm",{});a.rawDataOutput&&this.writeNode("wps:RawDataOutput",a.rawDataOutput,b);a.responseDocument&&this.writeNode("wps:ResponseDocument",a.responseDocument,b);return b},ResponseDocument:function(a){var b=this.createElementNSPlus("wps:ResponseDocument",{attributes:{storeExecuteResponse:a.storeExecuteResponse,\n +lineage:a.lineage,status:a.status}});a.output&&this.writeNode("wps:Output",a.output,b);return b},Output:function(a){var b=this.createElementNSPlus("wps:Output",{attributes:{asReference:a.asReference}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("ows:Title",a.title,b);this.writeNode("ows:Abstract",a["abstract"],b);return b},RawDataOutput:function(a){var b=this.createElementNSPlus("wps:RawDataOutput",{attributes:{mimeType:a.mimeType}});this.writeNode("ows:Identifier",a.identifier,\n +b);return b},DataInputs:function(a){for(var b=this.createElementNSPlus("wps:DataInputs",{}),c=0,d=a.length;c<d;++c)this.writeNode("wps:Input",a[c],b);return b},Input:function(a){var b=this.createElementNSPlus("wps:Input",{});this.writeNode("ows:Identifier",a.identifier,b);a.title&&this.writeNode("ows:Title",a.title,b);a.data&&this.writeNode("wps:Data",a.data,b);a.reference&&this.writeNode("wps:Reference",a.reference,b);return b},Data:function(a){var b=this.createElementNSPlus("wps:Data",{});a.literalData?\n +this.writeNode("wps:LiteralData",a.literalData,b):a.complexData&&this.writeNode("wps:ComplexData",a.complexData,b);return b},LiteralData:function(a){return this.createElementNSPlus("wps:LiteralData",{attributes:{uom:a.uom},value:a.value})},ComplexData:function(a){var b=this.createElementNSPlus("wps:ComplexData",{attributes:{mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}}),c=a.value;"string"===typeof c?b.appendChild(this.getXMLDoc().createCDATASection(a.value)):b.appendChild(c);return b},\n +Reference:function(a){var b=this.createElementNSPlus("wps:Reference",{attributes:{mimeType:a.mimeType,"xlink:href":a.href,method:a.method,encoding:a.encoding,schema:a.schema}});a.body&&this.writeNode("wps:Body",a.body,b);return b},Body:function(a){var b=this.createElementNSPlus("wps:Body",{});a.wcs?this.writeNode("wcs:GetCoverage",a.wcs,b):a.wfs?(this.featureType=a.wfs.featureType,this.version=a.wfs.version,this.writeNode("wfs:GetFeature",a.wfs,b)):this.writeNode("wps:Execute",a,b);return b}},wcs:OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,\n +wfs:OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WPSExecute"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},\n +setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",\n +c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);\n +OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();\n +break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,zoomWorldIcon:!1,panIcons:!0,forceFixedZoomLevel:!1,mouseDragStart:null,deltaY:null,zoomStart:null,destroy:function(){this._removeZoomBar();this.map.events.un({changebaselayer:this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart},setMap:function(a){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,\n +arguments);this.map.events.register("changebaselayer",this,this.redraw)},redraw:function(){null!=this.div&&(this.removeButtons(),this._removeZoomBar());this.draw()},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position.clone();this.buttons=[];var b={w:18,h:18};if(this.panIcons){var c=new OpenLayers.Pixel(a.x+b.w/2,a.y),d=b.w;this.zoomWorldIcon&&(c=new OpenLayers.Pixel(a.x+b.w,a.y));this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft",\n +"west-mini.png",a,b);this.zoomWorldIcon&&(this._addButton("zoomworld","zoom-world-mini.png",a.add(b.w,0),b),d*=2);this._addButton("panright","east-mini.png",a.add(d,0),b);this._addButton("pandown","south-mini.png",c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);c=this._addZoomBar(c.add(0,4*b.h+5));this._addButton("zoomout","zoom-minus-mini.png",c,b)}else this._addButton("zoomin","zoom-plus-mini.png",a,b),c=this._addZoomBar(a.add(0,b.h)),this._addButton("zoomout",\n +"zoom-minus-mini.png",c,b),this.zoomWorldIcon&&(c=c.add(0,b.h+3),this._addButton("zoomworld","zoom-world-mini.png",c,b));return this.div},_addZoomBar:function(a){var b=OpenLayers.Util.getImageLocation("slider.png"),c=this.id+"_"+this.map.id,d=this.map.getNumZoomLevels()-1-this.map.getZoom(),d=OpenLayers.Util.createAlphaImageDiv(c,a.add(-1,d*this.zoomStopHeight),{w:20,h:9},b,"absolute");d.style.cursor="move";this.slider=d;this.sliderEvents=new OpenLayers.Events(this,d,null,!0,{includeXY:!0});this.sliderEvents.on({touchstart:this.zoomBarDown,\n +touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});var e={w:this.zoomStopWidth,h:this.zoomStopHeight*this.map.getNumZoomLevels()},b=OpenLayers.Util.getImageLocation("zoombar.png"),c=null;OpenLayers.Util.alphaHack()?(c=this.id+"_"+this.map.id,c=OpenLayers.Util.createAlphaImageDiv(c,a,{w:e.w,h:this.zoomStopHeight},b,"absolute",null,"crop"),c.style.height=e.h+"px"):c=OpenLayers.Util.createDiv("OpenLayers_Control_PanZoomBar_Zoombar"+\n +this.map.id,a,e,b);c.style.cursor="pointer";c.className="olButton";this.zoombarDiv=c;this.div.appendChild(c);this.startTop=parseInt(c.style.top);this.div.appendChild(d);this.map.events.register("zoomend",this,this.moveZoomBar);return a=a.add(0,this.zoomStopHeight*this.map.getNumZoomLevels())},_removeZoomBar:function(){this.sliderEvents.un({touchstart:this.zoomBarDown,touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});this.sliderEvents.destroy();\n +this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar)},onButtonClick:function(a){OpenLayers.Control.PanZoom.prototype.onButtonClick.apply(this,arguments);if(a.buttonElement===this.zoombarDiv){var b=a.buttonXY.y/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom)b=Math.floor(b);b=this.map.getNumZoomLevels()-1-b;b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-\n +1);this.map.zoomTo(b)}},passEventToSlider:function(a){this.sliderEvents.handleBrowserEvent(a)},zoomBarDown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.map.events.on({touchmove:this.passEventToSlider,mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this}),this.mouseDragStart=a.xy.clone(),this.zoomStart=a.xy.clone(),this.div.style.cursor="move",this.zoombarDiv.offsets=null,OpenLayers.Event.stop(a)},zoomBarDrag:function(a){if(null!=this.mouseDragStart){var b=\n +this.mouseDragStart.y-a.xy.y,c=OpenLayers.Util.pagePosition(this.zoombarDiv);0<a.clientY-c[1]&&a.clientY-c[1]<parseInt(this.zoombarDiv.style.height)-2&&(this.slider.style.top=parseInt(this.slider.style.top)-b+"px",this.mouseDragStart=a.xy.clone());this.deltaY=this.zoomStart.y-a.xy.y;OpenLayers.Event.stop(a)}},zoomBarUp:function(a){if((OpenLayers.Event.isLeftClick(a)||"touchend"===a.type)&&this.mouseDragStart){this.div.style.cursor="";this.map.events.un({touchmove:this.passEventToSlider,mouseup:this.passEventToSlider,\n +mousemove:this.passEventToSlider,scope:this});var b=this.map.zoom;!this.forceFixedZoomLevel&&this.map.fractionalZoom?(b+=this.deltaY/this.zoomStopHeight,b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-1)):(b+=this.deltaY/this.zoomStopHeight,b=Math.max(Math.round(b),0));this.map.zoomTo(b);this.zoomStart=this.mouseDragStart=null;this.deltaY=0;OpenLayers.Event.stop(a)}},moveZoomBar:function(){this.slider.style.top=(this.map.getNumZoomLevels()-1-this.map.getZoom())*this.zoomStopHeight+this.startTop+\n +1+"px"},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",errorProperty:"service",CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wfs:"http://www.opengis.net/wfs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wfs:{WFS_Capabilities:function(a,b){this.readChildNodes(a,b)},\n +FeatureTypeList:function(a,b){b.featureTypeList={featureTypes:[]};this.readChildNodes(a,b.featureTypeList)},FeatureType:function(a,b){var c={};this.readChildNodes(a,c);b.featureTypes.push(c)},Name:function(a,b){var c=this.getChildValue(a);c&&(c=c.split(":"),b.name=c.pop(),0<c.length&&(b.featureNS=this.lookupNamespaceURI(a,c[0])))},Title:function(a,b){var c=this.getChildValue(a);c&&(b.title=c)},Abstract:function(a,b){var c=this.getChildValue(a);c&&(b["abstract"]=c)}}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},readers:{wfs:OpenLayers.Util.applyDefaults({DefaultSRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs),ows:OpenLayers.Format.OWSCommon.v1.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!0,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(a,b,c,d,e){this.url=b;this.maxExtent=this.extent=c;this.size=d;OpenLayers.Layer.prototype.initialize.apply(this,[a,e]);this.aspectRatio=this.extent.getHeight()/this.size.h/(this.extent.getWidth()/this.size.w)},destroy:function(){this.tile&&(this.removeTileMonitoringHooks(this.tile),this.tile.destroy(),this.tile=null);OpenLayers.Layer.prototype.destroy.apply(this,\n +arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions()));return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setMap:function(a){null==this.options.maxResolution&&(this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w);OpenLayers.Layer.prototype.setMap.apply(this,arguments)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=null==this.tile;if(b||d){this.setTileSize();\n +var e=this.map.getLayerPxFromLonLat({lon:this.extent.left,lat:this.extent.top});d?(this.tile=new OpenLayers.Tile.Image(this,e,this.extent,null,this.tileSize),this.addTileMonitoringHooks(this.tile)):(this.tile.size=this.tileSize.clone(),this.tile.position=e.clone());this.tile.draw()}},setTileSize:function(){var a=this.extent.getWidth()/this.map.getResolution(),b=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(a,b)},addTileMonitoringHooks:function(a){a.onLoadStart=\n +function(){this.events.triggerEvent("loadstart")};a.events.register("loadstart",this,a.onLoadStart);a.onLoadEnd=function(){this.events.triggerEvent("loadend")};a.events.register("loadend",this,a.onLoadEnd);a.events.register("unload",this,a.onLoadEnd)},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,scope:this})},setUrl:function(a){this.url=a;this.tile.draw()},getURL:function(){return this.url},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return!this.active?this.active=!0:!1},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{events:null,auto:!1,timer:null,initialize:function(a){OpenLayers.Strategy.prototype.initialize.apply(this,[a]);this.events=new OpenLayers.Events(this)},activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a&&this.auto)if("number"===typeof this.auto)this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),1E3*this.auto);else this.layer.events.on({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,\n +scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.auto&&("number"===typeof this.auto?window.clearInterval(this.timer):this.layer.events.un({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,scope:this}));return a},triggerSave:function(a){var b=a.feature;(b.state===OpenLayers.State.INSERT||b.state===OpenLayers.State.UPDATE||b.state===OpenLayers.State.DELETE)&&this.save([a.feature])},save:function(a){a||(a=this.layer.features);\n +this.events.triggerEvent("start",{features:a});var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b)){for(var d=a.length,e=Array(d),f,g,h=0;h<d;++h)f=a[h],g=f.clone(),g.fid=f.fid,g.state=f.state,f.url&&(g.url=f.url),g._original=f,g.geometry.transform(c,b),e[h]=g;a=e}this.layer.protocol.commit(a,{callback:this.onCommit,scope:this})},onCommit:function(a){var b={response:a};if(a.success()){for(var c=a.reqFeatures,d,e=[],f=a.insertIds||[],g=0,h=0,i=c.length;h<i;++h)if(d=c[h],\n +d=d._original||d,a=d.state)a==OpenLayers.State.DELETE?e.push(d):a==OpenLayers.State.INSERT&&(d.fid=f[g],++g),d.state=null;0<e.length&&this.layer.destroyFeatures(e);this.events.triggerEvent("success",b)}else this.events.triggerEvent("fail",b)},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{defaultDesc:"No description available",extractWaypoints:!0,extractTracks:!0,extractRoutes:!0,extractAttributes:!0,namespaces:{gpx:"http://www.topografix.com/GPX/1/1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",creator:"OpenLayers",initialize:function(a){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,\n +[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=[];if(this.extractTracks)for(var c=a.getElementsByTagName("trk"),d=0,e=c.length;d<e;d++){var f={};this.extractAttributes&&(f=this.parseAttributes(c[d]));for(var g=this.getElementsByTagNameNS(c[d],c[d].namespaceURI,"trkseg"),h=0,i=g.length;h<i;h++){var j=this.extractSegment(g[h],"trkpt");b.push(new OpenLayers.Feature.Vector(j,f))}}if(this.extractRoutes){e=a.getElementsByTagName("rte");c=0;for(d=\n +e.length;c<d;c++)f={},this.extractAttributes&&(f=this.parseAttributes(e[c])),g=this.extractSegment(e[c],"rtept"),b.push(new OpenLayers.Feature.Vector(g,f))}if(this.extractWaypoints){a=a.getElementsByTagName("wpt");c=0;for(e=a.length;c<e;c++)f={},this.extractAttributes&&(f=this.parseAttributes(a[c])),d=new OpenLayers.Geometry.Point(a[c].getAttribute("lon"),a[c].getAttribute("lat")),b.push(new OpenLayers.Feature.Vector(d,f))}if(this.internalProjection&&this.externalProjection){f=0;for(a=b.length;f<\n +a;f++)b[f].geometry.transform(this.externalProjection,this.internalProjection)}return b},extractSegment:function(a,b){for(var c=this.getElementsByTagNameNS(a,a.namespaceURI,b),d=[],e=0,f=c.length;e<f;e++)d.push(new OpenLayers.Geometry.Point(c[e].getAttribute("lon"),c[e].getAttribute("lat")));return new OpenLayers.Geometry.LineString(d)},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d;a;){if(1==a.nodeType&&a.firstChild&&(c=a.firstChild,3==c.nodeType||4==c.nodeType))d=a.prefix?a.nodeName.split(":")[1]:\n +a.nodeName,"trkseg"!=d&&"rtept"!=d&&(b[d]=c.nodeValue);a=a.nextSibling}return b},write:function(a,b){var a=OpenLayers.Util.isArray(a)?a:[a],c=this.createElementNS(this.namespaces.gpx,"gpx");c.setAttribute("version","1.1");c.setAttribute("creator",this.creator);this.setAttributes(c,{"xsi:schemaLocation":this.schemaLocation});b&&"object"==typeof b&&c.appendChild(this.buildMetadataNode(b));for(var d=0,e=a.length;d<e;d++)c.appendChild(this.buildFeatureNode(a[d]));return OpenLayers.Format.XML.prototype.write.apply(this,\n +[c])},buildMetadataNode:function(a){for(var b=["name","desc","author"],c=this.createElementNSPlus("gpx:metadata"),d=0;d<b.length;d++){var e=b[d];if(a[e]){var f=this.createElementNSPlus("gpx:"+e);f.appendChild(this.createTextNode(a[e]));c.appendChild(f)}}return c},buildFeatureNode:function(a){var b=a.geometry,b=b.clone();this.internalProjection&&this.externalProjection&&b.transform(this.internalProjection,this.externalProjection);if("OpenLayers.Geometry.Point"==b.CLASS_NAME){var c=this.buildWptNode(b);\n +this.appendAttributesNode(c,a);return c}c=this.createElementNSPlus("gpx:trk");this.appendAttributesNode(c,a);for(var a=this.buildTrkSegNode(b),a=OpenLayers.Util.isArray(a)?a:[a],b=0,d=a.length;b<d;b++)c.appendChild(a[b]);return c},buildTrkSegNode:function(a){var b,c,d,e;if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){b=this.createElementNSPlus("gpx:trkseg");c=0;for(d=a.components.length;c<d;c++)e=a.components[c],b.appendChild(this.buildTrkPtNode(e));\n +return b}b=[];c=0;for(d=a.components.length;c<d;c++)b.push(this.buildTrkSegNode(a.components[c]));return b},buildTrkPtNode:function(a){var b=this.createElementNSPlus("gpx:trkpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},buildWptNode:function(a){var b=this.createElementNSPlus("gpx:wpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},appendAttributesNode:function(a,b){var c=this.createElementNSPlus("gpx:name");c.appendChild(this.createTextNode(b.attributes.name||\n +b.id));a.appendChild(c);c=this.createElementNSPlus("gpx:desc");c.appendChild(this.createTextNode(b.attributes.description||this.defaultDesc));a.appendChild(c)},CLASS_NAME:"OpenLayers.Format.GPX"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);if("1.1.1"==c||"1.1.0"==c)c="1.1";return c},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSDescribeLayer.v1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(a){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=a.documentElement.childNodes,b=[],c,d,e=0;e<a.length;++e)if(c=a[e],d=c.nodeName,"LayerDescription"==d){d=c.getAttribute("name");var f="",g="",h="";c.getAttribute("owsType")?(f=c.getAttribute("owsType"),g=c.getAttribute("owsURL")):\n +""!=c.getAttribute("wfs")?(f="WFS",g=c.getAttribute("wfs")):""!=c.getAttribute("wcs")&&(f="WCS",g=c.getAttribute("wcs"));c=c.getElementsByTagName("Query");0<c.length&&((h=c[0].getAttribute("typeName"))||(h=c[0].getAttribute("typename")));b.push({layerName:d,owsType:f,owsURL:g,typeName:h})}return b},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,sphericalMercator:!1,zoomOffset:0,serverResolutions:null,initialize:function(a,b,c){if(c&&c.sphericalMercator||this.sphericalMercator)c=OpenLayers.Util.extend({projection:"EPSG:900913",numZoomLevels:19},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a||this.name,b||this.url,{},c])},clone:function(a){null==a&&(a=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getURL:function(a){var a=this.getXYZ(a),b=this.url;OpenLayers.Util.i + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +sArray(b)&&(b=this.selectUrl(""+a.x+a.y+a.z,b));return OpenLayers.String.format(b,a)},getXYZ:function(a){var b=this.getServerResolution(),c=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w)),a=Math.round((this.maxExtent.top-a.top)/(b*this.tileSize.h)),b=this.getServerZoom();if(this.wrapDateLine)var d=Math.pow(2,b),c=(c%d+d)%d;return{x:c,y:a,z:b}},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,\n +arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",url:["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png","http://b.tile.openstreetmap.org/${z}/${x}/${y}.png","http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"],attribution:"Data CC-By-SA by <a href=\'http://openstreetmap.org/\'>OpenStreetMap</a>",sphericalMercator:!0,wrapDateLine:!0,tileOptions:null,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},\n +this.options&&this.options.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth(),\n +a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,\n +d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/\n +2)/c)*c}},drawGeometry:function(){},drawText:function(){},removeText:function(){},clear:function(){},getFeatureIdFromEvent:function(){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(){},moveRoot:function(){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);\n +!1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};\n +OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},\n +setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,\n +b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==\n +d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,\n +b,c){var d=new Image;b.graphicTitle&&(d.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f),i=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),k=b[0],b=b[1];if(!isNaN(k)&&!isNaN(b)){var k=k+g|0,b=b+h|0,l=this.canvas;l.globalAlpha=i;var m=\n +OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);l.drawImage(d,k*m,b*m,e*m,f*m);if(this.hitDetection){this.setHitContextStyle("fill",c);this.hitContext.fillRect(k,b,e,f)}}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");\n +if(h.length&&!(2>h.length)&&(a=this.getLocalXY(a),e=a[0],g=a[1],!isNaN(e)&&!isNaN(g))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();\n +this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",\n +b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],\n +e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===\n +a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);var a="000000"+a.toString(16),b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);\n +"fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=\n +this.getLocalXY(a),a=d[0],d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",\n +c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,\n +a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();var d=this.getLocalXY(b[0]),f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){var a=a.components,d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<\n +d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");\n +this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];\n +null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];null==h&&(h=-0.5);\n +g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var i=c[0]+h*this.canvas.mozMeasureText(e[g]),j=c[1]+g*d;this.canvas.translate(i,j);this.canvas.mozDrawText(e[g]);this.canvas.translate(-i,-j)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,\n +0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers.Feature.Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];\n +this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=\n +a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:!1,interestingTagsExclude:null,areaTags:null,initialize:function(a){for(var b={interestingTagsExclude:"source source_ref source:ref history attribution created_by".split(" "),areaTags:"area building leisure tourism ruins historic landuse military natural sport".split(" ")},b=OpenLayers.Util.extend(b,a),c={},a=0;a<b.interestingTagsExclude.length;a++)c[b.interestingTagsExclude[a]]=!0;b.interestingTagsExclude=c;c={};for(a=0;a<b.areaTags.length;a++)c[b.areaTags[a]]=\n +!0;b.areaTags=c;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[b])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var b=this.getNodes(a),c=this.getWays(a),a=Array(c.length),d=0;d<c.length;d++){for(var e=Array(c[d].nodes.length),f=this.isWayArea(c[d])?1:0,g=0;g<c[d].nodes.length;g++){var h=b[c[d].nodes[g]],i=new OpenLayers.Geometry.Point(h.lon,h.lat);i.osm_id=parseInt(c[d].nodes[g]);\n +e[g]=i;h.used=!0}h=null;h=f?new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(e)):new OpenLayers.Geometry.LineString(e);this.internalProjection&&this.externalProjection&&h.transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(h,c[d].tags);e.osm_id=parseInt(c[d].id);e.fid="way."+e.osm_id;a[d]=e}for(var j in b){h=b[j];if(!h.used||this.checkTags){c=null;if(this.checkTags){c=this.getTags(h.node,!0);if(h.used&&!c[1])continue;c=c[0]}else c=this.getTags(h.node);\n +e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(h.lon,h.lat),c);this.internalProjection&&this.externalProjection&&e.geometry.transform(this.externalProjection,this.internalProjection);e.osm_id=parseInt(j);e.fid="node."+e.osm_id;a.push(e)}h.node=null}return a},getNodes:function(a){for(var a=a.getElementsByTagName("node"),b={},c=0;c<a.length;c++){var d=a[c],e=d.getAttribute("id");b[e]={lat:d.getAttribute("lat"),lon:d.getAttribute("lon"),node:d}}return b},getWays:function(a){for(var a=\n +a.getElementsByTagName("way"),b=[],c=0;c<a.length;c++){var d=a[c],e={id:d.getAttribute("id")};e.tags=this.getTags(d);d=d.getElementsByTagName("nd");e.nodes=Array(d.length);for(var f=0;f<d.length;f++)e.nodes[f]=d[f].getAttribute("ref");b.push(e)}return b},getTags:function(a,b){for(var c=a.getElementsByTagName("tag"),d={},e=!1,f=0;f<c.length;f++){var g=c[f].getAttribute("k");d[g]=c[f].getAttribute("v");b&&(this.interestingTagsExclude[g]||(e=!0))}return b?[d,e]:d},isWayArea:function(a){var b=!1,c=!1;\n +a.nodes[0]==a.nodes[a.nodes.length-1]&&(b=!0);if(this.checkTags)for(var d in a.tags)if(this.areaTags[d]){c=!0;break}return b&&(this.checkTags?c:!0)},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.osm_id=1;this.created_nodes={};var b=this.createElementNS(null,"osm");b.setAttribute("version","0.5");b.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var c=a.length-1;0<=c;c--)for(var d=this.createFeatureNodes(a[c]),e=0;e<d.length;e++)b.appendChild(d[e]);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[b])},createFeatureNodes:function(a){var b=[],c=a.geometry.CLASS_NAME,c=c.substring(c.lastIndexOf(".")+1),c=c.toLowerCase();(c=this.createXML[c])&&(b=c.apply(this,[a]));return b},createXML:{point:function(a){var b=null,c=a.geometry?a.geometry:a;this.internalProjection&&this.externalProjection&&(c=c.clone(),c.transform(this.internalProjection,this.externalProjection));var d=!1;a.osm_id?(b=a.osm_id,this.created_nodes[b]&&(d=!0)):(b=-this.osm_id,this.osm_id++);var e=d?this.created_nodes[b]:this.createElementNS(null,\n +"node");this.created_nodes[b]=e;e.setAttribute("id",b);e.setAttribute("lon",c.x);e.setAttribute("lat",c.y);a.attributes&&this.serializeTags(a,e);this.setState(a,e);return d?[]:[e]},linestring:function(a){var b,c=[],d=a.geometry;a.osm_id?b=a.osm_id:(b=-this.osm_id,this.osm_id++);var e=this.createElementNS(null,"way");e.setAttribute("id",b);for(b=0;b<d.components.length;b++){var f=this.createXML.point.apply(this,[d.components[b]]);if(f.length){var f=f[0],g=f.getAttribute("id");c.push(f)}else g=d.components[b].osm_id,\n +f=this.created_nodes[g];this.setState(a,f);f=this.createElementNS(null,"nd");f.setAttribute("ref",g);e.appendChild(f)}this.serializeTags(a,e);c.push(e);return c},polygon:function(a){var b=OpenLayers.Util.extend({area:"yes"},a.attributes),b=new OpenLayers.Feature.Vector(a.geometry.components[0],b);b.osm_id=a.osm_id;return this.createXML.linestring.apply(this,[b])}},serializeTags:function(a,b){for(var c in a.attributes){var d=this.createElementNS(null,"tag");d.setAttribute("k",c);d.setAttribute("v",\n +a.attributes[c]);b.appendChild(d)}},setState:function(a,b){if(a.state){var c=null;switch(a.state){case OpenLayers.State.UPDATE:case OpenLayers.State.DELETE:c="delete"}c&&b.setAttribute("action",c)}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:0))==\n +this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=!1;return!0},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,\n +this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,touch:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},\n +dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.stop(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):(this.started=\n +!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;if(this.started&&!this.timeoutId&&(a.xy.x!=this.last.x||a.xy.y!=this.last.y))!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=\n +document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy;return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(){},move:function(){},\n +up:function(){},out:function(){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this}));return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},\n +touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(){return this.start==\n +this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=this.touch=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,\n +"olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,touch:!1,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=\n +b},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this}));return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.stop(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?\n +!this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==\n +b;if((this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer)this.feature=null;this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=null);this.feature?("touchstart"===b&&OpenLayers.Event.stop(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):(!d||e)&&this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&\n +(d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",[this.lastFeature]);return c},triggerCallback:function(a,b,c){(b=this.EVENTMAP[a][b])&&("click"==a&&this.up&&this.down?Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c):this.callback(b,c))},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),\n +this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.touch=!1,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){("removelayer"==a.type||"order"==a.property)&&this.moveLayerToTop()},\n +moveLayerToTop:function(){this.layer.setZIndex(Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1)},moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(){},onDrag:function(){},onComplete:function(){},onEnter:function(){},onLeave:function(){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,\n +up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&(!this.over&&this.overFeature(a))&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=\n +!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*\n +(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},\n +cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=\n +a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,\n +b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);(!this.renderer||!this.renderer.supported())&&this.assignRenderer();if(!this.renderer||\n +!this.renderer.supported())this.renderer=null,this.displayError();this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),\n +this.protocol=null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));for(var a=OpenLayers.Layer.prototype.clone.apply(this,[a]),b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&\n +this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,\n +arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(){this.drawn=!1;if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,\n +arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+parseInt(this.map.layerContainerDiv.style.left,10),e=-Math.round(e),d=d+parseInt(this.map.layerContainerDiv.style.top,10),d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=\n +d+"px";d=this.renderer.setExtent(this.map.getExtent().scale(this.ratio),b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d){this.drawn=!0;f=0;for(d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)}},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);\n +var b=this.div.style.display;b!=this.renderer.root.style.display&&(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+\n +this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);\n +OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,\n +e)&&OpenLayers.Util.removeItem(this.selectedFeatures,e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){var a=!a||!a.silent,b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();\n +this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){!b&&a.state===OpenLayers.State.DELETE&&(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,\n +b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=\n +null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(){},preFeatureInsert:function(){},getDataExtent:function(){var a=null,b=this.features;\n +if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);\n +this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,\n +b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=\n +{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=\n +new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&\n +(this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){for(var b=this.layers||[this.layer],c,d,e=0;e<b.length;++e){c=b[e];for(var f=c.selectedFeatures.length-1;0<=f;--f)d=c.selectedFeatures[f],(!a||a.except!=d)&&this.unselect(d)}},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,a)?this.toggleSelect()?\n +this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=a.layer;this.hover&&(this.highlightOnly?\n +this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&(a._prevHighlighter=a._lastHighlighter,\n +a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=this.onBeforeSelect.call(this.scope,\n +a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",{feature:a});this.onUnselect.call(this.scope,\n +a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=d.features[f];h.getVisibility()&&(null==\n +this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();this.deactivate();this.layers&&\n +(this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,observeElement:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this)},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments)},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,\n +arguments)){this.observeElement=this.observeElement||document;for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.observe(this.observeElement,this.KEY_EVENTS[a],this.eventListener);return!0}return!1},deactivate:function(){var a=!1;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.stopObserving(this.observeElement,this.KEY_EVENTS[a],this.eventListener);a=!0}return a},handleKeyEvent:function(a){this.checkModifiers(a)&&\n +this.callback(a.type,[a])},CLASS_NAME:"OpenLayers.Handler.Keyboard"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,clickout:!0,toggle:!0,standalone:!1,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,handlers:null,deleteCodes:null,virtualStyle:null,vertexRenderIntent:null,mode:null,createVertices:!0,modified:!1,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(a,b){b=b||{};this.layer=\n +a;this.vertices=[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer(null,b.vertexRenderIntent));this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[b]);OpenLayers.Util.isArray(this.deleteCodes)||(this.deleteCodes=[this.deleteCodes]);var c=this,d={geometryTypes:this.geometryTypes,clickout:this.clickout,\n +toggle:this.toggle,onBeforeSelect:this.beforeSelectFeature,onSelect:this.selectFeature,onUnselect:this.unselectFeature,scope:this};!1===this.standalone&&(this.selectControl=new OpenLayers.Control.SelectFeature(a,d));this.dragControl=new OpenLayers.Control.DragFeature(a,{geometryTypes:["OpenLayers.Geometry.Point"],onStart:function(a,b){c.dragStart.apply(c,[a,b])},onDrag:function(a,b){c.dragVertex.apply(c,[a,b])},onComplete:function(a){c.dragComplete.apply(c,[a])},featureCallbacks:{over:function(a){(c.standalone!==\n +true||a._sketch||c.feature===a)&&c.dragControl.overFeature.apply(c.dragControl,[a])}}});this.handlers={keyboard:new OpenLayers.Handler.Keyboard(this,{keydown:this.handleKeypress})}},destroy:function(){this.layer=null;this.standalone||this.selectControl.destroy();this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return(this.standalone||this.selectControl.activate())&&this.handlers.keyboard.activate()&&OpenLayers.Control.prototype.activate.apply(this,\n +arguments)},deactivate:function(){var a=!1;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices,{silent:!0});this.layer.removeFeatures(this.virtualVertices,{silent:!0});this.vertices=[];this.dragControl.deactivate();var b=(a=this.feature)&&a.geometry&&a.layer;!1===this.standalone?(b&&this.selectControl.unselect.apply(this.selectControl,[a]),this.selectControl.deactivate()):b&&this.unselectFeature(a);this.handlers.keyboard.deactivate();a=!0}return a},\n +beforeSelectFeature:function(a){return this.layer.events.triggerEvent("beforefeaturemodified",{feature:a})},selectFeature:function(a){if(!this.standalone||!1!==this.beforeSelectFeature(a))this.feature=a,this.modified=!1,this.resetVertices(),this.dragControl.activate(),this.onModificationStart(this.feature);var b=a.modified;if(a.geometry&&(!b||!b.geometry))this._originalGeometry=a.geometry.clone()},unselectFeature:function(a){this.layer.removeFeatures(this.vertices,{silent:!0});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,\n +{silent:!0});this.virtualVertices=[];this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),delete this.dragHandle);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),delete this.radiusHandle);this.feature=null;this.dragControl.deactivate();this.onModificationEnd(a);this.layer.events.triggerEvent("afterfeaturemodified",{feature:a,modified:this.modified});this.modified=!1},dragStart:function(a,b){if(a!=this.feature&&(!a.geometry.parent&&a!=this.dragHandle&&\n +a!=this.radiusHandle)&&(!1===this.standalone&&this.feature&&this.selectControl.clickFeature.apply(this.selectControl,[this.feature]),null==this.geometryTypes||-1!=OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)))this.standalone||this.selectControl.clickFeature.apply(this.selectControl,[a]),this.dragControl.overFeature.apply(this.dragControl,[a]),this.dragControl.lastPixel=b,this.dragControl.handlers.drag.started=!0,this.dragControl.handlers.drag.start=b,this.dragControl.handlers.drag.last=\n +b},dragVertex:function(a,b){this.modified=!0;"OpenLayers.Geometry.Point"==this.feature.geometry.CLASS_NAME?(this.feature!=a&&(this.feature=a),this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b})):(a._index?(a.geometry.parent.addComponent(a.geometry,a._index),delete a._index,OpenLayers.Util.removeItem(this.virtualVertices,a),this.vertices.push(a)):a==this.dragHandle?(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[],this.radiusHandle&&\n +(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null)):a!==this.radiusHandle&&this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b}),0<this.virtualVertices.length&&(this.layer.destroyFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent));this.layer.drawFeature(a)},dragComplete:function(){this.resetVertices();this.setFeatureState();\n +this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&this.feature.state!=OpenLayers.State.DELETE&&(this.feature.state=OpenLayers.State.UPDATE,this.modified&&this._originalGeometry)){var a=this.feature;a.modified=OpenLayers.Util.extend(a.modified,{geometry:this._originalGeometry});delete this._originalGeometry}},resetVertices:function(){this.dragControl.feature&&this.dragControl.outFeature(this.dragControl.feature);\n +0<this.vertices.length&&(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[]);0<this.virtualVertices.length&&(this.layer.removeFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]);this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),this.dragHandle=null);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null);this.feature&&"OpenLayers.Geometry.Point"!=this.feature.geometry.CLASS_NAME&&(this.mode&\n +OpenLayers.Control.ModifyFeature.DRAG&&this.collectDragHandle(),this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE)&&this.collectRadiusHandle(),this.mode&OpenLayers.Control.ModifyFeature.RESHAPE&&(this.mode&OpenLayers.Control.ModifyFeature.RESIZE||this.collectVertices()))},handleKeypress:function(a){var b=a.keyCode;if(this.feature&&-1!=OpenLayers.Util.indexOf(this.deleteCodes,b)&&(b=this.dragControl.feature)&&-1!=OpenLayers.Util.indexOf(this.vertices,b)&&!this.dragControl.handlers.drag.dragging&&\n +b.geometry.parent)b.geometry.parent.removeComponent(b.geometry),this.layer.events.triggerEvent("vertexremoved",{vertex:b.geometry,feature:this.feature,pixel:a.xy}),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent),this.modified=!0,this.resetVertices(),this.setFeatureState(),this.onModification(this.feature),this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},collectVertices:function(){function a(c){var d,e,f;if("OpenLayers.Geometry.Point"==\n +c.CLASS_NAME)e=new OpenLayers.Feature.Vector(c),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e);else{f=c.components.length;"OpenLayers.Geometry.LinearRing"==c.CLASS_NAME&&(f-=1);for(d=0;d<f;++d)e=c.components[d],"OpenLayers.Geometry.Point"==e.CLASS_NAME?(e=new OpenLayers.Feature.Vector(e),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e)):a(e);if(b.createVertices&&"OpenLayers.Geometry.MultiPoint"!=c.CLASS_NAME){d=0;for(f=c.components.length;d<f-1;++d){e=c.components[d];\n +var g=c.components[d+1];"OpenLayers.Geometry.Point"==e.CLASS_NAME&&"OpenLayers.Geometry.Point"==g.CLASS_NAME&&(e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point((e.x+g.x)/2,(e.y+g.y)/2),null,b.virtualStyle),e.geometry.parent=c,e._index=d+1,e._sketch=!0,b.virtualVertices.push(e))}}}}this.vertices=[];this.virtualVertices=[];var b=this;a.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:!0});this.layer.addFeatures(this.vertices,{silent:!0})},collectDragHandle:function(){var a=\n +this.feature.geometry,b=a.getBounds().getCenterLonLat(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),c=new OpenLayers.Feature.Vector(b);b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);a.move(b,c)};c._sketch=!0;this.dragHandle=c;this.dragHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.dragHandle],{silent:!0})},collectRadiusHandle:function(){var a=this.feature.geometry,b=a.getBounds(),c=b.getCenterLonLat(),d=new OpenLayers.Geometry.Point(c.lon,c.lat),\n +b=new OpenLayers.Geometry.Point(b.right,b.bottom),c=new OpenLayers.Feature.Vector(b),e=this.mode&OpenLayers.Control.ModifyFeature.RESIZE,f=this.mode&OpenLayers.Control.ModifyFeature.RESHAPE,g=this.mode&OpenLayers.Control.ModifyFeature.ROTATE;b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);var j=this.x-d.x,k=this.y-d.y,l=j-b,m=k-c;if(g){var n=Math.atan2(m,l),n=Math.atan2(k,j)-n,n=n*(180/Math.PI);a.rotate(n,d)}if(e){var o;f?(k/=m,o=j/l/k):(l=Math.sqrt(l*l+m*m),k=Math.sqrt(j*\n +j+k*k)/l);a.resize(k,d,o)}};c._sketch=!0;this.radiusHandle=c;this.radiusHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.radiusHandle],{silent:!0})},setMap:function(a){this.standalone||this.selectControl.setMap(a);this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;\n +OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Layer.Bing=OpenLayers.Class(OpenLayers.Layer.XYZ,{key:null,serverResolutions:[156543.03390625,78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677,0.14929107084870338,0.07464553542435169],attributionTemplate:\'<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>\',\n +metadata:null,type:"Road",culture:"en-US",metadataParams:null,tileOptions:null,initialize:function(a){a=OpenLayers.Util.applyDefaults({sphericalMercator:!0},a);OpenLayers.Layer.XYZ.prototype.initialize.apply(this,[a.name||"Bing "+(a.type||this.type),null,a]);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options.tileOptions);this.loadMetadata()},loadMetadata:function(){this._callbackId="_callback_"+this.id.replace(/\\./g,"_");window[this._callbackId]=OpenLayers.Function.bind(OpenLayers.Layer.Bing.processMetadata,\n +this);var a=OpenLayers.Util.applyDefaults({key:this.key,jsonp:this._callbackId,include:"ImageryProviders"},this.metadataParams),a="http://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.type+"?"+OpenLayers.Util.getParameterString(a),b=document.createElement("script");b.type="text/javascript";b.src=a;b.id=this._callbackId;document.getElementsByTagName("head")[0].appendChild(b)},initLayer:function(){var a=this.metadata.resourceSets[0].resources[0],b=a.imageUrl.replace("{quadkey}","${quadkey}"),\n +b=b.replace("{culture}",this.culture);this.url=[];for(var c=0;c<a.imageUrlSubdomains.length;++c)this.url.push(b.replace("{subdomain}",a.imageUrlSubdomains[c]));this.addOptions({maxResolution:Math.min(this.serverResolutions[a.zoomMin],this.maxResolution||Number.POSITIVE_INFINITY),numZoomLevels:Math.min(a.zoomMax+1-a.zoomMin,this.numZoomLevels)},!0)},getURL:function(a){if(this.url){for(var b=this.getXYZ(a),a=b.x,c=b.y,b=b.z,d=[],e=b;0<e;--e){var f="0",g=1<<e-1;0!=(a&g)&&f++;0!=(c&g)&&(f++,f++);d.push(f)}d=\n +d.join("");a=this.selectUrl(""+a+c+b,this.url);return OpenLayers.String.format(a,{quadkey:d})}},updateAttribution:function(){var a=this.metadata;if(a.resourceSets&&this.map&&this.map.center){var b=a.resourceSets[0].resources[0],c=this.map.getExtent().transform(this.map.getProjectionObject(),new OpenLayers.Projection("EPSG:4326")),b=b.imageryProviders,d=OpenLayers.Util.indexOf(this.serverResolutions,this.getServerResolution()),e="",f,g,h,i,j,k,l;g=0;for(h=b.length;g<h;++g){f=b[g];i=0;for(j=f.coverageAreas.length;i<\n +j;++i)l=f.coverageAreas[i],k=OpenLayers.Bounds.fromArray(l.bbox,!0),c.intersectsBounds(k)&&(d<=l.zoomMax&&d>=l.zoomMin)&&(e+=f.attribution+" ")}this.attribution=OpenLayers.String.format(this.attributionTemplate,{type:this.type.toLowerCase(),logo:a.brandLogoUri,copyrights:e});this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"attribution"})}},setMap:function(){OpenLayers.Layer.XYZ.prototype.setMap.apply(this,arguments);this.updateAttribution();this.map.events.register("moveend",\n +this,this.updateAttribution)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Bing(this.options));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},destroy:function(){this.map&&this.map.events.unregister("moveend",this,this.updateAttribution);OpenLayers.Layer.XYZ.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.Bing"});\n +OpenLayers.Layer.Bing.processMetadata=function(a){this.metadata=a;this.initLayer();a=document.getElementById(this._callbackId);a.parentNode.removeChild(a);window[this._callbackId]=void 0;delete this._callbackId};OpenLayers.Layer.PointGrid=OpenLayers.Class(OpenLayers.Layer.Vector,{dx:null,dy:null,ratio:1.5,maxFeatures:250,rotation:0,origin:null,gridBounds:null,initialize:function(a){a=a||{};OpenLayers.Layer.Vector.prototype.initialize.apply(this,[a.name,a])},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);a.events.register("moveend",this,this.onMoveEnd)},removeMap:function(a){a.events.unregister("moveend",this,this.onMoveEnd);OpenLayers.Layer.Vector.prototype.removeMap.apply(this,\n +arguments)},setRatio:function(a){this.ratio=a;this.updateGrid(!0)},setMaxFeatures:function(a){this.maxFeatures=a;this.updateGrid(!0)},setSpacing:function(a,b){this.dx=a;this.dy=b||a;this.updateGrid(!0)},setOrigin:function(a){this.origin=a;this.updateGrid(!0)},getOrigin:function(){this.origin||(this.origin=this.map.getExtent().getCenterLonLat());return this.origin},setRotation:function(a){this.rotation=a;this.updateGrid(!0)},onMoveEnd:function(){this.updateGrid()},getViewBounds:function(){var a=this.map.getExtent();\n +if(this.rotation){var b=this.getOrigin(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),a=a.toGeometry();a.rotate(-this.rotation,b);a=a.getBounds()}return a},updateGrid:function(a){if(a||this.invalidBounds()){var b=this.getViewBounds(),c=this.getOrigin(),a=new OpenLayers.Geometry.Point(c.lon,c.lat),d=b.getWidth(),e=b.getHeight(),f=d/e,g=Math.sqrt(this.dx*this.dy*this.maxFeatures/f),d=Math.min(d*this.ratio,g*f),e=Math.min(e*this.ratio,g),b=b.getCenterLonLat();this.gridBounds=new OpenLayers.Bounds(b.lon-\n +d/2,b.lat-e/2,b.lon+d/2,b.lat+e/2);for(var b=Math.floor(e/this.dy),d=Math.floor(d/this.dx),e=c.lon+this.dx*Math.ceil((this.gridBounds.left-c.lon)/this.dx),c=c.lat+this.dy*Math.ceil((this.gridBounds.bottom-c.lat)/this.dy),g=Array(b*d),h,i=0;i<d;++i)for(var f=e+i*this.dx,j=0;j<b;++j)h=c+j*this.dy,h=new OpenLayers.Geometry.Point(f,h),this.rotation&&h.rotate(this.rotation,a),g[i*b+j]=new OpenLayers.Feature.Vector(h);this.destroyFeatures(this.features,{silent:!0});this.addFeatures(g,{silent:!0})}},invalidBounds:function(){return!this.gridBounds||\n +!this.gridBounds.containsBounds(this.getViewBounds())},CLASS_NAME:"OpenLayers.Layer.PointGrid"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=!1,c=!1,d=!1,e=\n +OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"),b=f&&"auto"==f||"scroll"==f}catch(g){}if(!c)for(var d=0,h=this.map.layers.length;d<h;d++)if(e==this.map.layers[d].div||e==this.map.layers[d].pane){c=!0;break}d=e==this.map.div;e=e.parentNode}!b&&d&&(c&&((b=0,a||(a=window.event),a.wheelDelta?(b=a.wheelDelta/120,window.opera&&9.2>window.opera.version()&&(b=-b)):a.detail&&(b=-a.detail/\n +3),this.delta+=b,this.interval)?(window.clearTimeout(this._timeoutId),this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(a)},this),this.interval)):this.wheelZoom(a)),OpenLayers.Event.stop(a))}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(this.mousePosition&&(a.xy=t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +his.mousePosition),a.xy||(a.xy=this.map.getPixelFromLonLat(this.map.getCenter())),0>b?this.callback("down",[a,this.cumulative?b:-1]):this.callback("up",[a,this.cumulative?b:1]))},mousemove:function(a){this.mousePosition=\n +a.xy},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",\n +b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(a){OpenLayers.Util.extend(this,a)},clone:function(){return new (eval(this.CLASS_NAME))(OpenLayers.Util.extend({},this))},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=\n +this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==\n +typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},\n +this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=\n +OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{profile:null,defaultVersion:"1.0.0",stringifyOutput:!0,namedLayersAsArray:!1,CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({outerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},innerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},Box:function(a,b){var c=\n +{};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,d.y,c.x,c.y))}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode(OpenLayers.Util.isArray(a)?"wfs:FeatureCollection":"gml:featureMember",a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);\n +return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[a],b);return b},coordinates:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+","+d.y:d.y+","+d.x,void 0!=d.z&&(c[e]+=","+d.z);return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:1==b?c[0]:c.join(" ")})},LineString:function(a){var b=\n +this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",a.components,b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",a.components[0],b);for(var c=1;c<a.components.length;++c)this.writeNode("innerBoundaryIs",a.components[c],b);return b},outerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",a,b);return b},innerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:innerBoundaryIs");\n +this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",a.components,b);return b},Box:function(a){var b=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:a.left,y:a.bottom},{x:a.right,y:a.top}],b);this.srsName&&b.setAttribute("srsName",this.srsName);return b}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},\n +CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,\n +b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escape");c.value2regex(d,e,f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,\n +feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",\n +{attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Box",a.value,b);a.projection&&c.setAttribute("srsName",a.projection);return b}},OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature},\n +writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Box",a.value);a.projection&&d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:!1,schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v2.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({WFS_TransactionResponse:function(a,\n +b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},InsertResult:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])},TransactionResult:function(a,b){this.readChildNodes(a,b)},Status:function(a,b){this.readChildNodes(a,b)},SUCCESS:function(a,b){b.success=!0}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,feature:OpenLayers.Format.GML.v2.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.readers.ogc},\n +writers:{wfs:OpenLayers.Util.applyDefaults({Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType}});a.srsNameInQuery&&a.srsName&&c.setAttribute("srsName",a.srsName);a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<\n +d;b++)this.writeNode("ogc:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(this.setFilterProperty(a.filter),this.writeNode("ogc:Filter",a.filter,c));return c}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,\n +0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){var a=a.id,b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;\n +null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});\n +OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){var b=a.getZIndex(b),d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};\n +OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);\n +this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(b&&(b.zIndexing||b.yOrdering))this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering)},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&\n +this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth(),a=a.scale(1/f),f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(){},drawGeometry:function(a,\n +b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));if(!1==e&&(b=document.getElementById(a.id)))b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b);\n +d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);\n +this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,\n +b,c,null)},drawGeometryNode:function(a,b,c){var c=c||a._style,d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;\n +case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(){},drawPoint:function(){},drawLineString:function(){},drawLinearRing:function(){},drawPolygon:function(){},drawRectangle:function(){},drawCircle:function(){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},\n +getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else if((c=OpenLayers.Util.getElement(a.id))&&c.parentNode)if(c.geometry&&\n +(c.geometry.destroy(),c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic)(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c)},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(){},createNode:function(){},moveRoot:function(a){var b=this.root;\n +a.root.parentNode==this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){var a=a||window.location.href,b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&\n +"OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}if(b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon))this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),\n +this.setCenter()},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);\n +"B"==d?this.map.setBaseLayer(c):("T"==d||"F"==d)&&c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null!==a&&"object"==typeof a&&!OpenLayers.Util.isElement(a)?(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=OpenLayers.Util.getElement(this.element))):(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),\n +this.base=b||document.location.href)},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=\n +this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);!this.element&&!this.anchor&&(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,\n +changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base;-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b+=a+OpenLayers.Util.getParameterString(this.createParams());this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){var a=a||this.map.getCenter(),d=OpenLayers.Util.getParameters(this.base);if(a){d.zoom=b||this.map.getZoom();b=a.lat;a=a.lon;this.displayProjection&&(b=\n +OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y);d.lat=Math.round(1E5*b)/1E5;d.lon=Math.round(1E5*a)/1E5;c=c||this.map.layers;d.layers="";a=0;for(b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",layername:null,type:null,isBaseLayer:!0,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(a,b,c){var d=[];d.push(a,b,{},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,d)},clone:function(a){null==a&&(a=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.getServerResolution(),\n +c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((a.bottom-this.tileOrigin.lat)/(b*this.tileSize.h)),c=this.serviceVersion+"/"+this.layername+"/"+this.getServerZoom()+"/"+c+"/"+a+"."+this.type,a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({refresh:this.load,scope:this});if(!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return!0}return!1},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,\n +scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart");b.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,b.map.getProjectionObject()),filter:b.filter},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a,b){var c=this.layer;c.destroyFeatures();var d=b.features;if(d&&0<d.length){if(!a.equals(c.projection))for(var e,f=0,g=d.length;f<g;++f)(e=d[f].geometry)&&e.transform(c.projection,a);c.addFeatures(d)}c.events.triggerEvent("loadend")},\n +CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Control.Zoom=OpenLayers.Class(OpenLayers.Control,{zoomInText:"+",zoomInId:"olZoomInLink",zoomOutText:"-",zoomOutId:"olZoomOutLink",draw:function(){var a=OpenLayers.Control.prototype.draw.apply(this),b=this.getOrCreateLinks(a),c=b.zoomIn,b=b.zoomOut,d=this.map.events;b.parentNode!==a&&(d=this.events,d.attachToElement(b.parentNode));d.register("buttonclick",this,this.onZoomClick);this.zoomInLink=c;this.zoomOutLink=b;return a},getOrCreateLinks:function(a){var b=document.getElementById(this.zoomInId),\n +c=document.getElementById(this.zoomOutId);b||(b=document.createElement("a"),b.href="#zoomIn",b.appendChild(document.createTextNode(this.zoomInText)),b.className="olControlZoomIn",a.appendChild(b));OpenLayers.Element.addClass(b,"olButton");c||(c=document.createElement("a"),c.href="#zoomOut",c.appendChild(document.createTextNode(this.zoomOutText)),c.className="olControlZoomOut",a.appendChild(c));OpenLayers.Element.addClass(c,"olButton");return{zoomIn:b,zoomOut:c}},onZoomClick:function(a){a=a.buttonElement;\n +a===this.zoomInLink?this.map.zoomIn():a===this.zoomOutLink&&this.map.zoomOut()},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onZoomClick);delete this.zoomInLink;delete this.zoomOutLink;OpenLayers.Control.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Control.Zoom"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,styleFrom:null,addNodes:function(a,b){if(2>a.length)throw Error("At least two point features have to be added to create a line from");for(var c=Array(a.length-1),d,e,f,g=0,h=a.length;g<h;g++){d=a[g];if(f=d.geometry){if("OpenLayers.Geometry.Point"!=f.CLASS_NAME)throw new TypeError("Only features with point geometries are supported.");}else f=d.lonlat,f=new OpenLayers.Geometry.Point(f.lon,f.lat);if(0<g){d=null!=this.dataFrom?\n +a[g+this.dataFrom].data||a[g+this.dataFrom].attributes:null;var i=null!=this.styleFrom?a[g+this.styleFrom].style:null;e=new OpenLayers.Geometry.LineString([e,f]);c[g-1]=new OpenLayers.Feature.Vector(e,d,i)}e=f}this.addFeatures(c,b)},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.SOURCE_NODE=-1;OpenLayers.Layer.PointTrack.TARGET_NODE=0;OpenLayers.Layer.PointTrack.dataFrom={SOURCE_NODE:-1,TARGET_NODE:0};OpenLayers.Protocol.WFS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.WFS.DEFAULTS),b=OpenLayers.Protocol.WFS["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported WFS version: "+a.version;return new b(a)};\n +OpenLayers.Protocol.WFS.fromWMSLayer=function(a,b){var c,d;c=a.params.LAYERS;c=(OpenLayers.Util.isArray(c)?c[0]:c).split(":");1<c.length&&(d=c[0]);c=c.pop();d={url:a.url,featureType:c,featurePrefix:d,srsName:a.projection&&a.projection.getCode()||a.map&&a.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(b,d))};OpenLayers.Protocol.WFS.DEFAULTS={version:"1.0.0"};OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,markers:null,drawn:!1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[]},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var a=0,b=this.markers.length;a<b;a++)this.markers[a].setOpacity(this.opacity)}},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,\n +arguments);if(b||!this.drawn){for(var d=0,e=this.markers.length;d<e;d++)this.drawMarker(this.markers[d]);this.drawn=!0}},addMarker:function(a){this.markers.push(a);1>this.opacity&&a.setOpacity(this.opacity);this.map&&this.map.getExtent()&&(a.map=this.map,this.drawMarker(a))},removeMarker:function(a){this.markers&&this.markers.length&&(OpenLayers.Util.removeItem(this.markers,a),a.erase())},clearMarkers:function(){if(null!=this.markers)for(;0<this.markers.length;)this.removeMarker(this.markers[0])},\n +drawMarker:function(a){var b=this.map.getLayerPxFromLonLat(a.lonlat);null==b?a.display(!1):a.isDrawn()?a.icon&&a.icon.moveTo(b):this.div.appendChild(a.draw(b))},getDataExtent:function(){var a=null;if(this.markers&&0<this.markers.length)for(var a=new OpenLayers.Bounds,b=0,c=this.markers.length;b<c;b++)a.extend(this.markers[b].lonlat);return a},CLASS_NAME:"OpenLayers.Layer.Markers"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,direction:null,type:OpenLayers.Control.TYPE_BUTTON,initialize:function(a,b){this.direction=a;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[b])},trigger:function(){var a=OpenLayers.Function.bind(function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},this);switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-a("h"));\n +break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,a("h"));break;case OpenLayers.Control.Pan.WEST:this.map.pan(-a("w"),0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(a("w"),0)}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.Format.CSWGetDomain=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetDomain.DEFAULTS),b=OpenLayers.Format.CSWGetDomain["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSWGetDomain version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetDomain.DEFAULTS={version:"2.0.2"};OpenLayers.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==\n +a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{csw:{GetDomainResponse:function(a,b){this.readChildNodes(a,b)},DomainValues:function(a,b){OpenLayers.Util.isArray(b.DomainValues)||(b.DomainValues=[]);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;this.readChildNodes(a,d);b.DomainValues.push(d)},PropertyName:function(a,b){b.PropertyName=this.getChildValue(a)},ParameterName:function(a,b){b.ParameterName=this.getChildValue(a)},ListOfValues:function(a,\n +b){OpenLayers.Util.isArray(b.ListOfValues)||(b.ListOfValues=[]);this.readChildNodes(a,b.ListOfValues)},Value:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.push({Value:d})},ConceptualScheme:function(a,b){b.ConceptualScheme={};this.readChildNodes(a,b.ConceptualScheme)},Name:function(a,b){b.Name=this.getChildValue(a)},Document:function(a,b){b.Document=this.getChildValue(a)},Authority:function(a,b){b.Authority=this.getChildValue(a)},\n +RangeOfValues:function(a,b){b.RangeOfValues={};this.readChildNodes(a,b.RangeOfValues)},MinValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MinValue=d},MaxValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MaxValue=d}}},write:function(a){a=this.writeNode("csw:GetDomain",a);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{csw:{GetDomain:function(a){var b=\n +this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});if(a.PropertyName||this.PropertyName)this.writeNode("csw:PropertyName",a.PropertyName||this.PropertyName,b);else if(a.ParameterName||this.ParameterName)this.writeNode("csw:ParameterName",a.ParameterName||this.ParameterName,b);this.readChildNodes(b,a);return b},PropertyName:function(a){return this.createElementNSPlus("csw:PropertyName",{value:a})},ParameterName:function(a){return this.createElementNSPlus("csw:ParameterName",\n +{value:a})}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{read:function(a){return(new OpenLayers.Format.ArcXML).read(a).features.feature}});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{DEFAULTS:{tolerance:10,node:!0,edge:!0,vertex:!0},greedy:!0,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.layer&&this.setLayer(this.options.layer);a=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(a,this.DEFAULTS);this.setTargets(this.options.targets);\n +0===this.targets.length&&this.layer&&this.addTargetLayer(this.layer);this.geoToleranceCache={}},setLayer:function(a){this.active?(this.deactivate(),this.layer=a,this.activate()):this.layer=a},setTargets:function(a){this.targets=[];if(a&&a.length)for(var b,c=0,d=a.length;c<d;++c)b=a[c],b instanceof OpenLayers.Layer.Vector?this.addTargetLayer(b):this.addTarget(b)},addTargetLayer:function(a){this.addTarget({layer:a})},addTarget:function(a){a=OpenLayers.Util.applyDefaults(a,this.defaults);a.nodeTolerance=\n +a.nodeTolerance||a.tolerance;a.vertexTolerance=a.vertexTolerance||a.tolerance;a.edgeTolerance=a.edgeTolerance||a.tolerance;this.targets.push(a)},removeTargetLayer:function(a){for(var b,c=this.targets.length-1;0<=c;--c)b=this.targets[c],b.layer===a&&this.removeTarget(b)},removeTarget:function(a){return OpenLayers.Util.removeItem(this.targets,a)},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a&&this.layer&&this.layer.events)this.layer.events.on({sketchstarted:this.onSketchModified,\n +sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.layer&&this.layer.events&&this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});this.point=this.feature=null;return a},onSketchModified:function(a){this.feature=a.feature;this.considerSnapping(a.vertex,a.vertex)},onVertexModified:function(a){this.feature=\n +a.feature;var b=this.layer.map.getLonLatFromViewPortPx(a.pixel);this.considerSnapping(a.vertex,new OpenLayers.Geometry.Point(b.lon,b.lat))},considerSnapping:function(a,b){for(var c={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null},d=!1,e,f,g=0,h=this.targets.length;g<h;++g)if(f=this.targets[g],e=this.testTarget(f,b))if(this.greedy){c=e;c.target=f;d=!0;break}else if(e.rank<c.rank||e.rank===c.rank&&e.dist<c.dist)c=e,c.target=f,d=!0;d&&(!1!==this.events.triggerEvent("beforesnap",\n +{point:a,x:c.x,y:c.y,distance:c.dist,layer:c.target.layer,snapType:this.precedence[c.rank]})?(a.x=c.x,a.y=c.y,this.point=a,this.events.triggerEvent("snap",{point:a,snapType:this.precedence[c.rank],layer:c.target.layer,distance:c.dist})):d=!1);this.point&&!d&&(a.x=b.x,a.y=b.y,this.point=null,this.events.triggerEvent("unsnap",{point:a}))},testTarget:function(a,b){var c=this.layer.map.getResolution();if("minResolution"in a&&c<a.minResolution||"maxResolution"in a&&c>=a.maxResolution)return null;for(var c=\n +{node:this.getGeoTolerance(a.nodeTolerance,c),vertex:this.getGeoTolerance(a.vertexTolerance,c),edge:this.getGeoTolerance(a.edgeTolerance,c)},d=Math.max(c.node,c.vertex,c.edge),e={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY},f=!1,g=a.layer.features,h,i,j,k,l,m,n=this.precedence.length,o=new OpenLayers.LonLat(b.x,b.y),p=0,q=g.length;p<q;++p)if(h=g[p],h!==this.feature&&(!h._sketch&&h.state!==OpenLayers.State.DELETE&&(!a.filter||a.filter.evaluate(h)))&&h.atPoint(o,d,d))for(var r=0,s=Math.min(e.rank+\n +1,n);r<s;++r)if(i=this.precedence[r],a[i])if("edge"===i){if(j=h.geometry.distanceTo(b,{details:!0}),l=j.distance,l<=c[i]&&l<e.dist){e={rank:r,dist:l,x:j.x0,y:j.y0};f=!0;break}}else{j=h.geometry.getVertices("node"===i);m=!1;for(var t=0,u=j.length;t<u;++t)if(k=j[t],l=k.distanceTo(b),l<=c[i]&&(r<e.rank||r===e.rank&&l<e.dist))e={rank:r,dist:l,x:k.x,y:k.y},m=f=!0;if(m)break}return f?e:null},getGeoTolerance:function(a,b){b!==this.resolution&&(this.resolution=b,this.geoToleranceCache={});var c=this.geoToleranceCache[a];\n +void 0===c&&(c=a*b,this.geoToleranceCache[a]=c);return c},destroy:function(){this.active&&this.deactivate();delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Date={toISOString:function(){if("toISOString"in Date.prototype)return function(a){return a.toISOString()};var a=function(a,c){for(var d=a+"";d.length<c;)d="0"+d;return d};return function(b){return isNaN(b.getTime())?"Invalid Date":b.getUTCFullYear()+"-"+a(b.getUTCMonth()+1,2)+"-"+a(b.getUTCDate(),2)+"T"+a(b.getUTCHours(),2)+":"+a(b.getUTCMinutes(),2)+":"+a(b.getUTCSeconds(),2)+"."+a(b.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(/^(?:(\\d{4})(?:-(\\d{2})(?:-(\\d{2}))?)?)?(?:(?:T(\\d{1,2}):(\\d{2}):(\\d{2}(?:\\.\\d+)?)(Z|(?:[+-]\\d{1,2}(?::(\\d{2}))?)))|Z)?$/))&&\n +(a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,b=new Date(b.getTime()+-1E3*(60*60*c+60*a)))}}else b=new Date("invalid");return b}};(function(){function a(){this._object=f&&!i?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&(f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\\/]+\\/[^\\+]+\\+xml/))&&\n +(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(i){}try{a.statusText=a._object.statusText}catch(r){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,i=h&&window.navigator.userAgent.match(/MSIE 7.0/);\n +b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,i,m,n){delete this._headers;arguments.length<3&&(i=true);this._async=i;var o=\n +this,p=this.readyState,q;if(h&&i){q=function(){if(p!=b.DONE){e(o);o.abort()}};window.attachEvent("onunload",q)}b.onopen&&b.onopen.apply(this,arguments);arguments.length>4?this._object.open(a,f,i,m,n):arguments.length>3?this._object.open(a,f,i,m):this._object.open(a,f,i);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||i){o.readyState=o._object.readyState;d(o);if(o._aborted)o.readyState=b.UNSENT;else{if(o.readyState==b.DONE){delete o._data;e(o);h&&i&&window.detachEvent("onunload",\n +q)}p!=o.readyState&&c(o);p=o.readyState}}}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);if(a&&a.nodeType){a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml;this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml")}this._data=a;a:{this._object.send(this._data);if(g&&!this._async){this.readyState=b.OPENED;for(d(this);this.readyState<b.DONE;){this.readyState++;c(this);if(this._aborted)break a}}}};\n +b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);if(this.readyState>b.UNSENT)this._aborted=true;this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){if(!this._headers)this._headers={};this._headers[a]=b;return this._object.setRequestHeader(a,\n +b)};b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)break;e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},\n +initEvent:function(){}};a.type=="readystatechange"&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]==a.type&&!c[2]&&(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],\n +b[4]);delete a.__func});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=\n +{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g,kmlColor:/(\\w{2})(\\w{2})(\\w{2})(\\w{2})/,kmlIconPalette:/root:\\/\\/icons\\/palette-(\\d+)(\\.\\w+)/,straightBracket:/\\$\\[(.*?)\\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&\n +(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,\n +b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=\n +null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=\n +d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var i=32*h,j=this.getElementsByTagNameNS(e,"*","Icon")[0];if(j){var k=this.parseProperty(j,"*","href");if(k){var l=this.parseProperty(j,"*","w"),m=this.parseProperty(j,\n +"*","h");OpenLayers.String.startsWith(k,"http://maps.google.com/mapfiles/kml")&&(!l&&!m)&&(m=l=64,h/=2);l=l||m;m=m||l;l&&(d=parseInt(l)*h);m&&(i=parseInt(m)*h);if(m=k.match(this.regExes.kmlIconPalette))l=m[1],m=m[2],k=this.parseProperty(j,"*","x"),j=this.parseProperty(j,"*","y"),k="http://maps.google.com/mapfiles/kml/pal"+l+"/icon"+(8*(j?7-j/32:7)+(k?k/32:0))+m;b.graphicOpacity=1;b.externalGraphic=k}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])k=parseFloat(e.getAttribute("x")),j=parseFloat(e.getAttribute("y")),\n +l=e.getAttribute("xunits"),"pixels"==l?b.graphicXOffset=-k*h:"insetPixels"==l?b.graphicXOffset=-d+k*h:"fraction"==l&&(b.graphicXOffset=-d*k),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-i+j*h+1:"insetPixels"==e?b.graphicYOffset=-(j*h)+1:"fraction"==e&&(b.graphicYOffset=-i*(1-j)+1);b.graphicWidth=d;b.graphicHeight=i;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,\n +"*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);if((a=a.getAttribute("id"))&&b)b.id=a;return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var i=f[g],j=this.parseProperty(i,"*","key");(i=this.parseProperty(i,"*","styleUrl"))&&"normal"==j&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||\n +"")+i])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&(g.attributes&&g.attributes.styleUrl)&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];if(h&&(h=this.parseStyle(h)))g.style=OpenLayers.Util.extend(g.style,h)}if(this.extractTracks){if((f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length)g={features:[],feature:g},\n +this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)}else c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<\n +f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,\n +i,e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;i=c.points[e];h.geometry=i;"z"in i&&(h.attributes.altitude=i.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes){i=0;for(var j=this.trackAttributes.length;i<j;++i)h.attributes[d]=c.attributes[this.trackAttributes[i]][e]}h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(i=c.angles[e],h.attributes.heading=\n +parseFloat(i[0]),h.attributes.tilt=parseFloat(i[1]),h.attributes.roll=parseFloat(i[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],\n +c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||\n +a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),a=[];if(0<b.length)var c=b[0].firstChild.nodeValue,\n +c=c.replace(this.regExes.removeSpace,""),a=c.split(",");b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,i=0;i<e;++i)if(g=\n +d[i].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[i]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[i];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing"),b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=\n +b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=this.parseGeometry[(a.prefix?a.nodeName.split(":")[1]:a.nodeName).toLowerCase()])&&c.push(b.apply(this,[a]));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));for(var d,e,f,a=a.childNodes,c=0,g=\n +a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");\n +var h={},i=e.getElementsByTagName("value");i.length&&(h.value=this.getChildValue(i[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d,a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=\n +null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&\n +(b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name");b.appendChild(this.createTextNode(a.style&&a.style.label?a.style.label:a.attributes.name||a.id));var c=this.createElementNS(this.kmlns,"description");c.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));var d=this.createElementNS(this.kmlns,"Placemark");null!=\n +a.fid&&d.setAttribute("id",a.fid);d.appendChild(b);d.appendChild(c);b=this.buildGeometryNode(a.geometry);d.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&d.appendChild(a);return d},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){return this.buildGeometry.collection.apply(this,\n +[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.kmlns,"Polygon"),a=a.components,c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",\n +c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.kmlns,"coordinates"),\n +c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),c;for(c in a)if(a[c]&&"name"!=c&&"description"!=\n +c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?null:b},\n +CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,\n +keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;\n +this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=\n +null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=\n +this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);!this.disableFirefoxOverflowHack&&"firefox"==OpenLayers.BROWSER_NAME&&(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;\n +a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);!this.autoSize&&!this.size&&this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=\n +a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),\n +c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class=\'"+this.contentDisplayClass+"\'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,\n +null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=\n +a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&(null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML)&&(this.contentDiv.innerHTML=\n +this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),\n +OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){var a=a.clone(),b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-\n +d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-\n +this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;if(!a&&(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,\n +"padding-top")),this.div.parentNode==document.body))document.body.removeChild(this.div),this.div.style.display="";return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,\n +"touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);\n +b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,th + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +is.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},\n +scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";\n +OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},\n +moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);a=this.calculateNewPx(a);OpenLayers.Popup.prototype.moveTo.apply(this,Array(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);this.lonlat&&this.map&&this.moveTo(this.map.getLayerPxFromLonLat(this.lonlat))},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);\n +return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){var a=a.offset(this.anchor.offset),b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});/*\n + Apache 2 \n +\n + Contains portions of Rico <http://openrico.org/>\n +\n + Copyright 2005 Sabre Airline Solutions \n +\n + Licensed under the Apache License, Version 2.0 (the "License"); you\n + may not use this file except in compliance with the License. You\n + may obtain a copy of the License at\n +\n + http://www.apache.org/licenses/LICENSE-2.0 \n +\n + Unless required by applicable law or agreed to in writing, software\n + distributed under the License is distributed on an "AS IS" BASIS,\n + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n + implied. See the License for the specific language governing\n + permissions and limitations under the License. \n +*/\n +OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};\n +OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(a,b,c){this.rgb={r:a,g:b,b:c}},setRed:function(a){this.rgb.r=a},setGreen:function(a){this.rgb.g=a},setBlue:function(a){this.rgb.b=a},setHue:function(a){var b=this.asHSB();b.h=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setSaturation:function(a){var b=this.asHSB();b.s=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setBrightness:function(a){var b=this.asHSB();b.b=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},\n +darken:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.max(b.b-a,0))},brighten:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.min(b.b+a,1))},blend:function(a){this.rgb.r=Math.floor((this.rgb.r+a.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+a.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+a.rgb.b)/2)},isBright:function(){this.asHSB();return 0.5<this.asHSB().b},isDark:function(){return!this.isBright()},asRGB:function(){return"rgb("+\n +this.rgb.r+","+this.rgb.g+","+this.rgb.b+")"},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart()},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b)},toString:function(){return this.asHex()}});\n +OpenLayers.Rico.Color.createFromHex=function(a){if(4==a.length)for(var b=a,a="#",c=1;4>c;c++)a+=b.charAt(c)+b.charAt(c);0==a.indexOf("#")&&(a=a.substring(1));b=a.substring(0,2);c=a.substring(2,4);a=a.substring(4,6);return new OpenLayers.Rico.Color(parseInt(b,16),parseInt(c,16),parseInt(a,16))};\n +OpenLayers.Rico.Color.createColorFromBackground=function(a){var b=OpenLayers.Element.getStyle(OpenLayers.Util.getElement(a),"backgroundColor");return"transparent"==b&&a.parentNode?OpenLayers.Rico.Color.createColorFromBackground(a.parentNode):null==b?new OpenLayers.Rico.Color(255,255,255):0==b.indexOf("rgb(")?(a=b.substring(4,b.length-1).split(","),new OpenLayers.Rico.Color(parseInt(a[0]),parseInt(a[1]),parseInt(a[2]))):0==b.indexOf("#")?OpenLayers.Rico.Color.createFromHex(b):new OpenLayers.Rico.Color(255,\n +255,255)};\n +OpenLayers.Rico.Color.HSBtoRGB=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=parseInt(255*c+0.5);else{var a=6*(a-Math.floor(a)),g=a-Math.floor(a),h=c*(1-b),i=c*(1-b*g),b=c*(1-b*(1-g));switch(parseInt(a)){case 0:d=255*c+0.5;e=255*b+0.5;f=255*h+0.5;break;case 1:d=255*i+0.5;e=255*c+0.5;f=255*h+0.5;break;case 2:d=255*h+0.5;e=255*c+0.5;f=255*b+0.5;break;case 3:d=255*h+0.5;e=255*i+0.5;f=255*c+0.5;break;case 4:d=255*b+0.5;e=255*h+0.5;f=255*c+0.5;break;case 5:d=255*c+0.5,e=255*h+0.5,f=255*i+0.5}}return{r:parseInt(d),g:parseInt(e),\n +b:parseInt(f)}};OpenLayers.Rico.Color.RGBtoHSB=function(a,b,c){var d,e=a>b?a:b;c>e&&(e=c);var f=a<b?a:b;c<f&&(f=c);d=0!=e?(e-f)/e:0;if(0==d)a=0;else{var g=(e-a)/(e-f),h=(e-b)/(e-f),c=(e-c)/(e-f),a=(a==e?c-h:b==e?2+g-c:4+h-g)/6;0>a&&(a+=1)}return{h:a,s:d,b:e/255}};OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};\n +OpenLayers.Rico.Corner={round:function(a,b){a=OpenLayers.Util.getElement(a);this._setOptions(b);var c=this.options.color;"fromElement"==this.options.color&&(c=this._background(a));var d=this.options.bgColor;"fromParent"==this.options.bgColor&&(d=this._background(a.offsetParent));this._roundCornersImpl(a,c,d)},changeColor:function(a,b){a.style.backgroundColor=b;for(var c=a.parentNode.getElementsByTagName("span"),d=0;d<c.length;d++)c[d].style.backgroundColor=b},changeOpacity:function(a,b){var c="alpha(opacity="+\n +100*b+")";a.style.opacity=b;a.style.filter=c;for(var d=a.parentNode.getElementsByTagName("span"),e=0;e<d.length;e++)d[e].style.opacity=b,d[e].style.filter=c},reRound:function(a,b){var c=a.parentNode.childNodes[2];a.parentNode.removeChild(a.parentNode.childNodes[0]);a.parentNode.removeChild(c);this.round(a.parentNode,b)},_roundCornersImpl:function(a,b,c){this.options.border&&this._renderBorder(a,c);this._isTopRounded()&&this._roundTopCorners(a,b,c);this._isBottomRounded()&&this._roundBottomCorners(a,\n +b,c)},_renderBorder:function(a,b){var c="1px solid "+this._borderColor(b);a.innerHTML="<div "+("style=\'border-left: "+c+";"+("border-right: "+c)+"\'")+">"+a.innerHTML+"</div>"},_roundTopCorners:function(a,b,c){for(var d=this._createCorner(c),e=0;e<this.options.numSlices;e++)d.appendChild(this._createCornerSlice(b,c,e,"top"));a.style.paddingTop=0;a.insertBefore(d,a.firstChild)},_roundBottomCorners:function(a,b,c){for(var d=this._createCorner(c),e=this.options.numSlices-1;0<=e;e--)d.appendChild(this._createCornerSlice(b,\n +c,e,"bottom"));a.style.paddingBottom=0;a.appendChild(d)},_createCorner:function(a){var b=document.createElement("div");b.style.backgroundColor=this._isTransparent()?"transparent":a;return b},_createCornerSlice:function(a,b,c,d){var e=document.createElement("span"),f=e.style;f.backgroundColor=a;f.display="block";f.height="1px";f.overflow="hidden";f.fontSize="1px";a=this._borderColor(a,b);this.options.border&&0==c?(f.borderTopStyle="solid",f.borderTopWidth="1px",f.borderLeftWidth="0px",f.borderRightWidth=\n +"0px",f.borderBottomWidth="0px",f.height="0px",f.borderColor=a):a&&(f.borderColor=a,f.borderStyle="solid",f.borderWidth="0px 1px");!this.options.compact&&c==this.options.numSlices-1&&(f.height="2px");this._setMargin(e,c,d);this._setBorder(e,c,d);return e},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:!0,border:!1,compact:!1};OpenLayers.Util.extend(this.options,a||{});this.options.numSlices=this.options.compact?2:4;this._isTransparent()&&(this.options.blend=\n +!1)},_whichSideTop:function(){return this._hasString(this.options.corners,"all","top")||0<=this.options.corners.indexOf("tl")&&0<=this.options.corners.indexOf("tr")?"":0<=this.options.corners.indexOf("tl")?"left":0<=this.options.corners.indexOf("tr")?"right":""},_whichSideBottom:function(){return this._hasString(this.options.corners,"all","bottom")||0<=this.options.corners.indexOf("bl")&&0<=this.options.corners.indexOf("br")?"":0<=this.options.corners.indexOf("bl")?"left":0<=this.options.corners.indexOf("br")?\n +"right":""},_borderColor:function(a,b){return"transparent"==a?b:this.options.border?this.options.border:this.options.blend?this._blend(b,a):""},_setMargin:function(a,b,c){b=this._marginSize(b);c="top"==c?this._whichSideTop():this._whichSideBottom();"left"==c?(a.style.marginLeft=b+"px",a.style.marginRight="0px"):"right"==c?(a.style.marginRight=b+"px",a.style.marginLeft="0px"):(a.style.marginLeft=b+"px",a.style.marginRight=b+"px")},_setBorder:function(a,b,c){b=this._borderSize(b);c="top"==c?this._whichSideTop():\n +this._whichSideBottom();"left"==c?(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth="0px"):"right"==c?(a.style.borderRightWidth=b+"px",a.style.borderLeftWidth="0px"):(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px");!1!=this.options.border&&(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px")},_marginSize:function(a){if(this._isTransparent())return 0;var b=[5,3,2,1],c=[3,2,1,0],d=[2,1],e=[1,0];return this.options.compact&&this.options.blend?e[a]:this.options.compact?\n +d[a]:this.options.blend?c[a]:b[a]},_borderSize:function(a){var b=[5,3,2,1],c=[2,1,1,1],d=[1,0],e=[0,2,0,0];return this.options.compact&&(this.options.blend||this._isTransparent())?1:this.options.compact?d[a]:this.options.blend?c[a]:this.options.border?e[a]:this._isTransparent()?b[a]:0},_hasString:function(a){for(var b=1;b<arguments.length;b++)if(0<=a.indexOf(arguments[b]))return!0;return!1},_blend:function(a,b){var c=OpenLayers.Rico.Color.createFromHex(a);c.blend(OpenLayers.Rico.Color.createFromHex(b));\n +return c},_background:function(a){try{return OpenLayers.Rico.Color.createColorFromBackground(a).asHex()}catch(b){return"#ffffff"}},_isTransparent:function(){return"transparent"==this.options.color},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr")},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br")},_hasSingleTextChild:function(a){return 1==a.childNodes.length&&3==a.childNodes[0].nodeType}};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Console.warn("AnchoredBubble is deprecated");this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments)},draw:function(a){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();\n +this.setOpacity();return this.div},updateRelativePosition:function(){this.setRicoCorners()},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners()},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=a);null!=this.div&&null!=this.contentDiv&&(this.div.style.background="transparent",OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor))},setOpacity:function(a){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,\n +a);null!=this.div&&null!=this.groupDiv&&OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity)},setBorder:function(){this.border=0},setRicoCorners:function(){var a={corners:this.getCornersToRound(this.relativePosition),color:this.backgroundColor,bgColor:"transparent",blend:!1};this.rounded?(OpenLayers.Rico.Corner.reRound(this.groupDiv,a),this.setBackgroundColor(),this.setOpacity()):(OpenLayers.Rico.Corner.round(this.div,a),this.rounded=!0)},getCornersToRound:function(){var a=["tl","tr",\n +"bl","br"],b=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(a,b);return a.join(" ")},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,readOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,\n +srsName:this.srsName,schema:this.schema},this.formatOptions)));!a.geometryName&&1<parseFloat(this.format.version)&&this.setGeometryName(null)},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),\n +c=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",a)]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},setFeatureType:function(a){this.featureType=a;this.format.featureType=a},setGeometryName:function(a){this.geometryName=a;this.format.geometryName=a},handleRead:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);if(b.callback){var c=\n +a.priv;200<=c.status&&300>c.status?(c=this.parseResponse(c,b.readOptions))&&!1!==c.success?(b.readOptions&&"object"==b.readOptions.output?OpenLayers.Util.extend(a,c):a.features=c,a.code=OpenLayers.Protocol.Response.SUCCESS):(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseResponse:function(a,b){var c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;if(!c||0>=c.length)return null;c=null!==this.readFormat?this.readFormat.read(c):\n +this.format.read(c,b);if(!this.featureNS){var d=this.readFormat||this.format;this.featureNS=d.featureNS;d.autoConfig=!1;this.geometryName||this.setGeometryName(d.geometryName)}return c},commit:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:a});c.priv=OpenLayers.Request.POST({url:b.url,headers:b.headers,data:this.format.write(a,b),callback:this.createCallback(this.handleCommit,c,b)});\n +return c},handleCommit:function(a,b){if(b.callback){var c=a.priv,d=c.responseXML;if(!d||!d.documentElement)d=c.responseText;c=this.format.read(d)||{};a.insertIds=c.insertIds||[];c.success?a.code=OpenLayers.Protocol.Response.SUCCESS:(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c);b.callback.call(b.scope,a)}},filterDelete:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);new OpenLayers.Protocol.Response({requestType:"commit"});var c=this.format.createElementNSPlus("wfs:Transaction",\n +{attributes:{service:"WFS",version:this.version}}),d=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(b.featureNS?this.featurePrefix+":":"")+b.featureType}});b.featureNS&&d.setAttribute("xmlns:"+this.featurePrefix,b.featureNS);var e=this.format.writeNode("ogc:Filter",a);d.appendChild(e);c.appendChild(d);c=OpenLayers.Format.XML.prototype.write.apply(this.format,[c]);return OpenLayers.Request.POST({url:this.url,callback:b.callback||function(){},data:c})},abort:function(a){a&&a.priv.abort()},\n +CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});OpenLayers.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:!1,citeCompliant:!1,mouseDown:!1,stoppedDown:null,lastDown:null,lastUp:null,persist:!1,stopDown:!1,stopUp:!1,layerOptions:null,pixelTolerance:5,touch:!1,lastTouchPx:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,\n +arguments))return!1;var a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);return!0},createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();\n +this.layer.addFeatures([this.point],{silent:!0})},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments))return!1;this.cancel();null!=this.layer.map&&(this.destroyFeature(!0),this.layer.destroy(!1));this.layer=null;this.touch=!1;return!0},destroyFeature:function(a){this.layer&&(a||!this.persist)&&this.layer.destroyFeatures();this.point=null},destroyPersistedFeature:function(){var a=this.layer;a&&1<a.features.length&&this.layer.features[0].destroy()},finalize:function(a){this.mouseDown=\n +!1;this.lastTouchPx=this.lastUp=this.lastDown=null;this.callback(a?"cancel":"done",[this.geometryClone()]);this.destroyFeature(a)},cancel:function(){this.finalize(!0)},click:function(a){OpenLayers.Event.stop(a);return!1},dblclick:function(a){OpenLayers.Event.stop(a);return!1},modifyFeature:function(a){this.point||this.createFeature(a);a=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=a.lon;this.point.geometry.y=a.lat;this.callback("modify",[this.point.geometry,this.point,!1]);this.point.geometry.clearBounds();\n +this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},getGeometry:function(){var a=this.point&&this.point.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPoint([a]));return a},geometryClone:function(){var a=this.getGeometry();return a&&a.clone()},mousedown:function(a){return this.down(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,\n +scope:this}));this.lastTouchPx=a.xy;return this.down(a)},mousemove:function(a){return this.move(a)},touchmove:function(a){this.lastTouchPx=a.xy;return this.move(a)},mouseup:function(a){return this.up(a)},touchend:function(a){a.xy=this.lastTouchPx;return this.up(a)},down:function(a){this.mouseDown=!0;this.lastDown=a.xy;this.touch||this.modifyFeature(a.xy);this.stoppedDown=this.stopDown;return!this.stopDown},move:function(a){!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy);\n +return!0},up:function(a){this.mouseDown=!1;this.stoppedDown=this.stopDown;return this.checkModifiers(a)&&(!this.lastUp||!this.lastUp.equals(a.xy))&&this.lastDown&&this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)?(this.touch&&this.modifyFeature(a.xy),this.persist&&this.destroyPersistedFeature(),this.lastUp=a.xy,this.finalize(),!this.stopUp):!0},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.stoppedDown=this.stopDown,this.mouseDown=!1)},passesTolerance:function(a,\n +b,c){var d=!0;null!=c&&a&&b&&a.distanceTo(b)>c&&(d=!1);return d},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,maxVertices:null,doubleTouchTolerance:20,freehand:!1,freehandToggle:"shiftKey",timerId:null,redoStack:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);\n +this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:!0})},destroyFeature:function(a){OpenLayers.Handler.Point.prototype.destroyFeature.call(this,a);this.line=null},destroyPersistedFeature:function(){var a=this.layer;a&&2<a.features.length&&this.layer.features[0].destroy()},removePoint:function(){this.point&&this.layer.removeFeatures([this.point])},addPoint:function(a){this.layer.removeFeatures([this.point]);a=this.layer.getLonLatFromViewPortPx(a);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.lon,\n +a.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.layer.addFeatures([this.point]);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();delete this.redoStack},insertXY:function(a,b){this.line.geometry.addComponent(new OpenLayers.Geometry.Point(a,b),this.getCurrentPointIndex());this.drawFeature();delete this.redoStack},insertDeltaXY:function(a,b){var c=this.line.geometry.components[this.getCurrentPointIndex()-\n +1];c&&(!isNaN(c.x)&&!isNaN(c.y))&&this.insertXY(c.x+a,c.y+b)},insertDirectionLength:function(a,b){var a=a*(Math.PI/180),c=b*Math.cos(a),d=b*Math.sin(a);this.insertDeltaXY(c,d)},insertDeflectionLength:function(a,b){var c=this.getCurrentPointIndex()-1;if(0<c){var d=this.line.geometry.components[c],c=this.line.geometry.components[c-1];this.insertDirectionLength(180*Math.atan2(d.y-c.y,d.x-c.x)/Math.PI+a,b)}},getCurrentPointIndex:function(){return this.line.geometry.components.length-1},undo:function(){var a=\n +this.line.geometry,b=a.components,c=this.getCurrentPointIndex()-1,b=b[c];if(a=a.removeComponent(b))this.redoStack||(this.redoStack=[]),this.redoStack.push(b),this.drawFeature();return a},redo:function(){var a=this.redoStack&&this.redoStack.pop();a&&(this.line.geometry.addComponent(a,this.getCurrentPointIndex()),this.drawFeature());return!!a},freehandMode:function(a){return this.freehandToggle&&a[this.freehandToggle]?!this.freehand:this.freehand},modifyFeature:function(a,b){this.line||this.createFeature(a);\n +var c=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=c.lon;this.point.geometry.y=c.lat;this.callback("modify",[this.point.geometry,this.getSketch(),b]);this.point.geometry.clearBounds();this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.line},getGeometry:function(){var a=this.line&&this.line.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiLineString([a]));return a},\n +touchstart:function(a){if(this.timerId&&this.passesTolerance(this.lastTouchPx,a.xy,this.doubleTouchTolerance))return this.finishGeometry(),window.clearTimeout(this.timerId),this.timerId=null,!1;this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);this.timerId=window.setTimeout(OpenLayers.Function.bind(function(){this.timerId=null},this),300);return OpenLayers.Handler.Point.prototype.touchstart.call(this,a)},down:function(a){var b=this.stopDown;this.freehandMode(a)&&(b=!0,this.touch&&\n +(this.modifyFeature(a.xy,!!this.lastUp),OpenLayers.Event.stop(a)));!this.touch&&(!this.lastDown||!this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance))&&this.modifyFeature(a.xy,!!this.lastUp);this.mouseDown=!0;this.lastDown=a.xy;this.stoppedDown=b;return!b},move:function(a){if(this.stoppedDown&&this.freehandMode(a))return this.persist&&this.destroyPersistedFeature(),this.maxVertices&&this.line&&this.line.geometry.components.length===this.maxVertices?(this.removePoint(),this.finalize()):this.addPoint(a.xy),\n +!1;!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy,!!this.lastUp);return!0},up:function(a){if(this.mouseDown&&(!this.lastUp||!this.lastUp.equals(a.xy)))this.stoppedDown&&this.freehandMode(a)?(this.persist&&this.destroyPersistedFeature(),this.removePoint(),this.finalize()):this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)&&(this.touch&&this.modifyFeature(a.xy),null==this.lastUp&&this.persist&&this.destroyPersistedFeature(),this.addPoint(a.xy),this.lastUp=a.xy,this.line.geometry.components.length===\n +this.maxVertices+1&&this.finishGeometry());this.stoppedDown=this.stopDown;this.mouseDown=!1;return!this.stopUp},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-1]);this.removePoint();this.finalize()},dblclick:function(a){this.freehandMode(a)||this.finishGeometry();return!1},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Spherical=OpenLayers.Spherical||{};OpenLayers.Spherical.DEFAULT_RADIUS=6378137;OpenLayers.Spherical.computeDistanceBetween=function(a,b,c){var c=c||OpenLayers.Spherical.DEFAULT_RADIUS,d=Math.sin(Math.PI*(b.lon-a.lon)/360),e=Math.sin(Math.PI*(b.lat-a.lat)/360),a=e*e+d*d*Math.cos(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180);return 2*c*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))};\n +OpenLayers.Spherical.computeHeading=function(a,b){var c=Math.sin(Math.PI*(a.lon-b.lon)/180)*Math.cos(Math.PI*b.lat/180),d=Math.cos(Math.PI*a.lat/180)*Math.sin(Math.PI*b.lat/180)-Math.sin(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180)*Math.cos(Math.PI*(a.lon-b.lon)/180);return 180*Math.atan2(c,d)/Math.PI};OpenLayers.Control.CacheWrite=OpenLayers.Class(OpenLayers.Control,{layers:null,imageFormat:"image/png",quotaRegEx:/quota/i,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.on({tileloadstart:this.makeSameOrigin,tileloaded:this.cache,scope:this})},removeLayer:function(a){a.layer.events.un({tileloadstart:this.makeSameOrigin,\n +tileloaded:this.cache,scope:this})},makeSameOrigin:function(a){if(this.active&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&!a.crossOriginKeyword&&"data:"!==a.url.substr(0,5))){var b=OpenLayers.Request.makeSameOrigin(a.url,OpenLayers.ProxyHost);OpenLayers.Control.CacheWrite.urlMap[b]=a.url;a.url=b}},cache:function(a){if(this.active&&window.localStorage&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&"data:"!==a.url.substr(0,5)))try{var b=a.getCanvasContext();if(b){var c=OpenLayers.Control.CacheWrite.urlMap;\n +window.localStorage.setItem("olCache_"+(c[a.url]||a.url),b.canvas.toDataURL(this.imageFormat));delete c[a.url]}}catch(d){(b=d.name||d.message)&&this.quotaRegEx.test(b)?this.events.triggerEvent("cachefull",{tile:a}):OpenLayers.Console.error(d.toString())}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,\n +arguments)},CLASS_NAME:"OpenLayers.Control.CacheWrite"});OpenLayers.Control.CacheWrite.clearCache=function(){if(window.localStorage){var a,b;for(a=window.localStorage.length-1;0<=a;--a)b=window.localStorage.key(a),"olCache_"===b.substr(0,8)&&window.localStorage.removeItem(b)}};OpenLayers.Control.CacheWrite.urlMap={};OpenLayers.Format.Context=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{layerOptions:null,layerParams:null,read:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this,arguments);if(b&&b.map)if(this.context=c,b.map instanceof OpenLayers.Map)c=this.mergeContextToMap(c,b.map);else{var d=b.map;if(OpenLayers.Util.isElement(d)||"string"==typeof d)d={div:d};c=this.contextToMap(c,d)}return c},getLayerFromContext:function(a){var b,c,d={queryable:a.queryable,visibility:a.visibility,\n +maxExtent:a.maxExtent,metadata:OpenLayers.Util.applyDefaults(a.metadata,{styles:a.styles,formats:a.formats,"abstract":a["abstract"],dataURL:a.dataURL}),numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.tileSize?new OpenLayers.Size(a.tileSize.width,a.tileSize.height):void 0,minScale:a.minScale||a.maxScaleDenominator,maxScale:a.maxScale||a.minScaleDenominator,srs:a.srs,dimensions:a.dimensions,\n +metadataURL:a.metadataURL};this.layerOptions&&OpenLayers.Util.applyDefaults(d,this.layerOptions);var e={layers:a.name,transparent:a.transparent,version:a.version};if(a.formats&&0<a.formats.length){e.format=a.formats[0].value;b=0;for(c=a.formats.length;b<c;b++){var f=a.formats[b];if(!0==f.current){e.format=f.value;break}}}if(a.styles&&0<a.styles.length){b=0;for(c=a.styles.length;b<c;b++)if(f=a.styles[b],!0==f.current){f.href?e.sld=f.href:f.body?e.sld_body=f.body:e.styles=f.name;break}}this.layerParams&&\n +OpenLayers.Util.applyDefaults(e,this.layerParams);b=null;c=a.service;c==OpenLayers.Format.Context.serviceTypes.WFS?(d.strategies=[new OpenLayers.Strategy.BBOX],d.protocol=new OpenLayers.Protocol.WFS({url:a.url,featurePrefix:a.name.split(":")[0],featureType:a.name.split(":").pop()}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.KML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.KML}),\n +b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.GML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.GML}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):a.features?(b=new OpenLayers.Layer.Vector(a.title||a.name,d),b.addFeatures(a.features)):!0!==a.categoryLayer&&(b=new OpenLayers.Layer.WMS(a.title||a.name,a.url,e,d));return b},getLayersFromContext:function(a){for(var b=[],c=\n +0,d=a.length;c<d;c++){var e=this.getLayerFromContext(a[c]);null!==e&&b.push(e)}return b},contextToMap:function(a,b){b=OpenLayers.Util.applyDefaults({maxExtent:a.maxExtent,projection:a.projection,units:a.units},b);b.maxExtent&&(b.maxResolution=b.maxExtent.getWidth()/OpenLayers.Map.TILE_WIDTH);b.metadata={contactInformation:a.contactInformation,"abstract":a["abstract"],keywords:a.keywords,logo:a.logo,descriptionURL:a.descriptionURL};var c=new OpenLayers.Map(b);c.addLayers(this.getLayersFromContext(a.layersContext));\n +c.setCenter(a.bounds.getCenterLonLat(),c.getZoomForExtent(a.bounds,!0));return c},mergeContextToMap:function(a,b){b.addLayers(this.getLayersFromContext(a.layersContext));return b},write:function(a,b){a=this.toContext(a);return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this,arguments)},CLASS_NAME:"OpenLayers.Format.Context"});\n +OpenLayers.Format.Context.serviceTypes={WMS:"urn:ogc:serviceType:WMS",WFS:"urn:ogc:serviceType:WFS",WCS:"urn:ogc:serviceType:WCS",GML:"urn:ogc:serviceType:GML",SLD:"urn:ogc:serviceType:SLD",FES:"urn:ogc:serviceType:FES",KML:"urn:ogc:serviceType:KML"};OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",layerToContext:function(a){var b=this.getParser(),c={queryable:a.queryable,visibility:a.visibility,name:a.params.LAYERS,title:a.name,"abstract":a.metadata["abstract"],dataURL:a.metadata.dataURL,metadataURL:a.metadataURL,server:{version:a.params.VERSION,url:a.url},maxExtent:a.maxExtent,transparent:a.params.TRANSPARENT,numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:1==a.opacity?void 0:\n +a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.singleTile||!a.tileSize?void 0:{width:a.tileSize.w,height:a.tileSize.h},minScale:a.options.resolutions||a.options.scales||a.options.maxResolution||a.options.minScale?a.minScale:void 0,maxScale:a.options.resolutions||a.options.scales||a.options.minResolution||a.options.maxScale?a.maxScale:void 0,formats:[],styles:[],srs:a.srs,dimensions:a.dimensions};a.metadata.servertitle&&(c.server.title=a.metadata.servertitle);\n +if(a.metadata.formats&&0<a.metadata.formats.length)for(var d=0,e=a.metadata.formats.length;d<e;d++){var f=a.metadata.formats[d];c.formats.push({value:f.value,current:f.value==a.params.FORMAT})}else c.formats.push({value:a.params.FORMAT,current:!0});if(a.metadata.styles&&0<a.metadata.styles.length){d=0;for(e=a.metadata.styles.length;d<e;d++)b=a.metadata.styles[d],b.current=b.href==a.params.SLD||b.body==a.params.SLD_BODY||b.name==a.params.STYLES?!0:!1,c.styles.push(b)}else c.styles.push({href:a.params.SLD,\n +body:a.params.SLD_BODY,name:a.params.STYLES||b.defaultStyleName,title:b.defaultStyleTitle,current:!0});return c},toContext:function(a){var b={},c=a.layers;if("OpenLayers.Map"==a.CLASS_NAME){var d=a.metadata||{};b.size=a.getSize();b.bounds=a.getExtent();b.projection=a.projection;b.title=a.title;b.keywords=d.keywords;b["abstract"]=d["abstract"];b.logo=d.logo;b.descriptionURL=d.descriptionURL;b.contactInformation=d.contactInformation;b.maxExtent=a.maxExtent}else OpenLayers.Util.applyDefaults(b,a),void 0!=\n +b.layers&&delete b.layers;void 0==b.layersContext&&(b.layersContext=[]);if(void 0!=c&&OpenLayers.Util.isArray(c)){a=0;for(d=c.length;a<d;a++){var e=c[a];e instanceof OpenLayers.Layer.WMS&&b.layersContext.push(this.layerToContext(e))}}return b},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(a){var b=null;if(null==a)b=this.namespaces[this.defaultPrefix];else for(b in this.namespaces)if(this.namespaces[b]==a)break;return b},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",\n +defaultStyleTitle:"Default",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a=a.documentElement;this.rootPrefix=a.prefix;var b={version:a.getAttribute("version")};this.runChildNodes(b,a);return b},runChildNodes:function(a,b){for(var c=b.childNodes,d,e,f,g=0,h=c.length;g<h;++g)d=c[g],1==d.nodeType&&(e=this.getNamespacePrefix(d.namespaceURI),f=d.nodeName.split(":").pop(),\n +(e=this["read_"+e+"_"+f])&&e.apply(this,[a,d]))},read_wmc_General:function(a,b){this.runChildNodes(a,b)},read_wmc_BoundingBox:function(a,b){a.projection=b.getAttribute("SRS");a.bounds=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"))},read_wmc_LayerList:function(a,b){a.layersContext=[];this.runChildNodes(a,b)},read_wmc_Layer:function(a,b){var c={visibility:"1"!=b.getAttribute("hidden"),queryable:"1"==b.getAttribute("queryable"),formats:[],\n +styles:[],metadata:{}};this.runChildNodes(c,b);a.layersContext.push(c)},read_wmc_Extension:function(a,b){this.runChildNodes(a,b)},read_ol_units:function(a,b){a.units=this.getChildValue(b)},read_ol_maxExtent:function(a,b){var c=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"));a.maxExtent=c},read_ol_transparent:function(a,b){a.transparent=this.getChildValue(b)},read_ol_numZoomLevels:function(a,b){a.numZoomLevels=parseInt(this.getChildValue(b))},\n +read_ol_opacity:function(a,b){a.opacity=parseFloat(this.getChildValue(b))},read_ol_singleTile:function(a,b){a.singleTile="true"==this.getChildValue(b)},read_ol_tileSize:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height")};a.tileSize=c},read_ol_isBaseLayer:function(a,b){a.isBaseLayer="true"==this.getChildValue(b)},read_ol_displayInLayerSwitcher:function(a,b){a.displayInLayerSwitcher="true"==this.getChildValue(b)},read_wmc_Server:function(a,b){a.version=b.getAttribute("version");\n +a.url=this.getOnlineResource_href(b);a.metadata.servertitle=b.getAttribute("title")},read_wmc_FormatList:function(a,b){this.runChildNodes(a,b)},read_wmc_Format:function(a,b){var c={value:this.getChildValue(b)};"1"==b.getAttribute("current")&&(c.current=!0);a.formats.push(c)},read_wmc_StyleList:function(a,b){this.runChildNodes(a,b)},read_wmc_Style:function(a,b){var c={};this.runChildNodes(c,b);"1"==b.getAttribute("current")&&(c.current=!0);a.styles.push(c)},read_wmc_SLD:function(a,b){this.runChildNodes(a,\n +b)},read_sld_StyledLayerDescriptor:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_sld_FeatureTypeStyle:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_wmc_OnlineResource:function(a,b){a.href=this.getAttributeNS(b,this.namespaces.xlink,"href")},read_wmc_Name:function(a,b){var c=this.getChildValue(b);c&&(a.name=c)},read_wmc_Title:function(a,b){var c=this.getChildValue(b);c&&(a.title=c)},read_wmc_MetadataURL:function(a,\n +b){a.metadataURL=this.getOnlineResource_href(b)},read_wmc_KeywordList:function(a,b){a.keywords=[];this.runChildNodes(a.keywords,b)},read_wmc_Keyword:function(a,b){a.push(this.getChildValue(b))},read_wmc_Abstract:function(a,b){var c=this.getChildValue(b);c&&(a["abstract"]=c)},read_wmc_LogoURL:function(a,b){a.logo={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),href:this.getOnlineResource_href(b)}},read_wmc_DescriptionURL:function(a,b){a.descriptionURL=\n +this.getOnlineResource_href(b)},read_wmc_ContactInformation:function(a,b){var c={};this.runChildNodes(c,b);a.contactInformation=c},read_wmc_ContactPersonPrimary:function(a,b){var c={};this.runChildNodes(c,b);a.personPrimary=c},read_wmc_ContactPerson:function(a,b){var c=this.getChildValue(b);c&&(a.person=c)},read_wmc_ContactOrganization:function(a,b){var c=this.getChildValue(b);c&&(a.organization=c)},read_wmc_ContactPosition:function(a,b){var c=this.getChildValue(b);c&&(a.position=c)},read_wmc_ContactAddress:function(a,\n +b){var c={};this.runChildNodes(c,b);a.contactAddress=c},read_wmc_AddressType:function(a,b){var c=this.getChildValue(b);c&&(a.type=c)},read_wmc_Address:function(a,b){var c=this.getChildValue(b);c&&(a.address=c)},read_wmc_City:function(a,b){var c=this.getChildValue(b);c&&(a.city=c)},read_wmc_StateOrProvince:function(a,b){var c=this.getChildValue(b);c&&(a.stateOrProvince=c)},read_wmc_PostCode:function(a,b){var c=this.getChildValue(b);c&&(a.postcode=c)},read_wmc_Country:function(a,b){var c=this.getChildValue(b);\n +c&&(a.country=c)},read_wmc_ContactVoiceTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.phone=c)},read_wmc_ContactFacsimileTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.fax=c)},read_wmc_ContactElectronicMailAddress:function(a,b){var c=this.getChildValue(b);c&&(a.email=c)},read_wmc_DataURL:function(a,b){a.dataURL=this.getOnlineResource_href(b)},read_wmc_LegendURL:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),\n +href:this.getOnlineResource_href(b)};a.legend=c},read_wmc_DimensionList:function(a,b){a.dimensions={};this.runChildNodes(a.dimensions,b)},read_wmc_Dimension:function(a,b){var c={name:b.getAttribute("name").toLowerCase(),units:b.getAttribute("units")||"",unitSymbol:b.getAttribute("unitSymbol")||"",userValue:b.getAttribute("userValue")||"",nearestValue:"1"===b.getAttribute("nearestValue"),multipleValues:"1"===b.getAttribute("multipleValues"),current:"1"===b.getAttribute("current"),"default":b.getAttribute("default")||\n +""},d=this.getChildValue(b);c.values=d.split(",");a[c.name]=c},write:function(a,b){var c=this.createElementDefaultNS("ViewContext");this.setAttributes(c,{version:this.VERSION,id:b&&"string"==typeof b.id?b.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);c.appendChild(this.write_wmc_General(a));c.appendChild(this.write_wmc_LayerList(a));return OpenLayers.Format.XML.prototype.write.apply(this,[c])},createElementDefaultNS:function(a,\n +b,c){a=this.createElementNS(this.namespaces[this.defaultPrefix],a);b&&a.appendChild(this.createTextNode(b));c&&this.setAttributes(a,c);return a},setAttributes:function(a,b){var c,d;for(d in b)c=b[d].toString(),c.match(/[A-Z]/)?this.setAttributeNS(a,null,d,c):a.setAttribute(d,c)},write_wmc_General:function(a){var b=this.createElementDefaultNS("General");a.size&&b.appendChild(this.createElementDefaultNS("Window",null,{width:a.size.w,height:a.size.h}));var c=a.bounds;b.appendChild(this.createElementDefaultNS("BoundingBox",\n +null,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),maxy:c.top.toPrecision(18),SRS:a.projection}));b.appendChild(this.createElementDefaultNS("Title",a.title));a.keywords&&b.appendChild(this.write_wmc_KeywordList(a.keywords));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.logo&&b.appendChild(this.write_wmc_URLType("LogoURL",a.logo.href,a.logo));a.descriptionURL&&b.appendChild(this.write_wmc_URLType("DescriptionURL",a.descriptionURL));\n +a.contactInformation&&b.appendChild(this.write_wmc_ContactInformation(a.contactInformation));b.appendChild(this.write_ol_MapExtension(a));return b},write_wmc_KeywordList:function(a){for(var b=this.createElementDefaultNS("KeywordList"),c=0,d=a.length;c<d;c++)b.appendChild(this.createElementDefaultNS("Keyword",a[c]));return b},write_wmc_ContactInformation:function(a){var b=this.createElementDefaultNS("ContactInformation");a.personPrimary&&b.appendChild(this.write_wmc_ContactPersonPrimary(a.personPrimary));\n +a.position&&b.appendChild(this.createElementDefaultNS("ContactPosition",a.position));a.contactAddress&&b.appendChild(this.write_wmc_ContactAddress(a.contactAddress));a.phone&&b.appendChild(this.createElementDefaultNS("ContactVoiceTelephone",a.phone));a.fax&&b.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone",a.fax));a.email&&b.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress",a.email));return b},write_wmc_ContactPersonPrimary:function(a){var b=this.createElementDefaultNS("ContactPersonPrimary");\n +a.person&&b.appendChild(this.createElementDefaultNS("ContactPerson",a.person));a.organization&&b.appendChild(this.createElementDefaultNS("ContactOrganization",a.organization));return b},write_wmc_ContactAddress:function(a){var b=this.createElementDefaultNS("ContactAddress");a.type&&b.appendChild(this.createElementDefaultNS("AddressType",a.type));a.address&&b.appendChild(this.createElementDefaultNS("Address",a.address));a.city&&b.appendChild(this.createElementDefaultNS("City",a.city));a.stateOrProvince&&\n +b.appendChild(this.createElementDefaultNS("StateOrProvince",a.stateOrProvince));a.postcode&&b.appendChild(this.createElementDefaultNS("PostCode",a.postcode));a.country&&b.appendChild(this.createElementDefaultNS("Country",a.country));return b},write_ol_MapExtension:function(a){var b=this.createElementDefaultNS("Extension");if(a=a.maxExtent){var c=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(c,{minx:a.left.toPrecision(18),miny:a.bottom.toPrecision(18),maxx:a.right.toPrecision(18),\n +maxy:a.top.toPrecision(18)});b.appendChild(c)}return b},write_wmc_LayerList:function(a){for(var b=this.createElementDefaultNS("LayerList"),c=0,d=a.layersContext.length;c<d;++c)b.appendChild(this.write_wmc_Layer(a.layersContext[c]));return b},write_wmc_Layer:function(a){var b=this.createElementDefaultNS("Layer",null,{queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1"});b.appendChild(this.write_wmc_Server(a));b.appendChild(this.createElementDefaultNS("Name",a.name));b.appendChild(this.createElementDefaultNS("Title",\n +a.title));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.dataURL&&b.appendChild(this.write_wmc_URLType("DataURL",a.dataURL));a.metadataURL&&b.appendChild(this.write_wmc_URLType("MetadataURL",a.metadataURL));return b},write_wmc_LayerExtension:function(a){var b=this.createElementDefaultNS("Extension"),c=a.maxExtent,d=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(d,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),\n +maxy:c.top.toPrecision(18)});b.appendChild(d);a.tileSize&&!a.singleTile&&(c=this.createElementNS(this.namespaces.ol,"ol:tileSize"),this.setAttributes(c,a.tileSize),b.appendChild(c));for(var c="transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile".split(" "),e=0,f=c.length;e<f;++e)(d=this.createOLPropertyNode(a,c[e]))&&b.appendChild(d);return b},createOLPropertyNode:function(a,b){var c=null;null!=a[b]&&(c=this.createElementNS(this.namespaces.ol,"ol:"+b),c.appendChild(this.createTextNode(a[b].toString())));\n +return c},write_wmc_Server:function(a){var a=a.server,b=this.createElementDefaultNS("Server"),c={service:"OGC:WMS",version:a.version};a.title&&(c.title=a.title);this.setAttributes(b,c);b.appendChild(this.write_wmc_OnlineResource(a.url));return b},write_wmc_URLType:function(a,b,c){a=this.createElementDefaultNS(a);a.appendChild(this.write_wmc_OnlineResource(b));if(c)for(var b=["width","height","format"],d=0;d<b.length;d++)b[d]in c&&a.setAttribute(b[d],c[b[d]]);return a},write_wmc_DimensionList:function(a){var b=\n +this.createElementDefaultNS("DimensionList"),c;for(c in a.dimensions){var d={},e=a.dimensions[c],f;for(f in e)d[f]="boolean"==typeof e[f]?Number(e[f]):e[f];e="";d.values&&(e=d.values.join(","),delete d.values);b.appendChild(this.createElementDefaultNS("Dimension",e,d))}return b},write_wmc_FormatList:function(a){for(var b=this.createElementDefaultNS("FormatList"),c=0,d=a.formats.length;c<d;c++){var e=a.formats[c];b.appendChild(this.createElementDefaultNS("Format",e.value,e.current&&!0==e.current?{current:"1"}:\n +null))}return b},write_wmc_StyleList:function(a){var b=this.createElementDefaultNS("StyleList");if((a=a.styles)&&OpenLayers.Util.isArray(a))for(var c,d=0,e=a.length;d<e;d++){var f=a[d],g=this.createElementDefaultNS("Style",null,f.current&&!0==f.current?{current:"1"}:null);f.href?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",\n +f.legend.href,f.legend)),f=this.write_wmc_OnlineResource(f.href),c.appendChild(f),g.appendChild(c)):f.body?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)),f=OpenLayers.Format.XML.prototype.read.apply(this,[f.body]).documentElement,c.ownerDocument&&c.ownerDocument.importNode&&(f=c.ownerDocument.importNode(f,\n +!0)),c.appendChild(f),g.appendChild(c)):(g.appendChild(this.createElementDefaultNS("Name",f.name)),g.appendChild(this.createElementDefaultNS("Title",f.title)),f["abstract"]&&g.appendChild(this.createElementDefaultNS("Abstract",f["abstract"])),f.legend&&g.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)));b.appendChild(g)}return b},write_wmc_OnlineResource:function(a){var b=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(b,this.namespaces.xlink,"xlink:type",\n +"simple");this.setAttributeNS(b,this.namespaces.xlink,"xlink:href",a);return b},getOnlineResource_href:function(a){var b={},a=a.getElementsByTagName("OnlineResource");0<a.length&&this.read_wmc_OnlineResource(b,a[0]);return b.href},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,slideRatio:null,initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);a={slideFactor:this.slideFactor,slideRatio:this.slideRatio};this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,a)])},\n +CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,\n +addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Kinetic=OpenLayers.Class({threshold:0,deceleration:0.0035,nbPoints:100,delay:200,points:void 0,timerId:void 0,initialize:function(a){OpenLayers.Util.extend(this,a)},begin:function(){OpenLayers.Animation.stop(this.timerId);this.timerId=void 0;this.points=[]},update:function(a){this.points.unshift({xy:a,tick:(new Date).getTime()});this.points.length>this.nbPoints&&this.points.pop()},end:function(a){for(var b,c=(new Date).getTime(),d=0,e=this.points.length,f;d<e;d++){f=this.points[d];if(c-\n +f.tick>this.delay)break;b=f}if(b&&(d=(new Date).getTime()-b.tick,c=Math.sqrt(Math.pow(a.x-b.xy.x,2)+Math.pow(a.y-b.xy.y,2)),d=c/d,!(0==d||d<this.threshold)))return c=Math.asin((a.y-b.xy.y)/c),b.xy.x<=a.x&&(c=Math.PI-c),{speed:d,theta:c}},move:function(a,b){var c=a.speed,d=Math.cos(a.theta),e=-Math.sin(a.theta),f=(new Date).getTime(),g=0,h=0;this.timerId=OpenLayers.Animation.start(OpenLayers.Function.bind(function(){if(null!=this.timerId){var a=(new Date).getTime()-f,j=-this.deceleration*Math.pow(a,\n +2)/2+c*a,k=j*d,j=j*e,l,m;l=!1;0>=-this.deceleration*a+c&&(OpenLayers.Animation.stop(this.timerId),this.timerId=null,l=!0);a=k-g;m=j-h;g=k;h=j;b(a,m,l)}},this))},CLASS_NAME:"OpenLayers.Kinetic"});OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:!0,initialize:function(a,b,c){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[a,c]);this.location=b;this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadRSS:function(){this.loaded||(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,\n +success:this.parseData,scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadRSS()},parseData:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=OpenLayers.Format.XML.prototype.read(a.responseText);if(this.useFeedTitle){a=null;try{a=b.getElementsByTagNameNS("*","title")[0].firstChild.nodeValue}catch(c){a=b.getElementsByTagName("title")[0].firstChild.nodeValue}a&&this.setName(a)}a={};OpenLayers.Util.extend(a,\n +this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(a.externalProjection=this.projection,a.internalProjection=this.map.getProjectionObject());for(var b=(new OpenLayers.Format.GeoRSS(a)).read(b),a=0,d=b.length;a<d;a++){var e={},f=b[a];if(f.geometry){var g=f.attributes.title?f.attributes.title:"Untitled",h=f.attributes.description?f.attributes.description:"No description.",i=f.attributes.link?f.attributes.link:"",f=f.geometry.getBounds().getCenterLonLat();e.icon=\n +null==this.icon?OpenLayers.Marker.defaultIcon():this.icon.clone();e.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(g||h){e.title=g;e.description=h;var j=\'<div class="olLayerGeoRSSClose">[x]</div>\',j=j+\'<div class="olLayerGeoRSSTitle">\';i&&(j+=\'<a class="link" href="\'+i+\'" target="_blank">\');j+=g;i&&(j+="</a>");j+="</div>";j+=\'<div style="" class="olLayerGeoRSSDescription">\';j+=h;j+="</div>";e.popupContentHTML=j}f=new OpenLayers.Feature(this,f,e);this.features.push(f);\n +e=f.createMarker();e.events.register("click",f,this.markerClick);this.addMarker(e)}}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||(b=this.createPopup(),OpenLayers.Event.observe(b.div,"click",OpenLayers.Function.bind(function(){for(var a=0,b=this.layer.map.popups.length;a<b;a++)this.layer.map.removePopup(this.layer.map.popups[a])},\n +this)),this.layer.map.addPopup(b));OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:!1,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,\n +graphicName:"square"},read:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c={namedLayers:!0===b.namedLayersAsArray?[]:{}};this.readChildNodes(a,c);return c},readers:OpenLayers.Util.applyDefaults({sld:{StyledLayerDescriptor:function(a,b){b.version=a.getAttribute("version");this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b.description=this.getChildValue(a)},NamedLayer:function(a,b){var c=\n +{userStyles:[],namedStyles:[]};this.readChildNodes(a,c);for(var d=0,e=c.userStyles.length;d<e;++d)c.userStyles[d].layerName=c.name;OpenLayers.Util.isArray(b.namedLayers)?b.namedLayers.push(c):b.namedLayers[c.name]=c},NamedStyle:function(a,b){b.namedStyles.push(this.getChildName(a.firstChild))},UserStyle:function(a,b){var c={defaultsPerSymbolizer:!0,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(a,c);this.multipleSymbolizers?(delete c.defaultsPerSymbolizer,c=new OpenLayers.Style2(c)):c=new OpenLayers.Style(this.defaultSymbolizer,\n +c);b.userStyles.push(c)},IsDefault:function(a,b){"1"==this.getChildValue(a)&&(b.isDefault=!0)},FeatureTypeStyle:function(a,b){++this.featureTypeCounter;var c={rules:this.multipleSymbolizers?b.rules:[]};this.readChildNodes(a,c);this.multipleSymbolizers||(b.rules=c.rules)},Rule:function(a,b){var c;this.multipleSymbolizers&&(c={symbolizers:[]});c=new OpenLayers.Rule(c);this.readChildNodes(a,c);b.rules.push(c)},ElseFilter:function(a,b){b.elseFilter=!0},MinScaleDenominator:function(a,b){b.minScaleDenominator=\n +parseFloat(this.getChildValue(a))},MaxScaleDenominator:function(a,b){b.maxScaleDenominator=parseFloat(this.getChildValue(a))},TextSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Text(c))):b.symbolizer.Text=OpenLayers.Util.applyDefaults(c,b.symbolizer.Text)},LabelPlacement:function(a,b){this.readChildNodes(a,b)},PointPlacement:function(a,b){var c={};this.readChildNodes(a,c);c.labelRotation=\n +c.rotation;delete c.rotation;var d,e=b.labelAnchorPointX,f=b.labelAnchorPointY;e<=1/3?d="l":e>1/3&&e<2/3?d="c":e>=2/3&&(d="r");f<=1/3?d+="b":f>1/3&&f<2/3?d+="m":f>=2/3&&(d+="t");c.labelAlign=d;OpenLayers.Util.applyDefaults(b,c)},AnchorPoint:function(a,b){this.readChildNodes(a,b)},AnchorPointX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointX=c)},AnchorPointY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointY=c)},Displacement:function(a,\n +b){this.readChildNodes(a,b)},DisplacementX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelXOffset=c)},DisplacementY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelYOffset=c)},LinePlacement:function(a,b){this.readChildNodes(a,b)},PerpendicularOffset:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelPerpendicularOffset=c)},Label:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.label=c)},Font:function(a,b){this.readChildNodes(a,\n +b)},Halo:function(a,b){var c={};this.readChildNodes(a,c);b.haloRadius=c.haloRadius;b.haloColor=c.fillColor;b.haloOpacity=c.fillOpacity},Radius:function(a,b){var c=this.readers.ogc._expression.call(this,a);null!=c&&(b.haloRadius=c)},RasterSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Raster(c))):b.symbolizer.Raster=OpenLayers.Util.applyDefaults(c,b.symbolizer.Raster)},Geometry:function(a,\n +b){b.geometry={};this.readChildNodes(a,b.geometry)},ColorMap:function(a,b){b.colorMap=[];this.readChildNodes(a,b.colorMap)},ColorMapEntry:function(a,b){var c=a.getAttribute("quantity"),d=a.getAttribute("opacity");b.push({color:a.getAttribute("color"),quantity:null!==c?parseFloat(c):void 0,label:a.getAttribute("label")||void 0,opacity:null!==d?parseFloat(d):void 0})},LineSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Line(c))):\n +b.symbolizer.Line=OpenLayers.Util.applyDefaults(c,b.symbolizer.Line)},PolygonSymbolizer:function(a,b){var c={fill:!1,stroke:!1};this.multipleSymbolizers||(c=b.symbolizer.Polygon||c);this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Polygon(c))):b.symbolizer.Polygon=c},PointSymbolizer:function(a,b){var c={fill:!1,stroke:!1,graphic:!1};this.multipleSymbolizers||(c=b.symbolizer.Point||c);this.readChildNodes(a,c);this.multipleSymbolizers?\n +(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Point(c))):b.symbolizer.Point=c},Stroke:function(a,b){b.stroke=!0;this.readChildNodes(a,b)},Fill:function(a,b){b.fill=!0;this.readChildNodes(a,b)},CssParameter:function(a,b){var c=a.getAttribute("name"),d=this.cssMap[c];b.label&&("fill"===c?d="fontColor":"fill-opacity"===c&&(d="fontOpacity"));d&&(c=this.readers.ogc._expression.call(this,a))&&(b[d]=c)},Graphic:function(a,b){b.graphic=!0;var c={};this.readChildNodes(a,c);\n +for(var d="stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat".split(" "),e,f,g=0,h=d.length;g<h;++g)e=d[g],f=c[e],void 0!=f&&(b[e]=f);void 0!=c.opacity&&(b.graphicOpacity=c.opacity);void 0!=c.size&&(isNaN(c.size/2)?b.graphicWidth=c.size:b.pointRadius=c.size/2);void 0!=c.href&&(b.externalGraphic=c.href);void 0!=c.rotation&&(b.rotation=c.rotation)},ExternalGraphic:function(a,b){this.readChildNodes(a,b)},Mark:function(a,b){this.readChildNodes(a,\n +b)},WellKnownName:function(a,b){b.graphicName=this.getChildValue(a)},Opacity:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.opacity=c)},Size:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.size=c)},Rotation:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.rotation=c)},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},Format:function(a,b){b.graphicFormat=this.getChildValue(a)}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),\n +cssMap:{stroke:"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle",fill:"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(a){var b=null,c;for(c in this.cssMap)if(this.cssMap[c]==a){b=c;break}return b},getGraphicFormat:function(a){var b,c;for(c in this.graphicFormats)if(this.graphicFormats[c].test(a)){b=\n +c;break}return b||this.defaultGraphicFormat},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\\.jpe?g$/i,"image/gif":/\\.gif$/i,"image/png":/\\.png$/i},write:function(a){return this.writers.sld.StyledLayerDescriptor.apply(this,[a])},writers:OpenLayers.Util.applyDefaults({sld:{_OGCExpression:function(a,b){var c=this.createElementNSPlus(a),d="string"==typeof b?b.split("${"):[b];c.appendChild(this.createTextNode(d[0]));for(var e,f,g=1,h=d.length;g<h;g++)e=d[g],f=e.indexOf("}"),0<f?(this.writeNode("ogc:PropertyName",\n +{property:e.substring(0,f)},c),c.appendChild(this.createTextNode(e.substring(++f)))):c.appendChild(this.createTextNode("${"+e));return c},StyledLayerDescriptor:function(a){var b=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});b.setAttribute("xmlns:ogc",this.namespaces.ogc);b.setAttribute("xmlns:gml",this.namespaces.gml);a.name&&this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&\n +this.writeNode("Abstract",a.description,b);if(OpenLayers.Util.isArray(a.namedLayers))for(var c=0,d=a.namedLayers.length;c<d;++c)this.writeNode("NamedLayer",a.namedLayers[c],b);else for(c in a.namedLayers)this.writeNode("NamedLayer",a.namedLayers[c],b);return b},Name:function(a){return this.createElementNSPlus("sld:Name",{value:a})},Title:function(a){return this.createElementNSPlus("sld:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("sld:Abstract",{value:a})},NamedLayer:function(a){var b=\n +this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",a.name,b);if(a.namedStyles)for(var c=0,d=a.namedStyles.length;c<d;++c)this.writeNode("NamedStyle",a.namedStyles[c],b);if(a.userStyles){c=0;for(d=a.userStyles.length;c<d;++c)this.writeNode("UserStyle",a.userStyles[c],b)}return b},NamedStyle:function(a){var b=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",a,b);return b},UserStyle:function(a){var b=this.createElementNSPlus("sld:UserStyle");a.name&&this.writeNode("Name",\n +a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.isDefault&&this.writeNode("IsDefault",a.isDefault,b);if(this.multipleSymbolizers&&a.rules){for(var c={"0":[]},d=[0],e,f,g,h,i,j=0,k=a.rules.length;j<k;++j)if(e=a.rules[j],e.symbolizers){f={};for(var l=0,m=e.symbolizers.length;l<m;++l)g=e.symbolizers[l],h=g.zIndex,h in f||(i=e.clone(),i.symbolizers=[],f[h]=i),f[h].symbolizers.push(g.clone());for(h in f)h in c||(d.push(h),c[h]=[]),c[h].push(f[h])}else c[0].push(e.clone());\n +d.sort();j=0;for(k=d.length;j<k;++j)e=c[d[j]],0<e.length&&(i=a.clone(),i.rules=c[d[j]],this.writeNode("FeatureTypeStyle",i,b))}else this.writeNode("FeatureTypeStyle",a,b);return b},IsDefault:function(a){return this.createElementNSPlus("sld:IsDefault",{value:a?"1":"0"})},FeatureTypeStyle:function(a){for(var b=this.createElementNSPlus("sld:FeatureTypeStyle"),c=0,d=a.rules.length;c<d;++c)this.writeNode("Rule",a.rules[c],b);return b},Rule:function(a){var b=this.createElementNSPlus("sld:Rule");a.name&&\n +this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.elseFilter?this.writeNode("ElseFilter",null,b):a.filter&&this.writeNode("ogc:Filter",a.filter,b);void 0!=a.minScaleDenominator&&this.writeNode("MinScaleDenominator",a.minScaleDenominator,b);void 0!=a.maxScaleDenominator&&this.writeNode("MaxScaleDenominator",a.maxScaleDenominator,b);var c,d;if(this.multipleSymbolizers&&a.symbolizers)for(var e=0,f=a.symbolizers.length;e<\n +f;++e)d=a.symbolizers[e],c=d.CLASS_NAME.split(".").pop(),this.writeNode(c+"Symbolizer",d,b);else for(var f=OpenLayers.Style.SYMBOLIZER_PREFIXES,e=0,g=f.length;e<g;++e)c=f[e],(d=a.symbolizer[c])&&this.writeNode(c+"Symbolizer",d,b);return b},ElseFilter:function(){return this.createElementNSPlus("sld:ElseFilter")},MinScaleDenominator:function(a){retu + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="9" aka="AAAAAAAAAAk="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +rn this.createElementNSPlus("sld:MinScaleDenominator",{value:a})},MaxScaleDenominator:function(a){return this.createElementNSPlus("sld:MaxScaleDenominator",\n +{value:a})},LineSymbolizer:function(a){var b=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",a,b);return b},Stroke:function(a){var b=this.createElementNSPlus("sld:Stroke");void 0!=a.strokeColor&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeColor"},b);void 0!=a.strokeOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeOpacity"},b);void 0!=a.strokeWidth&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeWidth"},b);void 0!=a.strokeDashstyle&&"solid"!==\n +a.strokeDashstyle&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeDashstyle"},b);void 0!=a.strokeLinecap&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeLinecap"},b);return b},CssParameter:function(a){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(a.key)},value:a.symbolizer[a.key]})},TextSymbolizer:function(a){var b=this.createElementNSPlus("sld:TextSymbolizer");null!=a.label&&this.writeNode("Label",a.label,b);(null!=a.fontFamily||null!=a.fontSize||\n +null!=a.fontWeight||null!=a.fontStyle)&&this.writeNode("Font",a,b);(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation||null!=a.labelPerpendicularOffset)&&this.writeNode("LabelPlacement",a,b);(null!=a.haloRadius||null!=a.haloColor||null!=a.haloOpacity)&&this.writeNode("Halo",a,b);(null!=a.fontColor||null!=a.fontOpacity)&&this.writeNode("Fill",{fillColor:a.fontColor,fillOpacity:a.fontOpacity},b);return b},LabelPlacement:function(a){var b=\n +this.createElementNSPlus("sld:LabelPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation)&&null==a.labelPerpendicularOffset&&this.writeNode("PointPlacement",a,b);null!=a.labelPerpendicularOffset&&this.writeNode("LinePlacement",a,b);return b},LinePlacement:function(a){var b=this.createElementNSPlus("sld:LinePlacement");this.writeNode("PerpendicularOffset",a.labelPerpendicularOffset,b);return b},PerpendicularOffset:function(a){return this.createElementNSPlus("sld:PerpendicularOffset",\n +{value:a})},PointPlacement:function(a){var b=this.createElementNSPlus("sld:PointPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign)&&this.writeNode("AnchorPoint",a,b);(null!=a.labelXOffset||null!=a.labelYOffset)&&this.writeNode("Displacement",a,b);null!=a.labelRotation&&this.writeNode("Rotation",a.labelRotation,b);return b},AnchorPoint:function(a){var b=this.createElementNSPlus("sld:AnchorPoint"),c=a.labelAnchorPointX,d=a.labelAnchorPointY;null!=c&&this.writeNode("AnchorPointX",\n +c,b);null!=d&&this.writeNode("AnchorPointY",d,b);if(null==c&&null==d){var e=a.labelAlign.substr(0,1),a=a.labelAlign.substr(1,1);"l"===e?c=0:"c"===e?c=0.5:"r"===e&&(c=1);"b"===a?d=0:"m"===a?d=0.5:"t"===a&&(d=1);this.writeNode("AnchorPointX",c,b);this.writeNode("AnchorPointY",d,b)}return b},AnchorPointX:function(a){return this.createElementNSPlus("sld:AnchorPointX",{value:a})},AnchorPointY:function(a){return this.createElementNSPlus("sld:AnchorPointY",{value:a})},Displacement:function(a){var b=this.createElementNSPlus("sld:Displacement");\n +null!=a.labelXOffset&&this.writeNode("DisplacementX",a.labelXOffset,b);null!=a.labelYOffset&&this.writeNode("DisplacementY",a.labelYOffset,b);return b},DisplacementX:function(a){return this.createElementNSPlus("sld:DisplacementX",{value:a})},DisplacementY:function(a){return this.createElementNSPlus("sld:DisplacementY",{value:a})},Font:function(a){var b=this.createElementNSPlus("sld:Font");a.fontFamily&&this.writeNode("CssParameter",{symbolizer:a,key:"fontFamily"},b);a.fontSize&&this.writeNode("CssParameter",\n +{symbolizer:a,key:"fontSize"},b);a.fontWeight&&this.writeNode("CssParameter",{symbolizer:a,key:"fontWeight"},b);a.fontStyle&&this.writeNode("CssParameter",{symbolizer:a,key:"fontStyle"},b);return b},Label:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Label",a)},Halo:function(a){var b=this.createElementNSPlus("sld:Halo");a.haloRadius&&this.writeNode("Radius",a.haloRadius,b);(a.haloColor||a.haloOpacity)&&this.writeNode("Fill",{fillColor:a.haloColor,fillOpacity:a.haloOpacity},b);\n +return b},Radius:function(a){return this.createElementNSPlus("sld:Radius",{value:a})},RasterSymbolizer:function(a){var b=this.createElementNSPlus("sld:RasterSymbolizer");a.geometry&&this.writeNode("Geometry",a.geometry,b);a.opacity&&this.writeNode("Opacity",a.opacity,b);a.colorMap&&this.writeNode("ColorMap",a.colorMap,b);return b},Geometry:function(a){var b=this.createElementNSPlus("sld:Geometry");a.property&&this.writeNode("ogc:PropertyName",a,b);return b},ColorMap:function(a){for(var b=this.createElementNSPlus("sld:ColorMap"),\n +c=0,d=a.length;c<d;++c)this.writeNode("ColorMapEntry",a[c],b);return b},ColorMapEntry:function(a){var b=this.createElementNSPlus("sld:ColorMapEntry");b.setAttribute("color",a.color);void 0!==a.opacity&&b.setAttribute("opacity",parseFloat(a.opacity));void 0!==a.quantity&&b.setAttribute("quantity",parseFloat(a.quantity));void 0!==a.label&&b.setAttribute("label",a.label);return b},PolygonSymbolizer:function(a){var b=this.createElementNSPlus("sld:PolygonSymbolizer");!1!==a.fill&&this.writeNode("Fill",\n +a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},Fill:function(a){var b=this.createElementNSPlus("sld:Fill");a.fillColor&&this.writeNode("CssParameter",{symbolizer:a,key:"fillColor"},b);null!=a.fillOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"fillOpacity"},b);return b},PointSymbolizer:function(a){var b=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",a,b);return b},Graphic:function(a){var b=this.createElementNSPlus("sld:Graphic");void 0!=a.externalGraphic?\n +this.writeNode("ExternalGraphic",a,b):this.writeNode("Mark",a,b);void 0!=a.graphicOpacity&&this.writeNode("Opacity",a.graphicOpacity,b);void 0!=a.pointRadius?this.writeNode("Size",2*a.pointRadius,b):void 0!=a.graphicWidth&&this.writeNode("Size",a.graphicWidth,b);void 0!=a.rotation&&this.writeNode("Rotation",a.rotation,b);return b},ExternalGraphic:function(a){var b=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",a.externalGraphic,b);this.writeNode("Format",a.graphicFormat||\n +this.getGraphicFormat(a.externalGraphic),b);return b},Mark:function(a){var b=this.createElementNSPlus("sld:Mark");a.graphicName&&this.writeNode("WellKnownName",a.graphicName,b);!1!==a.fill&&this.writeNode("Fill",a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},WellKnownName:function(a){return this.createElementNSPlus("sld:WellKnownName",{value:a})},Opacity:function(a){return this.createElementNSPlus("sld:Opacity",{value:a})},Size:function(a){return this.writers.sld._OGCExpression.call(this,\n +"sld:Size",a)},Rotation:function(a){return this.createElementNSPlus("sld:Rotation",{value:a})},OnlineResource:function(a){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":a}})},Format:function(a){return this.createElementNSPlus("sld:Format",{value:a})}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"},isBaseLayer:!0,encodeBBOX:!1,noMagic:!1,yx:{},initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);1.3<=parseFloat(c.VERSION)&&!c.EXCEPTIONS&&(c.EXCEPTIONS="INIMAGE");e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));\n +if(!this.noMagic&&this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"image/jpeg"==this.params.FORMAT&&(this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},reverseAxisOrder:function(){var a=this.projection.getCode();return 1.3<=parseFloat(this.params.VERSION)&&\n +!(!this.yx[a]&&!OpenLayers.Projection.defaults[a].yx)},getURL:function(a){var a=this.adjustBounds(a),b=this.getImageSize(),c={},d=this.reverseAxisOrder();c.BBOX=this.encodeBBOX?a.toBBOX(null,d):a.toArray(d);c.WIDTH=b.w;c.HEIGHT=b.h;return this.getFullRequestString(c)},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},getFullRequestString:function(a,b){var c=this.map.getProjectionObject(),c=this.projection&&this.projection.equals(c)?\n +this.projection.getCode():c.getCode(),c="none"==c?null:c;1.3<=parseFloat(this.params.VERSION)?this.params.CRS=c:this.params.SRS=c;"boolean"==typeof this.params.TRANSPARENT&&(a.TRANSPARENT=this.params.TRANSPARENT?"TRUE":"FALSE");return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_sld_MinScaleDenominator:function(a,b){var c=parseFloat(this.getChildValue(b));0<c&&(a.maxScale=c)},read_sld_MaxScaleDenominator:function(a,b){a.minScale=parseFloat(this.getChildValue(b))},read_wmc_SRS:function(a,b){"srs"in\n +a||(a.srs={});a.srs[this.getChildValue(b)]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[a]);if(a.maxScale){var c=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");c.appendChild(this.createTextNode(a.maxScale.toPrecision(16)));b.appendChild(c)}a.minScale&&(c=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator"),c.appendChild(this.createTextNode(a.minScale.toPrecision(16))),b.appendChild(c));if(a.srs)for(var d in a.srs)b.appendChild(this.createElementDefaultNS("SRS",\n +d));b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a));return b},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.XLS=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",stringifyOutput:!0,CLASS_NAME:"OpenLayers.Format.XLS"});OpenLayers.Format.XLS.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xls:"http://www.opengis.net/xls",gml:"http://www.opengis.net/gml",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},xy:!0,defaultPrefix:"xls",schemaLocation:null,read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{xls:{XLS:function(a,b){b.version=a.getAttribute("version");\n +this.readChildNodes(a,b)},Response:function(a,b){this.readChildNodes(a,b)},GeocodeResponse:function(a,b){b.responseLists=[];this.readChildNodes(a,b)},GeocodeResponseList:function(a,b){var c={features:[],numberOfGeocodedAddresses:parseInt(a.getAttribute("numberOfGeocodedAddresses"))};b.responseLists.push(c);this.readChildNodes(a,c)},GeocodedAddress:function(a,b){var c=new OpenLayers.Feature.Vector;b.features.push(c);this.readChildNodes(a,c);c.geometry=c.components[0]},GeocodeMatchCode:function(a,b){b.attributes.matchCode=\n +{accuracy:parseFloat(a.getAttribute("accuracy")),matchType:a.getAttribute("matchType")}},Address:function(a,b){var c={countryCode:a.getAttribute("countryCode"),addressee:a.getAttribute("addressee"),street:[],place:[]};b.attributes.address=c;this.readChildNodes(a,c)},freeFormAddress:function(a,b){b.freeFormAddress=this.getChildValue(a)},StreetAddress:function(a,b){this.readChildNodes(a,b)},Building:function(a,b){b.building={number:a.getAttribute("number"),subdivision:a.getAttribute("subdivision"),\n +buildingName:a.getAttribute("buildingName")}},Street:function(a,b){b.street.push(this.getChildValue(a))},Place:function(a,b){b.place[a.getAttribute("type")]=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)}},gml:OpenLayers.Format.GML.v3.prototype.readers.gml},write:function(a){return this.writers.xls.XLS.apply(this,[a])},writers:{xls:{XLS:function(a){var b=this.createElementNSPlus("xls:XLS",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});\n +this.writeNode("RequestHeader",a.header,b);this.writeNode("Request",a,b);return b},RequestHeader:function(){return this.createElementNSPlus("xls:RequestHeader")},Request:function(a){var b=this.createElementNSPlus("xls:Request",{attributes:{methodName:"GeocodeRequest",requestID:a.requestID||"",version:this.VERSION}});this.writeNode("GeocodeRequest",a.addresses,b);return b},GeocodeRequest:function(a){for(var b=this.createElementNSPlus("xls:GeocodeRequest"),c=0,d=a.length;c<d;c++)this.writeNode("Address",\n +a[c],b);return b},Address:function(a){var b=this.createElementNSPlus("xls:Address",{attributes:{countryCode:a.countryCode}});a.freeFormAddress?this.writeNode("freeFormAddress",a.freeFormAddress,b):(a.street&&this.writeNode("StreetAddress",a,b),a.municipality&&this.writeNode("Municipality",a.municipality,b),a.countrySubdivision&&this.writeNode("CountrySubdivision",a.countrySubdivision,b),a.postalCode&&this.writeNode("PostalCode",a.postalCode,b));return b},freeFormAddress:function(a){return this.createElementNSPlus("freeFormAddress",\n +{value:a})},StreetAddress:function(a){var b=this.createElementNSPlus("xls:StreetAddress");a.building&&this.writeNode(b,"Building",a.building);a=a.street;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=0,d=a.length;c<d;c++)this.writeNode("Street",a[c],b);return b},Building:function(a){return this.createElementNSPlus("xls:Building",{attributes:{number:a.number,subdivision:a.subdivision,buildingName:a.buildingName}})},Street:function(a){return this.createElementNSPlus("xls:Street",{value:a})},Municipality:function(a){return this.createElementNSPlus("xls:Place",\n +{attributes:{type:"Municipality"},value:a})},CountrySubdivision:function(a){return this.createElementNSPlus("xls:Place",{attributes:{type:"CountrySubdivision"},value:a})},PostalCode:function(a){return this.createElementNSPlus("xls:PostalCode",{value:a})}}},CLASS_NAME:"OpenLayers.Format.XLS.v1"});OpenLayers.Format.XLS.v1_1_0=OpenLayers.Class(OpenLayers.Format.XLS.v1,{VERSION:"1.1",schemaLocation:"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",CLASS_NAME:"OpenLayers.Format.XLS.v1_1_0"});OpenLayers.Format.XLS.v1_1=OpenLayers.Format.XLS.v1_1_0;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",\n +"1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,\n +"viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);\n +this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,\n +b,c){var b=b||a._style,c=c||a._options,d=parseFloat(a.getAttributeNS(null,"r")),e=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&d){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicTitle&&(a.setAttributeNS(null,"title",b.graphicTitle),d=a.getElementsByTagName("title"),0<d.length?d[0].firstChild.textContent=b.graphicTitle:(d=this.nodeFactory(null,"title"),d.textContent=b.graphicTitle,a.appendChild(d)));b.graphicWidth&&\n +b.graphicHeight&&a.setAttributeNS(null,"preserveAspectRatio","none");var d=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,d=d?d:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),i=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*d))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",d);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,\n +"href",b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+i);a.onclick=OpenLayers.Renderer.SVG.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var d=3*b.pointRadius,g=2*d,j=this.importSymbol(b.graphicName);f=this.getPosition(a);e=3*this.symbolMetrics[j.id][0]/g;h=a.parentNode;i=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(j.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",j.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,\n +"width",g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-d);a.setAttributeNS(null,"y",f.y-d);i?h.insertBefore(a,i):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);d=b.rotation;if((void 0!==d||void 0!==a._rotation)&&f)a._rotation=d,d|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+d+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[j.id],a.firstChild.setAttributeNS(null,"transform","rotate("+d+" "+f[1]+" "+f[2]+")"))}c.isFilled?(a.setAttributeNS(null,\n +"fill",b.fillColor),a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*e),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,e))):a.setAttributeNS(null,"stroke",\n +"none");b.pointerEvents&&a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\\s+/g,\n +",")}},createNode:function(a,b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,\n +b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left,b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?\n +(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,i=b.components.length;h<i;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,\n +"x",d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,\n +f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,\n +"font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=\n +b.label.split("\\n"),i=h.length;f.childNodes.length>i;)f.removeChild(f.lastChild);for(var j=0;j<i;j++){var k=this.nodeFactory(a+d+"_tspan_"+j,"tspan");!0===b.labelSelect&&(k._featureId=a,k._geometry=c,k._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&k.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");k.setAttribute("x",e);if(0==j){var l=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==l&&(l=-0.5);k.setAttribute("dy",l*(i-1)+"em")}else k.setAttribute("dy",\n +"1em");k.textContent=""===h[j]?" ":h[j];k.parentNode||f.appendChild(k)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),\n +d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,i;if(h<-d||h>d)i=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*i;if(c<-e||c>e)i=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*i;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left,a=this.top-a.y/b;return this.inValidRange(c,a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,\n +"cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");var a=this.nodeFactory(b,"symbol"),e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),f=[],g,h,i=0;i<d.length;i+=2)g=d[i],h=d[i+1],c.left=Math.min(c.left,\n +g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);b||(b=a.target,\n +b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){a.preventDefault&&a.preventDefault()};OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);"0.3.0"===c&&(c=this.defaultVersion);return c},toContext:function(a){var b={};"OpenLayers.Map"==a.CLASS_NAME&&(b.bounds=a.getExtent(),b.maxExtent=a.maxExtent,b.projection=a.projection,b.size=a.getSize(),b.layers=a.layers);return b},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",\n +defaultPrefix:"owc",extractAttributes:!0,xy:!0,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:"vector",geometryName:"geometry",nestingLayerLookup:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this)},setNestingPath:function(a){if(a.layersContext)for(var b=0,c=a.layersContext.length;b<c;b++){var d=\n +a.layersContext[b],e=[],f=a.title||"";a.metadata&&a.metadata.nestingPath&&(e=a.metadata.nestingPath.slice());""!=f&&e.push(f);d.metadata.nestingPath=e;d.layersContext&&this.setNestingPath(d)}},decomposeNestingPath:function(a){var b=[];if(OpenLayers.Util.isArray(a)){for(a=a.slice();0<a.length;)b.push(a.slice()),a.pop();b.reverse()}return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,\n +b);this.setNestingPath({layersContext:b.layersContext});a=[];this.processLayer(a,b);delete b.layersContext;b.layersContext=a;return b},processLayer:function(a,b){if(b.layersContext)for(var c=0,d=b.layersContext.length;c<d;c++){var e=b.layersContext[c];a.push(e);e.layersContext&&this.processLayer(a,e)}},write:function(a,b){this.nestingLayerLookup={};b=b||{};OpenLayers.Util.applyDefaults(b,a);var c=this.writeNode("OWSContext",b);this.nestingLayerLookup=null;this.setAttributeNS(c,this.namespaces.xsi,\n +"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},readers:{kml:{Document:function(a,b){b.features=(new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:!0})).read(a)}},owc:{OWSContext:function(a,b){this.readChildNodes(a,b)},General:function(a,b){this.readChildNodes(a,b)},ResourceList:function(a,b){this.readChildNodes(a,b)},Layer:function(a,b){var c={metadata:{},visibility:"1"!=a.getAttribute("hidden"),queryable:"1"==a.getAttribute("queryable"),\n +opacity:null!=a.getAttribute("opacity")?parseFloat(a.getAttribute("opacity")):null,name:a.getAttribute("name"),categoryLayer:null==a.getAttribute("name"),formats:[],styles:[]};b.layersContext||(b.layersContext=[]);b.layersContext.push(c);this.readChildNodes(a,c)},InlineGeometry:function(a,b){b.features=[];var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember"),d;1<=c.length&&(d=c[0]);d&&d.firstChild&&(c=d.firstChild.nextSibling?d.firstChild.nextSibling:d.firstChild,this.setNamespace("feature",\n +c.namespaceURI),this.featureType=c.localName||c.nodeName.split(":").pop(),this.readChildNodes(a,b))},Server:function(a,b){if(!b.service&&!b.version||b.service!=OpenLayers.Format.Context.serviceTypes.WMS)b.service=a.getAttribute("service"),b.version=a.getAttribute("version"),this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a);this.readChildNodes(a,b)},Title:function(a,b){b.title=this.getChildValue(a);this.readChildNodes(a,b)},StyleList:function(a,b){this.readChildNodes(a,b.styles)},\n +Style:function(a,b){var c={};b.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={};b.legend=c;this.readChildNodes(a,c)},OnlineResource:function(a,b){b.url=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)}},ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,gml:OpenLayers.Format.GML.v2.prototype.readers.gml,sld:OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{owc:{OWSContext:function(a){var b=\n +this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:a.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",a,b);this.writeNode("ResourceList",a,b);return b},General:function(a){var b=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",a,b);this.writeNode("ows:Title",a.title||"OpenLayers OWSContext",b);return b},ResourceList:function(a){for(var b=this.createElementNSPlus("ResourceList"),c=0,d=a.layers.length;c<d;c++){var e=\n +a.layers[c],f=this.decomposeNestingPath(e.metadata.nestingPath);this.writeNode("_Layer",{layer:e,subPaths:f},b)}return b},Server:function(a){var b=this.createElementNSPlus("Server",{attributes:{version:a.version,service:a.service}});this.writeNode("OnlineResource",a,b);return b},OnlineResource:function(a){return this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":a.url}})},InlineGeometry:function(a){var b=this.createElementNSPlus("InlineGeometry");this.writeNode("gml:boundedBy",a.getDataExtent(),\n +b);for(var c=0,d=a.features.length;c<d;c++)this.writeNode("gml:featureMember",a.features[c],b);return b},StyleList:function(a){for(var b=this.createElementNSPlus("StyleList"),c=0,d=a.length;c<d;c++)this.writeNode("Style",a[c],b);return b},Style:function(a){var b=this.createElementNSPlus("Style");this.writeNode("Name",a,b);this.writeNode("Title",a,b);a.legend&&this.writeNode("LegendURL",a,b);return b},Name:function(a){return this.createElementNSPlus("Name",{value:a.name})},Title:function(a){return this.createElementNSPlus("Title",\n +{value:a.title})},LegendURL:function(a){var b=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",a.legend,b);return b},_WMS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.params.LAYERS,queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1",opacity:a.hasOwnProperty("opacity")?a.opacity:null}});this.writeNode("ows:Title",a.name,b);this.writeNode("ows:OutputFormat",a.params.FORMAT,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,\n +version:a.params.VERSION,url:a.url},b);a.metadata.styles&&0<a.metadata.styles.length&&this.writeNode("StyleList",a.metadata.styles,b);return b},_Layer:function(a){var b,c,d;b=a.layer;c=a.subPaths;d=null;0<c.length?(b=c[0].join("/"),c=b.lastIndexOf("/"),d=this.nestingLayerLookup[b],c=0<c?b.substring(c+1,b.length):b,d||(d=this.createElementNSPlus("Layer"),this.writeNode("ows:Title",c,d),this.nestingLayerLookup[b]=d),a.subPaths.shift(),this.writeNode("_Layer",a,d)):(b instanceof OpenLayers.Layer.WMS?\n +d=this.writeNode("_WMS",b):b instanceof OpenLayers.Layer.Vector&&(b.protocol instanceof OpenLayers.Protocol.WFS.v1?d=this.writeNode("_WFS",b):b.protocol instanceof OpenLayers.Protocol.HTTP?b.protocol.format instanceof OpenLayers.Format.GML?(b.protocol.format.version="2.1.2",d=this.writeNode("_GML",b)):b.protocol.format instanceof OpenLayers.Format.KML&&(b.protocol.format.version="2.2",d=this.writeNode("_KML",b)):(this.setNamespace("feature",this.featureNS),d=this.writeNode("_InlineGeometry",b))),\n +b.options.maxScale&&this.writeNode("sld:MinScaleDenominator",b.options.maxScale,d),b.options.minScale&&this.writeNode("sld:MaxScaleDenominator",b.options.minScale,d),this.nestingLayerLookup[b.name]=d);return d},_WFS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.protocol.featurePrefix+":"+a.protocol.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:a.protocol.version,\n +url:a.protocol.url},b);return b},_InlineGeometry:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("InlineGeometry",a,b);return b},_GML:function(a){var b=this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:a.protocol.url,version:a.protocol.format.version},b);return b},_KML:function(a){var b=\n +this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:a.protocol.format.version,url:a.protocol.url},b);return b}},gml:OpenLayers.Util.applyDefaults({boundedBy:function(a){var b=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",a,b);return b}},OpenLayers.Format.GML.v2.prototype.writers.gml),ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,sld:OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,\n +feature:OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:!1,draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.eTop||(this.eTop=document.createElement("div"),this.eTop.className=this.displayClass+"Top",this.div.appendChild(this.eTop),this.eTop.style.visibility=""==this.topOutUnits||""==this.topInUnits?"hidden":"visible",this.eBottom=document.createElement("div"),\n +this.eBottom.className=this.displayClass+"Bottom",this.div.appendChild(this.eBottom),this.eBottom.style.visibility=""==this.bottomOutUnits||""==this.bottomInUnits?"hidden":"visible");this.map.events.register("moveend",this,this.update);this.update();return this.div},getBarLen:function(a){var b=parseInt(Math.log(a)/Math.log(10)),b=Math.pow(10,b),a=parseInt(a/b);return(5<a?5:2<a?2:1)*b},update:function(){var a=this.map.getResolution();if(a){var b=this.map.getUnits(),c=OpenLayers.INCHES_PER_UNIT,d=this.maxWidth*\n +a*c[b],e=1;!0===this.geodesic&&(e=(this.map.getGeodesicPixelSize().w||1.0E-6)*this.maxWidth/(d/c.km),d*=e);var f,g;1E5<d?(f=this.topOutUnits,g=this.bottomOutUnits):(f=this.topInUnits,g=this.bottomInUnits);var h=d/c[f],i=d/c[g],d=this.getBarLen(h),j=this.getBarLen(i),h=d/c[b]*c[f],i=j/c[b]*c[g],b=h/a/e,a=i/a/e;"visible"==this.eBottom.style.visibility&&(this.eBottom.style.width=Math.round(a)+"px",this.eBottom.innerHTML=j+" "+g);"visible"==this.eTop.style.visibility&&(this.eTop.style.width=Math.round(b)+\n +"px",this.eTop.innerHTML=d+" "+f)}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(a,b,c,d){this.url=a;this.size=b||{w:20,h:20};this.offset=c||{x:-(this.size.w/2),y:-(this.size.h/2)};this.calculateOffset=d;a=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(a)},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null},clone:function(){return new OpenLayers.Icon(this.url,\n +this.size,this.offset,this.calculateOffset)},setSize:function(a){null!=a&&(this.size=a);this.draw()},setUrl:function(a){null!=a&&(this.url=a);this.draw()},draw:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(a);return this.imageDiv},erase:function(){null!=this.imageDiv&&null!=this.imageDiv.parentNode&&OpenLayers.Element.remove(this.imageDiv)},setOpacity:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,\n +null,null,null,a)},moveTo:function(a){null!=a&&(this.px=a);null!=this.imageDiv&&(null==this.px?this.display(!1):(this.calculateOffset&&(this.offset=this.calculateOffset(this.size)),OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,{x:this.px.x+this.offset.x,y:this.px.y+this.offset.y})))},display:function(a){this.imageDiv.style.display=a?"":"none"},isDrawn:function(){return this.imageDiv&&this.imageDiv.parentNode&&11!=this.imageDiv.parentNode.nodeType},CLASS_NAME:"OpenLayers.Icon"});OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(a,b){this.lonlat=a;var c=b?b:OpenLayers.Marker.defaultIcon();null==this.icon?this.icon=c:(this.icon.url=c.url,this.icon.size=c.size,this.icon.offset=c.offset,this.icon.calculateOffset=c.calculateOffset);this.events=new OpenLayers.Events(this,this.icon.imageDiv)},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;null!=this.icon&&(this.icon.destroy(),this.icon=null)},\n +draw:function(a){return this.icon.draw(a)},erase:function(){null!=this.icon&&this.icon.erase()},moveTo:function(a){null!=a&&null!=this.icon&&this.icon.moveTo(a);this.lonlat=this.map.getLonLatFromLayerPx(a)},isDrawn:function(){return this.icon&&this.icon.isDrawn()},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsLonLat(this.lonlat));return a},inflate:function(a){this.icon&&this.icon.setSize({w:this.icon.size.w*a,h:this.icon.size.h*a})},setOpacity:function(a){this.icon.setOpacity(a)},\n +setUrl:function(a){this.icon.setUrl(a)},display:function(a){this.icon.display(a)},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){return new OpenLayers.Icon(OpenLayers.Util.getImageLocation("marker.png"),{w:21,h:25},{x:-10.5,y:-25})};OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,format:"image/png",serverResolutions:null,initialize:function(a,b,c,d){this.layername=c;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,{},d]);this.extension=this.format.split("/")[1].toLowerCase();this.extension="jpg"==this.extension?"jpeg":this.extension},clone:function(a){null==a&&(a=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getURL:function(a){function b(a,b){for(var a=""+a,c=[],d=0;d<b;++d)c.push("0");return c.join("").substring(0,b-a.length)+a}var c=this.getServerResolution(),d=this.maxExtent,e=this.tileSize,f=Math.round((a.left-d.left)/(c*e.w)),a=Math.round((a.bottom-d.bottom)/(c*e.h)),c=null!=this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,c):this.map.getZoom(),f=[this.layername,b(c,2),b(parseInt(f/1E6),3),b(parseInt(f/1E3)%1E3,3),b(parseInt(f)%1E3,3),b(parseInt(a/1E6),3),b(parseInt(a/\n +1E3)%1E3,3),b(parseInt(a)%1E3,3)+"."+this.extension].join("/"),c=this.url;OpenLayers.Util.isArray(c)&&(c=this.selectUrl(f,c));c="/"==c.charAt(c.length-1)?c:c+"/";return c+f},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,DEFAULT_PARAMS:{i:"jpeg",map:""},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b);return this.getFullRequestString({t:-Math.round(a.top/b),l:d,s:c})},calculateGridLayout:function(a,\n +b,c){var b=c*this.tileSize.w,c=c*this.tileSize.h,d=a.left,e=Math.floor(d/b)-this.buffer,d=-(d/b-e)*this.tileSize.w,e=e*b,a=a.top,f=Math.ceil(a/c)+this.buffer;return{tilelon:b,tilelat:c,tileoffsetlon:e,tileoffsetlat:f*c,tileoffsetx:d,tileoffsety:-(f-a/c+1)*this.tileSize.h}},clone:function(a){null==a&&(a=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=\n +[];return a},getTileBounds:function(a){var b=this.getResolution(),c=b*this.tileSize.w,b=b*this.tileSize.h,d=this.getLonLatFromViewPortPx(a),a=c*Math.floor(d.lon/c),d=b*Math.floor(d.lat/b);return new OpenLayers.Bounds(a,d,a+c,d+b)},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,preserveAspectRatio:!1,rotate:!0,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,irregular:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.rotationHandleSymbolizer||(this.rotationHandleSymbolizer={stroke:!1,pointRadius:10,fillOpacity:0,\n +cursor:"pointer"});this.createBox();this.createControl()},activate:function(){var a=!1;OpenLayers.Control.prototype.activate.apply(this,arguments)&&(this.dragControl.activate(),this.layer.addFeatures([this.box]),this.rotate&&this.layer.addFeatures(this.rotationHandles),this.layer.addFeatures(this.handles),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Control.prototype.deactivate.apply(this,arguments)&&(this.layer.removeFeatures(this.handles),this.rotate&&this.layer.removeFeatures(this.rotationHandles),\n +this.layer.removeFeatures([this.box]),this.dragControl.deactivate(),a=!0);return a},setMap:function(a){this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setFeature:function(a,b){var b=OpenLayers.Util.applyDefaults(b,{rotation:0,scale:1,ratio:1}),c=this.rotation,d=this.center;OpenLayers.Util.extend(this,b);if(!1!==this.events.triggerEvent("beforesetfeature",{feature:a})){this.feature=a;this.activate();this._setfeature=!0;var e=this.feature.geometry.getBounds();this.box.move(e.getCenterLonLat());\n +this.box.geometry.rotate(-c,d);this._angle=0;this.rotation?(c=a.geometry.clone(),c.rotate(-this.rotation,this.center),c=new OpenLayers.Feature.Vector(c.getBounds().toGeometry()),c.geometry.rotate(this.rotation,this.center),this.box.geometry.rotate(this.rotation,this.center),this.box.move(c.geometry.getBounds().getCenterLonLat()),c=c.geometry.components[0].components[0].getBounds().getCenterLonLat()):c=new OpenLayers.LonLat(e.left,e.bottom);this.handles[0].move(c);delete this._setfeature;this.events.triggerEvent("setfeature",\n +{feature:a})}},unsetFeature:function(){this.active?this.deactivate():(this.feature=null,this.rotation=0,this.ratio=this.scale=1)},createBox:function(){var a=this;this.center=new OpenLayers.Geometry.Point(0,0);this.box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,\n +1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,"string"==typeof this.renderIntent?null:this.renderIntent);this.box.geometry.move=function(b,c){a._moving=!0;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);a.center.move(b,c);delete a._moving};for(var b=function(a,b){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(a,b);this._handle.geometry.move(a,b)},c=function(a,b,c){OpenLayers.Geometry.Point.prototype.resize.apply(this,\n +arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(a,b,c);this._handle.geometry.resize(a,b,c)},d=function(a,b){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(a,b);this._handle.geometry.rotate(a,b)},e=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,g=!(!a._setfeature&&a.preserveAspectRatio)&&!(f&&f.shiftKey),\n +h=new OpenLayers.Geometry.Point(d,e),f=a.center;this.rotate(-a.rotation,f);h.rotate(-a.rotation,f);var i=this.x-f.x,j=this.y-f.y,k=i-(this.x-h.x),l=j-(this.y-h.y);a.irregular&&!a._setfeature&&(i-=(this.x-h.x)/2,j-=(this.y-h.y)/2);this.x=d;this.y=e;h=1;g?(j=1.0E-5>Math.abs(l)?1:j/l,h=(1.0E-5>Math.abs(k)?1:i/k)/j):(k=Math.sqrt(k*k+l*l),j=Math.sqrt(i*i+j*j)/k);a._moving=!0;a.box.geometry.rotate(-a.rotation,f);delete a._moving;a.box.geometry.resize(j,f,h);a.box.geometry.rotate(a.rotation,f);a.transformFeature({scale:j,\n +ratio:h});a.irregular&&!a._setfeature&&(i=f.clone(),i.x+=1.0E-5>Math.abs(d-f.x)?0:this.x-d,i.y+=1.0E-5>Math.abs(e-f.y)?0:this.y-e,a.box.geometry.move(this.x-d,this.y-e),a.transformFeature({center:i}))}},f=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,f=f&&f.shiftKey?45:1,g=a.center,h=this.x-g.x,i=this.y-g.y;this.x=d;this.y=e;d=Math.atan2(i-c,h-b);d=Math.atan2(i,h)-d;d*=180/Math.PI;a._angle=(a._angle+\n +d)%360;d=a.rotation%f;if(Math.abs(a._angle)>=f||0!==d)d=Math.round(a._angle/f)*f-d,a._angle=0,a.box.geometry.rotate(d,g),a.transformFeature({rotation:d})}},g=Array(8),h=Array(4),i,j,k,l="sw s se e ne n nw w".split(" "),m=0;8>m;++m)i=this.box.geometry.components[m],j=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-resize"},"string"==typeof this.renderIntent?null:this.renderIntent),0==m%2&&(k=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-rotate"},"string"==typeof this.rotationHandleSymbolizer?\n +null:this.rotationHandleSymbolizer),k.geometry.move=f,i._rotationHandle=k,h[m/2]=k),i.move=b,i.resize=c,i.rotate=d,j.geometry.move=e,i._handle=j,g[m]=j;this.rotationHandles=h;this.handles=g},createControl:function(){var a=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:!0,moveFeature:function(b){this.feature===a.feature&&(this.feature=a.box);OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments)},onDrag:function(b){b===a.box&&a.transformFeature({center:a.center})},\n +onStart:function(b){var c=!a.geometryTypes||-1!==OpenLayers.Util.indexOf(a.geometryTypes,b.geometry.CLASS_NAME),d=OpenLayers.Util.indexOf(a.handles,b),d=d+OpenLayers.Util.indexOf(a.rotationHandles,b);b!==a.feature&&(b!==a.box&&-2==d&&c)&&a.setFeature(b)},onComplete:function(){a.events.triggerEvent("transformcomplete",{feature:a.feature})}})},drawHandles:function(){for(var a=this.layer,b=0;8>b;++b)this.rotate&&0===b%2&&a.drawFeature(this.rotationHandles[b/2],this.rotationHandleSymbolizer),a.drawFeature(this.handles[b],\n +this.renderIntent)},transformFeature:function(a){if(!this._setfeature){this.scale*=a.scale||1;this.ratio*=a.ratio||1;var b=this.rotation;this.rotation=(this.rotation+(a.rotation||0))%360;if(!1!==this.events.triggerEvent("beforetransform",a)){var c=this.feature,d=c.geometry,e=this.center;d.rotate(-b,e);a.scale||a.ratio?d.resize(a.scale,e,a.ratio):a.center&&c.move(a.center.getBounds().getCenterLonLat());d.rotate(this.rotation,e);this.layer.drawFeature(c);c.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",\n +a)}}this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles()},destroy:function(){for(var a,b=0;8>b;++b)a=this.box.geometry.components[b],a._handle.destroy(),a._handle=null,a._rotationHandle&&a._rotationHandle.destroy(),a._rotationHandle=null;this.rotationHandles=this.rotationHandleSymbolizer=this.handles=this.feature=this.center=null;this.box.destroy();this.layer=this.box=null;this.dragControl.destroy();this.dragControl=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},\n +CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=\n +null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,\n +c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x),a=Math.max(c.x,\n +a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?\n +(this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,\n +"border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b;if(this.out){b=Math.abs(a.right-a.left);var c=Math.abs(a.top-a.bottom);b=Math.min(this.map.size.h/c,this.map.size.w/b);var c=this.map.getExtent(),d=this.map.getLonLatFromPixel(a.getCenterPixel()),a=d.lon-\n +c.getWidth()/2*b,e=d.lon+c.getWidth()/2*b,f=d.lat-c.getHeight()/2*b;b=d.lat+c.getHeight()/2*b;b=new OpenLayers.Bounds(a,f,e,b)}else b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),c=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,c.lon,c.lat);c=this.map.getZoom();this.map.zoomToExtent(b);c==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(c+(this.out?-1:1))}else this.out?this.map.setCenter(this.map.getLonLatFromPixel(a),this.map.getZoom()-1):this.map.setCenter(this.map.getLonLatFromPixel(a),\n +this.map.getZoom()+1)},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:1,documentDrag:!1,kinetic:null,enableKinetic:!1,kineticInterval:10,draw:function(){if(this.enableKinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},{interval:this.interval,\n +documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,f){c.map.pan(a,b,{dragging:!f,\n +animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,touch:!1,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.touch||(this.unregisterMouseListeners(),this.touch=!0);this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,\n +a.lastTouches=this.last.touches,this.handleSingle(a),this.down=null);return!0},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this})},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&(this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a))&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=\n +this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},\n +dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.stop(a),this.handleDouble(a)),(!this.last.touches||2!==this.last.touches.length)&&this.clearTimer()):(this.first=this.getEventInfo(a),this.queuePotentialClick(this.single?\n +OpenLayers.Util.extend({},a):null)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length)for(var a=0,c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=\n +!1;break}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,2))},passesDblclickTolerance:function(){var a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=\n +null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.clientX,clientY:d.clientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,this.touch=!1,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;\n +this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();\n +this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,\n +documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},this.mouseWheelOptions);OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&\n +this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom+1)},defaultDblRightClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom-1)},wheelChange:function(a,b){var c=this.map.getZoom(),d=this.map.getZoom()+Math.round(b),d=Math.max(d,0),d=Math.min(d,this.map.getNumZoomLevels());if(d!==c){var e=this.map.getSize(),c=e.w/2-a.xy.x,e=a.xy.y-e.h/2,f=this.map.baseLayer.getResolutionForZoom(d),g=this.map.getLonLatFromPixel(a.xy);\n +this.map.setCenter(new OpenLayers.LonLat(g.lon+c*f,g.lat+e*f),d)}},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},\n +CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,multi:!1,featureAdded:function(){},handlerOptions:null,initialize:function(a,b,c){OpenLayers.Control.prototype.initialize.apply(this,[c]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(a,b){this.layer.events.triggerEvent("sketchmodified",{vertex:a,feature:b})},create:function(a,b){this.layer.events.triggerEvent("sketchstarted",{vertex:a,feature:b})}},this.callbacks);this.layer=\n +a;this.handlerOptions=this.handlerOptions||{};this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{renderers:a.renderers,rendererOptions:a.rendererOptions});"multi"in this.handlerOptions||(this.handlerOptions.multi=this.multi);if(a=this.layer.styleMap&&this.layer.styleMap.styles.temporary)this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":a})});this.handler=new b(this,\n +this.callbacks,this.handlerOptions)},drawFeature:function(a){a=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",{feature:a})&&(a.state=OpenLayers.State.INSERT,this.layer.addFeatures([a]),this.featureAdded(a),this.events.triggerEvent("featureadded",{feature:a}))},insertXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertXY(a,b)},insertDeltaXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeltaXY(a,b)},insertDirectionLength:function(a,\n +b){this.handler&&this.handler.line&&this.handler.insertDirectionLength(a,b)},insertDeflectionLength:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeflectionLength(a,b)},undo:function(){return this.handler.undo&&this.handler.undo()},redo:function(){return this.handler.redo&&this.handler.redo()},finishSketch:function(){this.handler.finishGeometry()},cancel:function(){this.handler.cancel()},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{holeModifier:null,drawingHole:!1,polygon:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,\n +this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:!0})},addPoint:function(a){if(!this.drawingHole&&this.holeModifier&&this.evt&&this.evt[this.holeModifier])for(var b=this.point.geometry,c=this.control.layer.features,d,e=c.length-1;0<=e;--e)if(d=c[e].geometry,(d instanceof OpenLayers.Geometry.Polygon||d instanceof OpenLayers.Geometry.MultiPolygon)&&d.intersects(b)){b=c[e];this.control.layer.removeFeatures([b],{silent:!0});this.control.layer.events.registerPriority("sketchcomplete",\n +this,this.finalizeInteriorRing);this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology);b.geometry.addComponent(this.line.geometry);this.polygon=b;this.drawingHole=!0;break}OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments)},getCurrentPointIndex:function(){return this.line.geometry.components.length-2},enforceTopology:function(a){var a=a.vertex,b=this.line.geometry.components;this.polygon.geometry.intersects(a)||(b=b[b.length-3],a.x=b.x,a.y=b.y)},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-\n +2]);this.removePoint();this.finalize()},finalizeInteriorRing:function(){var a=this.line.geometry,b=0!==a.getArea();if(b){for(var c=this.polygon.geometry.component + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAo=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="10" aka="AAAAAAAAAAo="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +s,d=c.length-2;0<=d;--d)if(a.intersects(c[d])){b=!1;break}if(b){d=c.length-2;a:for(;0<d;--d)for(var e=c[d].components,f=0,g=e.length;f<g;++f)if(a.containsPoint(e[f])){b=!1;break a}}}b?this.polygon.state!==OpenLayers.State.INSERT&&(this.polygon.state=OpenLayers.State.UPDATE):this.polygon.geometry.removeComponent(a);this.restoreFeature();return!1},\n +cancel:function(){this.drawingHole&&(this.polygon.geometry.removeComponent(this.line.geometry),this.restoreFeature(!0));return OpenLayers.Handler.Path.prototype.cancel.apply(this,arguments)},restoreFeature:function(a){this.control.layer.events.unregister("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.unregister("sketchmodified",this,this.enforceTopology);this.layer.removeFeatures([this.polygon],{silent:!0});this.control.layer.addFeatures([this.polygon],{silent:!0});this.drawingHole=\n +!1;a||this.control.layer.events.triggerEvent("sketchcomplete",{feature:this.polygon})},destroyFeature:function(a){OpenLayers.Handler.Path.prototype.destroyFeature.call(this,a);this.polygon=null},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.polygon},getGeometry:function(){var a=this.polygon&&this.polygon.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPolygon([a]));return a},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{citeCompliant:!1,initialize:function(a,b){OpenLayers.Control.Panel.prototype.initialize.apply(this,[b]);this.addControls([new OpenLayers.Control.Navigation]);this.addControls([new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Point,{displayClass:"olControlDrawFeaturePoint",handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Path,{displayClass:"olControlDrawFeaturePath",\n +handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Polygon,{displayClass:"olControlDrawFeaturePolygon",handlerOptions:{citeCompliant:this.citeCompliant}})])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,\n +scope:this});return a},update:function(a){var b=this.getMapBounds();if(null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b)))this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a)},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));\n +return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){this.response&&!(a&&!0===a.noAbort)&&\n +(this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,\n +filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if((a=a.features)&&0<a.length){var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b))for(var d,e=0,f=a.length;e<f;++e)(d=a[e].geometry)&&d.transform(b,c);this.layer.addFeatures(a)}this.response=null;this.layer.events.triggerEvent("loadend")},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:!0,lzd:null,zoomLevels:null,initialize:function(a,b,c,d,e,f){this.lzd=c;this.zoomLevels=d;c=[];c.push(a,b,e,f);OpenLayers.Layer.Grid.prototype.initialize.apply(this,c);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getZoom:function(){var a=this.map.getZoom();this.map.getMaxExtent();return a-=Math.log(this.maxResolution/(this.lzd/512))/Math.log(2)},getURL:function(a){var a=\n +this.adjustBounds(a),b=this.getZoom(),c=this.map.getMaxExtent(),d=this.lzd/Math.pow(2,this.getZoom()),e=Math.floor((a.left-c.left)/d),a=Math.floor((a.bottom-c.bottom)/d);return this.map.getResolution()<=this.lzd/512&&this.getZoom()<=this.zoomLevels?this.getFullRequestString({L:b,X:e,Y:a}):OpenLayers.Util.getImageLocation("blank.gif")},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Protocol.CSW=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.CSW.DEFAULTS),b=OpenLayers.Protocol.CSW["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSW version: "+a.version;return new b(a)};OpenLayers.Protocol.CSW.DEFAULTS={version:"2.0.2"};OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":!0},createLayer:function(a,b){var c,d={layer:!0,matrixSet:!0},e;for(e in d)if(!(e in b))throw Error("Missing property \'"+e+"\' in layer configuration.");d=a.contents;e=d.tileMatrixSets[b.matrixSet];for(var f,g=0,h=d.layers.length;g<h;++g)if(d.layers[g].identifier===b.layer){f=d.layers[g];break}if(f&&e){for(var i,g=0,h=f.styles.length;g<h&&!(i=f.styles[g],i.isDefault);++g);\n +c=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(b,{url:"REST"===b.requestEncoding&&f.resourceUrl?f.resourceUrl.tile.template:a.operationsMetadata.GetTile.dcp.http.get[0].url,name:f.title,style:i.identifier,matrixIds:e.matrixIds,tileFullExtent:e.bounds}))}return c},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Layer.Google.v3={DEFAULTS:{sphericalMercator:!0,projection:"EPSG:900913"},animationEnabled:!0,loadMapObject:function(){this.type||(this.type=google.maps.MapTypeId.ROADMAP);var a,b=OpenLayers.Layer.Google.cache[this.map.id];b?(a=b.mapObject,++b.count):(b=this.map.viewPortDiv,a=document.createElement("div"),a.id=this.map.id+"_GMapContainer",a.style.position="absolute",a.style.width="100%",a.style.height="100%",b.appendChild(a),b=this.map.getCenter(),a=new google.maps.Map(a,{center:b?new google.maps.LatLng(b.lat,\n +b.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||0,mapTypeId:this.type,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}),b={mapObject:a,count:1},OpenLayers.Layer.Google.cache[this.map.id]=b,this.repositionListener=google.maps.event.addListenerOnce(a,"center_changed",OpenLayers.Function.bind(this.repositionMapElements,this)));this.mapObject=a;this.setGMapVisibility(this.visibility)},repositionMapElements:function(){google.maps.event.trigger(this.mapObject,\n +"resize");var a=this.mapObject.getDiv().firstChild;if(!a||3>a.childNodes.length)return this.repositionTimer=window.setTimeout(OpenLayers.Function.bind(this.repositionMapElements,this),250),!1;for(var b=OpenLayers.Layer.Google.cache[this.map.id],c=this.map.viewPortDiv,d=a.children.length-1;0<=d;--d){if(1000001==a.children[d].style.zIndex){var e=a.children[d];c.appendChild(e);e.style.zIndex="1100";e.style.bottom="";e.className="olLayerGoogleCopyright olLayerGoogleV3";e.style.display="";b.termsOfUse=\n +e}1E6==a.children[d].style.zIndex&&(e=a.children[d],c.appendChild(e),e.style.zIndex="1100",e.style.bottom="",e.className="olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint",e.style.display="",b.poweredBy=e);10000002==a.children[d].style.zIndex&&c.appendChild(a.children[d])}this.setGMapVisibility(this.visibility)},onMapResize:function(){if(this.visibility)google.maps.event.trigger(this.mapObject,"resize");else{var a=OpenLayers.Layer.Google.cache[this.map.id];if(!a.resized){var b=this;google.maps.event.addListenerOnce(this.mapObject,\n +"tilesloaded",function(){google.maps.event.trigger(b.mapObject,"resize");b.moveTo(b.map.getCenter(),b.map.getZoom());delete a.resized})}a.resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];if(b){for(var c=this.type,d=this.map.layers,e,f=d.length-1;0<=f;--f)if(e=d[f],e instanceof OpenLayers.Layer.Google&&!0===e.visibility&&!0===e.inRange){c=e.type;a=!0;break}d=this.mapObject.getDiv();!0===a?(this.mapObject.setMapTypeId(c),d.style.left="",b.termsOfUse&&b.termsOfUse.style&&\n +(b.termsOfUse.style.left="",b.termsOfUse.style.display="",b.poweredBy.style.display=""),b.displayed=this.id):(delete b.displayed,d.style.left="-9999px",b.termsOfUse&&b.termsOfUse.style&&(b.termsOfUse.style.display="none",b.termsOfUse.style.left="-9999px",b.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getDiv()},getMapObjectBoundsFromOLBounds:function(a){var b=null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,\n +a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new google.maps.LatLngBounds(new google.maps.LatLng(b.lat,b.lon),new google.maps.LatLng(a.lat,a.lon)));return b},getMapObjectLonLatFromMapObjectPixel:function(a){var b=this.map.getSize(),c=this.getLongitudeFromMapObjectLonLat(this.mapObject.center),d=this.getLatitudeFromMapObjectLonLat(this.mapObject.center),e=this.map.getResolution(),a=new OpenLayers.LonLat(c+(a.x-b.w/2)*e,d-(a.y-b.h/2)*e);\n +this.wrapDateLine&&(a=a.wrapDateLine(this.maxExtent));return this.getMapObjectLonLatFromLonLat(a.lon,a.lat)},getMapObjectPixelFromMapObjectLonLat:function(a){var b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),c=this.map.getResolution(),d=this.map.getExtent();return this.getMapObjectPixelFromXY(1/c*(b-d.left),1/c*(d.top-a))},setMapObjectCenter:function(a,b){if(!1===this.animationEnabled&&b!=this.mapObject.zoom){var c=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,\n +"idle",function(){c.style.visibility=""});c.style.visibility="hidden"}this.mapObject.setOptions({center:a,zoom:b})},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new google.maps.LatLng(c.lat,c.lon)):c=new google.maps.LatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new google.maps.Point(a,b)},destroy:function(){this.repositionListener&&\n +google.maps.event.removeListener(this.repositionListener);this.repositionTimer&&window.clearTimeout(this.repositionTimer);OpenLayers.Layer.Google.prototype.destroy.apply(this,arguments)}};OpenLayers.Format.WPSDescribeProcess=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{wps:"http://www.opengis.net/wps/1.0.0",ows:"http://www.opengis.net/ows/1.1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",defaultPrefix:"wps",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,\n +[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wps:{ProcessDescriptions:function(a,b){b.processDescriptions={};this.readChildNodes(a,b.processDescriptions)},ProcessDescription:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion"),statusSupported:"true"===a.getAttribute("statusSupported"),storeSupported:"true"===a.getAttribute("storeSupported")};this.readChildNodes(a,c);b[c.identifier]=c},DataInputs:function(a,\n +b){b.dataInputs=[];this.readChildNodes(a,b.dataInputs)},ProcessOutputs:function(a,b){b.processOutputs=[];this.readChildNodes(a,b.processOutputs)},Output:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},ComplexOutput:function(a,b){b.complexOutput={};this.readChildNodes(a,b.complexOutput)},Input:function(a,b){var c={maxOccurs:parseInt(a.getAttribute("maxOccurs")),minOccurs:parseInt(a.getAttribute("minOccurs"))};this.readChildNodes(a,c);b.push(c)},BoundingBoxData:function(a,b){b.boundingBoxData=\n +{};this.readChildNodes(a,b.boundingBoxData)},CRS:function(a,b){b.CRSs||(b.CRSs={});b.CRSs[this.getChildValue(a)]=!0},LiteralData:function(a,b){b.literalData={};this.readChildNodes(a,b.literalData)},ComplexData:function(a,b){b.complexData={};this.readChildNodes(a,b.complexData)},Default:function(a,b){b["default"]={};this.readChildNodes(a,b["default"])},Supported:function(a,b){b.supported={};this.readChildNodes(a,b.supported)},Format:function(a,b){var c={};this.readChildNodes(a,c);b.formats||(b.formats=\n +{});b.formats[c.mimeType]=!0},MimeType:function(a,b){b.mimeType=this.getChildValue(a)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSDescribeProcess"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",gmd:"http://www.isotc211.org/2005/gmd",geonet:"http://www.fao.org/geonetwork",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",\n +requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},\n +readers:{csw:{GetRecordsResponse:function(a,b){b.records=[];this.readChildNodes(a,b);var c=this.getAttributeNS(a,"","version");""!=c&&(b.version=c)},RequestId:function(a,b){b.RequestId=this.getChildValue(a)},SearchStatus:function(a,b){b.SearchStatus={};var c=this.getAttributeNS(a,"","timestamp");""!=c&&(b.SearchStatus.timestamp=c)},SearchResults:function(a,b){this.readChildNodes(a,b);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]="numberOfRecordsMatched"==c[e].name||"numberOfRecordsReturned"==\n +c[e].name||"nextRecord"==c[e].name?parseInt(c[e].nodeValue):c[e].nodeValue;b.SearchResults=d},SummaryRecord:function(a,b){var c={type:"SummaryRecord"};this.readChildNodes(a,c);b.records.push(c)},BriefRecord:function(a,b){var c={type:"BriefRecord"};this.readChildNodes(a,c);b.records.push(c)},DCMIRecord:function(a,b){var c={type:"DCMIRecord"};this.readChildNodes(a,c);b.records.push(c)},Record:function(a,b){var c={type:"Record"};this.readChildNodes(a,c);b.records.push(c)},"*":function(a,b){var c=a.localName||\n +a.nodeName.split(":").pop();b[c]=this.getChildValue(a)}},geonet:{info:function(a,b){var c={};this.readChildNodes(a,c);b.gninfo=c}},dc:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);for(var d={},e=a.attributes,f=0,g=e.length;f<g;++f)d[e[f].name]=e[f].nodeValue;d.value=this.getChildValue(a);""!=d.value&&b[c].push(d)}},dct:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);b[c].push(this.getChildValue(a))}},\n +ows:OpenLayers.Util.applyDefaults({BoundingBox:function(a,b){b.bounds&&(b.BoundingBox=[{crs:b.projection,value:[b.bounds.left,b.bounds.bottom,b.bounds.right,b.bounds.top]}],delete b.projection,delete b.bounds);OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows.BoundingBox.apply(this,arguments)}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows)},write:function(a){a=this.writeNode("csw:GetRecords",a);a.setAttribute("xmlns:gmd",this.namespaces.gmd);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[a])},writers:{csw:{GetRecords:function(a){a||(a={});var b=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:a.requestId||this.requestId,resultType:a.resultType||this.resultType,outputFormat:a.outputFormat||this.outputFormat,outputSchema:a.outputSchema||this.outputSchema,startPosition:a.startPosition||this.startPosition,maxRecords:a.maxRecords||this.maxRecords}});if(a.DistributedSearch||this.DistributedSearch)this.writeNode("csw:DistributedSearch",\n +a.DistributedSearch||this.DistributedSearch,b);var c=a.ResponseHandler||this.ResponseHandler;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ResponseHandler",c[d],b);this.writeNode("Query",a.Query||this.Query,b);return b},DistributedSearch:function(a){return this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:a.hopCount}})},ResponseHandler:function(a){return this.createElementNSPlus("csw:ResponseHandler",{value:a.value})},Query:function(a){a||\n +(a={});var b=this.createElementNSPlus("csw:Query",{attributes:{typeNames:a.typeNames||"csw:Record"}}),c=a.ElementName;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ElementName",c[d],b);else this.writeNode("csw:ElementSetName",a.ElementSetName||{value:"summary"},b);a.Constraint&&this.writeNode("csw:Constraint",a.Constraint,b);a.SortBy&&this.writeNode("ogc:SortBy",a.SortBy,b);return b},ElementName:function(a){return this.createElementNSPlus("csw:ElementName",\n +{value:a.value})},ElementSetName:function(a){return this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:a.typeNames},value:a.value})},Constraint:function(a){var b=this.createElementNSPlus("csw:Constraint",{attributes:{version:a.version}});if(a.Filter){var c=new OpenLayers.Format.Filter({version:a.version});b.appendChild(c.write(a.Filter))}else a.CqlText&&(a=this.createElementNSPlus("CqlText",{value:a.CqlText.value}),b.appendChild(a));return b}},ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},\n +CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(a,b,c){this.bounds=a;this.div=OpenLayers.Util.createDiv();this.div.style.overflow="hidden";this.events=new OpenLayers.Events(this,this.div);this.setBorder(b,c)},destroy:function(){this.div=this.bounds=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments)},setBorder:function(a,b){a||(a="red");b||(b=2);this.div.style.border=b+"px solid "+a},draw:function(a,b){OpenLayers.Util.modifyDOMElement(this.div,\n +null,a,b);return this.div},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsBounds(this.bounds,!0,!0));return a},display:function(a){this.div.style.display=a?"":"none"},CLASS_NAME:"OpenLayers.Marker.Box"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:!0,initialize:function(a){a=a||{};!1!==a.extractStyles&&(a.defaultStyle={externalGraphic:OpenLayers.Util.getImageLocation("marker.png"),graphicWidth:21,graphicHeight:25,graphicXOffset:-10.5,graphicYOffset:-12.5});OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){for(var a=a.split("\\n"),b,c=[],d=0;d<a.length-1;d++){var e=a[d].replace(/^\\s*/,"").replace(/\\s*$/,"");if("#"!=e.charAt(0))if(b){for(var e=\n +e.split("\\t"),f=new OpenLayers.Geometry.Point(0,0),g={},h=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null,i=!1,j=0;j<e.length;j++)if(e[j])if("point"==b[j])i=e[j].split(","),f.y=parseFloat(i[0]),f.x=parseFloat(i[1]),i=!0;else if("lat"==b[j])f.y=parseFloat(e[j]),i=!0;else if("lon"==b[j])f.x=parseFloat(e[j]),i=!0;else if("title"==b[j])g.title=e[j];else if("image"==b[j]||"icon"==b[j]&&h)h.externalGraphic=e[j];else if("iconSize"==b[j]&&h){var k=e[j].split(",");h.graphicWidth=\n +parseFloat(k[0]);h.graphicHeight=parseFloat(k[1])}else"iconOffset"==b[j]&&h?(k=e[j].split(","),h.graphicXOffset=parseFloat(k[0]),h.graphicYOffset=parseFloat(k[1])):"description"==b[j]?g.description=e[j]:"overflow"==b[j]?g.overflow=e[j]:g[b[j]]=e[j];i&&(this.internalProjection&&this.externalProjection&&f.transform(this.externalProjection,this.internalProjection),e=new OpenLayers.Feature.Vector(f,g,h),c.push(e))}else b=e.split("\\t")}return c},CLASS_NAME:"OpenLayers.Format.Text"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(a,b){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadText:function(){!this.loaded&&null!=this.location&&(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,\n +success:this.parseData,failure:function(){this.events.triggerEvent("loadend")},scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadText()},parseData:function(a){var a=a.responseText,b={};OpenLayers.Util.extend(b,this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(b.externalProjection=this.projection,b.internalProjection=this.map.getProjectionObject());for(var a=\n +(new OpenLayers.Format.Text(b)).read(a),b=0,c=a.length;b<c;b++){var d={},e=a[b],f,g,h;f=new OpenLayers.LonLat(e.geometry.x,e.geometry.y);e.style.graphicWidth&&e.style.graphicHeight&&(g=new OpenLayers.Size(e.style.graphicWidth,e.style.graphicHeight));void 0!==e.style.graphicXOffset&&void 0!==e.style.graphicYOffset&&(h=new OpenLayers.Pixel(e.style.graphicXOffset,e.style.graphicYOffset));null!=e.style.externalGraphic?d.icon=new OpenLayers.Icon(e.style.externalGraphic,g,h):(d.icon=OpenLayers.Marker.defaultIcon(),\n +null!=g&&d.icon.setSize(g));null!=e.attributes.title&&null!=e.attributes.description&&(d.popupContentHTML="<h2>"+e.attributes.title+"</h2><p>"+e.attributes.description+"</p>");d.overflow=e.attributes.overflow||"auto";d=new OpenLayers.Feature(this,f,d);this.features.push(d);f=d.createMarker();null!=e.attributes.title&&null!=e.attributes.description&&f.events.register("click",d,this.markerClick);this.addMarker(f)}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;\n +this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||this.layer.map.addPopup(this.createPopup());OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:"shiftKey",layerOptions:null,persist:!1,irregular:!1,citeCompliant:!1,angle:null,fixedRadius:!1,feature:null,layer:null,origin:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.Drag.prototype.initialize.apply(this,[a,b,c]);this.options=c?c:{}},setOptions:function(a){OpenLayers.Util.extend(this.options,\n +a);OpenLayers.Util.extend(this,a)},activate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.activate.apply(this,arguments)&&(a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions),this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a),this.map.addLayer(this.layer),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)&&(this.dragging&&this.cancel(),\n +null!=this.layer.map&&(this.layer.destroy(!1),this.feature&&this.feature.destroy()),this.feature=this.layer=null,a=!0);return a},down:function(a){this.fixedRadius=!!this.radius;a=this.layer.getLonLatFromViewPortPx(a.xy);this.origin=new OpenLayers.Geometry.Point(a.lon,a.lat);if(!this.fixedRadius||this.irregular)this.radius=this.map.getResolution();this.persist&&this.clear();this.feature=new OpenLayers.Feature.Vector;this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],\n +{silent:!0});this.layer.drawFeature(this.feature,this.style)},move:function(a){var b=this.layer.getLonLatFromViewPortPx(a.xy),b=new OpenLayers.Geometry.Point(b.lon,b.lat);this.irregular?(a=Math.sqrt(2)*Math.abs(b.y-this.origin.y)/2,this.radius=Math.max(this.map.getResolution()/2,a)):this.fixedRadius?this.origin=b:(this.calculateAngle(b,a),this.radius=Math.max(this.map.getResolution()/2,b.distanceTo(this.origin)));this.modifyGeometry();this.irregular&&(a=b.x-this.origin.x,b=b.y-this.origin.y,this.feature.geometry.resize(1,\n +this.origin,0==b?a/(this.radius*Math.sqrt(2)):a/b),this.feature.geometry.move(a/2,b/2));this.layer.drawFeature(this.feature,this.style)},up:function(a){this.finalize();this.start==this.last&&this.callback("done",[a.xy])},out:function(){this.finalize()},createGeometry:function(){this.angle=Math.PI*(1/this.sides-0.5);this.snapAngle&&(this.angle+=this.snapAngle*(Math.PI/180));this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle)},modifyGeometry:function(){var a,\n +b,c=this.feature.geometry.components[0];c.components.length!=this.sides+1&&(this.createGeometry(),c=this.feature.geometry.components[0]);for(var d=0;d<this.sides;++d)b=c.components[d],a=this.angle+2*d*Math.PI/this.sides,b.x=this.origin.x+this.radius*Math.cos(a),b.y=this.origin.y+this.radius*Math.sin(a),b.clearBounds()},calculateAngle:function(a,b){var c=Math.atan2(a.y-this.origin.y,a.x-this.origin.x);if(this.snapAngle&&this.snapToggle&&!b[this.snapToggle]){var d=Math.PI/180*this.snapAngle;this.angle=\n +Math.round(c/d)*d}else this.angle=c},cancel:function(){this.callback("cancel",null);this.finalize()},finalize:function(){this.origin=null;this.radius=this.options.radius},clear:function(){this.layer&&(this.layer.renderer.clear(),this.layer.destroyFeatures())},callback:function(a){this.callbacks[a]&&this.callbacks[a].apply(this.control,[this.feature.geometry.clone()]);!this.persist&&("done"==a||"cancel"==a)&&this.clear()},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{clearOnDeactivate:!1,layers:null,callbacks:null,selectionSymbolizer:{Polygon:{fillColor:"#FF0000",stroke:!1},Line:{strokeColor:"#FF0000",strokeWidth:2},Point:{graphicName:"square",fillColor:"#FF0000",pointRadius:5}},layerOptions:null,handlerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},\n +this.callbacks);this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:!1,tileOptions:{maxGetUrlLength:2048}});this.sketchStyle&&(this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})}));this.handler=new a(this,this.callbacks,this.handlerOptions)},destroy:function(){for(var a in this.layerCache)delete this.layerCache[a];\n +for(a in this.wfsCache)delete this.wfsCache[a];OpenLayers.Control.prototype.destroy.apply(this,arguments)},coupleLayerVisiblity:function(a){this.setVisibility(a.object.getVisibility())},createSelectionLayer:function(a){var b;if(this.layerCache[a.id])b=this.layerCache[a.id];else{b=new OpenLayers.Layer.WMS(a.name,a.url,a.params,OpenLayers.Util.applyDefaults(this.layerOptions,a.getOptions()));this.layerCache[a.id]=b;if(!1===this.layerOptions.displayInLayerSwitcher)a.events.on({visibilitychanged:this.coupleLayerVisiblity,\n +scope:b});this.map.addLayer(b)}return b},createSLD:function(a,b,c){for(var d={version:"1.0.0",namedLayers:{}},e=(""+a.params.LAYERS).split(","),f=0,g=e.length;f<g;f++){var h=e[f];d.namedLayers[h]={name:h,userStyles:[]};var i=this.selectionSymbolizer,j=c[f];0<=j.type.indexOf("Polygon")?i={Polygon:this.selectionSymbolizer.Polygon}:0<=j.type.indexOf("LineString")?i={Line:this.selectionSymbolizer.Line}:0<=j.type.indexOf("Point")&&(i={Point:this.selectionSymbolizer.Point});d.namedLayers[h].userStyles.push({name:"default",\n +rules:[new OpenLayers.Rule({symbolizer:i,filter:b[f],maxScaleDenominator:a.options.minScale})]})}return(new OpenLayers.Format.SLD({srsName:this.map.getProjection()})).write(d)},parseDescribeLayer:function(a){var b=new OpenLayers.Format.WMSDescribeLayer,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;for(var a=b.read(c),b=[],c=null,d=0,e=a.length;d<e;d++)"WFS"==a[d].owsType&&(b.push(a[d].typeName),c=a[d].owsURL);OpenLayers.Request.GET({url:c,params:{SERVICE:"WFS",TYPENAME:b.toString(),REQUEST:"DescribeFeatureType",\n +VERSION:"1.0.0"},callback:function(a){var b=new OpenLayers.Format.WFSDescribeFeatureType,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;this.control.wfsCache[this.layer.id]=b.read(c);this.control._queue&&this.control.applySelection()},scope:this})},getGeometryAttributes:function(a){for(var b=[],a=this.wfsCache[a.id],c=0,d=a.featureTypes.length;c<d;c++)for(var e=a.featureTypes[c].properties,f=0,g=e.length;f<g;f++){var h=e[f],i=h.type;(0<=i.indexOf("LineString")||0<=i.indexOf("GeometryAssociationType")||\n +0<=i.indexOf("GeometryPropertyType")||0<=i.indexOf("Point")||0<=i.indexOf("Polygon"))&&b.push(h)}return b},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];d&&!this.wfsCache[d.id]&&OpenLayers.Request.GET({url:d.url,params:{SERVICE:"WMS",VERSION:d.params.VERSION,LAYERS:d.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:d,control:this}})}return a},deactivate:function(){var a=\n +OpenLayers.Control.prototype.deactivate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];if(d&&!0===this.clearOnDeactivate){var e=this.layerCache,f=e[d.id];f&&(d.events.un({visibilitychanged:this.coupleLayerVisiblity,scope:f}),f.destroy(),delete e[d.id])}}return a},setLayers:function(a){this.active?(this.deactivate(),this.layers=a,this.activate()):this.layers=a},createFilter:function(a,b){var c=null;this.handler instanceof OpenLayers.Handler.RegularPolygon?c=!0===this.handler.irregular?\n +new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:a.name,value:b.getBounds()}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Polygon?c=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Path?c=0<=a.type.indexOf("Point")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,\n +property:a.name,distance:0.01*this.map.getExtent().getWidth(),distanceUnits:this.map.getUnits(),value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Click&&(c=0<=a.type.indexOf("Polygon")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:a.name,distance:0.01*this.map.getExtent().getWidth(),\n +distanceUnits:this.map.getUnits(),value:b}));return c},select:function(a){this._queue=function(){for(var b=0,c=this.layers.length;b<c;b++){for(var d=this.layers[b],e=this.getGeometryAttributes(d),f=[],g=0,h=e.length;g<h;g++){var i=e[g];if(null!==i){if(!(a instanceof OpenLayers.Geometry)){var j=this.map.getLonLatFromPixel(a.xy);a=new OpenLayers.Geometry.Point(j.lon,j.lat)}i=this.createFilter(i,a);null!==i&&f.push(i)}}g=this.createSelectionLayer(d);e=this.createSLD(d,f,e);this.events.triggerEvent("selected",\n +{layer:d,filters:f});g.mergeNewParams({SLD_BODY:e});delete this._queue}};this.applySelection()},applySelection:function(){for(var a=!0,b=0,c=this.layers.length;b<c;b++)if(!this.wfsCache[this.layers[b].id]){a=!1;break}a&&this._queue.call(this)},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.element=OpenLayers.Util.getElement(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.element=document.createElement("div"),this.div.appendChild(this.element));this.map.events.register("moveend",this,this.updateScale);this.updateScale();return this.div},updateScale:function(){var a;\n +if(!0===this.geodesic){if(!this.map.getUnits())return;a=OpenLayers.INCHES_PER_UNIT;a=(this.map.getGeodesicPixelSize().w||1.0E-6)*a.km*OpenLayers.DOTS_PER_INCH}else a=this.map.getScale();a&&(a=9500<=a&&95E4>=a?Math.round(a/1E3)+"K":95E4<=a?Math.round(a/1E6)+"M":Math.round(a),this.element.innerHTML=OpenLayers.i18n("Scale = 1 : ${scaleDenom}",{scaleDenom:a}))},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,useHttpTile:!1,singleTile:!1,useOverlay:!1,useAsyncOverlay:!0,TILE_PARAMS:{operation:"GETTILEIMAGE",version:"1.2.0"},SINGLE_TILE_PARAMS:{operation:"GETMAPIMAGE",format:"PNG",locale:"en",clip:"1",version:"1.0.0"},OVERLAY_PARAMS:{operation:"GETDYNAMICMAPOVERLAYIMAGE",format:"PNG",locale:"en",clip:"1",version:"2.0.0"},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:"png",querystring:null},defaultSize:new OpenLayers.Size(300,\n +300),tileOriginCorner:"tl",initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.transparent&&!0!=this.transparent;d&&null!=d.useOverlay&&(this.useOverlay=d.useOverlay);this.singleTile?this.useOverlay?(OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS),this.useAsyncOverlay||(this.params.version="1.0.0")):OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS):(this.useHttpTile?\n +OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS):OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS),this.setTileSize(this.defaultSize))},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var b;b=a.getCenterLonLat();var c=this.map.getSize();this.singleTile?(a={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:c.h*this.ratio,setdisplaywidth:c.w*\n +this.ratio,setviewcenterx:b.lon,setviewcentery:b.lat,setviewscale:this.map.getScale()},this.useOverlay&&!this.useAsyncOverlay&&(b={},b=OpenLayers.Util.extend(b,a),b.operation="GETVISIBLEMAPEXTENT",b.version="1.0.0",b.session=this.params.session,b.mapName=this.params.mapName,b.format="text/xml",b=this.getFullRequestString(b),OpenLayers.Request.GET({url:b,async:!1})),b=this.getFullRequestString(a)):(c=this.map.getResolution(),b=Math.floor((a.left-this.maxExtent.left)/c),b=Math.round(b/this.tileSize.w),\n +a=Math.floor((this.maxExtent.top-a.top)/c),a=Math.round(a/this.tileSize.h),b=this.useHttpTile?this.getImageFilePath({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}):this.getFullRequestString({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}));return b},getFullRequestString:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d=c,e=OpenLayers.Util.extend({},this.params),e=OpenLayers.Util.extend(e,a),\n +f=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),g;for(g in e)g.toUpperCase()in f&&delete e[g];e=OpenLayers.Util.getParameterString(e);e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},getImageFilePath:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d="",e="";0>a.tilerow&&(d="-");d=0==a.tilerow?d+"0":d+Math.floor(Math.abs(a.tilerow/this.params.tileRowsPerFolder))*\n +this.params.tileRowsPerFolder;0>a.tilecol&&(e="-");e=0==a.tilecol?e+"0":e+Math.floor(Math.abs(a.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;d="/S"+Math.floor(a.scaleindex)+"/"+this.params.basemaplayergroupname+"/R"+d+"/C"+e+"/"+a.tilerow%this.params.tileRowsPerFolder+"_"+a.tilecol%this.params.tileColumnsPerFolder+"."+this.params.format;this.params.querystring&&(d+="?"+this.params.querystring);return c+d},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=\n +c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{handlerOptions:null,callbacks:null,displaySystem:"metric",geodesic:!1,displaySystemUnits:{geographic:["dd"],english:["mi","ft","in"],metric:["km","m"]},partialDelay:300,delayedTrigger:null,persist:!1,immediate:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);var c={done:this.measureComplete,point:this.measurePartial};this.immediate&&(c.modify=this.measureImmediate);this.callbacks=OpenLayers.Util.extend(c,\n +this.callbacks);this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new a(this,this.callbacks,this.handlerOptions)},deactivate:function(){this.cancelDelay();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},cancel:function(){this.cancelDelay();this.handler.cancel()},setImmediate:function(a){(this.immediate=a)?this.callbacks.modify=this.measureImmediate:delete this.callbacks.modify},updateHandler:function(a,b){var c=this.active;c&&\n +this.deactivate();this.handler=new a(this,this.callbacks,b);c&&this.activate()},measureComplete:function(a){this.cancelDelay();this.measure(a,"measure")},measurePartial:function(a,b){this.cancelDelay();b=b.clone();this.handler.freehandMode(this.handler.evt)?this.measure(b,"measurepartial"):this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.delayedTrigger=null;this.measure(b,"measurepartial")},this),this.partialDelay)},measureImmediate:function(a,b,c){c&&!this.handler.freehandMode(this.handler.evt)&&\n +(this.cancelDelay(),this.measure(b.geometry,"measurepartial"))},cancelDelay:function(){null!==this.delayedTrigger&&(window.clearTimeout(this.delayedTrigger),this.delayedTrigger=null)},measure:function(a,b){var c,d;-1<a.CLASS_NAME.indexOf("LineString")?(c=this.getBestLength(a),d=1):(c=this.getBestArea(a),d=2);this.events.triggerEvent(b,{measure:c[0],units:c[1],order:d,geometry:a})},getBestArea:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getArea(a,\n +c),1<d);++e);return[d,c]},getArea:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicArea(this.map.getProjectionObject()),d="m"):(c=a.getArea(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=Math.pow(OpenLayers.INCHES_PER_UNIT[d]/e,2));return c},getBestLength:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getLength(a,c),1<d);++e);return[d,c]},getLength:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicLength(this.map.getProjectionObject()),\n +d="m"):(c=a.getLength(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=OpenLayers.INCHES_PER_UNIT[d]/e);return c},CLASS_NAME:"OpenLayers.Control.Measure"});OpenLayers.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_wmc_SRS:function(a,b){var c=this.getChildValue(b);"object"!=typeof a.projections&&(a.projections={});for(var c=c.split(/ +/),d=0,e=c.length;d<e;d++)a.projections[c[d]]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,\n +[a]);if(a.srs){var c=[],d;for(d in a.srs)c.push(d);b.appendChild(this.createElementDefaultNS("SRS",c.join(" ")))}b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a))},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=\n +1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,\n +arguments)},setBackgroundColor:function(){},setBorder:function(){},setOpacity:function(){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=\n +OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+\n +"_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,i=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,j=isNaN(c.size.h)?this.size.h-(f+\n +h):c.size.h;d.div.style.width=(0>i?0:i)+"px";d.div.style.height=(0>j?0:j)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,\n +50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",\n +"auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,\n +0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,\n +21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,\n +0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");\n +OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Tile.Image.IFrame={useIFrame:null,draw:function(){if(OpenLayers.Tile.Image.prototype.shouldDraw.call(this)){var a=this.layer.getURL(this.bounds),b=this.useIFrame;this.useIFrame=null!==this.maxGetUrlLength&&!this.layer.async&&a.length>this.maxGetUrlLength;a=b&&!this.useIFrame;b=!b&&this.useIFrame;if(a||b)this.imgDiv&&this.imgDiv.parentNode===this.frame&&this.frame.removeChild(this.imgDiv),this.imgDiv=null,a?(this.blankImageUrl=this._blankImageUrl,this.frame.removeChild(this.frame.firstChild)):\n +(this._blankImageUrl=this.blankImageUrl,this.blankImageUrl="about:blank")}return OpenLayers.Tile.Image.prototype.draw.apply(this,arguments)},getImage:function(){if(!0===this.useIFrame){if(!this.frame.childNodes.length){var a=document.createElement("div"),b=a.style;b.position="absolute";b.width="100%";b.height="100%";b.zIndex=1;b.backgroundImage="url("+this._blankImageUrl+")";this.frame.appendChild(a)}a=this.id+"_iFrame";9>parseFloat(navigator.appVersion.split("MSIE")[1])?(b=document.createElement(\'<iframe name="\'+\n +a+\'">\'),b.style.backgroundColor="#FFFFFF",b.style.filter="chroma(color=#FFFFFF)"):(b=document.createElement("iframe"),b.style.backgroundColor="transparent",b.name=a);b.scrolling="no";b.marginWidth="0px";b.marginHeight="0px";b.frameBorder="0";b.style.position="absolute";b.style.width="100%";b.style.height="100%";1>this.layer.opacity&&OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,this.layer.opacity);this.frame.appendChild(b);return this.imgDiv=b}return OpenLayers.Tile.Image.prototype.getImage.apply(this,\n +arguments)},createRequestForm:function(){var a=document.createElement("form");a.method="POST";var b=this.layer.params._OLSALT,b=(b?b+"_":"")+this.bounds.toBBOX();a.action=OpenLayers.Util.urlAppend(this.layer.url,b);a.target=this.id+"_iFrame";this.layer.getImageSize();var b=OpenLayers.Util.getParameters(this.url),c,d;for(d in b)c=document.createElement("input"),c.type="hidden",c.name=d,c.value=b[d],a.appendChild(c);return a},setImgSrc:function(a){if(!0===this.useIFrame)if(a){var b=this.createRequestForm();\n +this.frame.appendChild(b);b.submit();this.frame.removeChild(b)}else this.imgDiv.parentNode===this.frame&&(this.frame.removeChild(this.imgDiv),this.imgDiv=null);else OpenLayers.Tile.Image.prototype.setImgSrc.apply(this,arguments)},onImageLoad:function(){OpenLayers.Tile.Image.prototype.onImageLoad.apply(this,arguments);!0===this.useIFrame&&(this.imgDiv.style.opacity=1,this.frame.style.opacity=this.layer.opacity)},createBackBuffer:function(){var a;!1===this.useIFrame&&(a=OpenLayers.Tile.Image.prototype.createBackBuffer.call(this));\n +return a}};OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,\n +[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{gml:OpenLayers.Util.applyDefaults({name:function(a,b){b.name=this.getChildValue(a)},TimePeriod:function(a,b){b.timePeriod={};this.readChildNodes(a,b.timePeriod)},beginPosition:function(a,b){b.beginPosition=this.getChildValue(a)},endPosition:function(a,b){b.endPosition=this.getChildValue(a)}},OpenLayers.Format.GML.v3.prototype.readers.gml),sos:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,\n +b){b.contents={};this.readChildNodes(a,b.contents)},ObservationOfferingList:function(a,b){b.offeringList={};this.readChildNodes(a,b.offeringList)},ObservationOffering:function(a,b){var c=this.getAttributeNS(a,this.namespaces.gml,"id");b[c]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(a,b[c])},time:function(a,b){b.time={};this.readChildNodes(a,b.time)},procedure:function(a,b){b.procedures.push(this.getAttributeNS(a,\n +this.namespaces.xlink,"href"))},observedProperty:function(a,b){b.observedProperties.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},featureOfInterest:function(a,b){b.featureOfInterestIds.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},responseFormat:function(a,b){b.responseFormats.push(this.getChildValue(a))},resultModel:function(a,b){b.resultModels.push(this.getChildValue(a))},responseMode:function(a,b){b.responseModes.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},\n +CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;OpenLayers.Event.isMultiTouch(a)?(this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown):(this.started=!1,this.last=this.start=null);OpenLayers.Event.stop(a);return b},touchmove:function(a){if(this.started&&OpenLayers.Event.isMultiTouch(a)){this.pinching=\n +!0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}return!0},touchend:function(a){this.started&&(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null);return!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=\n +!1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0],a=a[1];return Math.sqrt(Math.pow(b.clientX-a.clientX,2)+Math.pow(b.clientY-a.clientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.Navigation,new OpenLayers.Control.ZoomBox])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.NavToolbar"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:!1,interval:0,timer:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(!0===this.layer.visibility&&this.start(),this.layer.events.on({visibilitychanged:this.reset,scope:this}));return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.stop();return a},reset:function(){!0===this.layer.visibility?this.start():this.stop()},start:function(){this.interval&&("number"===\n +typeof this.interval&&0<this.interval)&&(this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval))},refresh:function(){this.layer&&(this.layer.refresh&&"function"==typeof this.layer.refresh)&&this.layer.refresh({force:this.force})},stop:function(){null!==this.timer&&(window.clearInterval(this.timer),this.timer=null)},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:!0,initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"jpg"==this.params.FORMAT&&\n +(this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.projection.getCode().split(":"),b=b[b.length-1],c=this.getImageSize(),a={BBOX:a.toBBOX(),SIZE:c.w+","+c.h,F:"image",BBOXSR:b,IMAGESR:b};if(this.layerDefs){var b=[],d;for(d in this.layerDefs)this.layerDefs.hasOwnProperty(d)&&\n +this.layerDefs[d]&&(b.push(d),b.push(":"),b.push(this.layerDefs[d]),b.push(";"));0<b.length&&(a.LAYERDEFS=b.join(""))}return this.getFullRequestString(a)},setLayerFilter:function(a,b){this.layerDefs||(this.layerDefs={});b?this.layerDefs[a]=b:delete this.layerDefs[a]},clearLayerFilter:function(a){a?delete this.layerDefs[a]:delete this.layerDefs},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(a){this.regExes={typeStr:/^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,spaces:/\\s+/,parenComma:/\\)\\s*,\\s*\\(/,doubleParenComma:/\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,trimParens:/^\\s*\\(?(.*?)\\)?\\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){var b,c,a=a.replace(/[\\n\\r]/g," ");if(c=this.regExes.typeStr.exec(a))if(a=c[1].toLowerCase(),c=c[2],this.parse[a]&&(b=this.parse[a].apply(this,[c])),this.internalProjection&&this.externalProjection)if(b&&\n +"OpenLayers.Feature.Vector"==b.CLASS_NAME)b.geometry.transform(this.externalProjection,this.internalProjection);else if(b&&"geometrycollection"!=a&&"object"==typeof b){a=0;for(c=b.length;a<c;a++)b[a].geometry.transform(this.externalProjection,this.internalProjection)}return b},write:function(a){var b,c;a.constructor==Array?c=!0:(a=[a],c=!1);var d=[];c&&d.push("GEOMETRYCOLLECTION(");for(var e=0,f=a.length;e<f;++e)c&&0<e&&d.push(","),b=a[e].geometry,d.push(this.extractGeometry(b));c&&d.push(")");return d.join("")},\n +extractGeometry:function(a){var b=a.CLASS_NAME.split(".")[2].toLowerCase();if(!this.extract[b])return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return("collection"==b?"GEOMETRYCOLLECTION":b.toUpperCase())+"("+this.extract[b].apply(this,[a])+")"},extract:{point:function(a){return a.x+" "+a.y},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.point.apply(this,[a.components[c]])+\n +")");return b.join(",")},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b.join(",")},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},multipolygon:function(a){for(var b=\n +[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.polygon.apply(this,[a.components[c]])+")");return b.join(",")},collection:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extractGeometry.apply(this,[a.components[c]]));return b.join(",")}},parse:{point:function(a){a=OpenLayers.String.trim(a).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[0],a[1]))},multipoint:function(a){for(var b=OpenLayers.String.trim(a).split(","),\n +c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.point.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(c))},linestring:function(a){for(var a=OpenLayers.String.trim(a).split(","),b=[],c=0,d=a.length;c<d;++c)b.push(this.parse.point.apply(this,[a[c]]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(b))},multilinestring:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.parenComma),\n +c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.linestring.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(c))},polygon:function(a){for(var b,a=OpenLayers.String.trim(a).split(this.regExes.parenComma),c=[],d=0,e=a.length;d<e;++d)b=a[d].replace(this.regExes.trimParens,"$1"),b=this.parse.linestring.apply(this,[b]).geometry,b=new OpenLayers.Geometry.LinearRing(b.components),c.push(b);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(c))},\n +multipolygon:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.doubleParenComma),c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.polygon.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(c))},geometrycollection:function(a){for(var a=a.replace(/,\\s*([A-Za-z])/g,"|$1"),a=OpenLayers.String.trim(a).split("|"),b=[],c=0,d=a.length;c<d;++c)b.push(OpenLayers.Format.WKT.prototype.read.apply(this,[a[c]]));\n +return b}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:!1,px:null,timerId:null,mousemove:function(a){this.passesTolerance(a.xy)&&(this.clearTimer(),this.callback("move",[a]),this.px=a.xy,a=OpenLayers.Util.extend({},a),this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay));return!this.stopMove},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.clearTimer(),this.callback("move",[a]));return!0},\n +passesTolerance:function(a){var b=!0;this.pixelTolerance&&this.px&&Math.sqrt(Math.pow(this.px.x-a.x,2)+Math.pow(this.px.y-a.y,2))<this.pixelTolerance&&(b=!1);return b},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null)},delayedCall:function(a){this.callback("pause",[a])},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:!1,click:!0,single:!0,clickout:!0,toggle:!1,clickTolerance:5,hover:!1,box:!1,maxFeatures:10,features:null,hoverFeature:null,handlerOptions:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,initialize:function(a){a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.features={};this.handlers=\n +{};this.click&&(this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{}));this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"})));this.hover&&(this.handlers.hover=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{delay:250,pixelTolerance:2})))},\n +activate:function(){if(!this.active)for(var a in this.handlers)this.handlers[a].activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){if(this.active)for(var a in this.handlers)this.handlers[a].deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},selectClick:function(a){var b=this.pixelToBounds(a.xy);this.setModifiers(a);this.request(b,{single:this.single})},selectBox:function(a){var b;if(a instanceof OpenLayers.Bounds)b=\n +this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);else{if(this.click)return;b=this.pixelToBounds(a)}this.setModifiers(this.handlers.box.dragHandler.evt);this.request(b)},selectHover:function(a){this.request(this.pixelToBounds(a.xy),{single:!0,hover:!0})},cancelHover:function(){this.hoverResponse&&(this.protocol.abort(this.hoverResponse),this.hoverResponse=null,OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +"olCursorWait"))},request:function(a,b){var b=b||{},c=new OpenLayers.Filter.Spatial({type:this.filterType,value:a});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");c=this.protocol.read({maxFeatures:!0==b.single?this.maxFeatures:void 0,filter:c,callback:function(c){c.success()&&(c.features.length?!0==b.single?this.selectBestFeature(c.features,a.getCenterLonLat(),b):this.select(c.features):b.hover?this.hoverSelect():(this.events.triggerEvent("clickout"),this.clickout&&this.unselectAll()));\n +OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},scope:this});!0==b.hover&&(this.hoverResponse=c)},selectBestFeature:function(a,b,c){c= + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAs=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="11" aka="AAAAAAAAAAs="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +c||{};if(a.length){for(var b=new OpenLayers.Geometry.Point(b.lon,b.lat),d,e,f,g=Number.MAX_VALUE,h=0;h<a.length&&!(d=a[h],d.geometry&&(f=b.distanceTo(d.geometry,{edge:!1}),f<g&&(g=f,e=d,0==g)));++h);!0==c.hover?this.hoverSelect(e):this.select(e||a)}},setModifiers:function(a){this.modifiers={multiple:this.multiple||this.multipleKey&&a[this.multipleKey],\n +toggle:this.toggle||this.toggleKey&&a[this.toggleKey]}},select:function(a){!this.modifiers.multiple&&!this.modifiers.toggle&&this.unselectAll();OpenLayers.Util.isArray(a)||(a=[a]);var b=this.events.triggerEvent("beforefeaturesselected",{features:a});if(!1!==b){for(var c=[],d,e=0,f=a.length;e<f;++e)d=a[e],this.features[d.fid||d.id]?this.modifiers.toggle&&this.unselect(this.features[d.fid||d.id]):(b=this.events.triggerEvent("beforefeatureselected",{feature:d}),!1!==b&&(this.features[d.fid||d.id]=d,\n +c.push(d),this.events.triggerEvent("featureselected",{feature:d})));this.events.triggerEvent("featuresselected",{features:c})}},hoverSelect:function(a){var b=a?a.fid||a.id:null,c=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;c&&c!=b&&(this.events.triggerEvent("outfeature",{feature:this.hoverFeature}),this.hoverFeature=null);b&&b!=c&&(this.events.triggerEvent("hoverfeature",{feature:a}),this.hoverFeature=a)},unselect:function(a){delete this.features[a.fid||a.id];this.events.triggerEvent("featureunselected",\n +{feature:a})},unselectAll:function(){for(var a in this.features)this.unselect(this.features[a])},setMap:function(a){for(var b in this.handlers)this.handlers[b].setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},pixelToBounds:function(a){var b=a.add(-this.clickTolerance/2,this.clickTolerance/2),a=a.add(this.clickTolerance/2,-this.clickTolerance/2),b=this.map.getLonLatFromPixel(b),a=this.map.getLonLatFromPixel(a);return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\\\%");a=a.replace(/\\\\\\\\\\.(\\*)?/g,function(a,b){return b?a:"\\\\\\\\_"});a=a.replace(/\\\\\\\\\\.\\*/g,"\\\\\\\\%");a=a.replace(/(\\\\)?\\.(\\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\\\)?\\.\\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\\\\./g,".");return a=a.replace(/(\\\\)?\\\\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=\n +"lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){var d=d||{},e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&\n +d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+\n +c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND){e=0;for(f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d)}else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,element:null,prefix:"",separator:", ",suffix:"",numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.events.register("mousemove",this,this.redraw),this.map.events.register("mouseout",this,this.reset),\n +this.redraw(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.map.events.unregister("mousemove",this,this.redraw),this.map.events.unregister("mouseout",this,this.reset),this.element.innerHTML="",!0):!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.div.left="",this.div.top="",this.element=this.div);return this.div},redraw:function(a){var b;if(null==a)this.reset();else if(null==this.lastXy||Math.abs(a.xy.x-\n +this.lastXy.x)>this.granularity||Math.abs(a.xy.y-this.lastXy.y)>this.granularity)this.lastXy=a.xy;else if(b=this.map.getLonLatFromPixel(a.xy))this.displayProjection&&b.transform(this.map.getProjectionObject(),this.displayProjection),this.lastXy=a.xy,a=this.formatOutput(b),a!=this.element.innerHTML&&(this.element.innerHTML=a)},reset:function(){null!=this.emptyString&&(this.element.innerHTML=this.emptyString)},formatOutput:function(a){var b=parseInt(this.numDigits);return this.prefix+a.lon.toFixed(b)+\n +this.separator+a.lat.toFixed(b)+this.suffix},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Geolocate=OpenLayers.Class(OpenLayers.Control,{geolocation:navigator.geolocation,bind:!0,watch:!1,geolocationOptions:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return!this.geolocation?(this.events.triggerEvent("locationuncapable"),!1):OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.watch?this.watchId=this.geolocation.watchPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,\n +this),this.geolocationOptions):this.getCurrentLocation(),!0):!1},deactivate:function(){this.active&&null!==this.watchId&&this.geolocation.clearWatch(this.watchId);return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},geolocate:function(a){var b=(new OpenLayers.LonLat(a.coords.longitude,a.coords.latitude)).transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());this.bind&&this.map.setCenter(b);this.events.triggerEvent("locationupdated",{position:a,point:new OpenLayers.Geometry.Point(b.lon,\n +b.lat)})},getCurrentLocation:function(){if(!this.active||this.watch)return!1;this.geolocation.getCurrentPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);return!0},failure:function(a){this.events.triggerEvent("locationfailed",{error:a})},CLASS_NAME:"OpenLayers.Control.Geolocate"});OpenLayers.Tile.UTFGrid=OpenLayers.Class(OpenLayers.Tile,{url:null,utfgridResolution:2,json:null,format:null,destroy:function(){this.clear();OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(a)if(this.isLoading?(this.abortLoading(),this.events.triggerEvent("reload")):(this.isLoading=!0,this.events.triggerEvent("loadstart")),this.url=this.layer.getURL(this.bounds),this.layer.useJSONP){var b=new OpenLayers.Protocol.Script({url:this.url,\n +callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");this.json=a.data},scope:this});b.read();this.request=b}else this.request=OpenLayers.Request.GET({url:this.url,callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");a.status===200&&this.parseData(a.responseText)},scope:this});else this.unload();return a},abortLoading:function(){this.request&&(this.request.abort(),delete this.request);this.isLoading=!1},getFeatureInfo:function(a,b){var c=null;if(this.json){var d=\n +this.getFeatureId(a,b);null!==d&&(c={id:d,data:this.json.data[d]})}return c},getFeatureId:function(a,b){var c=null;if(this.json){var d=this.utfgridResolution,d=this.indexFromCharCode(this.json.grid[Math.floor(b/d)].charCodeAt(Math.floor(a/d))),e=this.json.keys;!isNaN(d)&&d in e&&(c=e[d])}return c},indexFromCharCode:function(a){93<=a&&a--;35<=a&&a--;return a-32},parseData:function(a){this.format||(this.format=new OpenLayers.Format.JSON);this.json=this.format.read(a)},clear:function(){this.json=null},\n +CLASS_NAME:"OpenLayers.Tile.UTFGrid"});OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:!0,clearOnDeactivate:!1,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.registry=OpenLayers.Util.extend({moveend:this.getState},this.registry);a={trigger:OpenLayers.Function.bind(this.previousTrigger,\n +this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(a,this.previousOptions);this.previous=new OpenLayers.Control.Button(a);a={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(a,this.nextOptions);this.next=new OpenLayers.Control.Button(a);this.clear()},onPreviousChange:function(a){a&&!this.previous.active?this.previous.activate():!a&&this.previous.active&&this.previous.deactivate()},\n +onNextChange:function(a){a&&!this.next.active?this.next.activate():!a&&this.next.active&&this.next.deactivate()},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var a in this)this[a]=null},setMap:function(a){this.map=a;this.next.setMap(a);this.previous.setMap(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw()},previousTrigger:function(){var a=this.previousStack.shift(),\n +b=this.previousStack.shift();void 0!=b?(this.nextStack.unshift(a),this.previousStack.unshift(b),this.restoring=!0,this.restore(b),this.restoring=!1,this.onNextChange(this.nextStack[0],this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1)):this.previousStack.unshift(a);return b},nextTrigger:function(){var a=this.nextStack.shift();void 0!=a&&(this.previousStack.unshift(a),this.restoring=!0,this.restore(a),this.restoring=!1,this.onNextChange(this.nextStack[0],\n +this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1));return a},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate()},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units}},restore:function(a){var b,c;if(this.map.getProjectionObject()==\n +a.projection)c=this.map.getZoomForResolution(a.resolution),b=a.center;else{b=a.center.clone();b.transform(a.projection,this.map.getProjectionObject());c=a.units;var d=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;c=this.map.getZoomForResolution((c&&d?OpenLayers.INCHES_PER_UNIT[c]/OpenLayers.INCHES_PER_UNIT[d]:1)*a.resolution)}this.map.setCenter(b,c)},setListeners:function(){this.listeners={};for(var a in this.registry)this.listeners[a]=OpenLayers.Function.bind(function(){if(!this.restoring){this.previousStack.unshift(this.registry[a].apply(this,\n +arguments));if(1<this.previousStack.length)this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);this.previousStack.length>this.limit+1&&this.previousStack.pop();0<this.nextStack.length&&(this.nextStack=[],this.onNextChange(null,0))}return!0},this)},activate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.activate.apply(this)){null==this.listeners&&this.setListeners();for(var b in this.listeners)this.map.events.register(b,this,this.listeners[b]);a=!0;0==this.previousStack.length&&\n +this.initStack()}return a},initStack:function(){this.map.getCenter()&&this.listeners.moveend()},deactivate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.deactivate.apply(this)){for(var b in this.listeners)this.map.events.unregister(b,this,this.listeners[b]);this.clearOnDeactivate&&this.clear();a=!0}return a},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=\n +function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});\n +b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c=new OpenLayers.Protocol.Response({reqFeatures:a,\n +requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,\n +d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);\n +return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=\n +a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;o.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);n=n&&a.success();f++;f>=m&&b.callback&&(o.code=n?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[o]))}var b=OpenLayers.Util.applyDefaults(b,this.options),e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,i,j=[],k=0,l=a.length;k<l;++k)if(h=\n +a[k],i=g[h.state])i.push(h),j.push(h);var m=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,n=!0,o=new OpenLayers.Protocol.Response({reqFeatures:j});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(k=h.length-1;0<=k;--k)e.push(this.update(h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];\n +for(k=h.length-1;0<=k;--k)e.push(this["delete"](h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:!1,resolution:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,\n +scope:this}));return a},cacheFeatures:function(a){var b=!0;this.clustering||(this.clearCache(),this.features=a.features,this.cluster(),b=!1);return b},clearCache:function(){this.features=null},cluster:function(a){if((!a||a.zoomChanged)&&this.features)if(a=this.layer.map.getResolution(),a!=this.resolution||!this.clustersExist()){this.resolution=a;for(var a=[],b,c,d,e=0;e<this.features.length;++e)if(b=this.features[e],b.geometry){c=!1;for(var f=a.length-1;0<=f;--f)if(d=a[f],this.shouldCluster(d,b)){this.addToCluster(d,\n +b);c=!0;break}c||a.push(this.createCluster(this.features[e]))}this.layer.removeAllFeatures();if(0<a.length){if(1<this.threshold){b=a.slice();a=[];e=0;for(d=b.length;e<d;++e)c=b[e],c.attributes.count<this.threshold?Array.prototype.push.apply(a,c.cluster):a.push(c)}this.clustering=!0;this.layer.addFeatures(a);this.clustering=!1}this.clusters=a}},clustersExist:function(){var a=!1;if(this.clusters&&0<this.clusters.length&&this.clusters.length==this.layer.features.length)for(var a=!0,b=0;b<this.clusters.length;++b)if(this.clusters[b]!=\n +this.layer.features[b]){a=!1;break}return a},shouldCluster:function(a,b){var c=a.geometry.getBounds().getCenterLonLat(),d=b.geometry.getBounds().getCenterLonLat();return Math.sqrt(Math.pow(c.lon-d.lon,2)+Math.pow(c.lat-d.lat,2))/this.resolution<=this.distance},addToCluster:function(a,b){a.cluster.push(b);a.attributes.count+=1},createCluster:function(a){var b=a.geometry.getBounds().getCenterLonLat(),b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.lon,b.lat),{count:1});b.cluster=[a];\n +return b},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);a&&(this.cache=[],this.layer.events.on({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this}));return a},deactivate:function(){this.cache=null;this.layer&&this.layer.events&&this.layer.events.un({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this});\n +return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments)},handleAdd:function(a){if(!this.caching&&this.filter){var b=a.features;a.features=[];for(var c,d=0,e=b.length;d<e;++d)c=b[d],this.filter.evaluate(c)?a.features.push(c):this.cache.push(c)}},handleRemove:function(){this.caching||(this.cache=[])},setFilter:function(a){this.filter=a;a=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});0<this.cache.length&&(this.caching=!0,this.layer.removeFeatures(this.cache.slice()),\n +this.caching=!1);0<a.length&&(a={features:a},this.handleAdd(a),0<a.features.length&&(this.caching=!0,this.layer.addFeatures(a.features),this.caching=!1))},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Protocol.SOS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.SOS.DEFAULTS),b=OpenLayers.Protocol.SOS["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported SOS version: "+a.version;return new b(a)};OpenLayers.Protocol.SOS.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},readers:{xsd:{schema:function(a,b){var c=[],d={};this.readChildNodes(a,{complexTypes:c,customTypes:d});for(var e=a.attributes,f,g,h=0,i=e.length;h<i;++h)f=e[h],g=f.name,0==g.indexOf("xmlns")?this.setNamespace(g.split(":")[1]||"",f.value):b[g]=f.value;b.featureTypes=c;b.targetPrefix=this.namespaceAlias[b.targetNamespace];h=0;for(i=c.length;h<i;++h)e=c[h],f=d[e.typeName],\n +d[e.typeName]&&(e.typeName=f.name)},complexType:function(a,b){var c={typeName:a.getAttribute("name")};this.readChildNodes(a,c);b.complexTypes.push(c)},complexContent:function(a,b){this.readChildNodes(a,b)},extension:function(a,b){this.readChildNodes(a,b)},sequence:function(a,b){var c={elements:[]};this.readChildNodes(a,c);b.properties=c.elements},element:function(a,b){if(b.elements){for(var c={},d=a.attributes,e,f=0,g=d.length;f<g;++f)e=d[f],c[e.name]=e.value;d=c.type;d||(d={},this.readChildNodes(a,\n +d),c.restriction=d,c.type=d.base);c.localType=(d.base||d).split(":").pop();b.elements.push(c)}b.complexTypes&&(d=a.getAttribute("type"),c=d.split(":").pop(),b.customTypes[c]={name:a.getAttribute("name"),type:d})},simpleType:function(a,b){this.readChildNodes(a,b)},restriction:function(a,b){b.base=a.getAttribute("base");this.readRestriction(a,b)}}},readRestriction:function(a,b){for(var c=a.childNodes,d,e,f=0,g=c.length;f<g;++f)d=c[f],1==d.nodeType&&(e=d.nodeName.split(":").pop(),d=d.getAttribute("value"),\n +b[e]?("string"==typeof b[e]&&(b[e]=[b[e]]),b[e].push(d)):b[e]=d)},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:!1,createGeometryFromItem:function(a){var b=this.getElementsByTagNameNS(a,this.georssns,"point"),c=this.getElementsByTagNameNS(a,this.geons,"lat"),d=this.getElementsByTagNameNS(a,\n +this.geons,"long"),e=this.getElementsByTagNameNS(a,this.georssns,"line"),f=this.getElementsByTagNameNS(a,this.georssns,"polygon"),g=this.getElementsByTagNameNS(a,this.georssns,"where"),a=this.getElementsByTagNameNS(a,this.georssns,"box");if(0<b.length||0<c.length&&0<d.length){0<b.length?(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\\s+/),2!=c.length&&(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\\s*,\\s*/))):c=[parseFloat(c[0].firstChild.nodeValue),parseFloat(d[0].firstChild.nodeValue)];\n +var h=new OpenLayers.Geometry.Point(c[1],c[0])}else if(0<e.length){c=OpenLayers.String.trim(this.getChildValue(e[0])).split(/\\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.LineString(d)}else if(0<f.length){c=OpenLayers.String.trim(this.getChildValue(f[0])).split(/\\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])}else 0<\n +g.length?(this.gmlParser||(this.gmlParser=new OpenLayers.Format.GML({xy:this.xy})),h=this.gmlParser.parseFeature(g[0]).geometry):0<a.length&&(c=OpenLayers.String.trim(a[0].firstChild.nodeValue).split(/\\s+/),d=[],3<c.length&&(b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b)),h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]));\n +h&&(this.internalProjection&&this.externalProjection)&&h.transform(this.externalProjection,this.internalProjection);return h},createFeatureFromItem:function(a){var b=this.createGeometryFromItem(a),c=this._getChildValue(a,"*","title",this.featureTitle),d=this._getChildValue(a,"*","description",this._getChildValue(a,"*","content",this._getChildValue(a,"*","summary",this.featureDescription))),e=this._getChildValue(a,"*","link");if(!e)try{e=this.getElementsByTagNameNS(a,"*","link")[0].getAttribute("href")}catch(f){e=\n +null}a=this._getChildValue(a,"*","id",null);b=new OpenLayers.Feature.Vector(b,{title:c,description:d,link:e});b.fid=a;return b},_getChildValue:function(a,b,c,d){return(a=this.getElementsByTagNameNS(a,b,c))&&a[0]&&a[0].firstChild&&a[0].firstChild.nodeValue?this.getChildValue(a[0]):void 0==d?"":d},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null,b=this.getElementsByTagNameNS(a,"*","item");0==b.length&&(b=this.getElementsByTagNameNS(a,"*","entry"));\n +for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=this.createFeatureFromItem(b[d]);return c},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNS(this.rssns,"rss");for(var c=0,d=a.length;c<d;c++)b.appendChild(this.createFeatureXML(a[c]))}else b=this.createFeatureXML(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.rssns,"item"),d=this.createElementNS(this.rssns,"title");\n +d.appendChild(this.createTextNode(a.attributes.title?a.attributes.title:""));var e=this.createElementNS(this.rssns,"description");e.appendChild(this.createTextNode(a.attributes.description?a.attributes.description:""));c.appendChild(d);c.appendChild(e);a.attributes.link&&(d=this.createElementNS(this.rssns,"link"),d.appendChild(this.createTextNode(a.attributes.link)),c.appendChild(d));for(var f in a.attributes)"link"==f||("title"==f||"description"==f)||(d=this.createTextNode(a.attributes[f]),e=f,-1!=\n +f.search(":")&&(e=f.split(":")[1]),e=this.createElementNS(this.featureNS,"feature:"+e),e.appendChild(d),c.appendChild(e));c.appendChild(b);return c},buildGeometryNode:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b;if("OpenLayers.Geometry.Polygon"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:polygon"),b.appendChild(this.buildCoordinatesNode(a.components[0]));else if("OpenLayers.Geometry.LineString"==\n +a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:line"),b.appendChild(this.buildCoordinatesNode(a));else if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:point"),b.appendChild(this.buildCoordinatesNode(a));else throw"Couldn\'t parse "+a.CLASS_NAME;return b},buildCoordinatesNode:function(a){var b=null;a.components&&(b=a.components);if(b){for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=b[d].y+" "+b[d].x;b=c.join(" ")}else b=a.y+" "+a.x;return this.createTextNode(b)},\n +CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.WPSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.WPSCapabilities"});OpenLayers.Format.WPSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wps:"http://www.opengis.net/wps/1.0.0",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);\n +var b={};this.readNode(a,b);return b},readers:{wps:{Capabilities:function(a,b){this.readChildNodes(a,b)},ProcessOfferings:function(a,b){b.processOfferings={};this.readChildNodes(a,b.processOfferings)},Process:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion")};this.readChildNodes(a,c);b[c.identifier]=c},Languages:function(a,b){b.languages=[];this.readChildNodes(a,b.languages)},Default:function(a,b){var c={isDefault:!0};this.readChildNodes(a,c);b.push(c)},\n +Supported:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSCapabilities.v1_0_0"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerCenter:null,pinchOrigin:null,currentCenter:null,autoActivate:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},activate:function(){var a=OpenLayers.Control.prototype.activate.apply(this,arguments);a&&(this.map.events.on({moveend:this.updateContainerCenter,\n +scope:this}),this.updateContainerCenter());return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.apply(this,arguments);this.map&&this.map.events&&this.map.events.un({moveend:this.updateContainerCenter,scope:this});return a},updateContainerCenter:function(){var a=this.map.layerContainerDiv;this.containerCenter={x:parseInt(a.style.left,10)+50,y:parseInt(a.style.top,10)+50}},pinchStart:function(a){this.currentCenter=this.pinchOrigin=a.xy},pinchMove:function(a,b){var c=b.scale,\n +d=this.containerCenter,e=this.pinchOrigin,f=a.xy,g=Math.round(f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(f.y-e.y+(c-1)*(d.y-e.y));this.applyTransform("translate("+g+"px, "+d+"px) scale("+c+")");this.currentCenter=f},applyTransform:function(a){var b=this.map.layerContainerDiv.style;b["-webkit-transform"]=a;b["-moz-transform"]=a},pinchDone:function(a,b,c){this.applyTransform("");a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var b=\n +this.map.getResolutionForZoom(a),c=this.map.getLonLatFromPixel(this.pinchOrigin),d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Control.TouchNavigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,clickHandlerOptions:null,documentDrag:!1,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;this.pinchZoom&&(this.pinchZoom.destroy(),delete this.pinchZoom);OpenLayers.Control.prototype.destroy.apply(this,\n +arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.dragPan.activate(),this.handlers.click.activate(),this.pinchZoom.activate(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.dragPan.deactivate(),this.handlers.click.deactivate(),this.pinchZoom.deactivate(),!0):!1},draw:function(){var a={click:this.defaultClick,dblclick:this.defaultDblClick},b=OpenLayers.Util.extend({"double":!0,stopDouble:!0,\n +pixelTolerance:2},this.clickHandlerOptions);this.handlers.click=new OpenLayers.Handler.Click(this,a,b);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.dragPan.draw();this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),\n +this.map.zoom+1)},CLASS_NAME:"OpenLayers.Control.TouchNavigation"});OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy();delete this.rules},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}return new OpenLayers.Style2(a)},\n +CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(a,b){OpenLayers.Format.GML.prototype.initialize.apply(this,[a]);this.layer=b;this.layer.featureNS&&(this.featureNS=this.layer.featureNS);this.layer.options.geometry_column&&(this.geometryName=this.layer.options.geometry_column);this.layer.options.typename&&(this.featureName=this.layer.options.typename)},write:function(a){var b=this.createElementNS(this.wfsns,\n +"wfs:Transaction");b.setAttribute("version","1.0.0");b.setAttribute("service","WFS");for(var c=0;c<a.length;c++)switch(a[c].state){case OpenLayers.State.INSERT:b.appendChild(this.insert(a[c]));break;case OpenLayers.State.UPDATE:b.appendChild(this.update(a[c]));break;case OpenLayers.State.DELETE:b.appendChild(this.remove(a[c]))}return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,"feature:"+\n +this.geometryName);c.appendChild(b);b=this.createElementNS(this.featureNS,"feature:"+this.featureName);b.appendChild(c);for(var d in a.attributes){var c=this.createTextNode(a.attributes[d]),e=d;-1!=d.search(":")&&(e=d.split(":")[1]);e=this.createElementNS(this.featureNS,"feature:"+e);e.appendChild(c);b.appendChild(e)}return b},insert:function(a){var b=this.createElementNS(this.wfsns,"wfs:Insert");b.appendChild(this.createFeatureXML(a));return b},update:function(a){a.fid||OpenLayers.Console.userError(OpenLayers.i18n("noFID"));\n +var b=this.createElementNS(this.wfsns,"wfs:Update");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),e=this.createTextNode(this.geometryName);d.appendChild(e);c.appendChild(d);d=this.createElementNS(this.wfsns,"wfs:Value");e=this.buildGeometryNode(a.geometry);a.layer&&e.setAttribute("srsName",a.layer.projection.getCode());\n +d.appendChild(e);c.appendChild(d);b.appendChild(c);for(var f in a.attributes)c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),d.appendChild(this.createTextNode(f)),c.appendChild(d),d=this.createElementNS(this.wfsns,"wfs:Value"),d.appendChild(this.createTextNode(a.attributes[f])),c.appendChild(d),b.appendChild(c);c=this.createElementNS(this.ogcns,"ogc:Filter");f=this.createElementNS(this.ogcns,"ogc:FeatureId");f.setAttribute("fid",a.fid);c.appendChild(f);\n +b.appendChild(c);return b},remove:function(a){if(!a.fid)return OpenLayers.Console.userError(OpenLayers.i18n("noFID")),!1;var b=this.createElementNS(this.wfsns,"wfs:Delete");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.ogcns,"ogc:Filter"),d=this.createElementNS(this.ogcns,"ogc:FeatureId");d.setAttribute("fid",a.fid);c.appendChild(d);b.appendChild(c);return b},destroy:function(){this.layer=\n +null},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Format.SLD.v1_0_0_GeoServer=OpenLayers.Class(OpenLayers.Format.SLD.v1_0_0,{version:"1.0.0",profile:"GeoServer",readers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.priority=c)},VendorOption:function(a,b){b.vendorOptions||(b.vendorOptions={});b.vendorOptions[a.getAttribute("name")]=this.getChildValue(a)}},OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.readers),\n +writers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Priority",a)},VendorOption:function(a){return this.createElementNSPlus("sld:VendorOption",{attributes:{name:a.name},value:a.value})},TextSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.TextSymbolizer.apply(this,arguments);!1!==a.graphic&&(a.externalGraphic||a.graphicName)&&this.writeNode("Graphic",a,b);"priority"in a&&\n +this.writeNode("Priority",a.priority,b);return this.addVendorOptions(b,a)},PointSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PointSymbolizer.apply(this,arguments),a)},LineSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.LineSymbolizer.apply(this,arguments),a)},PolygonSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PolygonSymbolizer.apply(this,\n +arguments),a)}},OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.writers),addVendorOptions:function(a,b){if(b.vendorOptions)for(var c in b.vendorOptions)this.writeNode("VendorOption",{name:c,value:b.vendorOptions[c]},a);return a},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0_GeoServer"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{drawMarker:function(a){var b=this.map.getLayerPxFromLonLat({lon:a.bounds.left,lat:a.bounds.top}),c=this.map.getLayerPxFromLonLat({lon:a.bounds.right,lat:a.bounds.bottom});null==c||null==b?a.display(!1):(b=a.draw(b,{w:Math.max(1,c.x-b.x),h:Math.max(1,c.y-b.y)}),a.drawn||(this.div.appendChild(b),a.drawn=!0))},removeMarker:function(a){OpenLayers.Util.removeItem(this.markers,a);null!=a.div&&a.div.parentNode==this.div&&this.div.removeChild(a.div)},\n +CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{readers:{wfs:OpenLayers.Util.applyDefaults({Service:function(a,b){b.service={};this.readChildNodes(a,b.service)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},OnlineResource:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.onlineResource=\n +c)},Keywords:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.keywords=c.split(", "))},Capability:function(a,b){b.capability={};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetFeature:function(a,b){b.getfeature={href:{},formats:[]};this.readChildNodes(a,b.getfeature)},ResultFormat:function(a,b){for(var c=a.childNodes,d,e=0;e<c.length;e++)d=c[e],1==d.nodeType&&b.formats.push(d.nodeName)},DCPType:function(a,b){this.readChildNodes(a,\n +b)},HTTP:function(a,b){this.readChildNodes(a,b.href)},Get:function(a,b){b.get=a.getAttribute("onlineResource")},Post:function(a,b){b.post=a.getAttribute("onlineResource")},SRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs)},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",profile:null,CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a;a&&9==a.nodeType&&(a=a.documentElement);var c={};this.readNode(a,c);void 0===c.service&&(a=new OpenLayers.Format.OGCExceptionReport,c.error=a.read(b));return c},readers:{wms:{Service:function(a,\n +b){b.service={};this.readChildNodes(a,b.service)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},BoundingBox:function(a){var b={};b.bbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))];a={x:parseFloat(a.getAttribute("resx")),y:parseFloat(a.getAttribute("resy"))};if(!isNaN(a.x)||!isNaN(a.y))b.res=\n +a;return b},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},ContactInformation:function(a,b){b.contactInformation={};this.readChildNodes(a,b.contactInformation)},ContactPersonPrimary:function(a,b){b.personPrimary={};this.readChildNodes(a,b.personPrimary)},ContactPerson:function(a,b){b.person=this.getChildValue(a)},ContactOrganization:function(a,b){b.organization=this.getChildValue(a)},ContactPosition:function(a,b){b.position=this.getChildValue(a)},ContactAddress:function(a,\n +b){b.contactAddress={};this.readChildNodes(a,b.contactAddress)},AddressType:function(a,b){b.type=this.getChildValue(a)},Address:function(a,b){b.address=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},StateOrProvince:function(a,b){b.stateOrProvince=this.getChildValue(a)},PostCode:function(a,b){b.postcode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ContactVoiceTelephone:function(a,b){b.phone=this.getChildValue(a)},ContactFacsimileTelephone:function(a,\n +b){b.fax=this.getChildValue(a)},ContactElectronicMailAddress:function(a,b){b.email=this.getChildValue(a)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},Capability:function(a,b){b.capability={nestedLayers:[],layers:[]};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetCapabilities:function(a,\n +b){b.getcapabilities={formats:[]};this.readChildNodes(a,b.getcapabilities)},Format:function(a,b){OpenLayers.Util.isArray(b.formats)?b.formats.push(this.getChildValue(a)):b.format=this.getChildValue(a)},DCPType:function(a,b){this.readChildNodes(a,b)},HTTP:function(a,b){this.readChildNodes(a,b)},Get:function(a,b){b.get={};this.readChildNodes(a,b.get);b.href||(b.href=b.get.href)},Post:function(a,b){b.post={};this.readChildNodes(a,b.post);b.href||(b.href=b.get.href)},GetMap:function(a,b){b.getmap={formats:[]};\n +this.readChildNodes(a,b.getmap)},GetFeatureInfo:function(a,b){b.getfeatureinfo={formats:[]};this.readChildNodes(a,b.getfeatureinfo)},Exception:function(a,b){b.exception={formats:[]};this.readChildNodes(a,b.exception)},Layer:function(a,b){var c,d;b.capability?(d=b.capability,c=b):d=b;var e=a.getAttributeNode("queryable"),f=e&&e.specified?a.getAttribute("queryable"):null,g=(e=a.getAttributeNode("cascaded"))&&e.specified?a.getAttribute("cascaded"):null,e=(e=a.getAttributeNode("opaque"))&&e.specified?\n +a.getAttribute("opaque"):null,h=a.getAttribute("noSubsets"),i=a.getAttribute("fixedWidth"),j=a.getAttribute("fixedHeight"),k=c||{},l=OpenLayers.Util.extend;c={nestedLayers:[],styles:c?[].concat(c.styles):[],srs:c?l({},k.srs):{},metadataURLs:[],bbox:c?l({},k.bbox):{},llbbox:k.llbbox,dimensions:c?l({},k.dimensions):{},authorityURLs:c?l({},k.authorityURLs):{},identifiers:{},keywords:[],queryable:f&&""!==f?"1"===f||"true"===f:k.queryable||!1,cascaded:null!==g?parseInt(g):k.cascaded||0,opaque:e?"1"===\n +e||"true"===e:k.opaque||!1,noSubsets:null!==h?"1"===h||"true"===h:k.noSubsets||!1,fixedWidth:null!=i?parseInt(i):k.fixedWidth||0,fixedHeight:null!=j?parseInt(j):k.fixedHeight||0,minScale:k.minScale,maxScale:k.maxScale,attribution:k.attribution};b.nestedLayers.push(c);c.capability=d;this.readChildNodes(a,c);delete c.capability;if(c.name&&(f=c.name.split(":"),g=d.request,e=g.getfeatureinfo,0<f.length&&(c.prefix=f[0]),d.layers.push(c),void 0===c.formats&&(c.formats=g.getmap.formats),void 0===c.infoFormats&&\n +e))c.infoFormats=e.formats},Attribution:function(a,b){b.attribution={};this.readChildNodes(a,b.attribution)},LogoURL:function(a,b){b.logo={width:a.getAttribute("width"),height:a.getAttribute("height")};this.readChildNodes(a,b.logo)},Style:function(a,b){var c={};b.styles.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={width:a.getAttribute("width"),height:a.getAttribute("height")};b.legend=c;this.readChildNodes(a,c)},MetadataURL:function(a,b){var c={type:a.getAttribute("type")};b.metadataURLs.push(c);\n +this.readChildNodes(a,c)},DataURL:function(a,b){b.dataURL={};this.readChildNodes(a,b.dataURL)},FeatureListURL:function(a,b){b.featureListURL={};this.readChildNodes(a,b.featureListURL)},AuthorityURL:function(a,b){var c=a.getAttribute("name"),d={};this.readChildNodes(a,d);b.authorityURLs[c]=d.href},Identifier:function(a,b){var c=a.getAttribute("authority");b.identifiers[c]=this.getChildValue(a)},KeywordList:function(a,b){this.readChildNodes(a,b)},SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}}},\n +CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMS_Capabilities:function(a,b){this.readChildNodes(a,b)},LayerLimit:function(a,b){b.layerLimit=parseInt(this.getChildValue(a))},MaxWidth:function(a,b){b.maxWidth=parseInt(this.getChildValue(a))},MaxHeight:function(a,b){b.maxHeight=parseInt(this.getChildValue(a))},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,\n +[a,b]);c.srs=a.getAttribute("CRS");b.bbox[c.srs]=c},CRS:function(a,b){this.readers.wms.SRS.apply(this,[a,b])},EX_GeographicBoundingBox:function(a,b){b.llbbox=[];this.readChildNodes(a,b.llbbox)},westBoundLongitude:function(a,b){b[0]=this.getChildValue(a)},eastBoundLongitude:function(a,b){b[2]=this.getChildValue(a)},southBoundLatitude:function(a,b){b[1]=this.getChildValue(a)},northBoundLatitude:function(a,b){b[3]=this.getChildValue(a)},MinScaleDenominator:function(a,b){b.maxScale=parseFloat(this.getChildValue(a)).toPrecision(16)},\n +MaxScaleDenominator:function(a,b){b.minScale=parseFloat(this.getChildValue(a)).toPrecision(16)},Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol"),nearestVal:"1"===a.getAttribute("nearestValue"),multipleVal:"1"===a.getAttribute("multipleValues"),"default":a.getAttribute("default")||"",current:"1"===a.getAttribute("current"),values:this.getChildValue(a).split(",")};b.dimensions[c.name]=c},Keyword:function(a,\n +b){var c={value:this.getChildValue(a),vocabulary:a.getAttribute("vocabulary")};b.keywords&&b.keywords.push(c)}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms),sld:{UserDefinedSymbolization:function(a,b){this.readers.wms.UserDefinedSymbolization.apply(this,[a,b]);b.userSymbols.inlineFeature=1==parseInt(a.getAttribute("InlineFeature"));b.userSymbols.remoteWCS=1==parseInt(a.getAttribute("RemoteWCS"))},DescribeLayer:function(a,b){this.readers.wms.DescribeLayer.apply(this,[a,b])},GetLegendGraphic:function(a,\n +b){this.readers.wms.GetLegendGraphic.apply(this,[a,b])}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{size:null,isBaseLayer:!0,standardTileSize:256,tileOriginCorner:"tl",numberOfTiers:0,tileCountUpToTier:null,tierSizeInTiles:null,tierImageSize:null,initialize:function(a,b,c,d){this.initializeZoomify(c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,c,{},d])},initializeZoomify:function(a){var a=a.clone(),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize));this.tierSizeInTiles=[b];\n +for(this.tierImageSize=[a];a.w>this.standardTileSize||a.h>this.standardTileSize;)a=new OpenLayers.Size(Math.floor(a.w/2),Math.floor(a.h/2)),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize)),this.tierSizeInTiles.push(b),this.tierImageSize.push(a);this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;this.tileCountUpToTier=[0];for(a=1;a<this.numberOfTiers;a++)this.tileCountUpToTier.push(this.tierSizeInTiles[a-\n +1].w*this.tierSizeInTiles[a-1].h+this.tileCountUpToTier[a-1])},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0;this.tierSizeInTiles.length=0;this.tierImageSize.length=0},clone:function(a){null==a&&(a=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/\n +(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),c="TileGroup"+Math.floor((c+a*this.tierSizeInTiles[b].w+this.tileCountUpToTier[b])/256)+"/"+b+"-"+c+"-"+a+".jpg",a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},getImageSize:function(){if(0<arguments.length){var a=this.adjustBounds(arguments[0]),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-\n +a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),d=this.standardTileSize,e=this.standardTileSize;c==this.tierSizeInTiles[b].w-1&&(d=this.tierImageSize[b].w%this.standardTileSize);a==this.tierSizeInTiles[b].h-1&&(e=this.tierImageSize[b].h%this.standardTileSize);return new OpenLayers.Size(d,e)}return this.tileSize},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.top)},calculateGridLayout:function(a,\n +b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.params.transparent&&!0!=this.params.transparent},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions()));\n +return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),a=[a.left,a.bottom,a.right,a.top],b=this.getImageSize();return this.getFullRequestString({mapext:a,imgext:a,map_size:[b.w,b.h],imgx:b.w/2,imgy:b.h/2,imgxy:[b.w,b.h]})},getFullRequestString:function(a,b){var c=null==b?this.url:b,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));\n +var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);d=c;e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,\n +arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},\n +setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=\n +"olv:shape"}return c},setStyle:function(a,b,c,d){var b=b||a._style,c=c||a._options,e=b.fillColor;if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;b.graphicTitle&&(a.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),i=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/\n +g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(i+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];if(c.isFilled){d||\n +(d=this.createNode("olv:fill",a.id+"_fill"));d.opacity=b.fillOpacity;if("OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",!b.graphicWidth||!b.graphicHeight))d.aspect="atmost";d.parentNode!=a&&a.appendChild(d)}else d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,i,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&\n +(a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];if(c.isStroked){if(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle)h.dashstyle=this.dashStyle(b)}else a.stroked=!1,h&&(h.on=!1);"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,\n +d){var d=d||a._style,e=d.rotation||0,f,g;if(!d.graphicWidth||!d.graphicHeight){var h=new Image;h.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==h.readyState||"interactive"==h.readyState)f=h.width/h.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);h.src=d.externalGraphic}else{g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var i=Math.round(d.graphicWidth||\n +g*f),j=Math.round(d.graphicHeight||g);a.style.width=i+"px";a.style.height=j+"px";var k=document.getElementById(a.id+"_image");k||(k=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(k));k.style.width=i+"px";k.style.height=j+"px";k.src=d.externalGraphic;k.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'\', sizingMethod=\'scale\')";k=e*Math.PI/180;e=Math.sin(k);k=Math.cos(k);e="progid:DXImageTransform.Microsoft.Matrix(M11="+k+",M12="+-e+",M21="+e+",M22="+k+",SizingMethod=\'auto expand\')\\n";\n +(k=d.graphicOpacity||d.fillOpacity)&&1!=k&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+k+")\\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);i=(new OpenLayers.Bounds(0,0,i,j)).toGeometry();i.rotate(d.rotation,e);i=i.getBounds();a.style.left=Math.round(parseInt(a.style.left)+i.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-i.bottom)+"px"}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&\n +(a.fillcolor=b);"none"==c&&a.strokecolor!=c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=\n +a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+\n +1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=\n +b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,i=0;i<e;i++)g=b.components[i],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[i]=" "+h+","+g+" l ";a.path="m"+f.join("")+(c?" x e":" e");return a},drawPolygon:function(a,b){this.setNodeDimension(a,\n +b);var c=this.getResolution(),d=[],e,f,g,h,i,j,k,l,m,n;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;j=i=null;k=0;for(l=g.length;k<l;k++)m=g[k],n=(m.x-this.featureDx)/c-this.offset.x|0,m=m.y/c-this.offset.y|0,n=" "+n+","+m,d.push(n),0==k&&d.push(" l"),h||(i?i!=n&&(j?j!=n&&(h=!0):j=n):i=n);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+\n +"px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&\n +(e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||\n +"cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},\n +importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");for(var a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;\n +0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Control.CacheRead=OpenLayers.Class(OpenLayers.Control,{fetchEvent:"tileloadstart",layers:null,autoActivate:!0,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.register(this.fetchEvent,this,this.fetch)},removeLayer:function(a){a.layer.events.unregister(this.fetchEvent,\n +this,this.fetch)},fetch:function(a){if(this.active&&window.localStorage&&a.tile instanceof OpenLayers.Tile.Image){var b=a.tile,c=b.url;!b.layer.crossOriginKeyword&&(OpenLayers.ProxyHost&&0===c.indexOf(OpenLayers.ProxyHost))&&(c=OpenLayers.Control.CacheWrite.urlMap[c]);if(c=window.localStorage.getItem("olCache_"+c))b.url=c,"tileerror"===a.type&&b.setImgSrc(c)}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&\n +this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.CacheRead"});OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:"_layer",featureIdentifier:"_feature",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},gmlFormat:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a.documentElement;if(b)var c=this["read_"+b.nodeName],a=c?c.call(this,b):(new OpenLayers.Format.GML(this.options?this.options:{})).read(a);return a},read_msGMLOutput:function(a){var b=\n +[];if(a=this.getSiblingNodesByTagCriteria(a,this.layerIdentifier))for(var c=0,d=a.length;c<d;++c){var e=a[c],f=e.nodeName;e.prefix&&(f=f.split(":")[1]);f=f.replace(this.layerIdentifier,"");if(e=this.getSiblingNodesByTagCriteria(e,this.featureIdentifier))for(var g=0;g<e.length;g++){var h=e[g],i=this.parseGeometry(h),h=this.parseAttributes(h),h=new OpenLayers.Feature.Vector(i.geometry,h,null);h.bounds=i.bounds;h.type=f;b.push(h)}}return b},read_FeatureInfoResponse:function(a){for(var b=[],a=this.getElementsByTagNameNS(a,\n +"*","FIELDS"),c=0,d=a.length;c<d;c++){var e=a[c],f={},g,h=e.attributes.length;if(0<h)for(g=0;g<h;g++){var i=e.attributes[g];f[i.nodeName]=i.nodeValue}else{e=e.childNodes;g=0;for(h=e.length;g<h;++g)i=e[g],3!=i.nodeType&&(f[i.getAttribute("name")]=i.getAttribute("value"))}b.push(new OpenLayers.Feature.Vector(null,f,null))}return b},getSiblingNodesByTagCriteria:function(a,b){var c=[],d,e,f,g;if(a&&a.hasChildNodes()){d=a.childNodes;f=d.length;for(var h=0;h<f;h++){for(g=d[h];g&&1!=g.nodeType;)g=g.nextSibling,\n +h++;e=g?g.nodeName:"";0<e.length&&-1<e.indexOf(b)?c.push(g):(e=this.getSiblingNodesByTagCriteria(g,b),0<e.length&&(0==c.length?c=e:c.push(e)))}}return c},parseAttributes:function(a){var b={};if(1==a.nodeType)for(var a=a.childNodes,c=a.length,d=0;d<c;++d){var e=a[d];if(1==e.nodeType){var f=e.childNodes,e=e.pr + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAw=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="12" aka="AAAAAAAAAAw="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +efix?e.nodeName.split(":")[1]:e.nodeName;if(0==f.length)b[e]=null;else if(1==f.length&&(f=f[0],3==f.nodeType||4==f.nodeType))f=f.nodeValue.replace(this.regExes.trimSpace,""),b[e]=f}}return b},\n +parseGeometry:function(a){this.gmlFormat||(this.gmlFormat=new OpenLayers.Format.GML);var a=this.gmlFormat.parseFeature(a),b,c=null;a&&(b=a.geometry&&a.geometry.clone(),c=a.bounds&&a.bounds.clone(),a.destroy());return{geometry:b,bounds:c}},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,requestEncoding:"KVP",drillDown:!1,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:!0,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,pending:0,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));\n +!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.request(a.xy,{})},getInfoForHover:function(a){this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(--this.pending,\n +0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0),this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)if(c=a[d],c instanceof OpenLayers.Layer.WMTS&&c.requestEncoding===this.requestEncoding&&(!this.queryVisible||c.getVisibility()))if(b.push(c),!this.drillDown||this.hover)break;return b},buildRequestOptions:function(a,b){var c=this.map.getLonLatFromPixel(b),d=\n +a.getURL(new OpenLayers.Bounds(c.lon,c.lat,c.lon,c.lat)),d=OpenLayers.Util.getParameters(d),c=a.getTileInfo(c);OpenLayers.Util.extend(d,{service:"WMTS",version:a.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:c.i,j:c.j});OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:OpenLayers.Util.isArray(a.url)?a.url[0]:a.url,params:OpenLayers.Util.upperCaseObject(d),callback:function(c){this.handleResponse(b,c,a)},scope:this}},request:function(a,b){var b=b||{},c=this.findLayers();\n +if(0<c.length){for(var d,e,f=0,g=c.length;f<g;f++)e=c[f],d=this.events.triggerEvent("beforegetfeatureinfo",{xy:a,layer:e}),!1!==d&&(++this.pending,d=this.buildRequestOptions(e,a),d=OpenLayers.Request.GET(d),!0===b.hover&&(this.hoverRequest=d));0<this.pending&&OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait")}},handleResponse:function(a,b,c){--this.pending;0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0);if(b.status&&(200>b.status||\n +300<=b.status))this.events.triggerEvent("exception",{xy:a,request:b,layer:c});else{var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;var e,f;try{e=this.format.read(d)}catch(g){f=!0,this.events.triggerEvent("exception",{xy:a,request:b,error:g,layer:c})}f||this.events.triggerEvent("getfeatureinfo",{text:b.responseText,features:e,request:b,xy:a,layer:c})}},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,scope:this}));return a},cacheFeatures:function(a){this.paging||(this.clearCache(),\n +this.features=a.features,this.pageNext(a))},clearCache:function(){if(this.features)for(var a=0;a<this.features.length;++a)this.features[a].destroy();this.num=this.features=null},pageCount:function(){return Math.ceil((this.features?this.features.length:0)/this.length)},pageNum:function(){return this.num},pageLength:function(a){a&&0<a&&(this.length=a);return this.length},pageNext:function(a){var b=!1;this.features&&(null===this.num&&(this.num=-1),b=this.page((this.num+1)*this.length,a));return b},pagePrevious:function(){var a=\n +!1;this.features&&(null===this.num&&(this.num=this.pageCount()),a=this.page((this.num-1)*this.length));return a},page:function(a,b){var c=!1;if(this.features&&0<=a&&a<this.features.length){var d=Math.floor(a/this.length);d!=this.num&&(this.paging=!0,c=this.features.slice(a,a+this.length),this.layer.removeFeatures(this.layer.features),this.num=d,b&&b.features?b.features=c:this.layer.addFeatures(c),this.paging=!1,c=!0)}return c},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Protocol.CSW.v2_0_2=OpenLayers.Class(OpenLayers.Protocol,{formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.CSWGetRecords.v2_0_2(OpenLayers.Util.extend({},this.formatOptions)))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,\n +this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format.write(a.params);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.data=this.parseData(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseData:function(a){var b=\n +a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.CSW.v2_0_2"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMT_MS_Capabilities:function(a,b){this.readChildNodes(a,b)},Keyword:function(a,b){b.keywords&&b.keywords.push(this.getChildValue(a))},DescribeLayer:function(a,b){b.describelayer={formats:[]};this.readChildNodes(a,b.describelayer)},GetLegendGraphic:function(a,b){b.getlegendgraphic={formats:[]};this.readChildNodes(a,b.getlegendgraphic)},GetStyles:function(a,b){b.getstyles=\n +{formats:[]};this.readChildNodes(a,b.getstyles)},PutStyles:function(a,b){b.putstyles={formats:[]};this.readChildNodes(a,b.putstyles)},UserDefinedSymbolization:function(a,b){var c={supportSLD:1==parseInt(a.getAttribute("SupportSLD")),userLayer:1==parseInt(a.getAttribute("UserLayer")),userStyle:1==parseInt(a.getAttribute("UserStyle")),remoteWFS:1==parseInt(a.getAttribute("RemoteWFS"))};b.userSymbols=c},LatLonBoundingBox:function(a,b){b.llbbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),\n +parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))]},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,[a,b]);c.srs=a.getAttribute("SRS");b.bbox[c.srs]=c},ScaleHint:function(a,b){var c=a.getAttribute("min"),d=a.getAttribute("max"),e=Math.pow(2,0.5),f=OpenLayers.INCHES_PER_UNIT.m;b.maxScale=parseFloat((c/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13));b.minScale=parseFloat((d/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13))},\n +Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol")};b.dimensions[c.name]=c},Extent:function(a,b){var c=a.getAttribute("name").toLowerCase();if(c in b.dimensions){c=b.dimensions[c];c.nearestVal="1"===a.getAttribute("nearestValue");c.multipleVal="1"===a.getAttribute("multipleValues");c.current="1"===a.getAttribute("current");c["default"]=a.getAttribute("default")||"";var d=this.getChildValue(a);c.values=d.split(",")}}},\n +OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:!0,visible:!0,numPoints:50,targetSize:200,layerName:null,labelled:!0,labelFormat:"dm",lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(a){a=a||{};a.layerName=a.layerName||OpenLayers.i18n("Graticule");OpenLayers.Control.prototype.initialize.apply(this,[a]);\n +this.labelSymbolizer.stroke=!1;this.labelSymbolizer.fill=!1;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}"},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);this.gratLayer&&(this.gratLayer.destroy(),this.gratLayer=null)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var a=new OpenLayers.Style({},\n +{rules:[new OpenLayers.Rule({symbolizer:{Point:this.labelSymbolizer,Line:this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({"default":a}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher})}return this.div},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.addLayer(this.gratLayer),this.map.events.register("moveend",this,this.update),this.update(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,\n +arguments)?(this.map.events.unregister("moveend",this,this.update),this.map.removeLayer(this.gratLayer),!0):!1},update:function(){var a=this.map.getExtent();if(a){this.gratLayer.destroyFeatures();var b=new OpenLayers.Projection("EPSG:4326"),c=this.map.getProjectionObject(),d=this.map.getResolution();c.proj&&"longlat"==c.proj.projName&&(this.numPoints=1);var e=this.map.getCenter(),f=new OpenLayers.Pixel(e.lon,e.lat);OpenLayers.Projection.transform(f,c,b);for(var e=this.targetSize*d,e=e*e,g,d=0;d<this.intervals.length;++d){g=\n +this.intervals[d];var h=g/2,i=f.offset({x:-h,y:-h}),h=f.offset({x:h,y:h});OpenLayers.Projection.transform(i,b,c);OpenLayers.Projection.transform(h,b,c);if((i.x-h.x)*(i.x-h.x)+(i.y-h.y)*(i.y-h.y)<=e)break}f.x=Math.floor(f.x/g)*g;f.y=Math.floor(f.y/g)*g;var d=0,e=[f.clone()],h=f.clone(),j;do h=h.offset({x:0,y:g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:0,y:-g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.push(h);\n +while(a.containsPixel(j)&&1E3>++d);d=0;i=[f.clone()];h=f.clone();do h=h.offset({x:-g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.push(h);while(a.containsPixel(j)&&1E3>++d);g=[];for(d=0;d<i.length;++d){j=i[d].x;for(var f=[],k=null,l=Math.min(e[0].y,90),h=Math.max(e[e.length-1].y,-90),m=(l-h)/this.numPoints,l=h,h=0;h<=this.numPoints;++h){var n=new OpenLayers.Geometry.Point(j,\n +l);n.transform(b,c);f.push(n);l+=m;n.y>=a.bottom&&!k&&(k=n)}this.labelled&&(k=new OpenLayers.Geometry.Point(k.x,a.bottom),j={value:j,label:this.labelled?OpenLayers.Util.getFormattedLonLat(j,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}for(h=0;h<e.length;++h)if(l=e[h].y,!(-90>l||90<l)){f=[];d=i[0].x;m=(i[i.length-1].x-d)/this.numPoints;\n +j=d;k=null;for(d=0;d<=this.numPoints;++d)n=new OpenLayers.Geometry.Point(j,l),n.transform(b,c),f.push(n),j+=m,n.x<a.right&&(k=n);this.labelled&&(k=new OpenLayers.Geometry.Point(a.right,k.y),j={value:l,label:this.labelled?OpenLayers.Util.getFormattedLonLat(l,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}this.gratLayer.addFeatures(g)}},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Layer.UTFGrid=OpenLayers.Class(OpenLayers.Layer.XYZ,{isBaseLayer:!1,projection:new OpenLayers.Projection("EPSG:900913"),useJSONP:!1,tileClass:OpenLayers.Tile.UTFGrid,initialize:function(a){OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,{},a]);this.tileOptions=OpenLayers.Util.extend({utfgridResolution:this.utfgridResolution},this.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.UTFGrid(this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getFeatureInfo:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureInfo(a.i,a.j));return b},getFeatureId:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureId(a.i,a.j));return b},CLASS_NAME:"OpenLayers.Layer.UTFGrid"});OpenLayers.Layer.ArcGISCache=OpenLayers.Class(OpenLayers.Layer.XYZ,{url:null,tileOrigin:null,tileSize:new OpenLayers.Size(256,256),useArcGISServer:!0,type:"png",useScales:!1,overrideDPI:!1,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.resolutions&&(this.serverResolutions=this.resolutions,this.maxExtent=this.getMaxExtentForResolution(this.resolutions[0]));if(this.layerInfo){var d=this.layerInfo,e=new OpenLayers.Bounds(d.fullExtent.xmin,d.fullExtent.ymin,\n +d.fullExtent.xmax,d.fullExtent.ymax);this.projection="EPSG:"+d.spatialReference.wkid;this.sphericalMercator=102100==d.spatialReference.wkid;this.units="esriFeet"==d.units?"ft":"m";if(d.tileInfo){this.tileSize=new OpenLayers.Size(d.tileInfo.width||d.tileInfo.cols,d.tileInfo.height||d.tileInfo.rows);this.tileOrigin=new OpenLayers.LonLat(d.tileInfo.origin.x,d.tileInfo.origin.y);var f=new OpenLayers.Geometry.Point(e.left,e.top),e=new OpenLayers.Geometry.Point(e.right,e.bottom);this.useScales?this.scales=\n +[]:this.resolutions=[];this.lods=[];for(var g in d.tileInfo.lods)if(d.tileInfo.lods.hasOwnProperty(g)){var h=d.tileInfo.lods[g];this.useScales?this.scales.push(h.scale):this.resolutions.push(h.resolution);var i=this.getContainingTileCoords(f,h.resolution);h.startTileCol=i.x;h.startTileRow=i.y;i=this.getContainingTileCoords(e,h.resolution);h.endTileCol=i.x;h.endTileRow=i.y;this.lods.push(h)}this.maxExtent=this.calculateMaxExtentWithLOD(this.lods[0]);this.serverResolutions=this.resolutions;this.overrideDPI&&\n +d.tileInfo.dpi&&(OpenLayers.DOTS_PER_INCH=d.tileInfo.dpi)}}},getContainingTileCoords:function(a,b){return new OpenLayers.Pixel(Math.max(Math.floor((a.x-this.tileOrigin.lon)/(this.tileSize.w*b)),0),Math.max(Math.floor((this.tileOrigin.lat-a.y)/(this.tileSize.h*b)),0))},calculateMaxExtentWithLOD:function(a){var b=this.tileOrigin.lon+a.startTileCol*this.tileSize.w*a.resolution,c=this.tileOrigin.lat-a.startTileRow*this.tileSize.h*a.resolution;return new OpenLayers.Bounds(b,c-(a.endTileRow-a.startTileRow+\n +1)*this.tileSize.h*a.resolution,b+(a.endTileCol-a.startTileCol+1)*this.tileSize.w*a.resolution,c)},calculateMaxExtentWithExtent:function(a,b){var c=new OpenLayers.Geometry.Point(a.left,a.top),d=new OpenLayers.Geometry.Point(a.right,a.bottom),c=this.getContainingTileCoords(c,b),d=this.getContainingTileCoords(d,b);return this.calculateMaxExtentWithLOD({resolution:b,startTileCol:c.x,startTileRow:c.y,endTileCol:d.x,endTileRow:d.y})},getUpperLeftTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.left,\n +this.maxExtent.top),a)},getLowerRightTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.right,this.maxExtent.bottom),a)},getMaxExtentForResolution:function(a){var b=this.getUpperLeftTileCoord(a),c=this.getLowerRightTileCoord(a),d=this.tileOrigin.lon+b.x*this.tileSize.w*a,e=this.tileOrigin.lat-b.y*this.tileSize.h*a;return new OpenLayers.Bounds(d,e-(c.y-b.y+1)*this.tileSize.h*a,d+(c.x-b.x+1)*this.tileSize.w*a,e)},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGISCache(this.name,\n +this.url,this.options));return OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},getMaxExtent:function(){return this.maxExtent=this.getMaxExtentForResolution(this.map.getResolution())},getTileOrigin:function(){var a=this.getMaxExtent();return new OpenLayers.LonLat(a.left,a.bottom)},getURL:function(a){var b=this.getResolution(),c=this.tileOrigin.lon+b*this.tileSize.w/2,d=this.tileOrigin.lat-b*this.tileSize.h/2,a=a.getCenterLonLat(),c=Math.round(Math.abs((a.lon-c)/(b*this.tileSize.w))),d=Math.round(Math.abs((d-\n +a.lat)/(b*this.tileSize.h))),a=this.map.getZoom();if(this.lods){if(b=this.lods[this.map.getZoom()],c<b.startTileCol||c>b.endTileCol||d<b.startTileRow||d>b.endTileRow)return null}else{var e=this.getUpperLeftTileCoord(b),b=this.getLowerRightTileCoord(b);if(c<e.x||c>=b.x||d<e.y||d>=b.y)return null}b=this.url;e=""+c+d+a;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(e,b));this.useArcGISServer?b+="/tile/${z}/${y}/${x}":(c="C"+this.zeroPad(c,8,16),d="R"+this.zeroPad(d,8,16),a="L"+this.zeroPad(a,2,16),b=\n +b+"/${z}/${y}/${x}."+this.type);b=OpenLayers.String.format(b,{x:c,y:d,z:a});return OpenLayers.Util.urlAppend(b,OpenLayers.Util.getParameterString(this.params))},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a},CLASS_NAME:"OpenLayers.Layer.ArcGISCache"});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,drillDown:!1,maxFeatures:10,clickCallback:"click",output:"features",layers:null,queryVisible:!1,url:null,layerUrls:null,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));\n +!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(a.xy,\n +{})},getInfoForHover:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d,e=a.length-1;0<=e;--e)if(c=a[e],c instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||c.getVisibility()))d=OpenLayers.Util.isArray(c.url)?c.url[0]:c.url,!1===this.drillDown&&!this.url&&(this.url=d),(!0===this.drillDown||\n +this.urlMatches(d))&&b.push(c);return b},urlMatches:function(a){var b=OpenLayers.Util.isEquivalentUrl(this.url,a);if(!b&&this.layerUrls)for(var c=0,d=this.layerUrls.length;c<d;++c)if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[c],a)){b=!0;break}return b},buildWMSOptions:function(a,b,c,d){for(var e=[],f=[],g=0,h=b.length;g<h;g++)null!=b[g].params.LAYERS&&(e=e.concat(b[g].params.LAYERS),f=f.concat(this.getStyleNames(b[g])));b=b[0];g=this.map.getProjection();(h=b.projection)&&h.equals(this.map.getProjectionObject())&&\n +(g=h.getCode());d=OpenLayers.Util.extend({service:"WMS",version:b.params.VERSION,request:"GetFeatureInfo",exceptions:b.params.EXCEPTIONS,bbox:this.map.getExtent().toBBOX(null,b.reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:d,info_format:b.params.INFO_FORMAT||this.infoFormat},1.3<=parseFloat(b.params.VERSION)?{crs:g,i:parseInt(c.x),j:parseInt(c.y)}:{srs:g,x:parseInt(c.x),y:parseInt(c.y)});0!=e.length&&(d=OpenLayers.Util.extend({layers:e,\n +query_layers:e,styles:f},d));OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:a,params:OpenLayers.Util.upperCaseObject(d),callback:function(b){this.handleResponse(c,b,a)},scope:this}},getStyleNames:function(a){return a.params.STYLES?a.params.STYLES:OpenLayers.Util.isArray(a.params.LAYERS)?Array(a.params.LAYERS.length):a.params.LAYERS.replace(/[^,]/g,"")},request:function(a,b){var c=this.findLayers();if(0==c.length)this.events.triggerEvent("nogetfeatureinfo"),OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +"olCursorWait");else if(b=b||{},!1===this.drillDown){var c=this.buildWMSOptions(this.url,c,a,c[0].params.FORMAT),d=OpenLayers.Request.GET(c);!0===b.hover&&(this.hoverRequest=d)}else{this._numRequests=this._requestCount=0;this.features=[];for(var d={},e,f=0,g=c.length;f<g;f++){var h=c[f];e=OpenLayers.Util.isArray(h.url)?h.url[0]:h.url;e in d?d[e].push(h):(this._numRequests++,d[e]=[h])}for(e in d)c=d[e],c=this.buildWMSOptions(e,c,a,c[0].params.FORMAT),OpenLayers.Request.GET(c)}},triggerGetFeatureInfo:function(a,\n +b,c){this.events.triggerEvent("getfeatureinfo",{text:a.responseText,features:c,request:a,xy:b});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},handleResponse:function(a,b,c){var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;d=this.format.read(d);!1===this.drillDown?this.triggerGetFeatureInfo(b,a,d):(this._requestCount++,this._features="object"===this.output?(this._features||[]).concat({url:c,features:d}):(this._features||[]).concat(d),this._requestCount===this._numRequests&&\n +(this.triggerGetFeatureInfo(b,a,this._features.concat()),delete this._features,delete this._requestCount,delete this._numRequests))},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={features:[]};this.readNode(a,b);for(var a=[],c=0,d=b.features.length;c<d;c++){var e=b.features[c];this.internalProjection&&(this.externalProjection&&e.components[0])&&e.components[0].transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(e.components[0],e.attributes);a.push(e)}return a},readers:{sa:{SamplingPoint:function(a,b){if(!b.attributes){var c=\n +{attributes:{}};b.features.push(c);b=c}b.attributes.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},position:function(a,b){this.readChildNodes(a,b)}},gml:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,b){this.readChildNodes(a,b)},featureMember:function(a,b){var c={attributes:{}};b.features.push(c);this.readChildNodes(a,c)},name:function(a,b){b.attributes.name=this.getChildValue(a)},pos:function(a,b){this.externalProjection||(this.externalProjection=new OpenLayers.Projection(a.getAttribute("srsName")));\n +OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[a,b])}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{sos:{GetFeatureOfInterest:function(a){for(var b=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:"SOS","xsi:schemaLocation":this.schemaLocation}}),c=0,d=a.fois.length;c<d;c++)this.writeNode("FeatureOfInterestId",{foi:a.fois[c]},b);return b},FeatureOfInterestId:function(a){return this.createElementNSPlus("FeatureOfInterestId",{value:a.foi})}}},\n +CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",sa:"http://www.opengis.net/sampling/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",\n +defaultPrefix:"sos",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={measurements:[],observations:[]};this.readNode(a,b);return b},write:function(a){a=this.writeNode("sos:GetObservation",a);a.setAttribute("xmlns:om",this.namespaces.om);a.setAttribute("xmlns:ogc",this.namespaces.ogc);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[a])},readers:{om:{ObservationCollection:function(a,b){b.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},member:function(a,b){this.readChildNodes(a,b)},Measurement:function(a,b){var c={};b.measurements.push(c);this.readChildNodes(a,c)},Observation:function(a,b){var c={};b.observations.push(c);this.readChildNodes(a,c)},samplingTime:function(a,b){var c={};b.samplingTime=c;this.readChildNodes(a,c)},observedProperty:function(a,b){b.observedProperty=this.getAttributeNS(a,this.namespaces.xlink,\n +"href");this.readChildNodes(a,b)},procedure:function(a,b){b.procedure=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)},featureOfInterest:function(a,b){var c={features:[]};b.fois=[];b.fois.push(c);this.readChildNodes(a,c);for(var d=[],e=0,f=c.features.length;e<f;e++){var g=c.features[e];d.push(new OpenLayers.Feature.Vector(g.components[0],g.attributes))}c.features=d},result:function(a,b){var c={};b.result=c;""!==this.getChildValue(a)?(c.value=this.getChildValue(a),c.uom=\n +a.getAttribute("uom")):this.readChildNodes(a,c)}},sa:OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,gml:OpenLayers.Util.applyDefaults({TimeInstant:function(a,b){var c={};b.timeInstant=c;this.readChildNodes(a,c)},timePosition:function(a,b){b.timePosition=this.getChildValue(a)}},OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml)},writers:{sos:{GetObservation:function(a){var b=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:"SOS"}});this.writeNode("offering",\n +a,b);a.eventTime&&this.writeNode("eventTime",a,b);for(var c in a.procedures)this.writeNode("procedure",a.procedures[c],b);for(var d in a.observedProperties)this.writeNode("observedProperty",a.observedProperties[d],b);a.foi&&this.writeNode("featureOfInterest",a.foi,b);this.writeNode("responseFormat",a,b);a.resultModel&&this.writeNode("resultModel",a,b);a.responseMode&&this.writeNode("responseMode",a,b);return b},featureOfInterest:function(a){var b=this.createElementNSPlus("featureOfInterest");this.writeNode("ObjectID",\n +a.objectId,b);return b},ObjectID:function(a){return this.createElementNSPlus("ObjectID",{value:a})},responseFormat:function(a){return this.createElementNSPlus("responseFormat",{value:a.responseFormat})},procedure:function(a){return this.createElementNSPlus("procedure",{value:a})},offering:function(a){return this.createElementNSPlus("offering",{value:a.offering})},observedProperty:function(a){return this.createElementNSPlus("observedProperty",{value:a})},eventTime:function(a){var b=this.createElementNSPlus("eventTime");\n +"latest"===a.eventTime&&this.writeNode("ogc:TM_Equals",a,b);return b},resultModel:function(a){return this.createElementNSPlus("resultModel",{value:a.resultModel})},responseMode:function(a){return this.createElementNSPlus("responseMode",{value:a.responseMode})}},ogc:{TM_Equals:function(a){var b=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},b);"latest"===a.eventTime&&this.writeNode("gml:TimeInstant",{value:"latest"},b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",\n +{value:a.property})}},gml:{TimeInstant:function(a){var b=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",a,b);return b},timePosition:function(a){return this.createElementNSPlus("gml:timePosition",{value:a.value})}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Control.UTFGrid=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,layers:null,defaultHandlerOptions:{delay:300,pixelTolerance:4,stopMove:!1,single:!0,"double":!1,stopSingle:!1,stopDouble:!1},handlerMode:"click",setHandler:function(a){this.handlerMode=a;this.resetHandler()},resetHandler:function(){this.handler&&(this.handler.deactivate(),this.handler.destroy(),this.handler=null);"hover"==this.handlerMode?this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.reset},\n +this.handlerOptions):"click"==this.handlerMode?this.handler=new OpenLayers.Handler.Click(this,{click:this.handleEvent},this.handlerOptions):"move"==this.handlerMode&&(this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.handleEvent},this.handlerOptions));return this.handler?!0:!1},initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||this.defaultHandlerOptions;OpenLayers.Control.prototype.initialize.apply(this,[a]);this.resetHandler()},handleEvent:function(a){if(null==\n +a)this.reset();else{var b=this.map.getLonLatFromPixel(a.xy);if(b){var c=this.findLayers();if(0<c.length){for(var d={},e,f,g=0,h=c.length;g<h;g++)e=c[g],f=OpenLayers.Util.indexOf(this.map.layers,e),d[f]=e.getFeatureInfo(b);this.callback(d,b,a.xy)}}}},callback:function(){},reset:function(){this.callback(null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)c=a[d],c instanceof OpenLayers.Layer.UTFGrid&&b.push(c);return b},CLASS_NAME:"OpenLayers.Control.UTFGrid"});OpenLayers.Format.CQL=function(){function a(a){function b(){var a=e.pop();switch(a.type){case "LOGICAL":var c=b(),g=b();return new OpenLayers.Filter.Logical({filters:[g,c],type:f[a.text.toUpperCase()]});case "NOT":return c=b(),new OpenLayers.Filter.Logical({filters:[c],type:OpenLayers.Filter.Logical.NOT});case "BETWEEN":return e.pop(),g=b(),a=b(),c=b(),new OpenLayers.Filter.Comparison({property:c,lowerBoundary:a,upperBoundary:g,type:OpenLayers.Filter.Comparison.BETWEEN});case "COMPARISON":return g=\n +b(),c=b(),new OpenLayers.Filter.Comparison({property:c,value:g,type:d[a.text.toUpperCase()]});case "VALUE":return/^\'.*\'$/.test(a.text)?a.text.substr(1,a.text.length-2):Number(a.text);case "SPATIAL":switch(a.text.toUpperCase()){case "BBOX":var c=b(),a=b(),g=b(),h=b(),i=b();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:i,value:OpenLayers.Bounds.fromArray([h,g,a,c])});case "INTERSECTS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,\n +property:c,value:g});case "WITHIN":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.WITHIN,property:c,value:g});case "CONTAINS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.CONTAINS,property:c,value:g});case "DWITHIN":return a=b(),g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,value:g,property:c,distance:Number(a)})}case "GEOMETRY":return OpenLayers.Geometry.fromWKT(a.text);default:return a.text}}\n +for(var c=[],e=[];a.length;){var g=a.shift();switch(g.type){case "PROPERTY":case "GEOMETRY":case "VALUE":e.push(g);break;case "COMPARISON":case "BETWEEN":case "LOGICAL":for(var i=h[g.type];0<c.length&&h[c[c.length-1].type]<=i;)e.push(c.pop());c.push(g);break;case "SPATIAL":case "NOT":case "LPAREN":c.push(g);break;case "RPAREN":for(;0<c.length&&"LPAREN"!=c[c.length-1].type;)e.push(c.pop());c.pop();0<c.length&&"SPATIAL"==c[c.length-1].type&&e.push(c.pop());case "COMMA":case "END":break;default:throw Error("Unknown token type "+\n +g.type);}}for(;0<c.length;)e.push(c.pop());a=b();if(0<e.length){a="Remaining tokens after building AST: \\n";for(c=e.length-1;0<=c;c--)a+=e[c].type+": "+e[c].text+"\\n";throw Error(a);}return a}var b={PROPERTY:/^[_a-zA-Z]\\w*/,COMPARISON:/^(=|<>|<=|<|>=|>|LIKE)/i,COMMA:/^,/,LOGICAL:/^(AND|OR)/i,VALUE:/^(\'\\w+\'|\\d+(\\.\\d*)?|\\.\\d+)/,LPAREN:/^\\(/,RPAREN:/^\\)/,SPATIAL:/^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,NOT:/^NOT/i,BETWEEN:/^BETWEEN/i,GEOMETRY:function(a){var b=/^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(a);\n +if(b){var c=a.length,b=a.indexOf("(",b[0].length);if(-1<b)for(var d=1;b<c&&0<d;)switch(b++,a.charAt(b)){case "(":d++;break;case ")":d--}return[a.substr(0,b+1)]}},END:/^$/},c={LPAREN:["GEOMETRY","SPATIAL","PROPERTY","VALUE","LPAREN"],RPAREN:["NOT","LOGICAL","END","RPAREN"],PROPERTY:["COMPARISON","BETWEEN","COMMA"],BETWEEN:["VALUE"],COMPARISON:["VALUE"],COMMA:["GEOMETRY","VALUE","PROPERTY"],VALUE:["LOGICAL","COMMA","RPAREN","END"],SPATIAL:["LPAREN"],LOGICAL:["NOT","VALUE","SPATIAL","PROPERTY","LPAREN"],\n +NOT:["PROPERTY","LPAREN"],GEOMETRY:["COMMA","RPAREN"]},d={"=":OpenLayers.Filter.Comparison.EQUAL_TO,"<>":OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"<":OpenLayers.Filter.Comparison.LESS_THAN,"<=":OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,">":OpenLayers.Filter.Comparison.GREATER_THAN,">=":OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,LIKE:OpenLayers.Filter.Comparison.LIKE,BETWEEN:OpenLayers.Filter.Comparison.BETWEEN},e={},f={AND:OpenLayers.Filter.Logical.AND,OR:OpenLayers.Filter.Logical.OR},\n +g={},h={RPAREN:3,LOGICAL:2,COMPARISON:1},i;for(i in d)d.hasOwnProperty(i)&&(e[d[i]]=i);for(i in f)f.hasOwnProperty(i)&&(g[f[i]]=i);return OpenLayers.Class(OpenLayers.Format,{read:function(d){var e=d,d=[],f,g=["NOT","GEOMETRY","SPATIAL","PROPERTY","LPAREN"];do{a:{f=g;for(var h=void 0,g=void 0,i=f.length,h=0;h<i;h++){var g=f[h],p=b[g]instanceof RegExp?b[g].exec(e):(0,b[g])(e);if(p){f=p[0];e=e.substr(f.length).replace(/^\\s*/,"");f={type:g,text:f,remainder:e};break a}}d="ERROR: In parsing: ["+e+"], expected one of: ";\n +for(h=0;h<i;h++)g=f[h],d+="\\n "+g+": "+b[g];throw Error(d);}e=f.remainder;g=c[f.type];if("END"!=f.type&&!g)throw Error("No follows list for "+f.type);d.push(f)}while("END"!=f.type);d=a(d);this.keepData&&(this.data=d);return d},write:function(a){if(a instanceof OpenLayers.Geometry)return a.toString();switch(a.CLASS_NAME){case "OpenLayers.Filter.Spatial":switch(a.type){case OpenLayers.Filter.Spatial.BBOX:return"BBOX("+a.property+","+a.value.toBBOX()+")";case OpenLayers.Filter.Spatial.DWITHIN:return"DWITHIN("+\n +a.property+", "+this.write(a.value)+", "+a.distance+")";case OpenLayers.Filter.Spatial.WITHIN:return"WITHIN("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.INTERSECTS:return"INTERSECTS("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.CONTAINS:return"CONTAINS("+a.property+", "+this.write(a.value)+")";default:throw Error("Unknown spatial filter type: "+a.type);}case "OpenLayers.Filter.Logical":if(a.type==OpenLayers.Filter.Logical.NOT)return"NOT ("+this.write(a.filters[0])+\n +")";for(var b="(",c=!0,d=0;d<a.filters.length;d++)c?c=!1:b+=") "+g[a.type]+" (",b+=this.write(a.filters[d]);return b+")";case "OpenLayers.Filter.Comparison":return a.type==OpenLayers.Filter.Comparison.BETWEEN?a.property+" BETWEEN "+this.write(a.lowerBoundary)+" AND "+this.write(a.upperBoundary):a.property+" "+e[a.type]+" "+this.write(a.value);case void 0:if("string"===typeof a)return"\'"+a+"\'";if("number"===typeof a)return""+a;default:throw Error("Can\'t encode: "+a.CLASS_NAME+" "+a);}},CLASS_NAME:"OpenLayers.Format.CQL"})}();OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{layer:null,source:null,sourceOptions:null,tolerance:null,edge:!0,deferDelete:!1,mutual:!0,targetFilter:null,sourceFilter:null,handler:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.source&&this.setSource(this.options.source)},setSource:function(a){this.active?(this.deactivate(),this.handler&&(this.handler.destroy(),delete this.handler),this.source=a,this.activate()):this.source=\n +a},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)if(this.source){if(this.source.events)this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this})}else this.handler||(this.handler=new OpenLayers.Handler.Path(this,{done:function(a){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(a)})}},{layerOptions:this.sourceOptions})),this.handler.activate();return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);\n +a&&this.source&&this.source.events&&this.layer.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});return a},onSketchComplete:function(a){this.feature=null;return!this.considerSplit(a.feature)},afterFeatureModified:function(a){a.modified&&"function"===typeof a.feature.geometry.split&&(this.feature=a.feature,this.considerSplit(a.feature))},removeByGeometry:function(a,b){for(var c=0,d=a.length;c<d;++c)if(a[c].geometry===b){a.splice(c,1);break}},\n +isEligible:function(a){return a.geometry?a.state!==OpenLayers.State.DELETE&&"function"===typeof a.geometry.split&&this.feature!==a&&(!this.targetFilter||this.targetFilter.evaluate(a.attributes)):!1},considerSplit:function(a){var b=!1,c=!1;if(!this.sourceFilter||this.sourceFilter.evaluate(a.attributes)){for(var d=this.layer&&this.layer.features||[],e,f,g=[],h=[],i=this.layer===this.source&&this.mutual,j={edge:this.edge,tolerance:this.tolerance,mutual:i},k=[a.geometry],l,m,n,o=0,p=d.length;o<p;++o)if(l=\n +d[o],this.isEligible(l)){m=[l.geometry];for(var q=0;q<k.length;++q){n=k[q];for(var r=0;r<m.length;++r)if(e=m[r],n.getBounds().intersectsBounds(e.getBounds())&&(e=n.split(e,j)))if(f=this.events.triggerEvent("beforesplit",{source:a,target:l}),!1!==f&&(i&&(f=e[0],1<f.length&&(f.unshift(q,1),Array.prototype.splice.apply(k,f),q+=f.length-3),e=e[1]),1<e.length))e.unshift(r,1),Array.prototype.splice.apply(m,e),r+=e.length-3}m&&1<m.length&&(this.geomsToFeatures(l,m),this.events.triggerEvent("split",{original:l,\n +features:m}),Array.prototype.push.apply(g,m),h.push(l),c=!0)}k&&1<k.length&&(this.geomsToFeatures(a,k),this.events.triggerEvent("split",{original:a,features:k}),Array.prototype.push.apply(g,k),h.push(a),b=!0);if(b||c){if(this.deferDelete){d=[];o=0;for(p=h.length;o<p;++o)c=h[o],c.state===OpenLayers.State.INSERT?d.push(c):(c.state=OpenLayers.State.DELETE,this.layer.drawFeature(c));this.layer.destroyFeatures(d,{silent:!0});o=0;for(p=g.length;o<p;++o)g[o].state=OpenLayers.State.INSERT}else this.layer.destroyFeatures(h,\n +{silent:!0});this.layer.addFeatures(g,{silent:!0});this.events.triggerEvent("aftersplit",{source:a,features:g})}}return b},geomsToFeatures:function(a,b){var c=a.clone();delete c.geometry;for(var d,e=0,f=b.length;e<f;++e)d=c.clone(),d.geometry=b[e],d.state=OpenLayers.State.INSERT,b[e]=d},destroy:function(){this.active&&this.deactivate();OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Split"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,serverResolutions:null,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png",png:"png","image/jpeg":"jpg","image/jpg":"jpg",jpeg:"jpg",jpg:"jpg"},matrix:null,initialize:function(a){var b=\n +{url:!0,layer:!0,style:!0,matrixSet:!0},c;for(c in b)if(!(c in a))throw Error("Missing property \'"+c+"\' in layer configuration.");a.params=OpenLayers.Util.upperCaseObject(a.params);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,a.params,a]);this.formatSuffix||(this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop());if(this.matrixIds&&(a=this.matrixIds.length)&&"string"===typeof this.matrixIds[0]){b=this.matrixIds;this.matrixIds=Array(a);for(c=0;c<a;++c)this.matrixIds[c]=\n +{identifier:b[c]}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties()},updateMatrixProperties:function(){if(this.matrix=this.getMatrix())if(this.matrix.topLeftCorner&&(this.tileOrigin=this.matrix.topLeftCorner),this.matrix.tileWidth&&this.matrix.tileHeight&&(this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight)),this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top)),!this.tileFullExtent)this.tileFullExtent=\n +this.maxExtent},moveTo:function(a,b,c){(b||!this.matrix)&&this.updateMatrixProperties();return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMTS(this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getIdentifier:function(){return this.getServerZoom()},getMatrix:function(){var a;if(!this.matrixIds||0===this.matrixIds.length)a={identifier:this.getIdentifier()};else if("scaleDenominator"in this.matrixIds[0])for(var b=\n +OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.getServerResolution()/2.8E-4,c=Number.POSITIVE_INFINITY,d,e=0,f=this.matrixIds.length;e<f;++e)d=Math.abs(1-this.matrixIds[e].scaleDenominator/b),d<c&&(c=d,a=this.matrixIds[e]);else a=this.matrixIds[this.getIdentifier()];return a},getTileInfo:function(a){var b=this.getServerResolution(),c=(a.lon-this.tileOrigin.lon)/(b*this.tileSize.w),a=(this.tileOrigin.lat-a.lat)/(b*this.tileSize.h),b=Math.floor(c),d=Math.floor(a);return{col:b,\n +row:d,i:Math.floor((c-b)*this.tileSize.w),j:Math.floor((a-d)*this.tileSize.h)}},getURL:function(a){var a=this.adjustBounds(a),b="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(a)){var c=this.getTileInfo(a.getCenterLonLat()),a=this.dimensions;if("REST"===this.requestEncoding.toUpperCase())if(b=this.params,"string"===typeof this.url&&-1!==this.url.indexOf("{")){var d=this.url.replace(/\\{/g,"${"),c={style:this.style,Style:this.style,TileMatrixSet:this.matrixSet,TileMatrix:this.matrix.identifier,\n +TileRow:c.row,TileCol:c.col};if(a){var e,f;for(f=a.length-1;0<=f;--f)e=a[f],c[e]=b[e.toUpperCase()]}b=OpenLayers.String.format(d,c)}else{d=this.version+"/"+this.layer+"/"+this.style+"/";if(a)for(f=0;f<a.length;f++)b[a[f]]&&(d=d+b[a[f]]+"/");d=d+this.matrixSet+"/"+this.matrix.identifier+"/"+c.row+"/"+c.col+"."+this.formatSuffix;b=OpenLayers.Util.isArray(this.url)?this.selectUrl(d,this.url):this.url;b.match(/\\/$/)||(b+="/");b+=d}else"KVP"===this.requestEncoding.toUpperCase()&&(b={SERVICE:"WMTS",REQUEST:"GetTile",\n +VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:c.row,TILECOL:c.col,FORMAT:this.format},b=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[b]))}return b},mergeNewParams:function(a){if("KVP"===this.requestEncoding.toUpperCase())return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(a)])},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||\n +{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format,c=OpenLayers.Format.XML.prototype.write.apply(c,[c.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.features=this.parseFeatures(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;\n +b.callback.call(b.scope,a)}},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{jpeg:"jpg",gif:"gif",png:"png",png8:"png",png24:"png",dithered:"png"},DEFAULT_FORMAT:"jpeg",initialize:function(a,b,c,d){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||this.DEFAULT_FORMAT]},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b),a=\n +-Math.round(a.top/b),b=Math.floor(d/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w,e=Math.floor(a/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h,c=["/",this.params.map,"/",c,"/",this.params.g.replace(/\\s/g,"_"),"/def/t",e,"/l",b,"/t",a,"l",d,".",this.extension],d=this.url;OpenLayers.Util.isArray(d)&&(d=this.selectUrl(c.join(""),d));return d+c.join("")},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",initialize:function(a){OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this,arguments);this.outputFormat&&!this.readFormat&&("gml2"==this.outputFormat.toLowerCase()?this.readFormat=new OpenLayers.Format.GML.v2({featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName}):"json"==this.outputFormat.toLowerCase()&&(this.readFormat=new OpenLayers.Format.GeoJSON))},CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1_1,{version:"1.1.1",profile:"WMSC",readers:{wms:OpenLayers.Util.applyDefaults({VendorSpecificCapabilities:function(a,b){b.vendorSpecific={tileSets:[]};this.readChildNodes(a,b.vendorSpecific)},TileSet:function(a,b){var c={srs:{},bbox:{},resolutions:[]};this.readChildNodes(a,c);b.tileSets.push(c)},Resolutions:function(a,b){for(var c=this.getChildValue(a).split(" "),d=0,e=c.length;d<e;d++)""!=c[d]&&b.resolutions.push(parseFloat(c[d]))},\n +Width:function(a,b){b.width=parseInt(this.getChildValue(a))},Height:function(a,b){b.height=parseInt(this.getChildValue(a))},Layers:function(a,b){b.layers=this.getChildValue(a)},Styles:function(a,b){b.styles=this.getChildValue(a)}},OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){for(var c=this.getChildValue(a).split(/ +/),d=0,e=c.length;d<e;d++)b.srs[c[d]]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{roundedCorner:!1,roundedCornerColor:"darkblue",layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[];this.roundedCorner&&OpenLayers.Console.warn("roundedCorner option is deprecated")},destroy:function(){this.clearLayersArray("base");\n +this.clearLayersArray("data");this.map.events.un({buttonclick:this.onButtonClick,addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,scope:this});this.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,\n +scope:this});this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();this.outsideViewport||this.minimizeControl();this.redraw();return this.div},onButtonClick:function(a){a=a.buttonElement;a===this.minimizeDiv?this.minimizeControl():a===this.maximizeDiv?this.maximizeControl():a._layerSwitcher===\n +this.id&&(a["for"]&&(a=document.getElementById(a["for"])),a.disabled||("radio"==a.type?(a.checked=!0,this.map.setBaseLayer(this.map.getLayer(a._layer))):(a.checked=!a.checked,this.updateMap())))},clearLayersArray:function(a){this[a+"LayersDiv"].innerHTML="";this[a+"Layers"]=[]},checkRedraw:function(){var a=!1;if(!this.layerStates.length||this.map.layers.length!=this.layerStates.length)a=!0;else for(var b=0,c=this.layerStates.length;b<c;b++){var d=this.layerStates[b],e=this.map.layers[b];if(d.name!=\n +e.name||d.inRange!=e.inRange||d.id!=e.id||d.visibility!=e.visibility){a=!0;break}}return a},redraw:function(){if(!this.checkRedraw())return this.div;this.clearLayersArray("base");this.clearLayersArray("data");var a=!1,b=!1,c=this.map.layers.length;this.layerStates=Array(c);for(var d=0;d<c;d++){var e=this.map.layers[d];this.layerStates[d]={name:e.name,visibility:e.visibility,inRange:e.inRange,id:e.id}}var f=this.map.layers.slice();this.ascending||f.reverse();d=0;for(c=f.length;d<c;d++){var e=f[d],\n +g=e.isBaseLayer;if(e.displayInLayerSwitcher){g?b=!0:a=!0;var h=g?e==this.map.baseLayer:e.getVisibility(),i=document.createElement("input");i.id=this.id+"_input_"+e.name;i.name=g?this.id+"_baseLayers":e.name;i.type=g?"radio":"checkbox";i.value=e.name;i.checked=h;i.defaultChecked=h;i.className="olButton";i._layer=e.id;i._layerSwitcher=this.id;!g&&!e.inRange&&(i.disabled=!0);h=document.createElement("label");h["for"]=i.id;OpenLayers.Element.addClass(h,"labelSpan olButton");h._layer=e.id;h._layerSwitcher=\n +this.id;!g&&!e.inRange&&(h.style.color="gray");h.innerHTML=e.name;h.style.verticalAlign=g?"bottom":"baseline";var j=document.createElement("br");(g?this.baseLayers:this.dataLayers).push({layer:e,inputElem:i,labelSpan:h});e=g?this.baseLayersDiv:this.dataLayersDiv;e.appendChild(i);e.appendChild(h);e.appendChild(j)}}this.dataLbl.style.display=a?"":"none";this.baseLbl.style.display=b?"":"none";return this.div},updateMap:function(){for(var a=0,b=this.baseLayers.length;a<b;a++){var c=this.baseLayers[a];\n +c.inputElem.checked&&this.map.setBaseLayer(c.layer,!1)}a=0;for(b=this.dataLayers.length;a<b;a++)c=this.dataLayers[a],c.layer.setVisibility(c.inputElem.checked)},maximizeControl:function(a){this.div.style.width="";this.div.style.height="";this.showControls(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.div.style.width="0px";this.div.style.height="0px";this.showControls(!0);null!=a&&OpenLayers.Event.stop(a)},showControls:function(a){this.maximizeDiv.style.display=a?"":"none";\n +this.minimizeDiv.style.display=a?"none":"";this.layersDiv.style.display=a?"none":""},loadContents:function(){this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("Base Layer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");\n +this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("Overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,"dataLayersDiv");this.ascending?(this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv),this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv)):(this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv),\n +this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv));this.div.appendChild(this.layersDiv);this.roundedCorner&&(OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.roundedCornerColor,blend:!1}),OpenLayers.Rico.Corner.changeOpacity(this.layersDiv,0.75));var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,null,a,"absolute");\n +OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv olButton");this.maximizeDiv.style.display="none";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,null,a,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv olButton");this.minimizeDiv.style.display="none";this.div.appendChild(this.minimizeDiv)},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:!1,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));return this.parseFeatures(a)},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNSPlus("atom:feed");b.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));\n +for(var c=0,d=a.length;c<d;c++)b.appendChild(this.buildEntryNode(a[c]))}else b=this.buildEntryNode(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},buildContentNode:function(a){var b=this.createElementNSPlus("atom:content",{attributes:{type:a.type||null}});if(a.src)b.setAttribute("src",a.src);else if("text"==a.type||null==a.type)b.appendChild(this.createTextNode(a.value));else if("html"==a.type){if("string"!=typeof a.value)throw"HTML content must be in form of an escaped string";b.appendChild(this.createTextNode(a.value))}else"xhtml"==\n +a.type?b.appendChild(a.value):"xhtml"==a.type||a.type.match(/(\\+|\\/)xml$/)?b.appendChild(a.value):b.appendChild(this.createTextNode(a.value));return b},buildEntryNode:function(a){var b=a.attributes,c=b.atom||{},d=this.createElementNSPlus("atom:entry");if(c.authors)for(var e=OpenLayers.Util.isArray(c.authors)?c.authors:[c.authors],f=0,g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("author",e[f]));if(c.categories)for(var e=OpenLayers.Util.isArray(c.categories)?c.categories:[c.categories],\n +h,f=0,g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:h.term,scheme:h.scheme||null,label:h.label||null}}));c.content&&d.appendChild(this.buildContentNode(c.content));if(c.contributors){e=OpenLayers.Util.isArray(c.contributors)?c.contributors:[c.contributors];f=0;for(g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("contributor",e[f]))}a.fid&&d.appendChild(this.createElementNSPlus("atom:id",{value:a.fid}));if(c.links){e=OpenLayers.Util.isArray(c.links)?\n +c.links:[c.links];f=0;for(g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:h.href,rel:h.rel||null,type:h.type||null,hreflang:h.hreflang||null,title:h.title||null,length:h.length||null}}))}c.published&&d.appendChild(this.createElementNSPlus("atom:published",{value:c.published}));c.rights&&d.appendChild(this.createElementNSPlus("atom:rights",{value:c.rights}));if(c.summary||b.description)d.appendChild(this.createElementNSPlus("atom:summary",{value:c.summary||\n +b.description}));d.appendChild(this.createElementNSPlus("atom:title",{value:c.title||b.title||this.defaultEntryTitle}));c.updated&&d.appendChild(this.createElementNSPlus("atom:updated",{value:c.updated}));a.geometry&&(b=this.createElementNSPlus("georss:where"),b.appendChild(this.buildGeometryNode(a.geometry)),d.appendChild(b));return d},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,\n +externalProjection:this.externalProjection})},buildGeometryNode:function(a){this.gmlParser||this.initGmlParser();return this.gmlParser.writeNode("feature:_geometry",a).firstChild},buildPersonConstructNode:function(a,b){var c=["uri","email"],d=this.createElementNSPlus("atom:"+a);d.appendChild(this.createElementNSPlus("atom:name",{value:b.name}));for(var e=0,f=c.length;e<f;e++)b[c[e]]&&d.appendChild(this.createElementNSPlus("atom:"+c[e],{value:b[c[e]]}));return d},getFirstChildValue:function(a,b,c,\n +d){return(a=this.getElementsByTagNameNS(a,b,c))&&0<a.length?this.getChildValue(a[0],d):d},parseFeature:function(a){var b={},c=null,d=null,e=null,f=this.namespaces.atom;this.parsePersonConstructs(a,"author",b);d=this.getElementsByTagNameNS(a,f,"category");0<d.length&&(b.categories=[]);for(var g=0,h=d.length;g<h;g++){c={};c.term=d[g].getAttribute("term");if(e=d[g].getAttribute("scheme"))c.scheme=e;if(e=d[g].getAttribute("label"))c.label=e;b.categories.push(c)}d=this.getElementsByTagNameNS(a,f,"content");\n +if(0<d.length){c={};if(e=d[0].getAttribute("type"))c.type=e;(e=d[0].getAttribute("src"))?c.src=e:(c.value="text"==c.type||"html"==c.type||null==c.type?this.getFirstChildValue(a,f,"content",null):"xhtml"==c.type||c.type.match(/(\\+|\\/)xml$/)?this.getChildEl(d[0]):this.getFirstChildValue(a,f,"content",null),b.content=c)}this.parsePersonConstructs(a,"contributor",b);b.id=this.getFirstChildValue(a,f,"id",null);d=this.getElementsByTagNameNS(a,f,"link");0<d.length&&(b.links=Array(d.length));for(var i=["rel",\n +"type","hreflang","title","length"],g=0,h=d.length;g<h;g++){c={};c.href=d[g].getAttribute("href");for(var j=0,k=i.length;j<k;j++)(e=d[g].getAttribute(i[j]))&&(c[i[j]]=e);b.links[g]=c}if(c=this.getFirstChildValue(a,f,"published",null))b.published=c;if(c=this.getFirstChildValue(a,f,"rights",null))b.rights=c;if(c=this.getFirstChildValue(a,f,"summary",null))b.summary=c;b.title=this.getFirstChildValue(a,f,"title",null);b.updated=this.getFirstChildValue(a,f,"updated",null);c={title:b.title,description:b.summary,\n +atom:b};a=this.parseLocations(a)[0];a=new OpenLayers.Feature.Vector(a,c);a.fid=b.id;return a},parseFeatures:function(a){var b=[],c=this.getElementsByTagNameNS(a,this.namespaces.atom,"entry");0==c.length&&(c=[a]);for(var a=0,d=c.length;a<d;a++)b.push(this.parseFeature(c[a]));return b},parseLocations:function(a){var b=this.namespaces.georss,c={components:[]},d=this.getElementsByTagNameNS(a,b,"where");if(d&&0<d.length){this.gmlParser||this.initGmlParser();for(var e=0,f=d.length;e<f;e++)this.gmlParser.readChildNodes(d[e],\n +c)}c=c.components;if((d=this.getElementsByTagNameNS(a,b,"point"))&&0<d.length){e=0;for(f=d.length;e<f;e++){var g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\\s+/);2!=g.length&&(g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\\s*,\\s*/));c.push(new OpenLayers.Geometry.Point(g[1],g[0]))}}var h=this.getElementsByTagNameNS(a,b,"line");if(h&&0<h.length)for(var i,e=0,f=h.length;e<f;e++){d=OpenLayers.String.trim(h[e].firstChild.nodeValue).split(/\\s+/);i=[];for(var j=0,k=d.length;j<\n +k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.LineString(i))}if((a=this.getElementsByTagNameNS(a,b,"polygon"))&&0<a.length){e=0;for(f=a.length;e<f;e++){d=OpenLayers.String.trim(a[e].firstChild.nodeValue).split(/\\s+/);i=[];j=0;for(k=d.length;j<k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(c)]))}}if(this.internalProjection&&this.externalProjection){e=0;for(f=c.length;e<\n +f;e++)c[e]&&c[e].transform(this.externalProjection,this.internalProjection)}return c},parsePersonConstructs:function(a,b,c){for(var d=[],e=this.namespaces.atom,a=this.getElementsByTagNameNS(a,e,b),f=["uri","email"],g=0,h=a.length;g<h;g++){var i={};i.name=this.getFirstChildValue(a[g],e,"name",null);for(var j=0,k=f.length;j<k;j++){var l=this.getFirstChildValue(a[g],e,f[j],null);l&&(i[f[j]]=l)}d.push(i)}0<d.length&&(c[b+"s"]=d)},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,slideFactor:75,observeElement:null,draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{keydown:this.defaultKeyPress},{observeElement:this.observeElement||document})},defaultKeyPress:function(a){var b,c=!0;switch(a.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,\n +-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:b=this.map.getSize();this.map.pan(0,-0.75*b.h);break;case 34:b=this.map.getSize();this.map.pan(0,0.75*b.h);break;case 35:b=this.map.getSize();this.map.pan(0.75*b.w,0);break;case 36:b=this.map.getSize();this.map.pan(-0.75*b.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();break;default:c=!1}c&&OpenLayers.Event.stop(a)},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a;a=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(a,this.yx)},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);b.version=this.version;return b},readers:{wmts:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contents={};b.contents.layers=[];b.contents.tileMatrixSets={};this.readChildNodes(a,b.contents)},Layer:function(a,b){var c={styles:[],formats:[],dimensions:[],tileMatrixSetLinks:[],layers:[]};this.readChildNodes(a,c);b.layers.push(c)},Style:function(a,\n +b){var c={};c.isDefault="true"===a.getAttribute("isDefault");this.readChildNodes(a,c);b.styles.push(c)},Format:function(a,b){b.formats.push(this.getChildValue(a))},TileMatrixSetLink:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLinks.push(c)},TileMatrixSet:function(a,b){if(b.layers){var c={matrixIds:[]};this.readChildNodes(a,c);b.tileMatrixSets[c.identifier]=c}else b.tileMatrixSet=this.getChildValue(a)},TileMatrix:function(a,b){var c={supportedCRS:b.supportedCRS};this.readChildNodes(a,\n +c);b.matrixIds.push(c)},ScaleDenominator:function(a,b){b.scaleDenominator=parseFloat(this.getChildValue(a))},TopLeftCorner:function(a,b){var c=this.getChildValue(a).split(" "),d;b.supportedCRS&&(d=!!this.yx[b.supportedCRS.replace(/urn:ogc:def:crs:(\\w+):.+:(\\w+)$/,"urn:ogc:def:crs:$1::$2")]);b.topLeftCorner=d?new OpenLayers.LonLat(c[1],c[0]):new OpenLayers.LonLat(c[0],c[1])},TileWidth:function(a,b){b.tileWidth=parseInt(this.getChildValue(a))},TileHeight:function(a,b){b.tileHeight=parseInt(this.getChildValue(a))},\n +MatrixWidth:function(a,b){b.matrixWidth=parseInt(this.getChildValue(a))},MatrixHeight:function(a,b){b.matrixHeight=parseInt(this.getChildValue(a))},ResourceURL:function(a,b){b.resourceUrl=b.resourceUrl||{};b.resourceUrl[a.getAttribute("resourceType")]={format:a.getAttribute("format"),template:a.getAttribute("template")}},WSDL:function(a,b){b.wsdl={};b.wsdl.href=a.getAttribute("xlink:href")},ServiceMetadataURL:function(a,b){b.serviceMetadataUrl={};b.serviceMetadataUrl.href=a.getAttribute("xlink:href")},\n +LegendURL:function(a,b){b.legend={};b.legend.href=a.getAttribute("xlink:href");b.legend.format=a.getAttribute("format")},Dimension:function(a,b){var c={values:[]};this.readChildNodes(a,c);b.dimensions.push(c)},Default:function(a,b){b["default"]=this.getChildValue(a)},Value:function(a,b){b.values.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/SeleniumSafeImage_uploadFile.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/SeleniumSafeImage_uploadFile.xml new file mode 100644 index 0000000000000000000000000000000000000000..ca7e58b8e494c93e4ddf96e42d5902057bb6c1b0 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/SeleniumSafeImage_uploadFile.xml @@ -0,0 +1,78 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>#from Products.ERP5.Document.TileImageTransformed import TileImageTransformed\n +#from cStringIO import StringIO\n +\n +\n +portal = context.getPortalObject()\n +\n +\n +data = portal.restrictedTraverse("portal_skins/erp5_safeimage/img/image_test.jpg")\n +\n +print data.data\n +\n +return printed\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>SeleniumSafeImage_uploadFile</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Selenium_cleanUp.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Selenium_cleanUp.xml new file mode 100644 index 0000000000000000000000000000000000000000..bff3dba2b30b1c0370f2372582b38a0a9023548a --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Selenium_cleanUp.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>cleanUp</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5SafeImage_Selenium</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Selenium_cleanUp</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Selenium_cleanUp</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Selenium_uploadImage.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Selenium_uploadImage.xml new file mode 100644 index 0000000000000000000000000000000000000000..d19669bd7f55878f79dfe5dd8e326ef779abf248 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/Selenium_uploadImage.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>uploadImage</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5SafeImage_Selenium</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Selenium_uploadImage</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Selenium_uploadImage</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/TileImageTransformed_getTransform.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/TileImageTransformed_getTransform.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1bca2e407a22bdb207393b9c74167e9f167cd70 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/TileImageTransformed_getTransform.xml @@ -0,0 +1,88 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>import json\n +\n +context.REQUEST.response.setHeader(\'Access-Control-Allow-Origin\', \'*\')\n +file = context["TransformFile.txt"].getData().split()\n +data = {}\n +data["transforms"]=[]\n +transforms=data["transforms"]\n +#Reverse Text File to improve performance in the browser\n +while(file):\n + line = file[:6]\n + transforms.append({"tilegroup":line[0],"tileid":line[1],"algorithm":line[2],"param1":line[3],"param2":line[4],"num":line[5]})\n + del(file[:6])\n + \n +return json.dumps(transforms)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>_proxy_roles</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>TileImageTransformed_getTransform</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/TileImage_getMetadataAsJSON.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/TileImage_getMetadataAsJSON.xml new file mode 100644 index 0000000000000000000000000000000000000000..837e8565d161246a1a60ebadd1a6db92a2855539 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/TileImage_getMetadataAsJSON.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>import json\n +\n +context.REQUEST.response.setHeader(\'Access-Control-Allow-Origin\', \'*\')\n +tile_image = context\n +xml_file = tile_image["ImageProperties.xml"]\n +xml_split = xml_file.getData().split(" ")\n +widthpre = xml_split[1].split("=")\n +heightpre = xml_split[2].split("=")\n +width = widthpre[1][1:-1]\n +height = heightpre[1][1:-1] \n +data = {}\n +data["sizes"] = []\n +sizes = data["sizes"]\n +sizes.append({"width":width,"height":height})\n +\n +return json.dumps(data)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>_proxy_roles</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>TileImage_getMetadataAsJSON</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css.xml new file mode 100644 index 0000000000000000000000000000000000000000..750301670a829c9ba5fe4b9f8928e3d358b96b53 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>css</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>css</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/bootstrap.min.css.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/bootstrap.min.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..fff2eb3922f45f5c50a200cab4b48bc5c4969ed8 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/bootstrap.min.css.xml @@ -0,0 +1,748 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54117301.19</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>bootstrap.min.css</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/css</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>81150</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>bootstrap.min.css</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}\n +audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}\n +audio:not([controls]){display:none;}\n +html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}\n +a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}\n +a:hover,a:active{outline:0;}\n +sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}\n +sup{top:-0.5em;}\n +sub{bottom:-0.25em;}\n +img{height:auto;border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;}\n +button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}\n +button,input{*overflow:visible;line-height:normal;}\n +button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}\n +button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}\n +input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}\n +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}\n +textarea{overflow:auto;vertical-align:top;}\n +.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}\n +.clearfix:after{clear:both;}\n +.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}\n +.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}\n +body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}\n +a{color:#0088cc;text-decoration:none;}\n +a:hover{color:#005580;text-decoration:underline;}\n +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}\n +.row:after{clear:both;}\n +[class*="span"]{float:left;margin-left:20px;}\n +.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}\n +.span12{width:940px;}\n +.span11{width:860px;}\n +.span10{width:780px;}\n +.span9{width:700px;}\n +.span8{width:620px;}\n +.span7{width:540px;}\n +.span6{width:460px;}\n +.span5{width:380px;}\n +.span4{width:300px;}\n +.span3{width:220px;}\n +.span2{width:140px;}\n +.span1{width:60px;}\n +.offset12{margin-left:980px;}\n +.offset11{margin-left:900px;}\n +.offset10{margin-left:820px;}\n +.offset9{margin-left:740px;}\n +.offset8{margin-left:660px;}\n +.offset7{margin-left:580px;}\n +.offset6{margin-left:500px;}\n +.offset5{margin-left:420px;}\n +.offset4{margin-left:340px;}\n +.offset3{margin-left:260px;}\n +.offset2{margin-left:180px;}\n +.offset1{margin-left:100px;}\n +.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}\n +.row-fluid:after{clear:both;}\n +.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}\n +.row-fluid>[class*="span"]:first-child{margin-left:0;}\n +.row-fluid > .span12{width:99.99999998999999%;}\n +.row-fluid > .span11{width:91.489361693%;}\n +.row-fluid > .span10{width:82.97872339599999%;}\n +.row-fluid > .span9{width:74.468085099%;}\n +.row-fluid > .span8{width:65.95744680199999%;}\n +.row-fluid > .span7{width:57.446808505%;}\n +.row-fluid > .span6{width:48.93617020799999%;}\n +.row-fluid > .span5{width:40.425531911%;}\n +.row-fluid > .span4{width:31.914893614%;}\n +.row-fluid > .span3{width:23.404255317%;}\n +.row-fluid > .span2{width:14.89361702%;}\n +.row-fluid > .span1{width:6.382978723%;}\n +.container{margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}\n +.container:after{clear:both;}\n +.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}\n +.container-fluid:after{clear:both;}\n +p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}\n +.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}\n +h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}\n +h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}\n +h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}\n +h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}\n +h4,h5,h6{line-height:18px;}\n +h4{font-size:14px;}h4 small{font-size:12px;}\n +h5{font-size:12px;}\n +h6{font-size:11px;color:#999999;text-transform:uppercase;}\n +.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}\n +.page-header h1{line-height:1;}\n +ul,ol{padding:0;margin:0 0 9px 25px;}\n +ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}\n +ul{list-style:disc;}\n +ol{list-style:decimal;}\n +li{line-height:18px;}\n +ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}\n +dl{margin-bottom:18px;}\n +dt,dd{line-height:18px;}\n +dt{font-weight:bold;line-height:17px;}\n +dd{margin-left:9px;}\n +.dl-horizontal dt{float:left;clear:left;width:120px;text-align:right;}\n +.dl-horizontal dd{margin-left:130px;}\n +hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}\n +strong{font-weight:bold;}\n +em{font-style:italic;}\n +.muted{color:#999999;}\n +abbr[title]{border-bottom:1px dotted #ddd;cursor:help;}\n +abbr.initialism{font-size:90%;text-transform:uppercase;}\n +blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}\n +blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:\'\\2014 \\00A0\';}\n +blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}\n +q:before,q:after,blockquote:before,blockquote:after{content:"";}\n +address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}\n +small{font-size:100%;}\n +cite{font-style:normal;}\n +code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}\n +code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}\n +pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;}pre.prettyprint{margin-bottom:18px;}\n +pre code{padding:0;color:inherit;background-color:transparent;border:0;}\n +.pre-scrollable{max-height:340px;overflow-y:scroll;}\n +form{margin:0 0 18px;}\n +fieldset{padding:0;margin:0;border:0;}\n +legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}legend small{font-size:13.5px;color:#999999;}\n +label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px;}\n +input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}\n +label{display:block;margin-bottom:5px;color:#333333;}\n +input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}\n +.uneditable-textarea{width:auto;height:auto;}\n +label input,label textarea,label select{display:block;}\n +input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:0 \\9;}\n +input[type="image"]{border:0;}\n +input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}\n +input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}\n +select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}\n +input[type="file"]{line-height:18px \\9;}\n +select{width:220px;background-color:#ffffff;}\n +select[multiple],select[size]{height:auto;}\n +input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}\n +textarea{height:auto;}\n +input[type="hidden"]{display:none;}\n +.radio,.checkbox{padding-left:18px;}\n +.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}\n +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}\n +.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}\n +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}\n +input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}\n +input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \\9;}\n +input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}\n +.input-mini{width:60px;}\n +.input-small{width:90px;}\n +.input-medium{width:150px;}\n +.input-large{width:210px;}\n +.input-xlarge{width:270px;}\n +.input-xxlarge{width:530px;}\n +input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}\n +input,textarea,.uneditable-input{margin-left:0;}\n +input.span12, textarea.span12, .uneditable-input.span12{width:930px;}\n +input.span11, textarea.span11, .uneditable-input.span11{width:850px;}\n +input.span10, textarea.span10, .uneditable-input.span10{width:770px;}\n +input.span9, textarea.span9, .uneditable-input.span9{width:690px;}\n +input.span8, textarea.span8, .uneditable-input.span8{width:610px;}\n +input.span7, textarea.span7, .uneditable-input.span7{width:530px;}\n +input.span6, textarea.span6, .uneditable-input.span6{width:450px;}\n +input.span5, textarea.span5, .uneditable-input.span5{width:370px;}\n +input.span4, textarea.span4, .uneditable-input.span4{width:290px;}\n +input.span3, textarea.span3, .uneditable-input.span3{width:210px;}\n +input.span2, textarea.span2, .uneditable-input.span2{width:130px;}\n +input.span1, textarea.span1, .uneditable-input.span1{width:50px;}\n +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#eeeeee;border-color:#ddd;cursor:not-allowed;}\n +.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}\n +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}\n +.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}\n +.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}\n +.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}\n +.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}\n +.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}\n +.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}\n +.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}\n +input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}\n +.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#eeeeee;border-top:1px solid #ddd;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";}\n +.form-actions:after{clear:both;}\n +.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}\n +:-moz-placeholder{color:#999999;}\n +::-webkit-input-placeholder{color:#999999;}\n +.help-block,.help-inline{color:#555555;}\n +.help-block{display:block;margin-bottom:9px;}\n +.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}\n +.input-prepend,.input-append{margin-bottom:5px;}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{*margin-left:0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}\n +.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}\n +.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #ffffff;vertical-align:middle;background-color:#eeeeee;border:1px solid #ccc;}\n +.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}\n +.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}\n +.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}\n +.input-append input,.input-append select .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}\n +.input-append .uneditable-input{border-left-color:#eee;border-right-color:#ccc;}\n +.input-append .add-on,.input-append .btn{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}\n +.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n +.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}\n +.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}\n +.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}\n +.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;margin-bottom:0;}\n +.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}\n +.form-search label,.form-inline label{display:inline-block;}\n +.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}\n +.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}\n +.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}\n +.control-group{margin-bottom:9px;}\n +legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}\n +.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}\n +.form-horizontal .control-group:after{clear:both;}\n +.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right;}\n +.form-horizontal .controls{margin-left:160px;*display:inline-block;*margin-left:0;*padding-left:20px;}\n +.form-horizontal .help-block{margin-top:9px;margin-bottom:0;}\n +.form-horizontal .form-actions{padding-left:160px;}\n +table{max-width:100%;border-collapse:collapse;border-spacing:0;background-color:transparent;}\n +.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}\n +.table th{font-weight:bold;}\n +.table thead th{vertical-align:bottom;}\n +.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}\n +.table tbody+tbody{border-top:2px solid #dddddd;}\n +.table-condensed th,.table-condensed td{padding:4px 5px;}\n +.table-bordered{border:1px solid #dddddd;border-left:0;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}\n +.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}\n +.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}\n +.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}\n +.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}\n +.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}\n +.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}\n +.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;}\n +table .span1{float:none;width:44px;margin-left:0;}\n +table .span2{float:none;width:124px;margin-left:0;}\n +table .span3{float:none;width:204px;margin-left:0;}\n +table .span4{float:none;width:284px;margin-left:0;}\n +table .span5{float:none;width:364px;margin-left:0;}\n +table .span6{float:none;width:444px;margin-left:0;}\n +table .span7{float:none;width:524px;margin-left:0;}\n +table .span8{float:none;width:604px;margin-left:0;}\n +table .span9{float:none;width:684px;margin-left:0;}\n +table .span10{float:none;width:764px;margin-left:0;}\n +table .span11{float:none;width:844px;margin-left:0;}\n +table .span12{float:none;width:924px;margin-left:0;}\n +table .span13{float:none;width:1004px;margin-left:0;}\n +table .span14{float:none;width:1084px;margin-left:0;}\n +table .span15{float:none;width:1164px;margin-left:0;}\n +table .span16{float:none;width:1244px;margin-left:0;}\n +table .span17{float:none;width:1324px;margin-left:0;}\n +table .span18{float:none;width:1404px;margin-left:0;}\n +table .span19{float:none;width:1484px;margin-left:0;}\n +table .span20{float:none;width:1564px;margin-left:0;}\n +table .span21{float:none;width:1644px;margin-left:0;}\n +table .span22{float:none;width:1724px;margin-left:0;}\n +table .span23{float:none;width:1804px;margin-left:0;}\n +table .span24{float:none;width:1884px;margin-left:0;}\n +[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0;}\n +.icon-white{background-image:url("../img/glyphicons-halflings-white.png");}\n +.icon-glass{background-position:0 0;}\n +.icon-music{background-position:-24px 0;}\n +.icon-search{background-position:-48px 0;}\n +.icon-envelope{background-position:-72px 0;}\n +.icon-heart{background-position:-96px 0;}\n +.icon-star{background-position:-120px 0;}\n +.icon-star-empty{background-position:-144px 0;}\n +.icon-user{background-position:-168px 0;}\n +.icon-film{background-position:-192px 0;}\n +.icon-th-large{background-position:-216px 0;}\n +.icon-th{background-position:-240px 0;}\n +.icon-th-list{background-position:-264px 0;}\n +.icon-ok{background-position:-288px 0;}\n +.icon-remove{background-position:-312px 0;}\n +.icon-zoom-in{background-position:-336px 0;}\n +.icon-zoom-out{background-position:-360px 0;}\n +.icon-off{background-position:-384px 0;}\n +.icon-signal{background-position:-408px 0;}\n +.icon-cog{background-position:-432px 0;}\n +.icon-trash{background-position:-456px 0;}\n +.icon-home{background-position:0 -24px;}\n +.icon-file{background-position:-24px -24px;}\n +.icon-time{background-position:-48px -24px;}\n +.icon-road{background-position:-72px -24px;}\n +.icon-download-alt{background-position:-96px -24px;}\n +.icon-download{background-position:-120px -24px;}\n +.icon-upload{background-position:-144px -24px;}\n +.icon-inbox{background-position:-168px -24px;}\n +.icon-play-circle{background-position:-192px -24px;}\n +.icon-repeat{background-position:-216px -24px;}\n +.icon-refresh{background-position:-240px -24px;}\n +.icon-list-alt{background-position:-264px -24px;}\n +.icon-lock{background-position:-287px -24px;}\n +.icon-flag{background-position:-312px -24px;}\n +.icon-headphones{background-position:-336px -24px;}\n +.icon-volume-off{background-position:-360px -24px;}\n +.icon-volume-down{background-position:-384px -24px;}\n +.icon-volume-up{background-position:-408px -24px;}\n +.icon-qrcode{background-position:-432px -24px;}\n +.icon-barcode{background-position:-456px -24px;}\n +.icon-tag{background-position:0 -48px;}\n +.icon-tags{background-position:-25px -48px;}\n +.icon-book{background-position:-48px -48px;}\n +.icon-bookmark{background-position:-72px -48px;}\n +.icon-print{background-position:-96px -48px;}\n +.icon-camera{background-position:-120px -48px;}\n +.icon-font{background-position:-144px -48px;}\n +.icon-bold{background-position:-167px -48px;}\n +.icon-italic{background-position:-192px -48px;}\n +.icon-text-height{background-position:-216px -48px;}\n +.icon-text-width{background-position:-240px -48px;}\n +.icon-align-left{background-position:-264px -48px;}\n +.icon-align-center{background-position:-288px -48px;}\n +.icon-align-right{background-position:-312px -48px;}\n +.icon-align-justify{background-position:-336px -48px;}\n +.icon-list{background-position:-360px -48px;}\n +.icon-indent-left{background-position:-384px -48px;}\n +.icon-indent-right{background-position:-408px -48px;}\n +.icon-facetime-video{background-position:-432px -48px;}\n +.icon-picture{background-position:-456px -48px;}\n +.icon-pencil{background-position:0 -72px;}\n +.icon-map-marker{background-position:-24px -72px;}\n +.icon-adjust{background-position:-48px -72px;}\n +.icon-tint{background-position:-72px -72px;}\n +.icon-edit{background-position:-96px -72px;}\n +.icon-share{background-position:-120px -72px;}\n +.icon-check{background-position:-144px -72px;}\n +.icon-move{background-position:-168px -72px;}\n +.icon-step-backward{background-position:-192px -72px;}\n +.icon-fast-backward{background-position:-216px -72px;}\n +.icon-backward{background-position:-240px -72px;}\n +.icon-play{background-position:-264px -72px;}\n +.icon-pause{background-position:-288px -72px;}\n +.icon-stop{background-position:-312px -72px;}\n +.icon-forward{background-position:-336px -72px;}\n +.icon-fast-forward{background-position:-360px -72px;}\n +.icon-step-forward{background-position:-384px -72px;}\n +.icon-eject{background-position:-408px -72px;}\n +.icon-chevron-left{background-position:-432px -72px;}\n +.icon-chevron-right{background-position:-456px -72px;}\n +.icon-plus-sign{background-position:0 -96px;}\n +.icon-minus-sign{background-position:-24px -96px;}\n +.icon-remove-sign{background-position:-48px -96px;}\n +.icon-ok-sign{background-position:-72px -96px;}\n +.icon-question-sign{background-position:-96px -96px;}\n +.icon-info-sign{background-position:-120px -96px;}\n +.icon-screenshot{background-position:-144px -96px;}\n +.icon-remove-circle{background-position:-168px -96px;}\n +.icon-ok-circle{background-position:-192px -96px;}\n +.icon-ban-circle{background-position:-216px -96px;}\n +.icon-arrow-left{background-position:-240px -96px;}\n +.icon-arrow-right{background-position:-264px -96px;}\n +.icon-arrow-up{background-position:-289px -96px;}\n +.icon-arrow-down{background-position:-312px -96px;}\n +.icon-share-alt{background-position:-336px -96px;}\n +.icon-resize-full{background-position:-360px -96px;}\n +.icon-resize-small{background-position:-384px -96px;}\n +.icon-plus{background-position:-408px -96px;}\n +.icon-minus{background-position:-433px -96px;}\n +.icon-asterisk{background-position:-456px -96px;}\n +.icon-exclamation-sign{background-position:0 -120px;}\n +.icon-gift{background-position:-24px -120px;}\n +.icon-leaf{background-position:-48px -120px;}\n +.icon-fire{background-position:-72px -120px;}\n +.icon-eye-open{background-position:-96px -120px;}\n +.icon-eye-close{background-position:-120px -120px;}\n +.icon-warning-sign{background-position:-144px -120px;}\n +.icon-plane{background-position:-168px -120px;}\n +.icon-calendar{background-position:-192px -120px;}\n +.icon-random{background-position:-216px -120px;}\n +.icon-comment{background-position:-240px -120px;}\n +.icon-magnet{background-position:-264px -120px;}\n +.icon-chevron-up{background-position:-288px -120px;}\n +.icon-chevron-down{background-position:-313px -119px;}\n +.icon-retweet{background-position:-336px -120px;}\n +.icon-shopping-cart{background-position:-360px -120px;}\n +.icon-folder-close{background-position:-384px -120px;}\n +.icon-folder-open{background-position:-408px -120px;}\n +.icon-resize-vertical{background-position:-432px -119px;}\n +.icon-resize-horizontal{background-position:-456px -118px;}\n +.dropdown{position:relative;}\n +.dropdown-toggle{*margin-bottom:-3px;}\n +.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}\n +.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"";}\n +.dropdown .caret{margin-top:8px;margin-left:2px;}\n +.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);}\n +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.pull-right{right:0;left:auto;}\n +.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}\n +.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333333;white-space:nowrap;}\n +.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;}\n +.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}\n +.dropdown.open .dropdown-menu{display:block;}\n +.pull-right .dropdown-menu{left:auto;right:0;}\n +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"\\2191";}\n +.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}\n +.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}\n +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}\n +.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}\n +.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}\n +.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}\n +.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;}\n +.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;}\n +.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-ms-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(top, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#ffffff\', endColorstr=\'#e6e6e6\', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #cccccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;}\n +.btn:active,.btn.active{background-color:#cccccc \\9;}\n +.btn:first-child{*margin-left:0;}\n +.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}\n +.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}\n +.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \\9;outline:0;}\n +.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}\n +.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}\n +.btn-large [class^="icon-"]{margin-top:1px;}\n +.btn-small{padding:5px 9px;font-size:11px;line-height:16px;}\n +.btn-small [class^="icon-"]{margin-top:-1px;}\n +.btn-mini{padding:2px 6px;font-size:11px;line-height:14px;}\n +.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}\n +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}\n +.btn-primary{background-color:#0074cc;background-image:-moz-linear-gradient(top, #0088cc, #0055cc);background-image:-ms-linear-gradient(top, #0088cc, #0055cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));background-image:-webkit-linear-gradient(top, #0088cc, #0055cc);background-image:-o-linear-gradient(top, #0088cc, #0055cc);background-image:linear-gradient(top, #0088cc, #0055cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#0088cc\', endColorstr=\'#0055cc\', GradientType=0);border-color:#0055cc #0055cc #003580;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0055cc;}\n +.btn-primary:active,.btn-primary.active{background-color:#004099 \\9;}\n +.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#fbb450\', endColorstr=\'#f89406\', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}\n +.btn-warning:active,.btn-warning.active{background-color:#c67605 \\9;}\n +.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#ee5f5b\', endColorstr=\'#bd362f\', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}\n +.btn-danger:active,.btn-danger.active{background-color:#942a25 \\9;}\n +.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#62c462\', endColorstr=\'#51a351\', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}\n +.btn-success:active,.btn-success.active{background-color:#408140 \\9;}\n +.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#5bc0de\', endColorstr=\'#2f96b4\', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}\n +.btn-info:active,.btn-info.active{background-color:#24748c \\9;}\n +.btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top, #555555, #222222);background-image:-ms-linear-gradient(top, #555555, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));background-image:-webkit-linear-gradient(top, #555555, #222222);background-image:-o-linear-gradient(top, #555555, #222222);background-image:linear-gradient(top, #555555, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#555555\', endColorstr=\'#222222\', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222222;}\n +.btn-inverse:active,.btn-inverse.active{background-color:#080808 \\9;}\n +button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}\n +button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}\n +button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}\n +button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}\n +.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}\n +.btn-group:after{clear:both;}\n +.btn-group:first-child{*margin-left:0;}\n +.btn-group+.btn-group{margin-left:5px;}\n +.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}\n +.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n +.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}\n +.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}\n +.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}\n +.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}\n +.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}\n +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}\n +.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:3px;*padding-bottom:3px;}\n +.btn-group .btn-mini.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:1px;*padding-bottom:1px;}\n +.btn-group .btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px;}\n +.btn-group .btn-large.dropdown-toggle{padding-left:12px;padding-right:12px;}\n +.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}\n +.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}\n +.btn .caret{margin-top:7px;margin-left:0;}\n +.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}\n +.btn-mini .caret{margin-top:5px;}\n +.btn-small .caret{margin-top:6px;}\n +.btn-large .caret{margin-top:6px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}\n +.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}\n +.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;}\n +.alert-heading{color:inherit;}\n +.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;}\n +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}\n +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}\n +.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}\n +.alert-block{padding-top:14px;padding-bottom:14px;}\n +.alert-block>p,.alert-block>ul{margin-bottom:0;}\n +.alert-block p+p{margin-top:5px;}\n +.nav{margin-left:0;margin-bottom:18px;list-style:none;}\n +.nav>li>a{display:block;}\n +.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}\n +.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}\n +.nav li+.nav-header{margin-top:9px;}\n +.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}\n +.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}\n +.nav-list>li>a{padding:3px 15px;}\n +.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}\n +.nav-list [class^="icon-"]{margin-right:2px;}\n +.nav-list .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}\n +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";}\n +.nav-tabs:after,.nav-pills:after{clear:both;}\n +.nav-tabs>li,.nav-pills>li{float:left;}\n +.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}\n +.nav-tabs{border-bottom:1px solid #ddd;}\n +.nav-tabs>li{margin-bottom:-1px;}\n +.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}\n +.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}\n +.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}\n +.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0088cc;}\n +.nav-stacked>li{float:none;}\n +.nav-stacked>li>a{margin-right:0;}\n +.nav-tabs.nav-stacked{border-bottom:0;}\n +.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n +.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}\n +.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}\n +.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}\n +.nav-pills.nav-stacked>li>a{margin-bottom:3px;}\n +.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}\n +.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;}\n +.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}\n +.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}\n +.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580;}\n +.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;border-bottom-color:#333333;}\n +.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;}\n +.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}\n +.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}\n +.tabs-stacked .open>a:hover{border-color:#999999;}\n +.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";}\n +.tabbable:after{clear:both;}\n +.tab-content{display:table;width:100%;}\n +.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;}\n +.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}\n +.tab-content>.active,.pill-content>.active{display:block;}\n +.tabs-below .nav-tabs{border-top:1px solid #ddd;}\n +.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;}\n +.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}\n +.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;}\n +.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;}\n +.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}\n +.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}\n +.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}\n +.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}\n +.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}\n +.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}\n +.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}\n +.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}\n +.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}\n +.navbar{*position:relative;*z-index:2;overflow:visible;margin-bottom:18px;}\n +.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#333333\', endColorstr=\'#222222\', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}\n +.navbar .container{width:auto;}\n +.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#333333\', endColorstr=\'#222222\', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;}\n +.btn-navbar:active,.btn-navbar.active{background-color:#080808 \\9;}\n +.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}\n +.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}\n +.nav-collapse.collapse{height:auto;}\n +.navbar{color:#999999;}.navbar .brand:hover{text-decoration:none;}\n +.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;}\n +.navbar .navbar-text{margin-bottom:0;line-height:40px;}\n +.navbar .btn,.navbar .btn-group{margin-top:5px;}\n +.navbar .btn-group .btn{margin-top:0;}\n +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";}\n +.navbar-form:after{clear:both;}\n +.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}\n +.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0;}\n +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}\n +.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}\n +.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query:-moz-placeholder{color:#cccccc;}\n +.navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}\n +.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}\n +.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}\n +.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}\n +.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}\n +.navbar-fixed-top{top:0;}\n +.navbar-fixed-bottom{bottom:0;}\n +.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}\n +.navbar .nav.pull-right{float:right;}\n +.navbar .nav>li{display:block;float:left;}\n +.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}\n +.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;}\n +.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;}\n +.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;}\n +.navbar .nav.pull-right{margin-left:10px;margin-right:0;}\n +.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:\'\';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}\n +.navbar .dropdown-menu:after{content:\'\';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}\n +.navbar-fixed-bottom .dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}\n +.navbar-fixed-bottom .dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}\n +.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}\n +.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);}\n +.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;}\n +.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;}\n +.navbar .nav.pull-right .dropdown-menu,.navbar .nav .dropdown-menu.pull-right{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before,.navbar .nav .dropdown-menu.pull-right:before{left:auto;right:12px;}\n +.navbar .nav.pull-right .dropdown-menu:after,.navbar .nav .dropdown-menu.pull-right:after{left:auto;right:13px;}\n +.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#ffffff\', endColorstr=\'#f5f5f5\', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}\n +.breadcrumb .divider{padding:0 5px;color:#999999;}\n +.breadcrumb .active a{color:#333333;}\n +.pagination{height:36px;margin:18px 0;}\n +.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}\n +.pagination li{display:inline;}\n +.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;}\n +.pagination a:hover,.pagination .active a{background-color:#f5f5f5;}\n +.pagination .active a{color:#999999;cursor:default;}\n +.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;}\n +.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}\n +.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}\n +.pagination-centered{text-align:center;}\n +.pagination-right{text-align:right;}\n +.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";}\n +.pager:after{clear:both;}\n +.pager li{display:inline;}\n +.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}\n +.pager a:hover{text-decoration:none;background-color:#f5f5f5;}\n +.pager .next a{float:right;}\n +.pager .previous a{float:left;}\n +.pager .disabled a,.pager .disabled a:hover{color:#999999;background-color:#fff;cursor:default;}\n +.modal-open .dropdown-menu{z-index:2050;}\n +.modal-open .dropdown.open{*z-index:2050;}\n +.modal-open .popover{z-index:2060;}\n +.modal-open .tooltip{z-index:2070;}\n +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}\n +.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}\n +.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}\n +.modal.fade.in{top:50%;}\n +.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}\n +.modal-body{overflow-y:auto;max-height:400px;padding:15px;}\n +.modal-form{margin-bottom:0;}\n +.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";}\n +.modal-footer:after{clear:both;}\n +.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}\n +.modal-footer .btn-group .btn+.btn{margin-left:-1px;}\n +.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}\n +.tooltip.top{margin-top:-2px;}\n +.tooltip.right{margin-left:2px;}\n +.tooltip.bottom{margin-top:2px;}\n +.tooltip.left{margin-left:-2px;}\n +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}\n +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}\n +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}\n +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}\n +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}\n +.tooltip-arrow{position:absolute;width:0;height:0;}\n +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;}\n +.popover.right{margin-left:5px;}\n +.popover.bottom{margin-top:5px;}\n +.popover.left{margin-left:-5px;}\n +.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}\n +.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}\n +.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}\n +.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}\n +.popover .arrow{position:absolute;width:0;height:0;}\n +.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}\n +.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}\n +.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;}\n +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";}\n +.thumbnails:after{clear:both;}\n +.thumbnails>li{float:left;margin:0 0 18px 20px;}\n +.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}\n +a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}\n +.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}\n +.thumbnail .caption{padding:9px;}\n +.label{padding:1px 4px 2px;font-size:10.998px;font-weight:bold;line-height:13px;color:#ffffff;vertical-align:middle;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}\n +.label:hover{color:#ffffff;text-decoration:none;}\n +.label-important{background-color:#b94a48;}\n +.label-important:hover{background-color:#953b39;}\n +.label-warning{background-color:#f89406;}\n +.label-warning:hover{background-color:#c67605;}\n +.label-success{background-color:#468847;}\n +.label-success:hover{background-color:#356635;}\n +.label-info{background-color:#3a87ad;}\n +.label-info:hover{background-color:#2d6987;}\n +.label-inverse{background-color:#333333;}\n +.label-inverse:hover{background-color:#1a1a1a;}\n +.badge{padding:1px 9px 2px;font-size:12.025px;font-weight:bold;white-space:nowrap;color:#ffffff;background-color:#999999;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}\n +.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}\n +.badge-error{background-color:#b94a48;}\n +.badge-error:hover{background-color:#953b39;}\n +.badge-warning{background-color:#f89406;}\n +.badge-warning:hover{background-color:#c67605;}\n +.badge-success{background-color:#468847;}\n +.badge-success:hover{background-color:#356635;}\n +.badge-info{background-color:#3a87ad;}\n +.badge-info:hover{background-color:#2d6987;}\n +.badge-inverse{background-color:#333333;}\n +.badge-inverse:hover{background-color:#1a1a1a;}\n +@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f5f5f5\', endColorstr=\'#f9f9f9\', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}\n +.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#149bdf\', endColorstr=\'#0480be\', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}\n +.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}\n +.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}\n +.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#ee5f5b\', endColorstr=\'#c43c35\', GradientType=0);}\n +.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}\n +.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#62c462\', endColorstr=\'#57a957\', GradientType=0);}\n +.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}\n +.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#5bc0de\', endColorstr=\'#339bb9\', GradientType=0);}\n +.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}\n +.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#fbb450\', endColorstr=\'#f89406\', GradientType=0);}\n +.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}\n +.accordion{margin-bottom:18px;}\n +.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}\n +.accordion-heading{border-bottom:0;}\n +.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}\n +.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}\n +.carousel{position:relative;margin-bottom:18px;line-height:1;}\n +.carousel-inner{overflow:hidden;width:100%;position:relative;}\n +.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}\n +.carousel .item>img{display:block;line-height:1;}\n +.carousel .active,.carousel .next,.carousel .prev{display:block;}\n +.carousel .active{left:0;}\n +.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;}\n +.carousel .next{left:100%;}\n +.carousel .prev{left:-100%;}\n +.carousel .next.left,.carousel .prev.right{left:0;}\n +.carousel .active.left{left:-100%;}\n +.carousel .active.right{left:100%;}\n +.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}\n +.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}\n +.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);}\n +.carousel-caption h4,.carousel-caption p{color:#ffffff;}\n +.hero-unit{padding:60px;margin-bottom:30px;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}\n +.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit;}\n +.pull-right{float:right;}\n +.pull-left{float:left;}\n +.hide{display:none;}\n +.show{display:block;}\n +.invisible{visibility:hidden;}\n + + +]]></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/default_style.css.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/default_style.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e7bd64cdefc1dc5f0774c50d46871441c35ac24 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/default_style.css.xml @@ -0,0 +1,593 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54117191.83</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>default_style.css</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/css</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string>div.olMap\n +{\n +\tz-index:0;\n +\tcursor:default;\n +\tmargin:0!important;\n +\tpadding:0!important;\n +}\n +\n +div.olMapViewport\n +{\n +\ttext-align:left;\n +}\n +\n +.olLayerGoogleCopyright\n +{\n +\tleft:2px;\n +\tbottom:2px;\n +}\n +\n +.olLayerGoogleV3.olLayerGoogleCopyright\n +{\n +\tright:auto!important;\n +}\n +\n +.olLayerGooglePoweredBy\n +{\n +\tleft:2px;\n +\tbottom:15px;\n +}\n +\n +.olLayerGoogleV3.olLayerGooglePoweredBy\n +{\n +\tbottom:15px!important;\n +}\n +\n +.olControlAttribution\n +{\n +\tfont-size:smaller;\n +\tright:3px;\n +\tbottom:4.5em;\n +\tposition:absolute;\n +\tdisplay:block;\n +}\n +\n +.olControlScale\n +{\n +\tright:3px;\n +\tbottom:3em;\n +\tdisplay:block;\n +\tposition:absolute;\n +\tfont-size:smaller;\n +}\n +\n +.olControlScaleLine\n +{\n +\tdisplay:block;\n +\tposition:absolute;\n +\tleft:10px;\n +\tbottom:15px;\n +\tfont-size:xx-small;\n +}\n +\n +.olControlScaleLineBottom\n +{\n +\tborder:solid 2px #000;\n +\tborder-bottom:none;\n +\tmargin-top:-2px;\n +\ttext-align:center;\n +}\n +\n +.olControlScaleLineTop\n +{\n +\tborder:solid 2px #000;\n +\tborder-top:none;\n +\ttext-align:center;\n +}\n +\n +.olControlPermalink\n +{\n +\tright:3px;\n +\tbottom:1.5em;\n +\tdisplay:block;\n +\tposition:absolute;\n +\tfont-size:smaller;\n +}\n +\n +div.olControlMousePosition\n +{\n +\tbottom:0;\n +\tright:3px;\n +\tdisplay:block;\n +\tposition:absolute;\n +\tfont-family:Arial;\n +\tfont-size:smaller;\n +}\n +\n +.olControlOverviewMapContainer\n +{\n +\tposition:absolute;\n +\tbottom:0;\n +\tright:0;\n +}\n +\n +.olControlOverviewMapElement\n +{\n +\tbackground-color:#00008B;\n +\t-moz-border-radius:1em 0 0;\n +\tpadding:10px 18px 10px 10px;\n +}\n +\n +.olControlOverviewMapMinimizeButton,.olControlOverviewMapMaximizeButton\n +{\n +\theight:18px;\n +\twidth:18px;\n +\tright:0;\n +\tbottom:80px;\n +\tcursor:pointer;\n +}\n +\n +.olControlOverviewMapExtentRectangle\n +{\n +\toverflow:hidden;\n +\tbackground-image:url(img/blank.gif);\n +\tcursor:move;\n +\tborder:2px dotted red;\n +}\n +\n +.olControlOverviewMapRectReplacement\n +{\n +\toverflow:hidden;\n +\tcursor:move;\n +\tbackground-image:url(img/overview_replacement.gif);\n +\tbackground-repeat:no-repeat;\n +\tbackground-position:center;\n +}\n +\n +.olLayerGeoRSSDescription\n +{\n +\tfloat:left;\n +\twidth:100%;\n +\toverflow:auto;\n +\tfont-size:1em;\n +}\n +\n +.olLayerGeoRSSClose\n +{\n +\tfloat:right;\n +\tcolor:gray;\n +\tfont-size:1.2em;\n +\tmargin-right:6px;\n +\tfont-family:sans-serif;\n +}\n +\n +.olLayerGeoRSSTitle\n +{\n +\tfloat:left;\n +\tfont-size:1.2em;\n +}\n +\n +.olControlNavigationHistory\n +{\n +\tbackground-image:url(img/navigation_history.png);\n +\tbackground-repeat:no-repeat;\n +\twidth:24px;\n +\theight:24px;\n +}\n +\n +.olControlNavigationHistoryPreviousItemActive\n +{\n +\tbackground-position:0 0;\n +}\n +\n +.olControlNavigationHistoryPreviousItemInactive\n +{\n +\tbackground-position:0 -24px;\n +}\n +\n +.olControlNavigationHistoryNextItemActive\n +{\n +\tbackground-position:-24px 0;\n +}\n +\n +.olControlNavigationHistoryNextItemInactive\n +{\n +\tbackground-position:-24px -24px;\n +}\n +\n +div.olControlSaveFeaturesItemActive\n +{\n +\tbackground-image:url(img/save_features_on.png);\n +\tbackground-repeat:no-repeat;\n +\tbackground-position:0 1px;\n +}\n +\n +div.olControlSaveFeaturesItemInactive\n +{\n +\tbackground-image:url(img/save_features_off.png);\n +\tbackground-repeat:no-repeat;\n +\tbackground-position:0 1px;\n +}\n +\n +.olHandlerBoxZoomBox\n +{\n +\tborder:2px solid red;\n +\tposition:absolute;\n +\tbackground-color:#FFF;\n +\topacity:.5;\n +\tfont-size:1px;\n +\tfilter:alpha(opacity=50);\n +}\n +\n +.olHandlerBoxSelectFeature\n +{\n +\tborder:2px solid blue;\n +\tposition:absolute;\n +\tbackground-color:#FFF;\n +\topacity:.5;\n +\tfont-size:1px;\n +\tfilter:alpha(opacity=50);\n +}\n +\n +.olControlPanPanel\n +{\n +\ttop:10px;\n +\tleft:5px;\n +}\n +\n +.olControlPanPanel div\n +{\n +\tbackground-image:url(img/pan-panel.png);\n +\theight:18px;\n +\twidth:18px;\n +\tcursor:pointer;\n +\tposition:absolute;\n +}\n +\n +.olControlPanPanel .olControlPanNorthItemInactive\n +{\n +\ttop:0;\n +\tleft:9px;\n +\tbackground-position:0 0;\n +}\n +\n +.olControlPanPanel .olControlPanSouthItemInactive\n +{\n +\ttop:36px;\n +\tleft:9px;\n +\tbackground-position:18px 0;\n +}\n +\n +.olControlPanPanel .olControlPanWestItemInactive\n +{\n +\tposition:absolute;\n +\ttop:18px;\n +\tleft:0;\n +\tbackground-position:0 18px;\n +}\n +\n +.olControlPanPanel .olControlPanEastItemInactive\n +{\n +\ttop:18px;\n +\tleft:18px;\n +\tbackground-position:18px 18px;\n +}\n +\n +.olControlZoomPanel\n +{\n +\ttop:71px;\n +\tleft:14px;\n +}\n +\n +.olControlZoomPanel div\n +{\n +\tbackground-image:url(img/zoom-panel.png);\n +\tposition:absolute;\n +\theight:18px;\n +\twidth:18px;\n +\tcursor:pointer;\n +}\n +\n +.olControlZoomPanel .olControlZoomInItemInactive\n +{\n +\ttop:0;\n +\tleft:0;\n +\tbackground-position:0 0;\n +}\n +\n +.olControlZoomPanel .olControlZoomToMaxExtentItemInactive\n +{\n +\ttop:18px;\n +\tleft:0;\n +\tbackground-position:0 -18px;\n +}\n +\n +.olControlZoomPanel .olControlZoomOutItemInactive\n +{\n +\ttop:36px;\n +\tleft:0;\n +\tbackground-position:0 18px;\n +}\n +\n +.olControlPanZoomBar div\n +{\n +\tfont-size:1px;\n +}\n +\n +.olPopupCloseBox\n +{\n +\tbackground:url(img/close.gif) no-repeat;\n +\tcursor:pointer;\n +}\n +\n +.olImageLoadError\n +{\n +\tbackground-color:#FFC0CB;\n +\topacity:.5;\n +\tfilter:alpha(opacity=50);\n +}\n +\n +.olCursorWait\n +{\n +\tcursor:wait;\n +}\n +\n +.olDrawBox\n +{\n +\tcursor:crosshair;\n +}\n +\n +.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown\n +{\n +\tcursor:0;\n +}\n +\n +.olControlLayerSwitcher\n +{\n +\tposition:absolute;\n +\ttop:25px;\n +\tright:0;\n +\twidth:20em;\n +\tfont-family:sans-serif;\n +\tfont-weight:700;\n +\tmargin-top:3px;\n +\tmargin-left:3px;\n +\tmargin-bottom:3px;\n +\tfont-size:smaller;\n +\tcolor:#FFF;\n +\tbackground-color:transparent;\n +}\n +\n +.olControlLayerSwitcher .layersDiv\n +{\n +\tbackground-color:#00008B;\n +\tpadding:5px 10px;\n +}\n +\n +.olControlLayerSwitcher .layersDiv .baseLbl,.olControlLayerSwitcher .layersDiv .dataLbl\n +{\n +\tmargin-top:3px;\n +\tmargin-left:3px;\n +\tmargin-bottom:3px;\n +}\n +\n +.olControlLayerSwitcher .layersDiv .baseLayersDiv,.olControlLayerSwitcher .layersDiv .dataLayersDiv\n +{\n +\tpadding-left:10px;\n +}\n +\n +.olControlLayerSwitcher .maximizeDiv,.olControlLayerSwitcher .minimizeDiv\n +{\n +\twidth:18px;\n +\theight:18px;\n +\ttop:5px;\n +\tright:0;\n +\tcursor:pointer;\n +}\n +\n +.olBingAttribution\n +{\n +\tcolor:#DDD;\n +}\n +\n +span.olGoogleAttribution a\n +{\n +\tcolor:#77C;\n +}\n +\n +.olControlNavToolbar,.olControlEditingToolbar\n +{\n +\tmargin:5px 5px 0 0;\n +}\n +\n +.olControlNavToolbar div,.olControlEditingToolbar div\n +{\n +\tbackground-image:url(img/editing_tool_bar.png);\n +\tbackground-repeat:no-repeat;\n +\twidth:24px;\n +\theight:22px;\n +\tcursor:pointer;\n +\tmargin:0 0 5px 5px;\n +}\n +\n +.olControlEditingToolbar\n +{\n +\tright:0;\n +\ttop:0;\n +}\n +\n +.olControlNavToolbar\n +{\n +\ttop:295px;\n +\tleft:9px;\n +}\n +\n +.olControlEditingToolbar div\n +{\n +\tfloat:right;\n +}\n +\n +.olControlNavToolbar .olControlNavigationItemInactive,.olControlEditingToolbar .olControlNavigationItemInactive\n +{\n +\tbackground-position:-103px -1px;\n +}\n +\n +.olControlNavToolbar .olControlNavigationItemActive,.olControlEditingToolbar .olControlNavigationItemActive\n +{\n +\tbackground-position:-103px -24px;\n +}\n +\n +.olControlNavToolbar .olControlZoomBoxItemInactive\n +{\n +\tbackground-position:-128px -1px;\n +}\n +\n +.olControlNavToolbar .olControlZoomBoxItemActive\n +{\n +\tbackground-position:-128px -24px;\n +}\n +\n +.olControlEditingToolbar .olControlDrawFeaturePointItemInactive\n +{\n +\tbackground-position:-77px -1px;\n +}\n +\n +.olControlEditingToolbar .olControlDrawFeaturePointItemActive\n +{\n +\tbackground-position:-77px -24px;\n +}\n +\n +.olControlEditingToolbar .olControlDrawFeaturePathItemInactive\n +{\n +\tbackground-position:-51px -1px;\n +}\n +\n +.olControlEditingToolbar .olControlDrawFeaturePathItemActive\n +{\n +\tbackground-position:-51px -24px;\n +}\n +\n +.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive\n +{\n +\tbackground-position:-26px -1px;\n +}\n +\n +.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive\n +{\n +\tbackground-position:-26px -24px;\n +}\n +\n +div.olControlZoom\n +{\n +\tposition:absolute;\n +\ttop:8px;\n +\tleft:8px;\n +\tbackground:rgba(255,255,255,0.4);\n +\tborder-radius:4px;\n +\tpadding:2px;\n +}\n +\n +div.olControlZoom a\n +{\n +\tdisplay:block;\n +\tcolor:#FFF;\n +\tfont-size:18px;\n +\tfont-family:\'Lucida Grande\', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;\n +\tfont-weight:700;\n +\ttext-decoration:none;\n +\ttext-align:center;\n +\theight:22px;\n +\twidth:22px;\n +\tline-height:19px;\n +\tbackground:rgba(0,60,136,0.5);\n +\tfilter:alpha(opacity=80);\n +\tmargin:1px;\n +\tpadding:0;\n +}\n +\n +div.olControlZoom a:hover\n +{\n +\tbackground:rgba(0,60,136,0.7);\n +\tfilter:alpha(opacity=100);\n +}\n +\n +a.olControlZoomIn\n +{\n +\tborder-radius:4px 4px 0 0;\n +}\n +\n +a.olControlZoomOut\n +{\n +\tborder-radius:0 0 4px 4px;\n +}\n +\n +.olLayerGrid .olTileImage\n +{\n +\t-webkit-transition:opacity .2s linear;\n +\t-moz-transition:opacity .2s linear;\n +\t-o-transition:opacity .2s linear;\n +\ttransition:opacity .2s linear;\n +}\n +\n +div.olLayerDiv,.olControlNoSelect\n +{\n +\t-khtml-user-select:none;\n +\t-moz-user-select:none;\n +}\n +\n +.olPopupContent,.olFramedCloudPopupContent\n +{\n +\toverflow:auto;\n +\tpadding:5px;\n +}\n +\n +.olDragDown,.olControlDragFeatureOver\n +{\n +\tcursor:move;\n +}\n +\n +.olBingAttribution.road,.olGoogleAttribution\n +{\n +\tcolor:#333;\n +}\n +\n +.olGoogleAttribution.hybrid,.olGoogleAttribution.satellite,span.olGoogleAttribution.hybrid a,span.olGoogleAttribution.satellite a\n +{\n +\tcolor:#EEE;\n +}\n +\n +@media only screen and max-width 600px {\n +\tdiv.olControlZoom a:hover\n +\t{\n +\t\tbackground:rgba(0,60,136,0.5);\n +\t}\n +}</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>8334</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>default_style.css</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/style.css.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/style.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..383cc54f1d7ebaf92067f9e3a28295452cd4cdf1 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/css/style.css.xml @@ -0,0 +1,122 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54117202.45</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>style.css</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/css</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string>/**\n +CSS Reset\n +* From Blueprint reset.css\n +* http://blueprintcss.googlecode.com\n +*/\n +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}\n +body {line-height:1.5;}\n +table {border-collapse:separate;border-spacing:0;}\n +caption, th, td {text-align:left;font-weight:normal;}\n +table, td, th {vertical-align:middle;}\n +blockquote:before, blockquote:after, q:before, q:after {content:"";}\n +blockquote, q {quotes:"" "";}\n +a img {border:none;}\n +/**\n +* Basic Typography\n +*/\n +body {\n +font-family: "Lucida Grande", Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;\n +font-size: 80%;\n +color: #222;\n +background: #fff;\n +margin: 1em 1.5em;\n +}\n +pre, code {\n +margin: 1.5em 0;\n +white-space: pre;\n +}\n +pre, code {\n +font: 1em \'andale mono\', \'lucida console\', monospace;\n +line-height:1.5;\n +}\n +a[href] {\n +color: #436976;\n +background-color: transparent;\n +}\n +h1, h2, h3, h4, h5, h6 {\n +color: #003a6b;\n +background-color: transparent;\n +font: 100% \'Lucida Grande\', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;\n +margin: 0;\n +padding-top: 0.5em;\n +}\n +h1 {\n +font-size: 130%;\n +margin-bottom: 0.5em;\n +border-bottom: 1px solid #fcb100;\n +}\n +h2 {\n +font-size: 120%;\n +margin-bottom: 0.5em;\n +border-bottom: 1px solid #aaa;\n +}\n +h3 {\n +font-size: 110%;\n +margin-bottom: 0.5em;\n +text-decoration: underline;\n +}\n +h4 {\n +font-size: 100%;\n +font-weight: bold;\n +}\n +h5 {\n +font-size: 100%;\n +font-weight: bold;\n +}\n +h6 {\n +font-size: 80%;\n +font-weight: bold;\n +}\n +/**\n +* Map Examples Specific\n +*/\n +.smallmap {\n +/*width: 512px;\n +height: 256px;*/\n +width: 800px;\n +height: 500px;\n +border: 1px solid #ccc;\n +}\n +#tags {\n +display: none;\n +}\n +</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>1809</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>style.css</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img.xml new file mode 100644 index 0000000000000000000000000000000000000000..58f1366e6c8fbd221bd78c1131b5f61e3ca3f6ec --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>img</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>img</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/glyphicons-halflings-white.png.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/glyphicons-halflings-white.png.xml new file mode 100644 index 0000000000000000000000000000000000000000..f69dafb418792d7f0dd0d350847acc367fae24be --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/glyphicons-halflings-white.png.xml @@ -0,0 +1,116 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54195087.09</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>glyphicons-halflings-white.png</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>image/png</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAdUAAACFCAMAAAA6npKGAAAAhFBMVEX///////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//9hWbqAAAAAK3RSTlMAzw/vn78vX98frz9/TY9PgG8J9tirS6iiSBseyfN1w5P51e0nkMAqese9 +zI5zvgAAEABJREFUeF7tnYlypDiXha/WBWiy819m3fflvP/7TRhwK8y5SmBwuatqdCoq03GQbwp9 +SCnhG0J+HnVZB8AthsFvMkrBx2yw88Yhu2GUT9FwxbcBCFa+Y3H7sM9KAkiSlgCy4qhShYhg5Waw +yewb7I0osA+asMhX5+XVUQa4WSaHoQgp4kFe2w8AEOicq8gvZMvmFtWvcVjW79rHGytijZdG+5z0 +rYEAAmNPU7UhcGFUVaxK1NV3H4OOcElkdDseravDZgBYXhzXZKaTfOWrTQ7BL4sgTFUY0uaK7rep +WrNrIQ8Yaw3gW+1zyhcDI8Dydo6qW69uJy8V3QIvavTDM8rHoAPSAndfCV+vDi9VT1Q9iVNeUbNv +yG9SxTtVfCpVhrrjZwCY5YXaB6D2abZbglnBGaRzVAMWhWZnrVgVqIJxfduBeD+pXeENq7EeUjWh +apIqSQ7vcon8SP7NvnpdDNVYssiVvH4otU/LD4gruIhBRbqnagFTSgDsvuiv27/NiEAUFkSh6lpU +F6wLVEhVQtVHSMVstok7Pz8XuptftfB21/rq/e/VONgKlbCS64jege9kk8tnqI4BKAvbEF9TFUDO +Uh3WHhyRiapYY6x4gMYLfciYF3sW9pM8yN9IkVfHTYiuWyNwdDClQtWoUvsA1D7NdsuO+L6kGivV +8f9ONY4fjz3gxqWjTbvCXry31nvxoHPXZ2Nx8R/C/iM8yGeqx3213J8tDVR9GoEP2od8HoFX3oGR +6iNwsJZG4EtUPTWkB4zh6ZUXD3gPePF09ipUmYEMeN135I/rdHr82u9Vrj7Pltrtc+ynd5gB6YAq +zZauU33kxVS+yZIB8uQIKzb5xkyDlDHJE+6cb2dsmu2Xfq9y9Xll026fY98gxGVgNQ2k7ZXNdaoO +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 +ttWH7L9emGcAAAAASUVORK5CYII=</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>4352</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>glyphicons-halflings-white.png</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/glyphicons-halflings.png.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/glyphicons-halflings.png.xml new file mode 100644 index 0000000000000000000000000000000000000000..9094dd4e051328bfec152c85022e50def749d7ee --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/glyphicons-halflings.png.xml @@ -0,0 +1,116 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54195073.58</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>glyphicons-halflings.png</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>image/png</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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 +ttWH7L9emGcAAAAASUVORK5CYII=</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>4352</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>glyphicons-halflings.png</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/image_test.jpg.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/image_test.jpg.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6c4ee0feadf30eef67b1b2805c964db809568bb --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/image_test.jpg.xml @@ -0,0 +1,7455 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Image" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55131132.01</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>image_test.jpg</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>image/jpeg</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>height</string> </key> + <value> <int>1200</int> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>415851</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>image_test.jpg</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>1600</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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 +5LC1jv3Xj3U2f9bt2PXzsko8X+59P5+x7VfPx36P+ctn8/8AV69nc6N0XN6nmjp+M41vBP2g6hlY +adtjnhv0vd7WM/PXpvSfqb9W8CkVuxq8iwwX35LRa5x8RuDm1/2F4skrvxb73ceDi9n9L2+L5/8A +W+3+s4P3U4eDh0+b8f8AAfc8v6ofVfMbsswKBPD6m+k7/Pp9Nywj9T8n6v3WZHS3Py8CzW7Gd7rm +Ef4Wkt/n2/v1/wA7/wAYvKUlR5f776vm9j9P3eP2OH+r7vr4v3PabGC/ehw1x+O/D+lxcP6L6bfe +1tZyK3B9QaXy3WQOwH738lLC6h6xLTLSDw4cfP6Lv7K8ySV0+3wG9/0e7ry4+IVXBWt72//Z/+0l +vFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAsHAIAAAIAAhwCeAAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICA4QklNBCUAAAAAABBUDErtxL6BbQRwOsFvXIZeOEJJTQPtAAAAAAAQASwA +AAABAAIBLAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhC +SU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAA +AAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAG +AAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/ +////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP// +//////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0E +CAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAA +AAAAAAAAAAAEsAAABkAAAAAJAEQASQAxADMANAAtADAANAA1AAAAAQAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAAAAAAAAAAZAAAAEsAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAA +AAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3Ag +bG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAEsAAAAABSZ2h0bG9uZwAABkAA +AAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAA +AAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1 +dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09i +amMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABC +dG9tbG9uZwAABLAAAAAAUmdodGxvbmcAAAZAAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQA +AAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElz +SFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGlj +ZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWdu +AAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5v +bmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91 +dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAA +AAAAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAfzgAAAAEAAACgAAAAeAAAAeAAAOEAAAAfsgAY +AAH/2P/gABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQA +DAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwM +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 +eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTEiPgog +ICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5 +bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAg +ICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAg +ICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj +ZVJlZiMiPgogICAgICAgICA8eGFwTU06RG9jdW1lbnRJRD51dWlkOjRFNDUxQUQyRjkwQURDMTFC +NEMxRUM0RjI3OEVCRTQwPC94YXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFu +Y2VJRD51dWlkOjRGNDUxQUQyRjkwQURDMTFCNEMxRUM0RjI3OEVCRTQwPC94YXBNTTpJbnN0YW5j +ZUlEPgogICAgICAgICA8eGFwTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui +PgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD51dWlkOjIyRTFGQjBBRjgwQURDMTFCNEMx +RUM0RjI3OEVCRTQwPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1l +bnRJRD51dWlkOjIxRTFGQjBBRjgwQURDMTFCNEMxRUM0RjI3OEVCRTQwPC9zdFJlZjpkb2N1bWVu +dElEPgogICAgICAgICA8L3hhcE1NOkRlcml2ZWRGcm9tPgogICAgICA8L3JkZjpEZXNjcmlwdGlv +bj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6 +eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHhhcDpDcmVhdGVE +YXRlPjIwMDctMDUtMjZUMDM6NTU6MDMrMDg6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8 +eGFwOk1vZGlmeURhdGU+MjAwNy0wNS0yNlQwMzo1NTowMyswODowMDwveGFwOk1vZGlmeURhdGU+ +CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIwMDctMDUtMjZUMDM6NTU6MDMrMDg6MDA8L3hh +cDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9w +IENTMiBXaW5kb3dzPC94YXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgog +ICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0i +aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0Pmlt +YWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgICAgPGRjOmRlc2NyaXB0aW9uPgogICAgICAgICAg +ICA8cmRmOkFsdD4KICAgICAgICAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij4g +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3Jk +ZjpBbHQ+CiAgICAgICAgIDwvZGM6ZGVzY3JpcHRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9u +PgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpw +aG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8 +cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhv +dG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxl +PgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K +ICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlm +Zj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRh +dGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4zMDAw +MDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4z +MDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9u +VW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q+ +MjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwz +MTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7RUFDNzJDQkYyNjJC +MUVDQzg4Q0IwREUzNDlFRTk5MjY8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNj +cmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg +eG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhp +ZjpQaXhlbFhEaW1lbnNpb24+MTYwMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxl +eGlmOlBpeGVsWURpbWVuc2lvbj4xMjAwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAg +PGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOk5hdGl2 +ZURpZ2VzdD4zNjg2NCw0MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2Miw0MDk2MywzNzUxMCw0 +MDk2NCwzNjg2NywzNjg2OCwzMzQzNCwzMzQzNywzNDg1MCwzNDg1MiwzNDg1NSwzNDg1NiwzNzM3 +NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4Niwz +NzM5Niw0MTQ4Myw0MTQ4NCw0MTQ4Niw0MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5NSw0MTcy +OCw0MTcyOSw0MTczMCw0MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0MTk4OSw0MTk5MCw0MTk5MSw0 +MTk5Miw0MTk5Myw0MTk5NCw0MTk5NSw0MTk5Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAsMTEs +MTIsMTMsMTQsMTUsMTYsMTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMzA7OTgyRUNFNzBB +QUI1NDMyRjlFRkZCOUJCRDYyNzA0M0M8L2V4aWY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpE +ZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAKPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJS +R0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gAB +AAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +EWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIY +AAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQA +AANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJU +UkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAx +OTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIu +MQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA +AAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAk +oAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVD +IGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl +IC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl +IC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2lu +ZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg +Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA +AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAA +AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAF +AAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAA +lQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQEr +ATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoC +AwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMW +AyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEE +fgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn +BjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I +MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqB +CpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN +QA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD +EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT +xRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJ +F64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib +2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBs +IJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgl +lyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC +KzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsx +EjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg +N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+ +YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWa +Rd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpN +k03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC +Vg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxe +vV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fp +aD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx +8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh +fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH +O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 +kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCe +rp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sC +q3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4 +WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XI +xkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU +SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb +42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/y +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</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">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</string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/image_unit_test.jpg.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/image_unit_test.jpg.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c7610240e7d0a08ed3be47d20839ccdc78607af --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/img/image_unit_test.jpg.xml @@ -0,0 +1,1255 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Image" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55758057.71</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>image_unit_test.jpg</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>image/jpeg</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>height</string> </key> + <value> <int>495</int> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>67960</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>image_unit_test.jpg</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>660</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="base64">/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a +HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy +MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHvApQDASIA +AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA +AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 +ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm +p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA +AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx +BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK +U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 +uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwaijN +FWZhRRRgUAGaKG2g/KSR70UAFFFKCVII6igBMZFFOeRnPzHNNoAKKKKACiijNFgClDsqsFJAbqB3 +pvIo5PagBaOtJViF0iGWWNyfUE4oAgop0hU42A+5PemZoAU1LFsRclhn0IqLpRQBba9meERmY+Wv +AU9B9AKrEqW+bP1ptSrbSMMldo9W4FMNERttz8udvvSqpb7q1K8McZw8qsfROf1phBQZVh9M0guN +ZCoyc5P5VI0cKAHzS59EHA/E1EzFjljk0lMBxx2GBTk8s4DcH1NR5OKuW9pCyF5ZTwOFTGT+dINt +wjayMmGDqgHXG4k/TIFOluLZeLa3IH96Vsn8hgU1oVXlYNq9mkam7wq7igfsOOBQToRGSWT5VBwf +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 +PxqEYoGhKKU8HoDRSKP/2Q==</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js.xml new file mode 100644 index 0000000000000000000000000000000000000000..8cf4aa73757402f70095a717bd7954e431857dfe --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>js</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/CanvasImage.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/CanvasImage.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ac7e3b7863a7ee4e30ee948d43e33033584bcba --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/CanvasImage.js.xml @@ -0,0 +1,1072 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54116840.51</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>CanvasImage.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD\n + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the\n + * full text of the license. */\n +\n +\n +/**\n + * @requires OpenLayers/Tile.js\n + */\n +\n +/**\n + * Class: OpenLayers.Tile.CanvasImage\n + * Instances of OpenLayers.Tile.CanvasImage are used to manage the image tiles\n + * used by various layers. Create a new image tile with the\n + * <OpenLayers.Tile.CanvasImage> constructor.\n + *\n + * Inherits from:\n + * - <OpenLayers.Tile>\n + */\n +OpenLayers.Tile.CanvasImage = OpenLayers.Class(OpenLayers.Tile, {\n +\n + /** \n + * Property: url\n + * {String} The URL of the image being requested. No default. Filled in by\n + * layer.getURL() function. \n + */\n + url: null,\n + \n + /** \n + * Property: canvasType\n + * {OpenLayers.Layer.Grid.ONECANVASPERLAYER|\n + * OpenLayers.Layer.Grid.ONECANVASPERTILE} One canvas element per layer or per tile?\n + */ \n + canvasType: null,\n + \n + /**\n + * APIProperty: crossOriginKeyword\n + * The value of the crossorigin keyword to use when loading images. This is\n + * only relevant when using <getCanvasContext> for tiles from remote\n + * origins and should be set to either \'anonymous\' or \'use-credentials\'\n + * for servers that send Access-Control-Allow-Origin headers with their\n + * tiles.\n + */\n + crossOriginKeyword: null,\n + /**\n + * APIProperty: crossOriginKeyword\n + * The value of the crossorigin keyword to use when loading images. This is\n + * only relevant when using <getCanvasContext> for tiles from remote\n + * origins and should be set to either \'anonymous\' or \'use-credentials\'\n + * for servers that send Access-Control-Allow-Origin headers with their\n + * tiles.\n + */\n + crossOriginKeyword: null,\n +\n +\n + /**\n + * Property: frame\n + * {DOMElement} The canvas element is appended to the frame. Any gutter on\n + * the canvas will be hidden behind the frame. \n + */ \n + frame: null,\n + \n + /**\n + * Property: isLoading\n + * {Boolean} Indicates if the tile is currently waiting on a loading image. \n + */ \n + isLoading: false,\n + \n + /** \n + * Property: canvas\n + * {DOMElement} The canvas element on which the image is drawn.\n + */\n + canvas: null,\n + \n + /** \n + * Property: canvasImageData\n + * {ImageData} The ImageData object for the canvas.\n + */\n + canvasImageData: null,\n + \n + /** \n + * Property: lastImage\n + * {Image} The last requested image object. This property is used to make sure\n + * that only the recent image is drawn.\n + */\n + lastImage: null,\n + \n + /** \n + * Property: lastBounds\n + * {<OpenLayers.Bounds>} The bounds of the last requested image, needed for \n + * VirtualCanvasImage.displayImage().\n + */\n + lastBounds: null,\n + \n + /**\n + * Property: isBackBuffer\n + * {Boolean} Is this tile a back buffer tile?\n + */\n + isBackBuffer: false,\n + \n + /**\n + * Property: backBufferTile\n + * {<OpenLayers.Tile>} A clone of the tile used to create transition\n + * effects when the tile is moved or changes resolution.\n + */\n + backBufferTile: null,\n +\n + /**\n + *Property. transforms\n + *JSON file where the transforms are written\n + *\n + */\n + transforms: null,\n +\n + /** \n + *Property partialTile\n + */\n + partialTile: null,\n +\n + /**\n + *Propperty partialId\n + */\n +\n + partialId: null,\n +\n + /**\n + *Property partialAlgorithm\n + */\n + partialAlgorithm: null,\n + \n + \n + /**\n + *Property partialParam1\n + */\n + partialParam1: null,\n +\n + /**\n + *Property partialParam2\n + */\n + partialParam2: null,\n +\n + /**\n + *Property partialNum\n + */\n + partialNum: 0,\n +\n + /** TBD 3.0 - reorder the parameters to the init function to remove \n + * URL. the getUrl() function on the layer gets called on \n + * each draw(), so no need to specify it here.\n + * \n + * Constructor: OpenLayers.Tile.Image\n + * Constructor for a new <OpenLayers.Tile.Image> instance.\n + * \n + * Parameters:\n + * layer - {<OpenLayers.Layer>} layer that the tile will go in.\n + * position - {<OpenLayers.Pixel>}\n + * bounds - {<OpenLayers.Bounds>}\n + * url - {<String>} Deprecated. Remove me in 3.0.\n + * size - {<OpenLayers.Size>}\n + * canvasType - {<OpenLayers.Layer.Grid.ONECANVASPERLAYER|OpenLayers.Layer.Grid.ONECANVASPERTILE>}\n + */ \n + initialize: function(layer, position, bounds, url, size,transforms, canvasType) {\n + OpenLayers.Tile.prototype.initialize.apply(this, arguments);\n + this.url = url; //deprecated remove me\n + this.canvasType = canvasType;\n + this.frame = document.createElement(\'div\'); \n + this.frame.style.overflow = \'hidden\'; \n + this.frame.style.position = \'absolute\'; \n + this.transforms = transforms; \n + this.events.addEventType("reprojectionProgress");\n + this.events.addEventType("filterProgress");\n + },\n +\n + /** \n + * APIMethod: destroy\n + * nullify references to prevent circular references and memory leaks\n + */\n + destroy: function() {\n + if ((this.frame != null) && (this.frame.parentNode == this.layer.div)) {\n + this.layer.div.removeChild(this.frame);\n + }\n + this.frame = null;\n + this.lastImage = null;\n + this.canvas = null;\n + this.canvasContext = null;\n + // clean up the backBufferTile if it exists\n + if (this.backBufferTile) {\n + this.backBufferTile.destroy();\n + this.backBufferTile = null;\n + this.layer.events.unregister("loadend", this, this.hideBackBuffer);\n + } \n + OpenLayers.Tile.prototype.destroy.apply(this, arguments);\n + },\n +\n + /**\n + * Method: clone\n + *\n + * Parameters:\n + * obj - {<OpenLayers.Tile.Image>} The tile to be cloned\n + *\n + * Returns:\n + * {<OpenLayers.Tile.Image>} An exact clone of this <OpenLayers.Tile.Image>\n + */\n + clone: function (obj) {\n + if (obj == null) {\n + obj = new OpenLayers.Tile.CanvasImage(this.layer, \n + this.position, \n + this.bounds, \n + this.url, \n + this.size,\n + this.canvasType); \n + } \n + \n + //pick up properties from superclass\n + obj = OpenLayers.Tile.prototype.clone.apply(this, [obj]);\n + \n + // a new canvas element should be created for the clone\n + obj.canvas = null;\n + \n + return obj;\n + },\n + \n + /**\n + * Method: draw\n + * Check that a tile should be drawn, and draw it. Starts a\n + * transition if the layer requests one.\n + * \n + * Returns:\n + * {Boolean} Always returns true.\n + */\n + draw: function() {\n + if (this.layer != this.layer.map.baseLayer && this.layer.reproject) {\n + this.bounds = this.getBoundsFromBaseLayer(this.position);\n + }\n + var drawTile = OpenLayers.Tile.prototype.draw.apply(this, arguments);\n + \n + if (this.layer.usesTransition()) {\n + this.startTransition(drawTile);\n + }\n + \n + if (!drawTile) {\n + return;\n + }\n + \n + if (this.isLoading) {\n + // if we\'re already loading, send \'reload\' instead of \'loadstart\'.\n + this.events.triggerEvent("reload"); \n + } else {\n + this.isLoading = true;\n + this.events.triggerEvent("loadstart");\n + }\n + return this.renderTile(); \n + },\n + \n + /**\n + * Method: renderTile\n + * Creates the canvas element and sets the URL.\n + * \n + * Returns:\n + * {Boolean} Always returns true.\n + */\n + renderTile: function() {\n + if (this.canvas === null) {\n + this.initCanvas();\n + } \n + \n + if (this.layer.async) {\n + // Asyncronous image requests call the asynchronous getURL method\n + // on the layer to fetch an image that covers \'this.bounds\', in the scope of\n + // \'this\', setting the \'url\' property of the layer itself, and running\n + // the callback \'positionFrame\' when the image request returns.\n + this.layer.getURLasync(this.bounds, this, "url", this.positionImage);\n + } else {\n + // syncronous image requests get the url and position the frame immediately,\n + // and don\'t wait for an image request to come back.\n + \n + // todo: use different image url for retry, see Util.OpenLayers.Util.onImageLoadError\n + \n +// // needed for changing to a different server for onload error\n +// if (this.layer.url instanceof Array) {\n +// this.imgDiv.urls = this.layer.url.slice();\n +// }\n + this.url = this.layer.getURL(this.bounds);\n + \n + // position the frame immediately\n + this.positionImage(); \n + }\n + \n + return true;\n + },\n + \n + /**\n + * Method: initCanvas\n + * Creates the canvas element and appends it to the tile\'s frame.\n + */\n + initCanvas: function() {\n + var offset = this.layer.imageOffset;\n + var size = this.layer.getImageSize(this.bounds);\n +\n + // set the opacity on the tile\'s frame\n + if(this.layer.opacity != null) {\n + OpenLayers.Util.modifyDOMElement(this.frame, null, null, null,\n + null, null, null, \n + this.layer.opacity);\n + }\n + \n + this.canvas = document.createElement("canvas");\n + this.canvasContext = this.canvas.getContext(\'2d\'); \n + this.canvas.width = this.size.w;\n + this.canvas.height = this.size.h;\n + this.frame.appendChild(this.canvas);\n + \n + var id = OpenLayers.Util.createUniqueID("OpenLayersCanvas");\n + OpenLayers.Util.modifyDOMElement(this.canvas, id, offset, size, "relative", null, null, true);\n + \n + this.layer.div.appendChild(this.frame); \n + },\n + \n + /**\n + * Method: positionImage\n + * Sets the position and size of the tile\'s frame and\n + * canvas element.\n + */\n + positionImage: function() {\n + // if the this layer doesn\'t exist at the point the image is\n + // returned, do not attempt to use it for size computation\n + if(this.layer == null) {\n + return;\n + } \n + \n + // position the frame \n + OpenLayers.Util.modifyDOMElement(this.frame, \n + null, this.position, this.size); \n + \n + // and then update the canvas size // todo: yes? \n + var size = this.layer.getImageSize(this.bounds); // difference between this.size and size? \n + OpenLayers.Util.modifyDOMElement(this.canvas, null, null, size); \n + \n + this.createImage();\n + },\n +\n + /**\n + * Method: createImage\n + * Creates the image and starts loading it.\n + */\n + createImage: function() {\n + // first cancel loading the last image\n + if (this.lastImage !== null && !this.lastImage.complete) {\n + // note that this doesn\'t cancel loading for WebKit, see https://bugs.webkit.org/show_bug.cgi?id=35377\n + this.lastImage.src = \'\';\n + }\n + \n + var image = new Image(); \n + this.lastImage = image;\n + this.lastBounds = this.bounds.clone();\n + var context = { \n + image: image,\n + tile: this,\n + viewRequestID: this.layer.map.viewRequestID,\n + data: null,\n + bounds: this.bounds.clone() // todo: do we still need the bounds? guess no\n + //urls: this.layer.url.slice() // todo: for retries?\n + }; \n + \n + var onLoadFunctionProxy = function() {\n + this.tile.onLoadFunction(this); \n + };\n + \n + var onErrorFunctionProxy = function() {\n + this.tile.onErrorFunction(this);\n + };\n + \n + var can = document.createElement("canvas");\n +\n + var process = false;\n + var that = this;\n + \n + //onLoadFunctionProxy;\n + image.onerror = OpenLayers.Function.bind(onErrorFunctionProxy, context);\n + image.crossOrigin = ""; \n + image.src = this.url;\n + this.getId();\n + image.onload = OpenLayers.Function.bind(onLoadFunctionProxy,context);\n + },\n + \n + /**\n + Method: getId\n + * Used to catch the tile-group and tileid from JSON file\n + */\n + \n + getId: function(){\n + aux = this.url.split(\'/\');\n + jpg = aux[7].split(\'.\');\n + this.partialTile = aux[6];\n + this.partialId = jpg[0];\n + },\n +\n + /**\n + * Method: onLoadFunction\n + * Called when an image successfully finished loading. Draws the\n + * image on the canvas.\n + * \n + * Parameters:\n + * context - {<Object>} The context from the onload event.\n + */\n + onLoadFunction: function(context) {\n + if ((this.layer === null) ||\n + (context.viewRequestID !== this.layer.map.viewRequestID) ||\n + (context.image !== this.lastImage)) {\n + return;\n + } \n + var image = context.image;\n + var data = context.data;\n + \n + if (this.layer.projection.getCode() != this.layer.map.getProjection()) {\n + // reproject image\n + var sourceCRS = this.layer.projection;\n + var targetCRS = this.layer.map.projection;\n + var sourceBounds = this.layer.getReprojectedBounds(this.bounds);\n + var targetBounds = this.bounds;\n + var sourceSize = new OpenLayers.Size(image.width, image.height);\n + var targetSize = this.layer.getImageSize(this.bounds);\n + image = this.reproject(image, sourceCRS, sourceBounds, sourceSize, \n + targetCRS, targetBounds, targetSize); \n + } else {\n + this.displayImage(image);\n + }\n + },\n + \n + /**\n + * Method: displayImage\n + * Takes care of resizing the canvas and then draws the \n + * canvas.\n + * \n + * Parameters:\n + * image - {Image/Canvas} The image to display\n + */\n + displayImage: function(image) {\n + if (this.layer.canvasFilter && !image.filtered) {\n + // if a filter is set, apply the filter first and\n + // then use the result\n + this.filter(image);\n + return;\n + } \n + \n + // reset canvas (for transparent tiles)\n + var size = this.layer.getImageSize(this.bounds);\n + this.canvas.width = size.w;\n + this.canvas.height = size.h;\n + \n + // when using a backbuffer, force the original tile on top\n + var bringToTop = (this.backBufferTile !== null);\n + \n + // draw the image on the canvas\n + this.drawImage(image, null, bringToTop);\n + this.canvasImageData = null;\n + \n + if (this.backBufferTile) {\n + this.setBackBuffer(image);\n + } \n + this.isLoading = false; \n + this.events.triggerEvent("loadend"); \n + },\n + \n + /**\n + * Method: drawImage\n + * Draws the image on the canvas and scales the image\n + * if required.\n + * \n + * Parameters:\n + * image - {<Image>} The image to draw\n + * size - {<OpenLayers.Size>} The target size of the image\n + * brintToTop - {<Boolean>} Should the tile\'s frame be forced to be on top?\n + */\n + drawImage: function(image, size, bringToTop) {\n + \n + /* canvas_clean created to avoid canvas "dirty" issue */\n + try{\n + var canvas_clean = document.createElement(\'canvas\'); \n + }catch(ex){\n + console.log("Canvas NOT SUPPORTED");\n + }\n + canvas_clean.width = image.width;\n + canvas_clean.height = image.height;\n + this.canvas.width = image.width;\n + this.canvas.height = image.height;\n + ctx = canvas_clean.getContext("2d"); \n + ctx.drawImage(image,0,0,image.width,image.height);\n + try{ \n + data= ctx.getImageData(0,0,image.width,image.height);\n + }catch(ex){\n + console.log(ex);\n + } \n + /* variable repeat is used to assure that differents algorithms could be \n + applied in the same tile. In the future should be modified.*/\n + var repeat = 0;\n + this.findParams(repeat);\n + x = this.applyAlgorithm(data,image.width,image.height);\n + while(this.partialNum > 0){\n + repeat = 1;\n + this.partialNum = this.partialNum-1;\n + this.findParams(repeat);\n + x = this.applyAlgorithm(x,image.width,image.height);\n + repeat--;\n + }\n + \n + try {\n + if (size !== null) {\n + this.canvasContext.putImageData(x,image.width,image.height);\n + }else {\n + this.canvasContext.putImageData(x, 0, 0);\n + }\n + if (bringToTop) {\n + this.layer.div.removeChild(this.frame);\n + this.layer.div.appendChild(this.frame);\n + }\n + this.display();\n + } \n + catch (exc) {\n + console.log(\'drawImage failed: \' + ((image) ? image.src : image)); // todo\n + this.clear();\n + } \n + },\n +\n + /**\n + * Method: findParams\n + Get the parameters from JSON \n + transform file. \n + */\n + findParams: function(repeat){\n + var length = this.transforms.length;\n + var again = repeat;\n + \n + for(i=0; i<length;i++){\n + if(again == 0){\n + if((this.transforms[i]["tileid"] === this.partialId) && \n + (this.transforms[i]["tilegroup"] === this.partialTile)){\n + this.partialAlgorithm =this.transforms[i]["algorithm"];\n + this.partialParam1 = this.transforms[i]["param1"];\n + this.partialParam2 = this.transforms[i]["param2"];\n + this.partialNum = this.transforms[i]["num"];\n + break;\n + }\n + }else{\n + if((this.transforms[i]["tileid"] === this.partialId) && \n + (this.transforms[i]["tilegroup"] === this.partialTile)){\n + if(this.transforms[i]["num"] === this.partialNum){\n + this.partialAlgorithm =this.transforms[i]["algorithm"];\n + this.partialParam1 = this.transforms[i]["param1"];\n + this.partialParam2 = this.transforms[i]["param2"];\n + break;\n + } \n + }\n + }\n + }\n + }, \n +\n + /**\n + *Method: applyAlgorithm\n + Called to process the data\n + */\n + applyAlgorithm: function(data,width,height){\n + switch(this.partialAlgorithm){\n + case \'sepia\':\n + return sepia(data,width,height);\n + case \'brightness\':\n + return brightness(data,width,height,this.partialParam1,this.partialParam2);\n + case \'noise\':\n + return noise(data,width,height);\n + case \'posterize\':\n + return posterize(data,width,height,this.partialParam1);\n + case \'edge\':\n + return edges(data,width,height);\n + case \'lighten\':\n + return lighten(data,width,height,this.partialParam1);\n + default:\n + return data;\n + } \n + },\n +\n + /**\n + * Method: onErrorFunction\n + * Called when an image finished loading, but not successfully. \n + * \n + * Parameters:\n + * context - {<Object>} The context from the onload event.\n + */ \n + onErrorFunction: function(context) {\n + if (context.image !== this.lastImage) {\n + /* Do not trigger \'loadend\' when a new image was request\n + * for this tile, because then \'reload\' was triggered instead\n + * of \'loadstart\'.\n + * If we would trigger \'loadend\' now, Grid would get confused about\n + * its \'numLoadingTiles\'.\n + */\n + return;\n + }\n + \t\n + // retry? with different url? \n + console.log(this.id + \' onErrorFunction: \' + context.image.src); // todo\n + this.events.triggerEvent("loadend");\n + },\n + \n + /** \n + * Method: clear\n + * Clear the tile of any bounds/position-related data so that it can \n + * be reused in a new location. Called in <OpenLayers.Tile.draw()>.\n + */\n + clear: function() {\n + // to be implemented by subclasses\n + if (this.frame !== null) {\n + this.frame.style.display = \'none\';\n + }\n + },\n + \n + /** \n + * Method: display\n + * Display the tile.\n + */\n + display: function() {\n + // to be implemented by subclasses\n + if (this.frame !== null) {\n + this.frame.style.display = \'\';\n + }\n + },\n + \n + /** \n + * Method: show\n + * Show the tile. Called in <OpenLayers.Tile.showTile()>.\n + */\n + show: function() {},\n + \n + /** \n + * Method: hide\n + * Hide the tile. To be implemented by subclasses (but never called).\n + */\n + hide: function() { },\n + \n + /**\n + * Method: startTransition\n + * Creates a backbuffer tile (if it does not exist already)\n + * and then displays this tile. \n + * \n + * Parameters:\n + * drawTile - {<Boolean>} Should the tile be drawn?\n + */\n + startTransition: function(drawTile) {\n + if (drawTile) {\n + //we use a clone of this tile to create a double buffer for visual\n + //continuity. The backBufferTile is used to create transition\n + //effects while the tile in the grid is repositioned and redrawn\n + if (!this.backBufferTile) {\n + this.createBackBufferTile();\n + }\n + // run any transition effects\n + this.showBackBufferTile();\n + } else {\n + // if we aren\'t going to draw the tile, then the backBuffer should\n + // be hidden too!\n + if (this.backBufferTile) {\n + this.backBufferTile.clear();\n + }\n + } \n + },\n + \n + /**\n + * Method: createBackBufferTile\n + * Create a backbuffer tile from the current tile.\n + */\n + createBackBufferTile: function() {\n + this.backBufferTile = this.clone();\n + \n + this.backBufferTile.clear();\n + this.backBufferTile.isBackBuffer = true;\n + this.backBufferTile.initCanvas();\n + \n + // clear transition back buffer tile only after all tiles in\n + // this layer have loaded to avoid visual glitches\n + this.layer.events.register("loadend", this, this.hideBackBuffer); \n + },\n + \n + /**\n + * Method: setBackBuffer\n + * Stores the loaded image in the backbuffer tile,\n + * so that it can be used for the next request.\n + * \n + * Parameters:\n + * image - {<Image>} The image to use as backbuffer\n + */\n + setBackBuffer: function(image) {\n + if (this.backBufferTile) {\n + // store the image, its position, resolution and bounds\n + this.backBufferTile.lastImage = image;\n + this.backBufferTile.position = this.position;\n + this.backBufferTile.bounds = this.bounds;\n + this.backBufferTile.size = this.size;\n + this.backBufferTile.imageSize = this.layer.getImageSize(this.bounds) || this.size;\n + this.backBufferTile.imageOffset = this.layer.imageOffset;\n + this.backBufferTile.resolution = this.layer.getResolution();\n + } \n + },\n + \n + /**\n + * Method: hideBackBuffer\n + */\n + hideBackBuffer: function() {\n + if (this.backBufferTile) {\n + this.backBufferTile.clear();\n + } \n + },\n + \n + /**\n + * Method: showBackBufferTile\n + * Displays the backbuffer tile. Renders the image of \n + * the last request on the backbuffer canvas, scales the \n + * image to the currrent zoom-level and displays at the canvas \n + * at its new position.\n + */\n + showBackBufferTile: function() {\n + // backBufferTile has to be valid and ready to use\n + if (!this.backBufferTile || !this.backBufferTile.lastImage || \n + (this.backBufferTile.lastImage.src === \'\')) {\n + return;\n + }\n + \n + if (!this.backBufferTile.canvas) {\n + this.backBufferTile.initCanvas();\n + }\n +\n + // calculate the ratio of change between the current resolution of the\n + // backBufferTile and the layer. If several animations happen in a\n + // row, then the backBufferTile will scale itself appropriately for\n + // each request.\n + var ratio = 1;\n + if (this.backBufferTile.resolution) {\n + ratio = this.backBufferTile.resolution / this.layer.getResolution();\n + }\n + \n + // if the resolution is not the same as it was last time (i.e. we are\n + // zooming), then we need to adjust the backBuffer tile\n + if (this.backBufferTile.resolution &&\n + (this.backBufferTile.resolution !== this.layer.getResolution())) {\n + if (this.layer.transitionEffect == \'resize\') {\n + var mapExtent = this.layer.map.getExtent()\n + var withinMapExtent = (mapExtent && this.backBufferTile.bounds.intersectsBounds(mapExtent, false));\n + \n + if (withinMapExtent) {\n + // In this case, we can just immediately resize the \n + // backBufferTile.\n + var size = new OpenLayers.Size(this.backBufferTile.size.w * ratio, this.backBufferTile.size.h * ratio);\n + \n + this.backBufferTile.setFramePosition(size);\n + \n + var imageSize = this.backBufferTile.imageSize;\n + imageSize = new OpenLayers.Size(imageSize.w * ratio, imageSize.h * ratio);\n + var imageOffset = this.backBufferTile.imageOffset;\n + if (imageOffset) {\n + imageOffset = new OpenLayers.Pixel(imageOffset.x * ratio, imageOffset.y * ratio);\n + }\n + \n + if (!this.isTooBigCanvas(imageSize)) {\n + // set canvas size\n + this.backBufferTile.setCanvasSize(imageSize, imageOffset);\n + \n + var ctx = this.backBufferTile.canvasContext;\n + if (ctx.mozImageSmoothingEnabled) {\n + /* For Firefox images will be smoothed when they are drawn scaled. Smoothing \n + * creates a semi-transparent border, which looks like a white line. Since\n + * Firefox 3.6 smoothing can be turned off.\n + */\n + ctx.mozImageSmoothingEnabled = false;\n + }\n + this.backBufferTile.drawImage(this.backBufferTile.lastImage, imageSize, true);\n + }\n + }\n + }\n + } else {\n + // otherwise, if the resolution has not changed (when panning), display\n + // the backbuffer tile at the new position\n + if (this.layer.singleTile) {\n + this.backBufferTile.setFramePosition(this.size);\n + this.backBufferTile.setCanvasSize(this.size, null);\n + this.backBufferTile.drawImage(this.backBufferTile.lastImage, this.size, true);\n + } else {\n + this.backBufferTile.clear();\n + }\n + } \n + },\n + \n + /**\n + * Method: setFramePosition\n + * Sets the frame\'s position and size.\n + * \n + * Parameters:\n + * size - {<OpenLayers.Size>} The target size of the frame\n + */\n + setFramePosition: function(size) {\n + var upperLeft = new OpenLayers.LonLat(this.bounds.left, this.bounds.top);\n + var px = this.layer.map.getLayerPxFromLonLat(upperLeft);\n + OpenLayers.Util.modifyDOMElement(this.frame, null, px, size);\n + },\n + \n + /**\n + * Method: setCanvasSize\n + * Sets the canvas\' size.\n + * \n + * Parameters:\n + * size - {<OpenLayers.Size>} The target size of the canvas element\n + * imageOffset - {<OpenLayers.Pixel>} Offset\n + */\n + setCanvasSize: function(size, imageOffset) {\n + OpenLayers.Util.modifyDOMElement(this.canvas, null, imageOffset, size);\n + this.canvas.width = size.w;\n + this.canvas.height = size.h;\n + },\n + \n + /** \n + * Method: isTooBigCanvas\n + * Used to avoid that the backbuffer canvas gets too big when zooming in very fast.\n + * Otherwise drawing the canvas would take too long and lots of memory would be\n + * required. \n + */\n + isTooBigCanvas: function(size) {\n + return size.w > 5000; \n + },\n +\n + /**\n + * Method: getPixelData\n + * Returns the ARGB values of the pixel at the given position. The\n + * returned object has the attributes \'a\', \'r\', \'g\' and \'b\'.\n + * \n + * Parameters:\n + * x - {int} x coordinate on the canvas \n + * y - {int} y coordinate on the canvas\n + * \n + * Returns:\n + * {Object}\n + */\n + getPixelData: function(x, y) {\n + if (this.cancas === null || \n + x >= this.canvas.width || y >= this.canvas.height) {\n + return null;\n + }\n + if (this.canvasContext !== null) {\n + if (this.canvasImageData === null) {\n + this.canvasImageData = this.canvasContext.getImageData(0, 0, \n + this.canvas.width, this.canvas.height);\n + }\n + return OpenLayers.Tile.CanvasImage.getPixelDataFromImageData(this.canvasImageData, x, y);\n + }\n + return null;\n + },\n +\n + /**\n + * Method: filter\n + * Applies a canvas filter to the image. If \'layer.canvasAsync\'\n + * is set, the filter is applied in a web worker.\n + * \n + * Parameters:\n + * image - {Image}\n + */ \n + filter: function(image) {\n + if (!this.layer.canvasAsync || !this.layer.canvasFilter.supportsAsync()) {\n + // don\'t use a web worker, apply the filter in the main script\n + var filteredImage = this.layer.canvasFilter.process(image);\n + // mark the image as filtered\n + filteredImage.filtered = true;\n + this.displayImage(filteredImage);\n + } else {\n + // apply the filter in a web worker\n + // called when the filter was applied\n + var handlerDone = function(resultCanvas) {\n + if (this.tile.lastImage === this.image) {\n + resultCanvas.filtered = true;\n + this.tile.displayImage(resultCanvas); \n + }\n + }; \n + // called when the web worker reports its progress\n + var handlerProgress = function(progress) {\n + if (this.tile.lastImage !== this.image) {\n + // only report progress, if the tile is not used\n + // for requesting a new image\n + return;\n + }\n + var event = {\n + progress: progress,\n + tile: this.tile\n + };\n + this.tile.events.triggerEvent("filterProgress", event);\n + };\n + \n + // called in case of an error\n + var handlerError = function(error) {\n + this.error = error;\n + this.tile.onErrorFunction(this);\n + };\n + \n + var context = {\n + tile: this,\n + // use lastImage instead of image,\n + // because image may have been reprojected\n + image: this.lastImage \n + };\n + \n + // start the web worker\n + this.layer.canvasFilter.processAsync(\n + image,\n + OpenLayers.Function.bind(handlerDone, context),\n + OpenLayers.Function.bind(handlerProgress, context),\n + OpenLayers.Function.bind(handlerError, context)\n + );\n + } \n + },\n + \n + /**\n + * Method: reproject\n + * Calls gdalwarp-js to reproject the image.\n + * \n + * Parameters:\n + * image - {Image}\n + * sourceCRS - {<OpenLayers.Projection>}\n + * sourceBounds - {<OpenLayers.Bounds>} \n + * sourceSize - {<OpenLayers.Size>} \n + * targetCRS - {<OpenLayers.Projection>} \n + * targetBounds - {<OpenLayers.Bounds>} \n + * targetSize - {<OpenLayers.Size>} \n + * \n + * Returns:\n + * {Canvas}\n + */\n + reproject: function(image, sourceCRS, sourceBounds, sourceSize, \n + targetCRS, targetBounds, targetSize) {\n + \n + var warper = new GDALWarp(image, sourceCRS.proj, sourceBounds, sourceSize, \n + targetCRS.proj, targetBounds, targetSize);\n + \n + if (!this.layer.canvasAsync) {\n + this.displayImage(warper.reproject());\n + } else {\n + var handlerDone = function(resultCanvas) {\n + if (this.tile.lastImage === this.image) {\n + this.tile.displayImage(resultCanvas); \n + }\n + }; \n + \n + var handlerProgress = function(progress) {\n + if (this.tile.lastImage !== this.image) {\n + // only report progress, if the tile has not\n + // requested a new image\n + return;\n + }\n + \n + var event = {\n + progress: progress,\n + tile: this.tile\n + };\n + this.tile.events.triggerEvent("reprojectionProgress", event);\n + };\n + \n + var handlerError = function(error) {\n + this.error = error;\n + this.tile.onErrorFunction(this);\n + };\n + \n + var context = {\n + tile: this,\n + image: image \n + };\n + \n + if (this.layer.proj4JSPath === null || \n + this.layer.gdalwarpWebWorkerPath === null) {\n + OpenLayers.Console.warn("Trying to reproject layer \'" + this.layer.name + "\' but" + \n + "either the path to Proj4JS or to the gdalwarp-js web worker script is not set!"); \n + return; \n + }\n + \n + warper.reprojectAsync(\n + this.layer.proj4JSPath,\n + OpenLayers.Function.bind(handlerDone, context),\n + OpenLayers.Function.bind(handlerProgress, context),\n + OpenLayers.Function.bind(handlerError, context),\n + this.layer.proj4JSDefinitions,\n + this.layer.gdalwarpWebWorkerPath);\n + } \n + },\n + \n + CLASS_NAME: "OpenLayers.Tile.CanvasImage"\n + }\n +);\n +\n +/**\n + * Method: getPixelDataFromImageData\n + * Returns the ARGB values of the pixel at the given position. The\n + * returned object has the attributes \'a\', \'r\', \'g\' and \'b\'.\n + * \n + * Parameters:\n + * imageData - {ImageData} the ImageData object\n + * x - {int} x coordinate on the canvas \n + * y - {int} y coordinate on the canvas\n + * \n + * Returns:\n + * {Object}\n + */\n +OpenLayers.Tile.CanvasImage.getPixelDataFromImageData = function(imageData, x, y) {\n + return {\n + r: OpenLayers.Tile.CanvasImage.getPixelValue(imageData, x, y, 0),\n + g: OpenLayers.Tile.CanvasImage.getPixelValue(imageData, x, y, 1),\n + b: OpenLayers.Tile.CanvasImage.getPixelValue(imageData, x, y, 2),\n + a: OpenLayers.Tile.CanvasImage.getPixelValue(imageData, x, y, 3)\n + }; \n +};\n + \n +/**\n + * Method: getPixelValue\n + * Returns the red, green, blue or alpha value\n + * for the pixel at the given position.\n + * \n + * Parameters:\n + * imageData - {ImageData} the ImageData object\n + * x - {int} x coordinate on the canvas \n + * y - {int} y coordinate on the canvas\n + * argb - 0-3 (0: Red, 1: Green, 2: Blue, 3: Alpha)\n + * \n + * Returns:\n + * {int} 0-255\n + */\n +OpenLayers.Tile.CanvasImage.getPixelValue = function(imageData, x, y, argb) {\n + return imageData.data[((y*(imageData.width*4)) + (x*4)) + argb]; \n +};\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>35775</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>CanvasImage.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/ERP5_OpenLayers.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/ERP5_OpenLayers.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..b8d580492addeea5599e13a0b749aa67754d0b6f --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/ERP5_OpenLayers.js.xml @@ -0,0 +1,523 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54116980.28</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>ERP5_OpenLayers.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +function overwrite(C, o) {\n + if(typeof o.initialize === "function" &&\n + C === C.prototype.initialize) {\n + // OL 2.11\n +\n + var proto = C.prototype;\n + var staticProps = OpenLayers.Util.extend({}, C);\n +\n + C = o.initialize;\n +\n + C.prototype = proto;\n + OpenLayers.Util.extend(C, staticProps);\n + }\n + OpenLayers.Util.extend(C.prototype, o);\n + return C;\n + }\n +\n +\n +OpenLayers.Layer.Grid = overwrite(OpenLayers.Layer.Grid, {\n + \n + tileClass: OpenLayers.Tile.CanvasImage,\n + \n + useCanvas: null,\n +\n + canvas: null,\n +\n + canvasImageData: null,\n +\n + backBufferCanvas: null,\n +\n + lastResolution: null,\n +\n + lastCanvasPosition: null,\n +\n + redrawCanvas: false,\n +\n + /**\n + * APIProperty: canvasFilter\n + * {OpenLayers.Tile.CanvasFilter} Only used for ONECANVASPERLAYER and ONECANVASPERTILE. Can be\n + * used to manipulate the pixel data of an image (for example to adjust the\n + * brightness of a tile).\n + */\n + canvasFilter: null,\n +\n + /**\n + * APIProperty: canvasAsync\n + * {Boolean} If set to true, the canvas filter and the reprojection (for WMS layers)\n + * will be executed in a web worker. Only supported in Chrome 6+.\n + */\n + canvasAsync: false,\n +\n + initialize: function(name, url, params, options) {\n + OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this, \n + arguments);\n + this.grid = [];\n + this.tileQueue = [];\n + if(!this.useCanvas){\n + if (this.removeBackBufferDelay === null) {\n + this.removeBackBufferDelay = this.singleTile ? 0 : 2500;\n + }\n + \n + if (this.className === null) {\n + this.className = this.singleTile ? \'olLayerGridSingleTile\' :\n + \'olLayerGrid\';\n + }\n +\n + if (!OpenLayers.Animation.isNative) {\n + this.deferMoveGriddedTiles = OpenLayers.Function.bind(function() {\n + this.moveGriddedTiles(true);\n + this.moveTimerId = null;\n + }, this);\n + }\n + }else{\n + if (this.usesOneCanvasPerLayer()) {\n + this.canvas = document.createElement("canvas");\n + this.canvas.id = "Canvas_" + this.id;\n + this.canvas.style.top = 0;\n + this.canvas.style.left = 0;\n + this.canvas.style.position = "absolute";\n + this.div.appendChild(this.canvas);\n + }\n + }\n + },\n +\n + moveTo:function(bounds, zoomChanged, dragging) {\n +\n + OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this, arguments);\n +\n + bounds = bounds || this.map.getExtent();\n + \n + if(this.useCanvas){\n + var forceReTile = !this.grid.length || zoomChanged ||\n + (this.usesOneCanvasPerLayer() && !dragging);\n +\n + // total bounds of the tiles\n + var tilesBounds = this.getTilesBounds();\n + }\n +\n + if (bounds != null) {\n + \n + // if grid is empty or zoom has changed, we *must* re-tile\n + if(!this.usesCanvas){ \n + var forceReTile = !this.grid.length || zoomChanged;\n + }else{\n + var forceReTile = !this.grid.length || zoomChanged ||\n + (this.usesOneCanvasPerLayer() && !dragging);\n + }\n + // total bounds of the tiles\n + var tilesBounds = this.getTilesBounds();\n +\n +\n + // total bounds of the tiles\n + var tilesBounds = this.getTilesBounds(); \n +\n + // the new map resolution\n + var resolution = this.map.getResolution();\n +\n + // the server-supported resolution for the new map resolution\n + var serverResolution = this.getServerResolution(resolution);\n +\n + if (this.singleTile) {\n + \n + // We want to redraw whenever even the slightest part of the \n + // current bounds is not contained by our tile.\n + // (thus, we do not specify partial -- its default is false)\n +\n + if ( forceReTile ||\n + (!dragging && !tilesBounds.containsBounds(bounds))) {\n +\n + // In single tile mode with no transition effect, we insert\n + // a non-scaled backbuffer when the layer is moved. But if\n + // a zoom occurs right after a move, i.e. before the new\n + // image is received, we need to remove the backbuffer, or\n + // an ill-positioned image will be visible during the zoom\n + // transition.\n +\n + if(zoomChanged && this.transitionEffect !== \'resize\') {\n + this.removeBackBuffer();\n + }\n +\n + if(!zoomChanged || this.transitionEffect === \'resize\') {\n + this.applyBackBuffer(serverResolution);\n + }\n +\n + this.initSingleTile(bounds);\n + }\n + } else {\n +\n + // if the bounds have changed such that they are not even \n + // *partially* contained by our tiles (e.g. when user has \n + // programmatically panned to the other side of the earth on\n + // zoom level 18), then moveGriddedTiles could potentially have\n + // to run through thousands of cycles, so we want to reTile\n + // instead (thus, partial true). \n + forceReTile = forceReTile ||\n + !tilesBounds.intersectsBounds(bounds, {\n + worldBounds: this.map.baseLayer.wrapDateLine &&\n + this.map.getMaxExtent()\n + });\n +\n + if(resolution !== serverResolution) {\n + bounds = this.map.calculateBounds(null, serverResolution);\n + if(forceReTile) {\n + // stretch the layer div\n + var scale = serverResolution / resolution;\n + this.transformDiv(scale);\n + }\n + } else {\n + // reset the layer width, height, left, top, to deal with\n + // the case where the layer was previously transformed\n + this.div.style.width = \'100%\';\n + this.div.style.height = \'100%\';\n + this.div.style.left = \'0%\';\n + this.div.style.top = \'0%\';\n + }\n +\n + if(forceReTile) {\n + if(zoomChanged && this.transitionEffect === \'resize\') {\n + this.applyBackBuffer(serverResolution);\n + }\n + this.initGriddedTiles(bounds);\n + } else {\n + this.moveGriddedTiles();\n + }\n + }\n + }\n + },\n + \n +\n + /**** Specific functions for Canvas ****/\n +\n + /**\n + * Method: drawCanvasTile\n + * Called when a image finished loading, draws the image\n + * on the canvas element.\n + * \n + * Parameters:\n + * image - {<Image>} The tile to draw\n + * bounds - {<OpenLayers.Bounds>} The bounds of the tile.\n + */\n + drawCanvasTile: function(image, bounds) {\n + if (this.dragging) {\n + return;\n + }\n +\n + // if this is the first tile of a render request, move canvas back to \n + // original position and reset background\n + this.resetCanvas();\n +\n + var upperLeft = new OpenLayers.LonLat(bounds.left, bounds.top);\n + var px = this.getLayerPxFromLonLat(upperLeft);\n +\n + var ctx = this.canvas.getContext(\'2d\');\n + try {\n + ctx.drawImage(image, px.x, px.y);\n + this.canvasImageData = null;\n + } catch (exc) {\n + console.log(\'drawImage failed: \' + image.src); // todo\n + }\n + },\n +\n + /**\n + * Method: resetCanvas\n + * Moves the canvas element back to its original position and \n + * resets the drawing surface.\n + */\n + resetCanvas: function() {\n + if (this.redrawCanvas) {\n + this.redrawCanvas = false;\n +\n + // because the layerContainerDiv has shifted position (for non canvas layers), reposition the canvas.\n + this.canvas.style.left = -parseInt(this.map.layerContainerDiv.style.left) + "px";\n + this.canvas.style.top = -parseInt(this.map.layerContainerDiv.style.top) + "px";\n +\n + // clear canvas by reseting the size\n + // broken in Chrome 6.0.458.1:\n + // http://code.google.com/p/chromium/issues/detail?id=49151\n + this.canvas.width = this.map.viewPortDiv.clientWidth;\n + this.canvas.height = this.map.viewPortDiv.clientHeight;\n +\n + if (this.usesTransition() && this.usesOneCanvasPerLayer()) {\n + // store the current resolution and canvas position for transition\n + this.lastResolution = this.map.getResolution();\n + var canvasPosition = new OpenLayers.Pixel(this.canvas.style.left, this.canvas.style.top);\n + this.lastCanvasPosition = this.map.getLonLatFromLayerPx(canvasPosition);\n + }\n + }\n + },\n +\n + /**\n + * Method: startTransition\n + * Start the transition: create a copy of the \n + * canvas element, scale the copy and then draw the copy \n + * back on the original canvas.\n + * \n + * Parameters:\n + * zoomChanged - {<Boolean>}\n + * dragging - {<Boolean>}\n + */\n + startTransition: function(zoomChanged, dragging) {\n + if (!zoomChanged || dragging ||\n + (this.lastResolution === null) || (this.lastCanvasPosition === null)) {\n + return;\n + }\n +\n + var ratio = this.lastResolution / this.map.getResolution();\n + var px = this.getLayerPxFromLonLat(this.lastCanvasPosition);\n +\n + // create a scaled copy of the canvas\n + if (this.backBufferCanvas == null) {\n + this.backBufferCanvas = document.createElement(\'canvas\');\n + this.backBufferCanvas.style.display = \'none\';\n + }\n +\n + this.backBufferCanvas.width = this.canvas.width * ratio;\n + this.backBufferCanvas.height = this.canvas.height * ratio;\n +\n + var zoomcontext = this.backBufferCanvas.getContext(\'2d\');\n + zoomcontext.scale(ratio, ratio);\n + zoomcontext.drawImage(this.canvas, 0, 0);\n +\n + // and then draw this copy on the original canvas \n + this.resetCanvas();\n +\n + var ctx = this.canvas.getContext(\'2d\');\n + ctx.drawImage(this.backBufferCanvas, px.x, px.y);\n + },\n +\n + /**\n + * Method: getLayerPxFromLonLat\n + * A wrapper for the <OpenLayers.Map.getLayerPxFromLonLat()> method,\n + * which takes into account that the canvas element has a fixed size and \n + * it always moved back to the original position.\n + * \n + * Parameters:\n + * lonlat - {<OpenLayers.LonLat>}\n + *\n + * Returns:\n + * {<OpenLayers.Pixel>} \n + */\n + getLayerPxFromLonLat: function(lonlat) {\n + if (this.usesOneCanvasPerLayer()) {\n + var viewPortPx = this.map.getPixelFromLonLat(lonlat);\n + return viewPortPx;\n + } else {\n + return this.map.getLayerPxFromLonLat(lonlat);\n + }\n + },\n +\n + /**\n + * Method: getLayerPxFromLonLat\n + * A wrapper for the <OpenLayers.Map.getViewPortPxFromLayerPx()> method.\n + * \n + * Parameters:\n + * layerPx - {<OpenLayers.Pixel>}\n + * \n + * Returns:\n + * {<OpenLayers.Pixel>}\n + */\n + getViewPortPxFromLayerPx: function(layerPx) {\n + if (this.usesOneCanvasPerLayer()) {\n + return layerPx;\n + } else {\n + return this.map.getViewPortPxFromLayerPx(layerPx);\n + }\n + },\n +\n + /**\n + * Method: usesTransition\n + * \n + * Returns:\n + * {<Boolean>} True, if the layer uses a supported transition effect.\n + */\n + usesTransition: function() {\n + return true;\n + //return (OpenLayers.Util.indexOf(this.SUPPORTED_TRANSITIONS, this.transitionEffect) != -1);\n + },\n +\n + /**\n + * Method: usesOneCanvasPerLayer\n + * \n + * Returns:\n + * {<Boolean>} True, if the layer renders its tile on a single canvas element.\n + */\n + usesOneCanvasPerLayer: function() {\n + return (this.useCanvas === OpenLayers.Layer.Grid.ONECANVASPERLAYER);\n + },\n +\n + /**\n + * Method: getPixelDataForViewPortPx\n + * Returns the ARGB values of the pixel at the given view-port position. \n + * The returned object has the attributes \'a\', \'r\', \'g\' and \'b\'.\n + * \n + * Parameters:\n + * viewPortPx - {<OpenLayers.Pixel>}\n + * \n + * Returns:\n + * {Object}\n + */\n + getPixelDataForViewPortPx: function(viewPortPx) {\n + if (!this.grid.length || this.grid.length === 0) {\n + return null;\n + }\n + if (this.usesOneCanvasPerLayer()) {\n + // for ONECANVASPERLAYER we can directly use the view-port pixels\n + var x = viewPortPx.x;\n + var y = viewPortPx.y;\n +\n + if (this.cancas === null ||\n + x < 0 || x >= this.canvas.width ||\n + y < 0 || y >= this.canvas.height) {\n + return null;\n + }\n +\n + if (this.canvasImageData === null) {\n + var canvasContext = this.canvas.getContext(\'2d\');\n + this.canvasImageData = canvasContext.getImageData(0, 0,\n + this.canvas.width, this.canvas.height);\n + }\n +\n + return OpenLayers.Tile.CanvasImage.getPixelDataFromImageData(this.canvasImageData, x, y);\n + /* for ONECANVASPERTILE we first have to find out the tile\n + * which contains the view-port pixel\n + */\n +\n + // translate the viewPort coordinates to layer coordinates\n + var layerPx = this.map.getLayerPxFromViewPortPx(viewPortPx);\n +\n + // and then calculate the grid position relative to the layer container\n + var upperLeftTile = this.grid[0][0];\n + var gridPx = new OpenLayers.Pixel(layerPx.x - upperLeftTile.position.x, layerPx.y - upperLeftTile.position.y);\n +\n + // get the tile which covers the pixel\n + var tileX = Math.floor(gridPx.x / this.tileSize.w);\n + var tileY = Math.floor(gridPx.y / this.tileSize.h);\n +\n + if (tileX >= 0 && tileX < this.grid[0].length &&\n + tileY >= 0 &&\n + tileY < this.grid.length) {\n +\n + var tile = this.grid[tileY][tileX];\n +\n + // calculate the position of the pixel on the canvas\n + var canvasX = gridPx.x - (tileX * this.tileSize.w);\n + var canvasY = gridPx.y - (tileY * this.tileSize.h);\n +\n + return tile.getPixelData(canvasX, canvasY);\n + }\n + }\n +\n + return null;\n + },\n +\n +});\n +\n +/**\n + * Constant: NOCANVAS\n + * {Integer} Constant used to mark that a layer should not be rendered\n + * on a canvas element.\n + */\n +OpenLayers.Layer.Grid.NOCANVAS = 1;\n +/**\n + * Constant: ONECANVASPERLAYER\n + * {Integer} Constant used to render the layer on a single canvas element.\n + */\n +OpenLayers.Layer.Grid.ONECANVASPERLAYER = 2;\n +/**\n + * Constant: ONECANVASPERTILE\n + * {Integer} Constant used to render every tile in its own canvas element.\n + */\n +OpenLayers.Layer.Grid.ONECANVASPERTILE = 4;\n +\n +OpenLayers.Layer.Zoomify = overwrite(OpenLayers.Layer.Zoomify,{\n + initialize: function(name, url,transforms, size, options) {\n + // initilize the Zoomify pyramid for given size\n + this.initializeZoomify(size);\n + this.transforms = transforms;\n + OpenLayers.Layer.Grid.prototype.initialize.apply(this, [\n + name, url, size, {}, options\n + ]);\n + },\n +\n + getURL: function (bounds) {\n + bounds = this.adjustBounds(bounds);\n + var res = this.map.getResolution();\n + var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w));\n + var y = Math.round((this.tileOrigin.lat - bounds.top) / (res * this.tileSize.h));\n + var z = this.map.getZoom();\n + var tileIndex = x + y * this.tierSizeInTiles[z].w + this.tileCountUpToTier[z];\n + var path = "TileGroup" + Math.floor( (tileIndex) / 256 ) +\n + "/" + z + "-" + x + "-" + y + "/Base_download";\n + var url = this.url;\n + if (OpenLayers.Util.isArray(url)) {\n + url = this.selectUrl(path, url);\n + }\n + return url + path;\n + },\n +\n +\n + addTile: function(bounds,position) {\n + return new OpenLayers.Tile.CanvasImage(this,position,bounds,null,this.tileSize,this.transforms,OpenLayers.Tile.CanvasImage.ONECANVASPERTILE);\n + }\n +\n +});\n +\n +OpenLayers.Tile = overwrite(OpenLayers.Tile,{\n + clone: function (obj) {\n + if (obj == null) {\n + obj = new OpenLayers.Tile(this.layer,\n + this.position,\n + this.bounds,\n + this.url,\n + this.size);\n + }\n + // catch any randomly tagged-on properties\n + OpenLayers.Util.applyDefaults(obj, this);\n + return obj;\n + }\n +});\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>16835</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>ERP5_OpenLayers.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/base64.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/base64.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..657b86805d14c00a45ebe37da2cb5770e6d87a9d --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/base64.js.xml @@ -0,0 +1,352 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55835294.98</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>base64.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +\r\n + /* /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + charset = shift_jis\r\n +\r\n + +++ Base64 Encode / Decode +++\r\n +\r\n +\r\n + LastModified : 2006-11/08\r\n + \r\n + Powered by kerry\r\n + http://202.248.69.143/~goma/\r\n + \r\n + \x93\xae\x8d\xec\x83u\x83\x89\x83E\x83U :: IE4+ , NN4.06+ , Gecko , Opera6+\r\n +\r\n +\r\n + * [RFC 2045] Multipurpose Internet Mail Extensions\r\n + (MIME) Part One:\r\n + Format of Internet Message Bodies\r\n + ftp://ftp.isi.edu/in-notes/rfc2045.txt\r\n + \r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + \r\n + * Usage:\r\n +\r\n + // \x83G\x83\x93\x83R\x81[\x83h\r\n + b64_string = base64.encode( my_data [, strMode] );\r\n + \r\n + // \x83f\x83R\x81[\x83h\r\n + my_data = base64.decode( b64_string [, strMode] ); \r\n + \r\n + \r\n + strMode -> \x93\xfc\x97\xcd\x83f\x81[\x83^\x82\xaa\x95\xb6\x8e\x9a\x97\xf1\x82\xcc\x8f\xea\x8d\x87 1 \x82\xf0\r\n + \r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */\r\n +\r\n +\r\n +base64 = new function()\r\n +{\r\n + var utfLibName = "utf";\r\n + var b64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";\r\n + var b64encTable = b64char.split("");\r\n + var b64decTable = [];\r\n + for (var i=0; i<b64char.length; i++) b64decTable[b64char.charAt(i)] = i;\r\n +\r\n + this.encode = function(_dat, _strMode)\r\n + {\r\n + return encoder( _strMode? unpackUTF8(_dat): unpackChar(_dat) );\r\n + }\r\n + \r\n + var encoder = function(_ary)\r\n + {\r\n + var md = _ary.length % 3;\r\n + var b64 = "";\r\n + var i, tmp = 0;\r\n + \r\n + if (md) for (i=3-md; i>0; i--) _ary[_ary.length] = 0;\r\n + \r\n + for (i=0; i<_ary.length; i+=3)\r\n + {\r\n + tmp = (_ary[i]<<16) | (_ary[i+1]<<8) | _ary[i+2];\r\n + b64 += b64encTable[ (tmp >>>18) & 0x3f]\r\n + + b64encTable[ (tmp >>>12) & 0x3f]\r\n + + b64encTable[ (tmp >>> 6) & 0x3f]\r\n + + b64encTable[ tmp & 0x3f];\r\n + }\r\n +\r\n + if (md) // 3\x82\xcc\x94{\x90\x94\x82\xc9\x83p\x83f\x83B\x83\x93\x83O\x82\xb5\x82\xbd 0x0 \x95\xaa = \x82\xc9\x92u\x82\xab\x8a\xb7\x82\xa6\r\n + {\r\n + md = 3- md;\r\n + b64 = b64.substr(0, b64.length- md);\r\n + while (md--) b64 += "=";\r\n + }\r\n + \r\n + return b64;\r\n + }\r\n + \r\n + this.decode = function(_b64, _strMode)\r\n + {\r\n + var tmp = decoder( _b64 );\r\n + return _strMode? packUTF8(tmp): packChar(tmp);\r\n + }\r\n + \r\n + var decoder = function(_b64)\r\n + {\r\n + _b64 = _b64.replace(/[^A-Za-z0-9\\+\\/]/g, "");\r\n + var md = _b64.length % 4;\r\n + var j, i, tmp;\r\n + var dat = [];\r\n + \r\n + // replace \x8e\x9e = \x82\xe0\x8d\xed\x82\xc1\x82\xc4\x82\xa2\x82\xe9\x81B\x82\xbb\x82\xcc = \x82\xcc\x91\xe3\x82\xed\x82\xe8\x82\xc9 0x0 \x82\xf0\x95\xe2\x8a\xd4\r\n + if (md) for (i=0; i<4-md; i++) _b64 += "A";\r\n + \r\n + for (j=i=0; i<_b64.length; i+=4, j+=3)\r\n + {\r\n + tmp = (b64decTable[_b64.charAt( i )] <<18)\r\n + | (b64decTable[_b64.charAt(i+1)] <<12)\r\n + | (b64decTable[_b64.charAt(i+2)] << 6)\r\n + | b64decTable[_b64.charAt(i+3)];\r\n + dat[ j ] = tmp >>> 16;\r\n + dat[j+1] = (tmp >>> 8) & 0xff;\r\n + dat[j+2] = tmp & 0xff;\r\n + }\r\n + // \x95\xe2\x8a\xae\x82\xb3\x82\xea\x82\xbd 0x0 \x95\xaa\x8d\xed\x82\xe9\r\n + if (md) dat.length -= [0,0,2,1][md];\r\n +\r\n + return dat;\r\n + }\r\n + \r\n + var packUTF8 = function(_x){ return window[utfLibName].packUTF8(_x) };\r\n + var unpackUTF8 = function(_x){ return window[utfLibName].unpackUTF8(_x) };\r\n + var packChar = function(_x){ return window[utfLibName].packChar(_x) };\r\n + var unpackChar = function(_x){ return window[utfLibName].unpackChar(_x) };\r\n +}\r\n + \r\n +\r\n +\r\n +\r\n +\r\n +\r\n +\r\n +\r\n + /* /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + charset = shift_jis\r\n +\r\n + +++ UTF8/16 \x83\x89\x83C\x83u\x83\x89\x83\x8a +++\r\n +\r\n +\r\n + LastModified : 2006-10/16\r\n + \r\n + Powered by kerry\r\n + http://202.248.69.143/~goma/\r\n + \r\n + \x93\xae\x8d\xec\x83u\x83\x89\x83E\x83U :: IE4+ , NN4.06+ , Gecko , Opera6+\r\n +\r\n +\r\n +\r\n + * [RFC 2279] UTF-8, a transformation format of ISO 10646\r\n + ftp://ftp.isi.edu/in-notes/rfc2279.txt\r\n + \r\n + * [RFC 1738] Uniform Resource Locators (URL)\r\n + ftp://ftp.isi.edu/in-notes/rfc1738.txt\r\n +\r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + \r\n + Usage:\r\n + \r\n + // \x95\xb6\x8e\x9a\x97\xf1\x82\xf0 UTF16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf16code_array = utf.unpackUTF16( my_string );\r\n +\r\n + // \x95\xb6\x8e\x9a\x97\xf1\x82\xf0 UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf8code_array = utf.unpackUTF8( my_string );\r\n + \r\n + // UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xa9\x82\xe7\x95\xb6\x8e\x9a\x97\xf1\x82\xd6\x81B utf.unpackUTF8() \x82\xb5\x82\xbd\x82\xe0\x82\xcc\x82\xf0\x8c\xb3\x82\xc9\x96\xdf\x82\xb7\r\n + my_string = utf.packUTF8( utf8code_array );\r\n +\r\n + // UTF8/16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xf0\x95\xb6\x8e\x9a\x97\xf1\x82\xd6\r\n + my_string = utf.packChar( utfCode_array );\r\n + \r\n + // UTF16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xa9\x82\xe7 UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf8code_array = utf.toUTF8( utf16code_array );\r\n + \r\n + // UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xa9\x82\xe7 UTF16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf16code_array = utf.toUTF16( utf8code_array );\r\n +\r\n +\r\n +\r\n + // URL \x95\xb6\x8e\x9a\x97\xf1\x82\xd6\x83G\x83\x93\x83R\x81[\x83h\r\n + url_string = utf.URLencode( my_string );\r\n +\r\n + // URL \x95\xb6\x8e\x9a\x97\xf1\x82\xa9\x82\xe7\x83f\x83R\x81[\x83h\r\n + my_string = utf.URLdecode( url_string );\r\n +\r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */\r\n +\r\n +\r\n +\r\n +utf = new function()\r\n +{\r\n + this.unpackUTF16 = function(_str)\r\n + {\r\n + var i, utf16=[];\r\n + for (i=0; i<_str.length; i++) utf16[i] = _str.charCodeAt(i);\r\n + return utf16;\r\n + }\r\n + \r\n + this.unpackChar = function(_str) \r\n + {\r\n + var utf16 = this.unpackUTF16(_str);\r\n + var i,n, tmp = [];\r\n + for (n=i=0; i<utf16.length; i++) {\r\n + if (utf16[i]<=0xff) tmp[n++] = utf16[i];\r\n + else {\r\n + tmp[n++] = utf16[i] >> 8;\r\n + tmp[n++] = utf16[i] & 0xff;\r\n + } \r\n + }\r\n + return tmp;\r\n + }\r\n + \r\n + this.packChar =\r\n + this.packUTF16 = function(_utf16)\r\n + {\r\n + var i, str = "";\r\n + for (i in _utf16) str += String.fromCharCode(_utf16[i]);\r\n + return str;\r\n + }\r\n +\r\n + this.unpackUTF8 = function(_str)\r\n + {\r\n + return this.toUTF8( this.unpackUTF16(_str) );\r\n + }\r\n +\r\n + this.packUTF8 = function(_utf8)\r\n + {\r\n + return this.packUTF16( this.toUTF16(_utf8) );\r\n + }\r\n + \r\n + this.toUTF8 = function(_utf16)\r\n + {\r\n + var utf8 = [];\r\n + var idx = 0;\r\n + var i, j, c;\r\n + for (i=0; i<_utf16.length; i++)\r\n + {\r\n + c = _utf16[i];\r\n + if (c <= 0x7f) utf8[idx++] = c;\r\n + else if (c <= 0x7ff)\r\n + {\r\n + utf8[idx++] = 0xc0 | (c >>> 6 );\r\n + utf8[idx++] = 0x80 | (c & 0x3f);\r\n + }\r\n + else if (c <= 0xffff)\r\n + {\r\n + utf8[idx++] = 0xe0 | (c >>> 12 );\r\n + utf8[idx++] = 0x80 | ((c >>> 6 ) & 0x3f);\r\n + utf8[idx++] = 0x80 | (c & 0x3f);\r\n + }\r\n + else\r\n + {\r\n + j = 4;\r\n + while (c >> (6*j)) j++;\r\n + utf8[idx++] = ((0xff00 >>> j) & 0xff) | (c >>> (6*--j) );\r\n + while (j--) \r\n + utf8[idx++] = 0x80 | ((c >>> (6*j)) & 0x3f);\r\n + }\r\n + }\r\n + return utf8;\r\n + }\r\n + \r\n + this.toUTF16 = function(_utf8)\r\n + {\r\n + var utf16 = [];\r\n + var idx = 0;\r\n + var i,s;\r\n + for (i=0; i<_utf8.length; i++, idx++)\r\n + {\r\n + if (_utf8[i] <= 0x7f) utf16[idx] = _utf8[i];\r\n + else \r\n + {\r\n + if ( (_utf8[i]>>5) == 0x6)\r\n + {\r\n + utf16[idx] = ( (_utf8[i] & 0x1f) << 6 )\r\n + | ( _utf8[++i] & 0x3f );\r\n + }\r\n + else if ( (_utf8[i]>>4) == 0xe)\r\n + {\r\n + utf16[idx] = ( (_utf8[i] & 0xf) << 12 )\r\n + | ( (_utf8[++i] & 0x3f) << 6 )\r\n + | ( _utf8[++i] & 0x3f );\r\n + }\r\n + else\r\n + {\r\n + s = 1;\r\n + while (_utf8[i] & (0x20 >>> s) ) s++;\r\n + utf16[idx] = _utf8[i] & (0x1f >>> s);\r\n + while (s-->=0) utf16[idx] = (utf16[idx] << 6) ^ (_utf8[++i] & 0x3f);\r\n + }\r\n + }\r\n + }\r\n + return utf16;\r\n + }\r\n + \r\n + this.URLencode = function(_str)\r\n + {\r\n + return _str.replace(/([^a-zA-Z0-9_\\-\\.])/g, function(_tmp, _c)\r\n + { \r\n + if (_c == "\\x20") return "+";\r\n + var tmp = utf.toUTF8( [_c.charCodeAt(0)] );\r\n + var c = "";\r\n + for (var i in tmp)\r\n + {\r\n + i = tmp[i].toString(16);\r\n + if (i.length == 1) i = "0"+ i;\r\n + c += "%"+ i;\r\n + }\r\n + return c;\r\n + } );\r\n + }\r\n +\r\n + this.URLdecode = function(_dat)\r\n + {\r\n + _dat = _dat.replace(/\\+/g, "\\x20");\r\n + _dat = _dat.replace( /%([a-fA-F0-9][a-fA-F0-9])/g, \r\n + function(_tmp, _hex){ return String.fromCharCode( parseInt(_hex, 16) ) } );\r\n + return this.packChar( this.toUTF16( this.unpackUTF16(_dat) ) );\r\n + }\r\n +}\r\n +\r\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>8895</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>base64.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/blowfish.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/blowfish.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..a5e3f33c1e5d6a4ec84eb28736ebac236ac018c0 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/blowfish.js.xml @@ -0,0 +1,903 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55835256.4</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>blowfish.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +\r\n +\r\n + /* /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + charset= shift_jis\r\n + \r\n + +++ Blowfish \x88\xc3\x8d\x86\x83A\x83\x8b\x83S\x83\x8a\x83Y\x83\x80 +++\r\n +\r\n + http://www.schneier.com/blowfish.html\r\n + \r\n + \r\n + LastModified : 2006-11/01\r\n + \r\n + Powered by kerry\r\n + http://user1.matsumoto.ne.jp/~goma/\r\n + \r\n + \x93\xae\x8d\xec\x83u\x83\x89\x83E\x83U :: IE4+ , NN4.06+ , Gecko , Opera6+\r\n +\r\n + ----------------------------------------------------------------\r\n + \r\n + Usage;\r\n + \r\n + * \x88\xc3\x8d\x86\x89\xbb\r\n + cipherText = blowfish.encrypt( plainText, key [, mode [, iv [, round [, paddingChar]]]] );\r\n +\r\n + * \x95\x9c\x8d\x86\x89\xbb\r\n + plainText = blowfish.decrypt( cipherText, key [, mode [, round [, paddingChar]]] );\r\n +\r\n + * IV \x82\xf0\x93K\x93\x96\x82\xc9\x8d\xec\x82\xe7\x82\xb9\x82\xe9\r\n + IV = blowfish.mkIV();\r\n + \r\n + \r\n + * \x88\xc3\x8d\x86\xa5\x95\x9c\x8d\x86\x8b\xa4\x82\xc9\x98A\x91z\x94z\x97\xf1\x82\xc5\x93n\x82\xb7\x82\xb1\x82\xc6\x82\xe0\x8fo\x97\x88\x82\xe9\r\n + // e.g.\r\n + myHash = {\r\n + // Key : value ( Key \x82\xcd\x8c\xc5\x92\xe8 )\r\n + data : "Hello !!",\r\n + key : "myKey",\r\n + mode : "cbc",\r\n + iv : blowfish.mkIV(),\r\n + round : 16,\r\n + pchar : "\\x05"\r\n + };\r\n + cipherText = blowfish.encrypt( myHash );\r\n +\r\n + \r\n + \r\n + * \x90\xd9\x8d\xec\x82\xcc Base64 \x83\x89\x83C\x83u\x83\x89\x83\x8a\x82\xf0\x8eg\x82\xa4 ( \x95\xca\x93r\x95K\x97v )\r\n +\r\n + - \x88\xc3\x8d\x86\x95\xb6\x82\xf0\x95\x84\x8d\x86\x89\xbb\r\n + cipherText = blowfish.encrypt( \x97\xaa.... );\r\n + cipherText64 = base64.encode( cipherText );\r\n + \r\n + - \x95\x84\x8d\x86\x89\xbb\x82\xb3\x82\xea\x82\xbd\x88\xc3\x8d\x86\x95\xb6\x82\xf0\x95\x9c\x8d\x86\x89\xbb\r\n + cipherText = base64.decode( cipherText64 );\r\n + plainText = blowfish.encrypt( \x97\xaa.... );\r\n +\r\n +\r\n + * \x90\xd9\x8d\xec\x82\xcc URL \x83G\x83\x93\x83R\x81[\x83h/\x83f\x83R\x81[\x83h\x8a\xd6\x90\x94\x82\xf0\x8eg\x82\xa4 ( \x93\xaf\x83X\x83N\x83\x8a\x83v\x83g\x82\xc9\x97L\x82\xe8 )\r\n + \r\n + - \x88\xc3\x8d\x86\x95\xb6\x82\xf0\x95\x84\x8d\x86\x89\xbb\r\n + cipherText = blowfish.encrypt( \x97\xaa.... );\r\n + cipherURLstr = utf.URLencode( cipherText );\r\n + \r\n + - \x95\x84\x8d\x86\x89\xbb\x82\xb3\x82\xea\x82\xbd\x88\xc3\x8d\x86\x95\xb6\x82\xf0\x95\x9c\x8d\x86\x89\xbb\r\n + cipherText = utf.URLdecode( cipherURLstr );\r\n + plainText = blowfish.( \x97\xaa.... );\r\n + \r\n + \r\n + \r\n + plainText -> \x95\xbd\x95\xb6\r\n + cipherText -> \x88\xc3\x8d\x86\x95\xb6\r\n + key -> \x83L\x81[ [ 5 - 56 byte ]\r\n + mode -> ecb | cbc | cfb | ofb \x81B\x8f\xc8\x97\xaa\x8e\x9e\x82\xcd ecb \x83\x82\x81[\x83h\r\n + round -> \x83\x89\x83E\x83\x93\x83h\x90\x94 [ 1 - 16]\r\n + iv -> 8 byte (ecb \x83\x82\x81[\x83h\x82\xc5\x82\xcd\x95s\x97v)\r\n +\r\n + paddingChar -> \x95\xbd\x95\xb6\x82\xf08\x82\xcc\x94{\x90\x94\x82\xc9\x82\xb7\x82\xe9\x82\xbd\x82\xdf\x82\xc9\x8eg\x97p\x82\xb7\x82\xe9\x83L\x83\x83\x83\x89\x83N\x83^\x81B\r\n + ( pchar ) \x8f\xc8\x97\xaa\x8e\x9e\x82\xcd 0x05\x81B\x92\xca\x8f\xed\x82\xcd\x93\xc1\x82\xc9\x8ew\x92\xe8\x82\xb5\x82\xc8\x82\xa2\x82\xaa\x83o\x83C\x83i\x83\x8a\r\n + \x82\xcc\x8d\xdb\x82\xcd\x95K\x97v\x82\xa9\x82\xe0\x82\xb5\x82\xea\x82\xc8\x82\xa2\x81B( \x83f\x81[\x83^\x8d\xc5\x8c\xe3\x82\xcc\x83o\x83C\x83g\x82\xaa\r\n + 0x05 \x82\xc5\x82\xa0\x82\xc1\x82\xbd\x8e\x9e\x81A\x95\x9c\x8d\x86\x89\xbb\x8e\x9e\x83p\x83f\x83B\x83\x93\x83O\x82\xb3\x82\xea\x82\xbd\x95\xb6\x8e\x9a\x82\xf0\r\n + \x8d\xed\x82\xc1\x82\xc4\x95\xd4\x82\xb7\x8d\xdb\x83v\x83\x8d\x83O\x83\x89\x83\x80\x82\xcd\x89\xbd\x83o\x83C\x83g\x8d\xed\x82\xea\x82\xce\x82\xa2\x82\xa2\x82\xa9\x82\xf0\r\n + \x92m\x82\xe7\x82\xc8\x82\xa2\x82\xcc\x82\xc5\x8c\xb3\x82\xcc\x83f\x81[\x83^\x82\xdc\x82\xc5\x8d\xed\x82\xc1\x82\xc4\x82\xb5\x82\xdc\x82\xa4\x81A\x82\xc6\x82\xa2\x82\xa4\x82\xb1\x82\xc6 )\r\n + \r\n + \r\n + * \x83o\x83C\x83i\x83\x8a\x83\x82\x81[\x83h\r\n + \x93\x96\x83\x89\x83C\x83u\x83\x89\x83\x8a\x82\xcd\x83f\x83t\x83H\x83\x8b\x83g\x82\xc5\x95\xb6\x8e\x9a\x97\xf1\x82\xf0\x88\xb5\x82\xa4\x82\xe6\x82\xa4\x82\xc9\x82\xc8\x82\xc1\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81B\r\n + \x83f\x81[\x83^\x82\xaa\x83o\x83C\x83i\x83\x8a\x82\xcc\x8f\xea\x8d\x87\x82\xcd\x8e\x96\x91O\x82\xc9\x83\x82\x81[\x83h\x95\xcf\x8dX\x82\xb5\x82\xc4\x82\xa8\x82\xad\x95K\x97v\x82\xaa\x82\xa0\x82\xe8\x82\xdc\x82\xb7\x81B\r\n + ex)\r\n + blowfish.binMode = 1;\r\n + cipherData = blowfish.encrypt( \x97\xaa.... );\r\n + \r\n + \x8f\xe3\x8bL\x82\xcc\x97l\x82\xc9\x88\xc3\x8d\x86\x81E\x95\x9c\x8d\x86\x91O\x82\xc9 blowfish.binMode \x82\xc9\x90^\x82\xc6\x82\xc8\x82\xe9\x92l\x82\xf0\x91\xe3\x93\xfc\x82\xb7\x82\xe9\x82\xb1\x82\xc6\x82\xc5\r\n + \x83o\x83C\x83i\x83\x8a\x83\x82\x81[\x83h\x82\xc9\x82\xc8\x82\xe8\x82\xdc\x82\xb7\x81B\x95\xb6\x8e\x9a\x97\xf1\x83\x82\x81[\x83h\x82\xc9\x96\xdf\x82\xb7\x82\xc9\x82\xcd\r\n + ex)\r\n + blowfish.binMode = 0;\r\n + \r\n + \x8bU\x82\xc9\x82\xc8\x82\xe9\x92l\x82\xf0\x91\xe3\x93\xfc\x82\xb5\x82\xdc\x82\xb7\x81B\r\n + \r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */\r\n +\r\n +\r\n +\r\n +blowfish = new function()\r\n +{\r\n + var utfLibName = "utf";\r\n + var def_mode = "ecb";\r\n + var def_padChar = "\\x05";\r\n + var def_round = 16;\r\n + var blockLen = 8;\r\n + var keyLen = 56;\r\n + var keyz = [];\r\n + var tmpBlk = [];\r\n + var S = [];\r\n + var P = [];\r\n + var enc = {};\r\n + var dec = {};\r\n + var rTime = def_round;\r\n + var argKeyz = ["data", "key", "mode", "iv", "round", "pchar"];\r\n + var argDKeyz = [argKeyz[0], argKeyz[1], argKeyz[2], argKeyz[4], argKeyz[5]];\r\n + this.binMode = 0;\r\n +\r\n + this.mkIV = function(_len)\r\n + {\r\n + if (!_len || isNaN(_len)) _len = blockLen;\r\n + var iv = "";\r\n + while (_len--) iv += String.fromCharCode( Math.floor(Math.random()* 0xff) );\r\n + return iv;\r\n + }\r\n + \r\n + this.mkKey = function(_len)\r\n + {\r\n + if (!_len || isNaN(_len)) _len = keyLen;\r\n + var k = "";\r\n + while (_len--) k += String.fromCharCode( parseInt(Math.random()* 0x50)+ 0x20 );\r\n + return k;\r\n + }\r\n + \r\n + this.encrypt = function()\r\n + {\r\n + var arg = initArg(arguments, "encrypt", this.binMode);\r\n + keyUpdate(arg.keyz);\r\n + tmpBlk = arg.ivz;\r\n + rTime = checkRound(arg.round);\r\n + var i, edat = "";\r\n + for (i=0; i<arg.datz.length; i+=blockLen) {\r\n + edat += packChar( enc[arg.mode](arg.datz.slice(i, i+ blockLen)) );\r\n + }\r\n + //return arg.iv+ edat;\r\n + return edat;\r\n + }\r\n +\r\n + this.decrypt = function()\r\n + {\r\n + var arg = initArg(arguments, "decrypt");\r\n + keyUpdate(arg.keyz);\r\n + tmpBlk = arg.ivz;\r\n + //console.log("IV encoded:"+base64.encode(tmpBlk));\r\n + rTime = checkRound(arg.round);\r\n + var i, edat = [];\r\n + \r\n + for (i=0; i<arg.datz.length; i+=blockLen) {\r\n + edat = edat.concat( dec[arg.mode](arg.datz.slice(i, i+ blockLen)) );\r\n + }\r\n + // return edat;\r\n + return (this.binMode? packChar(edat): packUTF8(edat)\r\n + ).replace( new RegExp(arg.pchar+"+$"), "");\r\n + }\r\n + \r\n + dec.ecb = function(_blk) \r\n + {\r\n + return round(_blk);\r\n + }\r\n + \r\n + enc.ecb = function(_blk) \r\n + {\r\n + return re_round(_blk);\r\n + }\r\n + \r\n + enc.cbc = function(_blk) \r\n + {\r\n + return tmpBlk = round(xor(_blk, tmpBlk));\r\n + }\r\n + \r\n + dec.cbc = function(_blk) \r\n + {\r\n + var tmp = _blk;\r\n + _blk = xor(re_round(_blk), tmpBlk);\r\n + tmpBlk = tmp;\r\n + return _blk;\r\n + }\r\n + \r\n + enc.cfb = function(_blk) \r\n + {\r\n + return tmpBlk = xor(round(tmpBlk), _blk);\r\n + }\r\n + \r\n + dec.cfb = function(_blk) \r\n + {\r\n + var tmp = xor(round(tmpBlk), _blk);\r\n + tmpBlk = _blk;\r\n + return tmp;\r\n + }\r\n + \r\n + enc.ofb = function(_blk) \r\n + {\r\n + tmpBlk = round(tmpBlk);\r\n + return xor(tmpBlk, _blk);\r\n + }\r\n + \r\n + dec.ofb = function(_blk) \r\n + {\r\n + tmpBlk = round(tmpBlk);\r\n + return xor(tmpBlk, _blk);\r\n + }\r\n +\r\n + var initArg = function(_arg, _encrypt, _bin)\r\n + {\r\n + var val = {};\r\n + var padDatz = 1;\r\n + var padKeyz = 0;\r\n + var i;\r\n + var isStr = new Function("_x", "return typeof(_x) == typeof(\'string\')");\r\n + \r\n + _encrypt = !!(_encrypt && _encrypt.match(/^enc/i) !== null);\r\n + \r\n + var aks = _encrypt? argKeyz: argDKeyz;\r\n + if (typeof(_arg[0]) == typeof(val))\r\n + val = _arg[0];\r\n + else for (i=0; i<_arg.length; i++)\r\n + val[aks[i]] = _arg[i];\r\n + \r\n + \r\n + if (!isStr(val.pchar)) val.pchar = def_padChar;\r\n + var tmpPChar = unpackChar(val.pchar);\r\n + \r\n + \r\n + if (!isStr(val.mode) || val.mode.match(/^(ecb|cbc|ofb|cfb)$/i) === null)\r\n + val.mode = def_mode;\r\n + val.mode = val.mode.toLowerCase();\r\n + \r\n + \r\n + if (!isStr(val.key)) val.key = "\\0";\r\n + val.keyz = unpackChar(val.key);\r\n + if (padKeyz)\r\n + for (i=val.keyz.length; i<keyLen; i++) val.keyz[i] = 0; \r\n + \r\n + \r\n + if (!_encrypt || _bin)\r\n + val.datz = unpackChar(val.data);\r\n + else \r\n + val.datz = unpackUTF8(val.data);\r\n + if (_encrypt && padDatz)\r\n + for (i=val.datz.length%blockLen; i<blockLen; i++)\r\n + val.datz[val.datz.length] = tmpPChar;\r\n + \r\n + if (val.mode == "ecb")\r\n + {\r\n + val.iv = "";\r\n + val.ivz = [];\r\n + }\r\n + else if (_encrypt)\r\n + {\r\n + if (!isStr(val.iv)) val.iv = "";\r\n + val.ivz = unpackChar(val.iv);\r\n + for (i=val.ivz.length; i<blockLen; i++) val.ivz[i] = 0;\r\n + val.ivz.length = blockLen;\r\n + val.iv = packChar(val.ivz);\r\n + }\r\n + else\r\n + {\r\n + //val.ivz = val.datz.slice(0, blockLen);\r\n + //val.datz = val.datz.slice(blockLen);\r\n + /* IV is packed directly because is send explicitly */\r\n + val.ivz = unpackChar(val.iv);\r\n + }\r\n +\r\n + return val;\r\n + }\r\n +\r\n + var xor = function(_a, _b) \r\n + {\r\n + var i, tmp = [];\r\n + for (i=0; i<_a.length; i++)\r\n + tmp[i] = _a[i] ^ _b[i];\r\n + return tmp;\r\n + }\r\n + \r\n + var packUTF8 = function(_x){ return window[utfLibName].packUTF8(_x) };\r\n + var unpackUTF8 = function(_x){ return window[utfLibName].unpackUTF8(_x) };\r\n + var packChar = function(_x){ return window[utfLibName].packChar(_x) };\r\n + var unpackChar = function(_x){ return window[utfLibName].unpackChar(_x) };\r\n + \r\n + var toBigEndian32 = function(_x) \r\n + {\r\n + var i, tmp = [];\r\n + for (i=0; i<_x.length; i+=4)\r\n + tmp[i/4] = (_x[i]<<24) | (_x[i+1]<<16) | (_x[i+2]<< 8) | _x[i+3];\r\n + return tmp;\r\n + }\r\n + \r\n + var fromBigEndian32 = function(_x) \r\n + {\r\n + var i, tmp = [];\r\n + for (i=0; i<_x.length; i++) {\r\n + tmp[i*4 ] = (_x[i]>>>24) & 0xff;\r\n + tmp[i*4+ 1] = (_x[i]>>>16) & 0xff;\r\n + tmp[i*4+ 2] = (_x[i]>>> 8) & 0xff;\r\n + tmp[i*4+ 3] = _x[i] & 0xff;\r\n + }\r\n + return tmp;\r\n + }\r\n +\r\n + var round = function(_blk, _32)\r\n + {\r\n + var xl, xr;\r\n + if (_32) {\r\n + xl = _blk[0];\r\n + xr = _blk[1];\r\n + }\r\n + else {\r\n + xl = toBigEndian32(_blk.slice(0, 4));\r\n + xr = toBigEndian32(_blk.slice( 4));\r\n + }\r\n + var i, tmp;\r\n + for (i=0; i<rTime; i++)\r\n + {\r\n + xl ^= P[i];\r\n + xr ^= f(xl);\r\n + tmp = xl;\r\n + xl = xr;\r\n + xr = tmp;\r\n + }\r\n + tmp = xl;\r\n + xl = xr ^ P[rTime+1];\r\n + xr = tmp ^ P[rTime];\r\n +\r\n + if (_32) return [xl, xr];\r\n + else return fromBigEndian32([xl, xr]);\r\n + }\r\n +\r\n + var re_round = function(_blk)\r\n + {\r\n + var xl = toBigEndian32(_blk.slice(0, 4));\r\n + var xr = toBigEndian32(_blk.slice( 4));\r\n + var i, tmp;\r\n + for (i=rTime+1; i>1; i--)\r\n + {\r\n + xl ^= P[i];\r\n + xr ^= f(xl);\r\n + tmp = xl;\r\n + xl = xr;\r\n + xr = tmp;\r\n + }\r\n + tmp = xl;\r\n + xl = xr ^ P[0];\r\n + xr = tmp ^ P[1];\r\n + return fromBigEndian32([xl, xr]);\r\n + }\r\n +\r\n + var f = function(_x)\r\n + {\r\n + return ((S[0][(_x >>> 24) & 0xff] + S[1][(_x >>> 16) & 0xff])\r\n + ^ S[2][(_x >>> 8) & 0xff]) + S[3][ _x & 0xff ];\r\n + }\r\n +\r\n + var keyUpdate = function(_key)\r\n + {\r\n + var keyLen = _key.length;\r\n + var i, j, tmp;\r\n + var tmpD = [0, 0];\r\n + initVal();\r\n +\r\n + for (j=i=0; i<18 /* p.length */; i++)\r\n + {\r\n + for (tmp=k=0; k<4; k++, j++)\r\n + tmp = (tmp<<8) | _key[j%keyLen]; \r\n + P[i] ^= tmp;\r\n + }\r\n +\r\n + for (i=0; i<18 /* p.length */; i+=2)\r\n + {\r\n + tmpD = round(tmpD, 1);\r\n + P[i] = tmpD[0];\r\n + P[i+1] = tmpD[1];\r\n + }\r\n + \r\n + for (i=0; i<4 /* s.length */; i++) \r\n + for (j=0; j<=0xff /* s[i].length */; j+=2)\r\n + {\r\n + tmpD = round(tmpD, 1);\r\n + S[i][j] = tmpD[0];\r\n + S[i][j+1] = tmpD[1];\r\n + }\r\n + }\r\n + \r\n + var checkRound = function(_r)\r\n + {\r\n + if (!_r || isNaN(_r) || _r>16) _r = def_round;\r\n + return _r;\r\n + }\r\n + \r\n + var initVal = function()\r\n + {\r\n + P = [\r\n + 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\r\n + 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\r\n + 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\r\n + 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\r\n + 0x9216D5D9, 0x8979FB1B\r\n + ];\r\n +\r\n + S = [ \r\n + [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\r\n + 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\r\n + 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\r\n + 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\r\n + 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\r\n + 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\r\n + 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\r\n + 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\r\n + 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\r\n + 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\r\n + 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\r\n + 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\r\n + 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\r\n + 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\r\n + 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\r\n + 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\r\n + 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\r\n + 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\r\n + 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\r\n + 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\r\n + 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\r\n + 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\r\n + 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\r\n + 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\r\n + 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\r\n + 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\r\n + 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\r\n + 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\r\n + 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\r\n + 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\r\n + 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\r\n + 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\r\n + 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\r\n + 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\r\n + 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\r\n + 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\r\n + 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\r\n + 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\r\n + 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\r\n + 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\r\n + 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\r\n + 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\r\n + 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\r\n + 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\r\n + 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\r\n + 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\r\n + 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\r\n + 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\r\n + 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\r\n + 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\r\n + 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\r\n + 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\r\n + 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\r\n + 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\r\n + 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\r\n + 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\r\n + 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\r\n + 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\r\n + 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\r\n + 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\r\n + 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\r\n + 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\r\n + 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\r\n + 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\r\n + [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\r\n + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\r\n + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\r\n + 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\r\n + 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\r\n + 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\r\n + 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\r\n + 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\r\n + 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\r\n + 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\r\n + 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\r\n + 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\r\n + 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\r\n + 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\r\n + 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\r\n + 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\r\n + 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\r\n + 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\r\n + 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\r\n + 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\r\n + 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\r\n + 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\r\n + 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\r\n + 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\r\n + 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\r\n + 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\r\n + 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\r\n + 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\r\n + 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\r\n + 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\r\n + 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\r\n + 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\r\n + 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\r\n + 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\r\n + 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\r\n + 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\r\n + 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\r\n + 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\r\n + 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\r\n + 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\r\n + 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\r\n + 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\r\n + 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\r\n + 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\r\n + 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\r\n + 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\r\n + 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\r\n + 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\r\n + 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\r\n + 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\r\n + 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\r\n + 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\r\n + 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\r\n + 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\r\n + 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\r\n + 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\r\n + 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\r\n + 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\r\n + 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\r\n + 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\r\n + 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\r\n + 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\r\n + 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\r\n + 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\r\n + [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\r\n + 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\r\n + 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\r\n + 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\r\n + 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\r\n + 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\r\n + 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\r\n + 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\r\n + 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\r\n + 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\r\n + 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\r\n + 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\r\n + 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\r\n + 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\r\n + 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\r\n + 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\r\n + 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\r\n + 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\r\n + 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\r\n + 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\r\n + 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\r\n + 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\r\n + 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\r\n + 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\r\n + 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\r\n + 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\r\n + 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\r\n + 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\r\n + 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\r\n + 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\r\n + 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\r\n + 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\r\n + 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\r\n + 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\r\n + 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\r\n + 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\r\n + 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\r\n + 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\r\n + 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\r\n + 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\r\n + 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\r\n + 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\r\n + 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\r\n + 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\r\n + 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\r\n + 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\r\n + 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\r\n + 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\r\n + 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\r\n + 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\r\n + 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\r\n + 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\r\n + 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\r\n + 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\r\n + 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\r\n + 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\r\n + 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\r\n + 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\r\n + 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\r\n + 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\r\n + 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\r\n + 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\r\n + 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\r\n + 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\r\n + [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\r\n + 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\r\n + 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\r\n + 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\r\n + 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\r\n + 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\r\n + 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\r\n + 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\r\n + 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\r\n + 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\r\n + 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\r\n + 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\r\n + 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\r\n + 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\r\n + 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\r\n + 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\r\n + 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\r\n + 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\r\n + 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\r\n + 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\r\n + 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\r\n + 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\r\n + 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\r\n + 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\r\n + 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\r\n + 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\r\n + 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\r\n + 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\r\n + 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\r\n + 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\r\n + 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\r\n + 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\r\n + 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\r\n + 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\r\n + 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\r\n + 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\r\n + 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\r\n + 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\r\n + 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\r\n + 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\r\n + 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\r\n + 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\r\n + 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\r\n + 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\r\n + 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\r\n + 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\r\n + 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\r\n + 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\r\n + 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\r\n + 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\r\n + 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\r\n + 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\r\n + 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\r\n + 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\r\n + 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\r\n + 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\r\n + 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\r\n + 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\r\n + 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\r\n + 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\r\n + 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\r\n + 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\r\n + 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\r\n + 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\r\n + ];\r\n + }\r\n +}\r\n +\r\n +\r\n + /* /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + charset = shift_jis\r\n +\r\n + +++ UTF8/16 \x83\x89\x83C\x83u\x83\x89\x83\x8a +++\r\n +\r\n +\r\n + LastModified : 2006-10/15\r\n + \r\n + Powered by kerry\r\n + http://202.248.69.143/~goma/\r\n + \r\n + \x93\xae\x8d\xec\x83u\x83\x89\x83E\x83U :: IE4+ , NN4.06+ , Gecko , Opera6+\r\n +\r\n +\r\n +\r\n + * [RFC 2279] UTF-8, a transformation format of ISO 10646\r\n + ftp://ftp.isi.edu/in-notes/rfc2279.txt\r\n + \r\n + * [RFC 1738] Uniform Resource Locators (URL)\r\n + ftp://ftp.isi.edu/in-notes/rfc1738.txt\r\n +\r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\r\n + \r\n + Usage:\r\n + \r\n + // \x95\xb6\x8e\x9a\x97\xf1\x82\xf0 UTF16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf16code_array = utf.unpackUTF16( my_string );\r\n +\r\n + // \x95\xb6\x8e\x9a\x97\xf1\x82\xf0 UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf8code_array = utf.unpackUTF8( my_string );\r\n + \r\n + // UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xa9\x82\xe7\x95\xb6\x8e\x9a\x97\xf1\x82\xd6\x81B utf.unpackUTF8() \x82\xb5\x82\xbd\x82\xe0\x82\xcc\x82\xf0\x8c\xb3\x82\xc9\x96\xdf\x82\xb7\r\n + my_string = utf.packUTF8( utf8code_array );\r\n +\r\n + // UTF8/16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xf0\x95\xb6\x8e\x9a\x97\xf1\x82\xd6\r\n + my_string = utf.packChar( utfCode_array );\r\n + \r\n + // UTF16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xa9\x82\xe7 UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf8code_array = utf.toUTF8( utf16code_array );\r\n + \r\n + // UTF8 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xa9\x82\xe7 UTF16 (\x95\xb6\x8e\x9a\x83R\x81[\x83h) \x82\xd6\r\n + utf16code_array = utf.toUTF16( utf8code_array );\r\n +\r\n +\r\n +\r\n + // URL \x95\xb6\x8e\x9a\x97\xf1\x82\xd6\x83G\x83\x93\x83R\x81[\x83h\r\n + url_string = utf.URLencode( my_string );\r\n +\r\n + // URL \x95\xb6\x8e\x9a\x97\xf1\x82\xa9\x82\xe7\x83f\x83R\x81[\x83h\r\n + my_string = utf.URLdecode( url_string );\r\n +\r\n + /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */\r\n +\r\n +\r\n +\r\n +utf = new function()\r\n +{\r\n + this.unpackUTF16 = function(_str)\r\n + {\r\n + var i, utf16=[];\r\n + for (i=0; i<_str.length; i++) utf16[i] = _str.charCodeAt(i);\r\n + return utf16;\r\n + }\r\n + \r\n + this.unpackChar = function(_str) \r\n + {\r\n + var utf16 = this.unpackUTF16(_str);\r\n + var i,n, tmp = [];\r\n + for (n=i=0; i<utf16.length; i++) {\r\n + if (utf16[i]<=0xff) tmp[n++] = utf16[i];\r\n + else {\r\n + tmp[n++] = utf16[i] >>> 8;\r\n + tmp[n++] = utf16[i] & 0xff;\r\n + } \r\n + }\r\n + return tmp;\r\n + }\r\n + \r\n + this.packChar =\r\n + this.packUTF16 = function(_utf16)\r\n + {\r\n + var i, str = "";\r\n + for (i in _utf16) str += String.fromCharCode(_utf16[i]);\r\n + return str;\r\n + }\r\n +\r\n + this.unpackUTF8 = function(_str)\r\n + {\r\n + return this.toUTF8( this.unpackUTF16(_str) );\r\n + }\r\n +\r\n + this.packUTF8 = function(_utf8)\r\n + {\r\n + return this.packUTF16( this.toUTF16(_utf8) );\r\n + }\r\n + \r\n + this.toUTF8 = function(_utf16)\r\n + {\r\n + var utf8 = [];\r\n + var idx = 0;\r\n + var i, j, c;\r\n + for (i=0; i<_utf16.length; i++)\r\n + {\r\n + c = _utf16[i];\r\n + if (c <= 0x7f) utf8[idx++] = c;\r\n + else if (c <= 0x7ff)\r\n + {\r\n + utf8[idx++] = 0xc0 | (c >>> 6 );\r\n + utf8[idx++] = 0x80 | (c & 0x3f);\r\n + }\r\n + else if (c <= 0xffff)\r\n + {\r\n + utf8[idx++] = 0xe0 | (c >>> 12 );\r\n + utf8[idx++] = 0x80 | ((c >>> 6 ) & 0x3f);\r\n + utf8[idx++] = 0x80 | (c & 0x3f);\r\n + }\r\n + else\r\n + {\r\n + j = 4;\r\n + while (c >> (6*j)) j++;\r\n + utf8[idx++] = ((0xff00 >>> j) & 0xff) | (c >>> (6*--j) );\r\n + while (j--) \r\n + utf8[idx++] = 0x80 | ((c >>> (6*j)) & 0x3f);\r\n + }\r\n + }\r\n + return utf8;\r\n + }\r\n + \r\n + this.toUTF16 = function(_utf8)\r\n + {\r\n + var utf16 = [];\r\n + var idx = 0;\r\n + var i,s;\r\n + for (i=0; i<_utf8.length; i++, idx++)\r\n + {\r\n + if (_utf8[i] <= 0x7f) utf16[idx] = _utf8[i];\r\n + else \r\n + {\r\n + if ( (_utf8[i]>>5) == 0x6)\r\n + {\r\n + utf16[idx] = ( (_utf8[i] & 0x1f) << 6 )\r\n + | ( _utf8[++i] & 0x3f );\r\n + }\r\n + else if ( (_utf8[i]>>4) == 0xe)\r\n + {\r\n + utf16[idx] = ( (_utf8[i] & 0xf) << 12 )\r\n + | ( (_utf8[++i] & 0x3f) << 6 )\r\n + | ( _utf8[++i] & 0x3f );\r\n + }\r\n + else\r\n + {\r\n + s = 1;\r\n + while (_utf8[i] & (0x20 >>> s) ) s++;\r\n + utf16[idx] = _utf8[i] & (0x1f >>> s);\r\n + while (s-->=0) utf16[idx] = (utf16[idx] << 6) ^ (_utf8[++i] & 0x3f);\r\n + }\r\n + }\r\n + }\r\n + return utf16;\r\n + }\r\n + \r\n + this.URLencode = function(_str)\r\n + {\r\n + return _str.replace(/([^a-zA-Z_\\-\\.])/g, function(_tmp, _c)\r\n + { \r\n + if (_c == "\\x20") return "+";\r\n + var tmp = utf.toUTF8( [_c.charCodeAt(0)] );\r\n + var c = "";\r\n + for (var i in tmp)\r\n + {\r\n + i = tmp[i].toString(16);\r\n + if (i.length == 1) i = "0"+ i;\r\n + c += "%"+ i;\r\n + }\r\n + return c;\r\n + } );\r\n + }\r\n +\r\n + this.URLdecode = function(_dat)\r\n + {\r\n + _dat = _dat.replace(/\\+/g, "\\x20");\r\n + _dat = _dat.replace( /%([a-fA-F0-9][a-fA-F0-9])/g, \r\n + function(_tmp, _hex){ return String.fromCharCode( parseInt(_hex, 16) ) } );\r\n + return this.packChar( this.toUTF16( this.unpackUTF16(_dat) ) );\r\n + }\r\n +}\r\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>32702</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>blowfish.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/form.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/form.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..914b4478130c2da2f27796af9e5e641f3125c4aa --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/form.js.xml @@ -0,0 +1,148 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts56103844.31</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>form.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/**\n + * NEXEDI\n + */\n +(function($) {\n + \n + $.getJSON(\n + \'http://\'+window.location.host+\'/erp5/ERP5Site_getTileImageTransformMetadataList\', \n + function(data){\n + for (var i = 0; i < data["image_list"].length; i ++ ) {\n + \n +\t\tvar aux1= "<li><a href=#image/";\n +\t\tvar aux2= "><i class=icon-star></i>";\n +\t\tvar aux3= "</a></li>";\n + $(\'.nav-header\').append(aux1+data["image_list"][i]["id"]+aux2+data["image_list"][i]["title"]+aux3) \n + \t \n + };\n + });\n +\n + var routes = {\n + "/image/:id" : "displayData",\n + "image/:id" : "displayData",\n + }\n +\n + var router = function(e, d){\n + var $this = $(this);\n + $.each(routes, function(pattern, callback){\n + pattern = pattern.replace(/:\\w+/g, \'([^\\/]+)\');\n + var regex = new RegExp(\'^\' + pattern + \'$\');\n + var result = regex.exec(d);\n + if (result) {\n + result.shift();\n + methods[callback].apply($this, result);\n + }\n + });\n + }\n +\n + var methods = {\n + init: function() {\n + // Initialize in this context\n + var $this = $(this);\n + // Bind to urlChange event\n + return this.each(function(){\n + $.subscribe("urlChange", function(e, d){\n + router.call($this, e, d);\n + });\n + });\n + },\n +\n + displayData: function(id){\n + var zoomify_url, zoomify_width, zoomify_height = null;\n + zoomify_url = "http://"+window.location.host+"/erp5/image_module/" + id + "/";\n + //XXX look at the xml definition inside image folder\n + var zoomify_data = $.getJSON(\n +\t\t\t\t"http://"+window.location.host+"/erp5/image_module/" + id + "/TileImage_getMetadataAsJSON",\n +\t\t\t\tfunction(data){\n +\t\t\t\t\twidth=data["sizes"][0]["width"];\n +\t\t\t\t\theight=data["sizes"][0]["height"];\n +\t\t\t\t transforms(width,height);\t\t\t\t\t\t\t\n + \t\t\t\t }\n +\n +\t\t\t);\n + \n +\t$(this).form(\'render\', \'image\', {\'image_id\': id});\n +\n +\n + var transforms = function(width,height){\n + $.getJSON(\n + \'http://\'+window.location.host+\'/erp5/image_module/\'+id+\'/TileImageTransformed_getTransform\',\n + function(data){\n + pass(width,height,data);\n + }\n + );\n + }\n +\n +\tvar pass = function(zoomify_width,zoomify_height,data){\n +\t\t\t\n +\t\t\t\t$(function() {\n + \t\t\t SafeImage.loadOpenLayerZoomedImage(zoomify_width,zoomify_height, zoomify_url,data);\n + if (document.location.search != ""){\n + SafeImage.map.zoomTo(Number(document.location.search.split("")[6]));\n + } \n + \t\t\t\t });\n +\t};\n +\n + },\n +\n + render: function(template, data){\n + \t $(this).html(ich[template](data, true));\n + }\n +\n + };\n +\n + $.fn.form = function(method){\n + if ( methods[method] ) {\n + return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));\n + } else if ( typeof method === \'object\' || ! method ) {\n + return methods.init.apply( this, arguments );\n + } else {\n + $.error( \'Method \' + method + \' does not exist on jQuery.form\' );\n + }\n + };\n +})(jQuery);\n +\n +$("#main").form();\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>3048</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>form.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/pixastic.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/pixastic.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..191e65eabaa1253b9b4e444de1e96b293be7ce26 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/pixastic.js.xml @@ -0,0 +1,452 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54116913.81</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>pixastic.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +var sepia = function (dataI,width,height){\n +\n + var imagedata = dataI; \n + var data = imagedata.data;\n + var w = width;\n + var h = height;\n + var w4 = w*4;\n + var y = h;\n + var mode = 1;\n +\n +\n + /*for(i=0;i<10000000000;i++){\n + 5555*55555554;\n + i++\n + };*/ \n +\n + do {\n + var offsetY = (y-1)*w4;\n + var x = w;\n +\n + do {\n + var offset = offsetY + (x-1)*4;\n +\n + if (mode) {\n +\n + // a bit faster, but not as good\n +\n + var d = data[offset] * 0.299 + data[offset+1] * 0.587 + data[offset+2] * 0.114;\n + var r = (d + 39);\n + var g = (d + 14);\n + var b = (d - 36);\n + } else {\n + // Microsoft\n + var or = data[offset];\n + var og = data[offset+1];\n + var ob = data[offset+2];\n + var r = (or * 0.393 + og * 0.769 + ob * 0.189);\n + var g = (or * 0.349 + og * 0.686 + ob * 0.168);\n + var b = (or * 0.272 + og * 0.534 + ob * 0.131);\n + }\n +\n + if (r < 0) r = 0; if (r > 255) r = 255;\n + if (g < 0) g = 0; if (g > 255) g = 255;\n + if (b < 0) b = 0; if (b > 255) b = 255;\n +\n + data[offset] = r;\n + data[offset+1] = g;\n + data[offset+2] = b;\n +\n + } while (--x);\n + } while (--y);\n + imagedata.data = data;\n + return imagedata;\n +};\n +\n +\n +var lighten = function(dataI,width,height,param) {\n + var imagedata = dataI;\n + var data = imagedata.data;\n + var w = width;\n + var h = height;\n + var amount = parseFloat(param) || 0;\n + var mode = 1;\n +\t\tamount = Math.max(-1, Math.min(1, amount));\n +\n +\t\tif (mode) {\n +\n +\t\t\tvar p = w * h;\n +\n +\t\t\tvar pix = p*4, pix1 = pix + 1, pix2 = pix + 2;\n +\t\t\tvar mul = amount + 1;\n +\n +\t\t\twhile (p--) {\n +\t\t\t\tif ((data[pix-=4] = data[pix] * mul) > 255)\n +\t\t\t\t\tdata[pix] = 255;\n +\n +\t\t\t\tif ((data[pix1-=4] = data[pix1] * mul) > 255)\n +\t\t\t\t\tdata[pix1] = 255;\n +\n +\t\t\t\tif ((data[pix2-=4] = data[pix2] * mul) > 255)\n +\t\t\t\t\tdata[pix2] = 255;\n +\n +\t\t\t}\n +\n +\n +\t\t} else {\n +\t\t\t/*var img = params.image;\n +\t\t\tif (amount < 0) {\n +\t\t\t\timg.style.filter += " light()";\n +\t\t\t\timg.filters[img.filters.length-1].addAmbient(\n +\t\t\t\t\t255,255,255,\n +\t\t\t\t\t100 * -amount\n +\t\t\t\t);\n +\t\t\t} else if (amount > 0) {\n +\t\t\t\timg.style.filter += " light()";\n +\t\t\t\timg.filters[img.filters.length-1].addAmbient(\n +\t\t\t\t\t255,255,255,\n +\t\t\t\t\t100\n +\t\t\t\t);\n +\t\t\t\timg.filters[img.filters.length-1].addAmbient(\n +\t\t\t\t\t255,255,255,\n +\t\t\t\t\t100 * amount\n +\t\t\t\t);*/\n + console.log("Internet Explorer is crap");\n +\t\t\t}\n +\t\t\n +\t\n +\t\timagedata.data = data; \n + return imagedata;\n +\t\n +};\n +\n +\n +var brightness = function(dataI,width,height,param1,param2) {\n +\n + var imagedata = dataI;\n + var data = imagedata.data;\n + var w = width;\n + var h = height;\n + var brightness = parseInt(param1,10) || 0;\n +\t\tvar contrast = parseFloat(param2)||0;\n +\t\t//var legacy = !!(params.options.legacy && params.options.legacy != "false");\n + var mode = 1;\n + \tbrightness = Math.min(150,Math.max(-150,brightness));\n +\t\t\n +\t\t//var brightMul = 1 + Math.min(150,Math.max(-150,brightness)) / 150;\n +\t contrast = Math.max(0,contrast+1);\n +\n +\t\tif (mode) {\n +\t\t\tvar p = w*h;\n +\t\t\tvar pix = p*4, pix1, pix2;\n +\n +\t\t\tvar mul, add;\n +\t\t\tif (contrast != 1) {\n +\t\t\t\t\tmul = contrast;\n +\t\t\t\t\tadd = (brightness - 128) * contrast + 128;\n +\t\t\t} else { // this if-then is not necessary anymore, is it?\n +\t\t\t\t\tmul = 1;\n +\t\t\t\t\tadd = brightness;\n +\t\t\t}\n +\t\t\tvar r, g, b;\n +\t\t\twhile (p--) {\n +\t\t\t\tif ((r = data[pix-=4] * mul + add) > 255 )\n +\t\t\t\t\tdata[pix] = 255;\n +\t\t\t\telse if (r < 0)\n +\t\t\t\t\tdata[pix] = 0;\n +\t\t\t\telse\n + \t\t\t\t\tdata[pix] = r;\n +\n +\t\t\t\tif ((g = data[pix1=pix+1] * mul + add) > 255 ) \n +\t\t\t\t\tdata[pix1] = 255;\n +\t\t\t\telse if (g < 0)\n +\t\t\t\t\tdata[pix1] = 0;\n +\t\t\t\telse\n +\t\t\t\t\tdata[pix1] = g;\n +\n +\t\t\t\tif ((b = data[pix2=pix+2] * mul + add) > 255 ) \n +\t\t\t\t\tdata[pix2] = 255;\n +\t\t\t\telse if (b < 0)\n +\t\t\t\t\tdata[pix2] = 0;\n +\t\t\t\telse\n +\t\t\t\t\tdata[pix2] = b;\n +\t\t\t}\n +\t\t}\n +\t\n + imagedata.data = data;\n + return imagedata;\n +\t\n +};\n +\n +\n +var posterize = function(dataI,width,height,param1) {\n +\n + var imagedata = dataI;\n + var data = imagedata.data;\n + var w = width;\n + var h = height;\n +\t\tvar numLevels = 256;\n + var mode = 1;\n + var aux = param1;\n + \n +\t\tif (typeof aux != "undefined")\n +\t\t\tnumLevels = parseInt(aux,10)||1;\n +\n +\t\tif (mode) {\n +\n +\t\t\tnumLevels = Math.max(2,Math.min(256,numLevels));\n +\t\n +\t\t\tvar numAreas = 256 / numLevels;\n +\t\t\tvar numValues = 256 / (numLevels-1);\n +\n +\t\t\tvar w4 = w*4;\n +\t\t\tvar y = h;\n +\t\t\tdo {\n +\t\t\t\tvar offsetY = (y-1)*w4;\n +\t\t\t\tvar x = w;\n +\t\t\t\tdo {\n +\t\t\t\t\tvar offset = offsetY + (x-1)*4;\n +\n +\t\t\t\t\tvar r = numValues * ((data[offset] / numAreas)>>0);\n +\t\t\t\t\tvar g = numValues * ((data[offset+1] / numAreas)>>0);\n +\t\t\t\t\tvar b = numValues * ((data[offset+2] / numAreas)>>0);\n +\n +\t\t\t\t\tif (r > 255) r = 255;\n +\t\t\t\t\tif (g > 255) g = 255;\n +\t\t\t\t\tif (b > 255) b = 255;\n +\n +\t\t\t\t\tdata[offset] = r;\n +\t\t\t\t\tdata[offset+1] = g;\n +\t\t\t\t\tdata[offset+2] = b;\n +\n +\t\t\t\t} while (--x);\n +\t\t\t} while (--y);\n +\t\t}\n +\t imagedata.data;\n + \treturn imagedata;\n +};\n +\n +\n +var noise = function(dataI,width,height) {\n +\n + var imagedata = dataI;\n + var data = imagedata.data;\n + var w = width;\n + var h = height;\n + var mode = 1;\n +\t\tvar w4 = w*4;\n +\t\tvar y = h;\n +\n +\n +\t\t\tdo {\n +\t\t\t\tvar offsetY = (y-1)*w4;\n +\n +\t\t\t\tvar nextY = (y == h) ? y - 1 : y;\n +\t\t\t\tvar prevY = (y == 1) ? 0 : y-2;\n +\n +\t\t\t\tvar offsetYPrev = prevY*w*4;\n +\t\t\t\tvar offsetYNext = nextY*w*4;\n +\n +\t\t\t\tvar x = w;\n +\t\t\t\tdo {\n +\t\t\t\t\tvar offset = offsetY + (x*4-4);\n +\n +\t\t\t\t\tvar offsetPrev = offsetYPrev + ((x == 1) ? 0 : x-2) * 4;\n +\t\t\t\t\tvar offsetNext = offsetYNext + ((x == w) ? x-1 : x) * 4;\n +\n +\t\t\t\t\tvar minR, maxR, minG, maxG, minB, maxB;\n +\n +\t\t\t\t\tminR = maxR = data[offsetPrev];\n +\t\t\t\t\tvar r1 = data[offset-4], r2 = data[offset+4], r3 = data[offsetNext];\n +\t\t\t\t\tif (r1 < minR) minR = r1;\n +\t\t\t\t\tif (r2 < minR) minR = r2;\n +\t\t\t\t\tif (r3 < minR) minR = r3;\n +\t\t\t\t\tif (r1 > maxR) maxR = r1;\n +\t\t\t\t\tif (r2 > maxR) maxR = r2;\n +\t\t\t\t\tif (r3 > maxR) maxR = r3;\n +\n +\t\t\t\t\tminG = maxG = data[offsetPrev+1];\n +\t\t\t\t\tvar g1 = data[offset-3], g2 = data[offset+5], g3 = data[offsetNext+1];\n +\t\t\t\t\tif (g1 < minG) minG = g1;\n +\t\t\t\t\tif (g2 < minG) minG = g2;\n +\t\t\t\t\tif (g3 < minG) minG = g3;\n +\t\t\t\t\tif (g1 > maxG) maxG = g1;\n +\t\t\t\t\tif (g2 > maxG) maxG = g2;\n +\t\t\t\t\tif (g3 > maxG) maxG = g3;\n +\n +\t\t\t\t\tminB = maxB = data[offsetPrev+2];\n +\t\t\t\t\tvar b1 = data[offset-2], b2 = data[offset+6], b3 = data[offsetNext+2];\n +\t\t\t\t\tif (b1 < minB) minB = b1;\n +\t\t\t\t\tif (b2 < minB) minB = b2;\n +\t\t\t\t\tif (b3 < minB) minB = b3;\n +\t\t\t\t\tif (b1 > maxB) maxB = b1;\n +\t\t\t\t\tif (b2 > maxB) maxB = b2;\n +\t\t\t\t\tif (b3 > maxB) maxB = b3;\n +\n +\t\t\t\t\tif (data[offset] > maxR) {\n +\t\t\t\t\t\tdata[offset] = maxR;\n +\t\t\t\t\t} else if (data[offset] < minR) {\n +\t\t\t\t\t\tdata[offset] = minR;\n +\t\t\t\t\t}\n +\t\t\t\t\tif (data[offset+1] > maxG) {\n +\t\t\t\t\t\tdata[offset+1] = maxG;\n +\t\t\t\t\t} else if (data[offset+1] < minG) {\n +\t\t\t\t\t\tdata[offset+1] = minG;\n +\t\t\t\t\t}\n +\t\t\t\t\tif (data[offset+2] > maxB) {\n +\t\t\t\t\t\tdata[offset+2] = maxB;\n +\t\t\t\t\t} else if (data[offset+2] < minB) {\n +\t\t\t\t\t\tdata[offset+2] = minB;\n +\t\t\t\t\t}\n +\n +\t\t\t\t} while (--x);\n +\t\t\t} while (--y);\n +\n + imagedata.data = data;\n +\t\treturn imagedata;\n +\n +}\n +\n +var edges = function(dataI,width,height) {\n + var imagedata = dataI;\n + var data = imagedata.data;\n + var dataCopy = data;\n + var w = width;\n + var h = height;\n + var mono = false;\n + var invert = false;\n + var mode = 1;\n +\n +\t\tvar c = -1/8;\n +\t\tvar kernel = [\n +\t\t\t\t[c, \tc, \tc],\n +\t\t\t\t[c, \t1, \tc],\n +\t\t\t\t[c, \tc, \tc]\n +\t\t];\n +\n +\t\tweight = 1/c;\n +\n +\t\tvar w4 = w*4;\n +\t\tvar y = h;\n +\t\t\tdo {\n +\t\t\t\tvar offsetY = (y-1)*w4;\n +\n +\t\t\t\tvar nextY = (y == h) ? y - 1 : y;\n +\t\t\t\tvar prevY = (y == 1) ? 0 : y-2;\n +\n +\t\t\t\tvar offsetYPrev = prevY*w*4;\n +\t\t\t\tvar offsetYNext = nextY*w*4;\n +\n +\t\t\t\tvar x = w;\n +\t\t\t\tdo {\n +\t\t\t\t\tvar offset = offsetY + (x*4-4);\n +\n +\t\t\t\t\tvar offsetPrev = offsetYPrev + ((x == 1) ? 0 : x-2) * 4;\n +\t\t\t\t\tvar offsetNext = offsetYNext + ((x == w) ? x-1 : x) * 4;\n +\t\n +\t\t\t\t\tvar r = ((dataCopy[offsetPrev-4]\n +\t\t\t\t\t\t+ dataCopy[offsetPrev]\n +\t\t\t\t\t\t+ dataCopy[offsetPrev+4]\n +\t\t\t\t\t\t+ dataCopy[offset-4]\n +\t\t\t\t\t\t+ dataCopy[offset+4]\n +\t\t\t\t\t\t+ dataCopy[offsetNext-4]\n +\t\t\t\t\t\t+ dataCopy[offsetNext]\n +\t\t\t\t\t\t+ dataCopy[offsetNext+4]) * c\n +\t\t\t\t\t\t+ dataCopy[offset]\n +\t\t\t\t\t\t) \n +\t\t\t\t\t\t* weight;\n +\t\n +\t\t\t\t\tvar g = ((dataCopy[offsetPrev-3]\n +\t\t\t\t\t\t+ dataCopy[offsetPrev+1]\n +\t\t\t\t\t\t+ dataCopy[offsetPrev+5]\n +\t\t\t\t\t\t+ dataCopy[offset-3]\n +\t\t\t\t\t\t+ dataCopy[offset+5]\n +\t\t\t\t\t\t+ dataCopy[offsetNext-3]\n +\t\t\t\t\t\t+ dataCopy[offsetNext+1]\n +\t\t\t\t\t\t+ dataCopy[offsetNext+5]) * c\n +\t\t\t\t\t\t+ dataCopy[offset+1])\n +\t\t\t\t\t\t* weight;\n +\t\n +\t\t\t\t\tvar b = ((dataCopy[offsetPrev-2]\n +\t\t\t\t\t\t+ dataCopy[offsetPrev+2]\n +\t\t\t\t\t\t+ dataCopy[offsetPrev+6]\n +\t\t\t\t\t\t+ dataCopy[offset-2]\n +\t\t\t\t\t\t+ dataCopy[offset+6]\n +\t\t\t\t\t\t+ dataCopy[offsetNext-2]\n +\t\t\t\t\t\t+ dataCopy[offsetNext+2]\n +\t\t\t\t\t\t+ dataCopy[offsetNext+6]) * c\n +\t\t\t\t\t\t+ dataCopy[offset+2])\n +\t\t\t\t\t\t* weight;\n +\n +\t\t\t\t\tif (mono) {\n +\t\t\t\t\t\tvar brightness = (r*0.3 + g*0.59 + b*0.11)||0;\n +\t\t\t\t\t\tif (invert) brightness = 255 - brightness;\n +\t\t\t\t\t\tif (brightness < 0 ) brightness = 0;\n +\t\t\t\t\t\tif (brightness > 255 ) brightness = 255;\n +\t\t\t\t\t\tr = g = b = brightness;\n +\t\t\t\t\t} else {\n +\t\t\t\t\t\tif (invert) {\n +\t\t\t\t\t\t\tr = 255 - r;\n +\t\t\t\t\t\t\tg = 255 - g;\n +\t\t\t\t\t\t\tb = 255 - b;\n +\t\t\t\t\t\t}\n +\t\t\t\t\t\tif (r < 0 ) r = 0;\n +\t\t\t\t\t\tif (g < 0 ) g = 0;\n +\t\t\t\t\t\tif (b < 0 ) b = 0;\n +\t\t\t\t\t\tif (r > 255 ) r = 255;\n +\t\t\t\t\t\tif (g > 255 ) g = 255;\n +\t\t\t\t\t\tif (b > 255 ) b = 255;\n +\t\t\t\t\t}\n +\n +\t\t\t\t\tdata[offset] = r;\n +\t\t\t\t\tdata[offset+1] = g;\n +\t\t\t\t\tdata[offset+2] = b;\n +\n +\t\t\t\t} while (--x);\n +\t\t\t} while (--y);\n + imagedata.data = data;\n +\t\treturn imagedata;\n +};\n +\n +\n +self.addEventListener("message", function(e){\n + var data = e.data;\n + var result = edges(data.image,data.width,data.height);\n + self.postMessage(result);\n +},false);\n +\n + \n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>9185</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>pixastic.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/safeimage.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/safeimage.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3d5e1979f1bef4aed8be76535cffd91aee81c91 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/safeimage.js.xml @@ -0,0 +1,69 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts55133579.12</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>safeimage.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string>var SafeImage = (function() {\n +\n + var that = {};\n +\n + that.loadOpenLayerZoomedImage= function(zoomify_width,\n + zoomify_height, zoomify_url,data){\n + if (that.map !== undefined){\n + that.map.destroy();\n + }\n + /* First we initialize the zoomify pyramid (to get number of tiers) */\n + that.zoomify = new OpenLayers.Layer.Zoomify( "Zoomify", zoomify_url,data,\n + new OpenLayers.Size(zoomify_width, zoomify_height ) );\n +\n + /* Map with raster coordinates (pixels) from Zoomify image */\n + var options = {\n + maxExtent: new OpenLayers.Bounds(0, 0, zoomify_width, zoomify_height),\n + maxResolution: Math.pow(2, that.zoomify.numberOfTiers-1 ),\n + numZoomLevels: that.zoomify.numberOfTiers,\n + units: \'pixels\',\n + size: new OpenLayers.Size(3000,2000)\n + };\n +\n + that.map = new OpenLayers.Map("map", options);\n + that.map.addLayer(that.zoomify);\n + that.map.setBaseLayer(that.zoomify);\n + that.map.zoomToMaxExtent();\n + };\n + return that\n +}());\n +</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>1006</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>safeimage.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/template.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/template.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..28f4172f208967144a48d5b7d098713b6a7553f9 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/js/template.js.xml @@ -0,0 +1,54 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54293364.05</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>template.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +(function(){\n + document.write("<script id=\'image\' type=\'text/html\'>");\n + document.write("{{! Service page template }}");\n + document.write("<article>");\n + document.write("{{ image_id }}");\n + document.write("<div id=\'map\' class=\'smallmap\'></div>");\n + document.write("</article>");\n + document.write("</script>");\n +})();\n +\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>317</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>template.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers.xml new file mode 100644 index 0000000000000000000000000000000000000000..afb25a5359b725583fa579f295e37af242d0e76d --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>openlayers</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>openlayers</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/OpenLayers.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/OpenLayers.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..19cd5b40f9468f3e9acec08fdb7e31e0aafffeef --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/OpenLayers.js.xml @@ -0,0 +1,1679 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54094902.62</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>OpenLayers.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>739725</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>OpenLayers.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*\n +\n + OpenLayers.js -- OpenLayers Map Viewer Library\n +\n + Copyright (c) 2006-2012 by OpenLayers Contributors\n + Published under the 2-clause BSD license.\n + See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.\n +\n + Includes compressed code under the following licenses:\n +\n + (For uncompressed versions of the code used, please see the\n + OpenLayers Github repository: <https://github.com/openlayers/openlayers>)\n +\n +*/\n +\n +/**\n + * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>\n + * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)\n + *\n + * Licensed under the Apache License, Version 2.0 (the "License");\n + * you may not use this file except in compliance with the License.\n + * You may obtain a copy of the License at\n + * http://www.apache.org/licenses/LICENSE-2.0\n + */\n +\n +/**\n + * OpenLayers.Util.pagePosition is based on Yahoo\'s getXY method, which is\n + * Copyright (c) 2006, Yahoo! Inc.\n + * All rights reserved.\n + * \n + * Redistribution and use of this software in source and binary forms, with or\n + * without modification, are permitted provided that the following conditions\n + * are met:\n + * \n + * * Redistributions of source code must retain the above copyright notice,\n + * this list of conditions and the following disclaimer.\n + * \n + * * Redistributions in binary form must reproduce the above copyright notice,\n + * this list of conditions and the following disclaimer in the documentation\n + * and/or other materials provided with the distribution.\n + * \n + * * Neither the name of Yahoo! Inc. nor the names of its contributors may be\n + * used to endorse or promote products derived from this software without\n + * specific prior written permission of Yahoo! Inc.\n + * \n + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\n + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \n + * POSSIBILITY OF SUCH DAMAGE.\n + */\n +var OpenLayers={VERSION_NUMBER:"Release 2.12",singleFile:!0,_getScriptLocation:function(){for(var a=/(^|(.*?\\/))(OpenLayers[^\\/]*?\\.js)(\\?|$)/,b=document.getElementsByTagName("script"),c,d="",e=0,f=b.length;e<f;e++)if(c=b[e].getAttribute("src"))if(c=c.match(a)){d=c[1];break}return function(){return d}}(),ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};\n +OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}!("function"==typeof window.Event&&b instanceof window.Event)&&(b.hasOwnProperty&&b.hasOwnProperty("toString"))&&(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\\s\\s*/,"").replace(/\\s\\s*$/,"")},camelize:function(a){for(var a=a.split("-"),b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\\.+/),h=0;h<g.length;h++)0==h&&(f=b),f=f[g[h]];"function"==\n +typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\\$\\{([\\w.]+?)\\}/g,numberRegEx:/^([+-]?)(?=\\d|\\.\\d)\\d*(\\.\\d*)?([Ee]([+-]?\\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a){return OpenLayers.String.isNumeric(a)?parseFloat(a):a}};\n +OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");\n +0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b}};OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};\n +OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=\n +a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+\n +","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},\n +getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+\n +d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){var b=null;if(a){switch(a.CLASS_NAME){case "OpenLayers.LonLat":b=new OpenLayers.Bounds(a.lon,a.lat,a.lon,a.lat);break;case "OpenLayers.Geometry.Point":b=new OpenLayers.Bounds(a.x,a.y,a.x,a.y);break;case "OpenLayers.Bounds":b=a}if(b){this.centerLonLat=null;if(null==this.left||b.left<this.left)this.left=\n +b.left;if(null==this.bottom||b.bottom<this.bottom)this.bottom=b.bottom;if(null==this.right||b.right>this.right)this.right=b.right;if(null==this.top||b.top>this.top)this.top=b.top}}},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});var b=b||{},c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,\n +a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;var a=OpenLayers.Util.toFloat(a),b=OpenLayers.Util.toFloat(b),d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};if(b.worldBounds)var c=this.wrapDateLine(b.worldBounds),a=a.wrapDateLine(b.worldBounds);else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==\n +a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,\n +{inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c),a=this.contains(a.right,a.top,c);return b?d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=\n +null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){var b=b||{},c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=\n +a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&(c>a.left&&e.right-d>a.right)&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};\n +OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\\\s)"+b+"(\\\\s|$)").test(c)},\n +addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\\\s+)"+b+"(\\\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){var a=OpenLayers.Util.getElement(a),c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];\n +c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&(-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position"))&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+\n +OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});\n +OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");\n +return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};\n +(function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),\n +b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!!(a&&1===a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};"undefined"===typeof window.$&&(window.$=OpenLayers.Util.getElement);\n +OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;c>=0;c--)a[c]==b&&a.splice(c,1);return a};OpenLayers.Util.indexOf=function(a,b){if(typeof a.indexOf=="function")return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};\n +OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){if(b)a.id=b;if(c){a.style.left=c.x+"px";a.style.top=c.y+"px"}if(d){a.style.width=d.w+"px";a.style.height=d.h+"px"}if(e)a.style.position=e;if(f)a.style.border=f;if(g)a.style.overflow=g;if(parseFloat(h)>=0&&parseFloat(h)<1){a.style.filter="alpha(opacity="+h*100+")";a.style.opacity=h}else if(parseFloat(h)==1){a.style.filter="";a.style.opacity=""}};\n +OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var i=document.createElement("div");if(d)i.style.backgroundImage="url("+d+")";a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,g,h);return i};\n +OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var i=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,null,g);if(h){i.style.display="none";b=function(){i.style.display="";OpenLayers.Event.stopObservingElement(i)};OpenLayers.Event.observe(i,"load",b);OpenLayers.Event.observe(i,"error",b)}i.style.alt=a;i.galleryImg="no";if(d)i.src=d;return i};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;\n +OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=false;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&a>=5.5&&a<7}return OpenLayers.Util.alphaHackNeeded};\n +OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,i);b=a.childNodes[0];if(e)b.src=e;OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);if(OpenLayers.Util.alphaHack()){if(a.style.display!="none")a.style.display="inline-block";h==null&&(h="scale");a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+b.src+"\', sizingMethod=\'"+h+"\')";if(parseFloat(a.style.opacity)>=0&&parseFloat(a.style.opacity)<\n +1)a.style.filter=a.style.filter+(" alpha(opacity="+a.style.opacity*100+")");b.style.filter="alpha(opacity=0)"}};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){var j=OpenLayers.Util.createDiv(),i=OpenLayers.Util.createImage(null,null,null,null,null,null,null,i);i.className="olAlphaImg";j.appendChild(i);OpenLayers.Util.modifyAlphaImageDiv(j,a,b,c,d,e,f,g,h);return j};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};\n +OpenLayers.Util.applyDefaults=function(a,b){var a=a||{},c=typeof window.Event=="function"&&b instanceof window.Event,d;for(d in b)if(a[d]===void 0||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];if(!c&&b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString"))a.toString=b.toString;return a};\n +OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(d!=null&&typeof d!="function"){if(typeof d=="object"&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++){f=d[g];e.push(encodeURIComponent(f===null||f===void 0?"":f))}d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(d.pop()===" "?b:d.length?"&"+b:"?"+b);return c};\n +OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};\n +OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;if(!b)b=a.textContent;if(!b)b=a.firstChild.nodeValue},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&c!=null;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;\n +OpenLayers.Util.toFloat=function(a,b){if(b==null)b=OpenLayers.Util.DEFAULT_PRECISION;typeof a!=="number"&&(a=parseFloat(a));return b===0?a:parseFloat(a.toPrecision(b))};OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return a*180/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};\n +OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),i=Math.sin(g),g=Math.cos(g),j=Math.sin(h),h=Math.cos(h),k=f,l=2*Math.PI,m=20;Math.abs(k-l)>1.0E-12&&--m>0;){var n=Math.sin(k),o=Math.cos(k),p=Math.sqrt(h*n*h*n+(g*j-i*h*o)*(g*j-i*h*o));if(p==0)return 0;var o=i*j+g*h*o,q=Math.atan2(p,o),r=Math.asin(g*\n +h*n/p),s=Math.cos(r)*Math.cos(r),n=o-2*i*j/s,t=c/16*s*(4+c*(4-3*s)),l=k,k=f+(1-t)*c*Math.sin(r)*(q+t*p*(n+t*o*(-1+2*n*n)))}if(m==0)return NaN;d=s*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(q-c*p*(n+c/4*(o*(-1+2*n*n)-c/6*n*(-3+4*p*p)*(-3+4*n*n))))).toFixed(3)/1E3};\n +OpenLayers.Util.destinationVincenty=function(a,b,c){for(var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon,a=a.lat,i=d.rad(b),b=Math.sin(i),i=Math.cos(i),a=(1-h)*Math.tan(d.rad(a)),j=1/Math.sqrt(1+a*a),k=a*j,l=Math.atan2(a,i),a=j*b,m=1-a*a,f=m*(f*f-g*g)/(g*g),n=1+f/16384*(4096+f*(-768+f*(320-175*f))),o=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*n),p=2*Math.PI;Math.abs(f-p)>1.0E-12;)var q=Math.cos(2*l+f),r=Math.sin(f),s=Math.cos(f),t=o*r*(q+o/4*(s*(-1+2*q*q)-o/6*q*(-3+4*r*r)*(-3+4*\n +q*q))),p=f,f=c/(g*n)+t;c=k*r-j*s*i;g=Math.atan2(k*s+j*r*i,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(r*b,j*s-k*r*i);i=h/16*m*(4+h*(4-3*m));q=b-(1-i)*h*a*(f+i*r*(q+i*s*(-1+2*q*q)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(q),d.deg(g))};\n +OpenLayers.Util.getParameters=function(a){var a=a===null||a===void 0?window.location.href:a,b="";if(OpenLayers.String.contains(a,"?"))var b=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,b=a.substring(b,c);for(var a={},b=b.split(/[&;]/),c=0,d=b.length;c<d;++c){var e=b[c].split("=");if(e[0]){var f=e[0];try{f=decodeURIComponent(f)}catch(g){f=unescape(f)}e=(e[1]||"").replace(/\\+/g," ");try{e=decodeURIComponent(e)}catch(h){e=unescape(e)}e=e.split(",");e.length==1&&(e=e[0]);\n +a[f]=e}}return a};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a==null&&(a="id_");OpenLayers.Util.lastSeqID=OpenLayers.Util.lastSeqID+1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.3701,km:39370.1,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;\n +OpenLayers.METERS_PER_INCH=0.0254000508001016;\n +OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,\n +Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/\n +OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,\n +Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,\n +SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/\n +OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});\n +OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,\n +"us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return a>1?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;if(a){b==null&&(b="degrees");c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH)}return c};\n +OpenLayers.Util.getScaleFromResolution=function(a,b){b==null&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};\n +OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&OpenLayers.Element.getStyle(a,"position")=="absolute"&&(a.style.top==""||a.style.left==""),e=null;if(a.getBoundingClientRect){a=a.getBoundingClientRect();e=c.scrollTop;b[0]=a.left+c.scrollLeft;b[1]=a.top+e}else if(document.getBoxObjectFor&&!d){a=document.getBoxObjectFor(a);c=document.getBoxObjectFor(c);b[0]=a.screenX-c.screenX;\n +b[1]=a.screenY-c.screenY}else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;){b[0]=b[0]+e.offsetLeft;b[1]=b[1]+e.offsetTop;e=e.offsetParent}c=OpenLayers.BROWSER_NAME;if(c=="opera"||c=="safari"&&OpenLayers.Element.getStyle(a,"position")=="absolute")b[1]=b[1]-document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]=b[0]-e.scrollLeft;if(c!="opera"||e.tagName!="TR")b[1]=b[1]-e.scrollTop;e=e.offsetParent}}return b};\n +OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;if(a==void 0){a=OpenLayers.BROWSER_NAME=="msie"&&document.compatMode!="CSS1Compat"?document.body:document.documentElement;arguments.callee.viewportElement=a}return a};\n +OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var a=OpenLayers.Util.createUrlObject(a,c),b=OpenLayers.Util.createUrlObject(b,c),d;for(d in a)if(d!=="args"&&a[d]!=b[d])return false;for(d in a.args){if(a.args[d]!=b.args[d])return false;delete b.args[d]}for(d in b.args)return false;return true};\n +OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\\w+:\\/\\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;if(a.indexOf("/")===0)a=d+a;else{c=c.pathname.split("/");c.pop();a=d+c.join("/")+"/"+a}}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?c.port=="80"||c.port=="0"?"":c.port:c.port==""||c.port=="0"?"80":c.port;d.hash=b.ignoreHash||\n +c.hash==="#"?"":c.hash;var e=c.search;if(!e){e=a.indexOf("?");e=e!=-1?a.substr(e):""}d.args=OpenLayers.Util.getParameters(e);d.pathname=c.pathname.charAt(0)=="/"?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=b==-1?c!=-1?a.substr(0,c):a:c!=-1?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return a.indexOf("webkit")==-1&&a.indexOf("gecko")!=-1}();\n +OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();b.indexOf("opera")!=-1?a="opera":b.indexOf("msie")!=-1?a="msie":b.indexOf("safari")!=-1?a="safari":b.indexOf("mozilla")!=-1&&(a=b.indexOf("firefox")!=-1?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};\n +OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=false,i=null,j=g;j&&j.tagName.toLowerCase()!="body";){var k=OpenLayers.Element.getStyle(j,"position");if(k=="absolute"){h=true;break}else if(k&&k!="static")break;j=j.parentNode}if(h&&(g.clientHeight===0||g.clientWidth===0)){i=document.createElement("div");i.style.visibility="hidden";i.style.position="absolute";\n +i.style.overflow="visible";i.style.width=document.body.clientWidth+"px";i.style.height=document.body.clientHeight+"px";i.appendChild(f)}f.style.position="absolute";if(b)if(b.w){d=b.w;f.style.width=d+"px"}else if(b.h){e=b.h;f.style.height=e+"px"}if(c&&c.displayClass)f.className=c.displayClass;b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes){a=0;for(c=b.childNodes.length;a<c;a++)if(b.childNodes[a].style)b.childNodes[a].style.overflow="visible"}f.appendChild(b);\n +i?g.appendChild(i):g.appendChild(f);if(!d){d=parseInt(b.scrollWidth);f.style.width=d+"px"}e||(e=parseInt(b.scrollHeight));f.removeChild(b);if(i){i.removeChild(f);g.removeChild(i)}else g.removeChild(f);return new OpenLayers.Size(d,e)};\n +OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(a==null){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);\n +OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};\n +OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");var a=(a+540)%360-180,d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round((f-d)/(1/60)*10),f=f/10;if(f>=60){f=f-60;d=d+1;if(d>=60){d=d-60;e=e+1}}e<10&&(e="0"+e);e=e+"\\u00b0";if(c.indexOf("dm")>=0){d<10&&(d="0"+d);e=e+(d+"\'");if(c.indexOf("dms")>=0){f<10&&(f="0"+f);e=e+(f+\'"\')}}return e=b=="lon"?e+(a<0?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(a<0?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(){throw Error("Read not implemented.");},write:function(){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.CSWGetRecords=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetRecords.DEFAULTS),b=OpenLayers.Format.CSWGetRecords["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSWGetRecords version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetRecords.DEFAULTS={version:"2.0.2"};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+\n +"_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&\n +this.handler.setMap(a)},draw:function(a){if(null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title))this.div.title=this.title;null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=\n +a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),\n +!0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Event={observers:!1,KEY_SPACE:32,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,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,\n +b){b||(a.preventDefault?a.preventDefault():a.returnValue=!1);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent))b="keydown";this.observers||(this.observers={});if(!a._eventCacheID){var e=\n +"eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=\n +b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){var d=d||!1,a=OpenLayers.Util.getElement(a),e=a._eventCacheID;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent))b="keydown";var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var i=g[h];if(i.name==b&&i.observer==c&&i.useCapture==d){g.splice(h,1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;\n +break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);\n +OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=\n +{};null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(){},attachToElement:function(a){this.element?OpenLayers.Event.stopObservingElement(this.element):\n +(this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=0,c=this.BROWSER_EVENTS.length;b<c;b++)OpenLayers.Event.observe(a,this.BROWSER_EVENTS[b],this.eventHandler);OpenLayers.Event.observe(a,"dragstart",OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&\n +!this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==\n +b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&!(d=c[e],d=d.func.apply(d.obj,[b]),void 0!=d&&!1==d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},\n +handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=c[h],d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;var a=document.body;if(a&&(!(0!=a.scrollTop||0!=a.scrollLeft)||!navigator.userAgent.match(/iPhone/i)))this.element.offsets=null},getMousePosition:function(a){this.includeXY?\n +this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[b.scrollLeft,b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+\n +this.element.scrolls[0]-this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);\n +delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",{buttonElement:c}),OpenLayers.Event.stop(a),\n +b=!1}else this.startEvt&&(this.completeRegEx.test(a.type)&&(b=OpenLayers.Util.pagePosition(c),this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})),this.cancelRegEx.test(a.type)&&delete this.startEvt,OpenLayers.Event.stop(a),b=!1);this.startRegEx.test(a.type)&&(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else delete this.startEvt;return b}});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:{w:180,h:90},layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:!1,handlers:null,resolutionFactor:1,maximized:!1,initialize:function(a){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[a])},destroy:function(){this.mapDiv&&(this.handlers.click&&this.handlers.click.destroy(),this.handlers.drag&&this.handlers.drag.destroy(),\n +this.ovmap&&this.ovmap.viewPortDiv.removeChild(this.extentRectangle),this.extentRectangle=null,this.rectEvents&&(this.rectEvents.destroy(),this.rectEvents=null),this.ovmap&&(this.ovmap.destroy(),this.ovmap=null),this.element.removeChild(this.mapDiv),this.mapDiv=null,this.div.removeChild(this.element),this.element=null,this.maximizeDiv&&(this.div.removeChild(this.maximizeDiv),this.maximizeDiv=null),this.minimizeDiv&&(this.div.removeChild(this.minimizeDiv),this.minimizeDiv=null),this.map.events.un({buttonclick:this.onButtonClick,\n +moveend:this.update,changebaselayer:this.baseLayerDraw,scope:this}),OpenLayers.Control.prototype.destroy.apply(this,arguments))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(0===this.layers.length)if(this.map.baseLayer)this.layers=[this.map.baseLayer.clone()];else return this.map.events.register("changebaselayer",this,this.baseLayerDraw),this.div;this.element=document.createElement("div");this.element.className=this.displayClass+"Element";this.element.style.display="none";\n +this.mapDiv=document.createElement("div");this.mapDiv.style.width=this.size.w+"px";this.mapDiv.style.height=this.size.h+"px";this.mapDiv.style.position="relative";this.mapDiv.style.overflow="hidden";this.mapDiv.id=OpenLayers.Util.createUniqueID("overviewMap");this.extentRectangle=document.createElement("div");this.extentRectangle.style.position="absolute";this.extentRectangle.style.zIndex=1E3;this.extentRectangle.className=this.displayClass+"ExtentRectangle";this.element.appendChild(this.mapDiv);\n +this.div.appendChild(this.element);if(this.outsideViewport)this.element.style.display="";else{this.div.className+=" "+this.displayClass+"Container";var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+"MaximizeButton",null,null,a,"absolute");this.maximizeDiv.style.display="none";this.maximizeDiv.className=this.displayClass+"MaximizeButton olButton";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");\n +this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_minimizeDiv",null,null,a,"absolute");this.minimizeDiv.style.display="none";this.minimizeDiv.className=this.displayClass+"MinimizeButton olButton";this.div.appendChild(this.minimizeDiv);this.minimizeControl()}this.map.getExtent()&&this.update();this.map.events.on({buttonclick:this.onButtonClick,moveend:this.update,scope:this});this.maximized&&this.maximizeControl();return this.div},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",\n +this,this.baseLayerDraw)},rectDrag:function(a){var b=this.handlers.drag.last.x-a.x,c=this.handlers.drag.last.y-a.y;if(0!=b||0!=c){var d=this.rectPxBounds.top,e=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),f=this.rectPxBounds.getWidth(),c=Math.max(0,d-c),c=Math.min(c,this.ovmap.size.h-this.hComp-a),b=Math.max(0,e-b),b=Math.min(b,this.ovmap.size.w-this.wComp-f);this.setRectPxBounds(new OpenLayers.Bounds(b,c+a,b+f,c))}},mapDivClick:function(a){var b=this.rectPxBounds.getCenterPixel(),\n +c=a.xy.x-b.x,d=a.xy.y-b.y,e=this.rectPxBounds.top,f=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),b=this.rectPxBounds.getWidth(),d=Math.max(0,e+d),d=Math.min(d,this.ovmap.size.h-a),c=Math.max(0,f+c),c=Math.min(c,this.ovmap.size.w-b);this.setRectPxBounds(new OpenLayers.Bounds(c,d+a,c+b,d));this.updateMapToRect()},onButtonClick:function(a){a.buttonElement===this.minimizeDiv?this.minimizeControl():a.buttonElement===this.maximizeDiv&&this.maximizeControl()},maximizeControl:function(a){this.element.style.display=\n +"";this.showToggle(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.element.style.display="none";this.showToggle(!0);null!=a&&OpenLayers.Event.stop(a)},showToggle:function(a){this.maximizeDiv.style.display=a?"":"none";this.minimizeDiv.style.display=a?"none":""},update:function(){null==this.ovmap&&this.createMap();(this.autoPan||!this.isSuitableOverview())&&this.updateOverview();this.updateRectToMap()},isSuitableOverview:function(){var a=this.map.getExtent(),b=this.map.maxExtent,\n +a=new OpenLayers.Bounds(Math.max(a.left,b.left),Math.max(a.bottom,b.bottom),Math.min(a.right,b.right),Math.min(a.top,b.top));this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()));b=this.ovmap.getResolution()/this.map.getResolution();return b>this.minRatio&&b<=this.maxRatio&&this.ovmap.getExtent().containsBounds(a)},updateOverview:function(){var a=this.map.getResolution(),b=this.ovmap.getResolution(),c=b/a;c>this.maxRatio?\n +b=this.minRatio*a:c<=this.minRatio&&(b=this.maxRatio*a);this.ovmap.getProjection()!=this.map.getProjection()?(a=this.map.center.clone(),a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject())):a=this.map.center;this.ovmap.setCenter(a,this.ovmap.getZoomForResolution(b*this.resolutionFactor));this.updateRectToMap()},createMap:function(){var a=OpenLayers.Util.extend({controls:[],maxResolution:"auto",fallThrough:!1},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,a);this.ovmap.viewPortDiv.appendChild(this.extentRectangle);\n +OpenLayers.Event.stopObserving(window,"unload",this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=(this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-right-width")))?this.wComp:2;this.hComp=(this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-bottom-width")))?\n +this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.mapDivClick},{single:!0,"double":!1,stopSingle:!0,stopDouble:!0,pixelTolerance:1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,!0);this.rectEvents.register("mouseover",this,function(){!this.handlers.drag.active&&!this.map.dragging&&this.handlers.drag.activate()});\n +this.rectEvents.register("mouseout",this,function(){this.handlers.drag.dragging||this.handlers.drag.deactivate()});if(this.ovmap.getProjection()!=this.map.getProjection()){var a=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units,b=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=a&&b?OpenLayers.INCHES_PER_UNIT[a]/OpenLayers.INCHES_PER_UNIT[b]:1}},updateRectToMap:function(){var a=this.getRectBoundsFromMapBounds(this.ovmap.getProjection()!=\n +this.map.getProjection()?this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()):this.map.getExtent());a&&this.setRectPxBounds(a)},updateMapToRect:function(){var a=this.getMapBoundsFromRectBounds(this.rectPxBounds);this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject()));this.map.panTo(a.getCenterLonLat())},setRectPxBounds:function(a){var b=Math.max(a.top,0),c=Math.max(a.left,0),d=\n +Math.min(a.top+Math.abs(a.getHeight()),this.ovmap.size.h-this.hComp),a=Math.min(a.left+a.getWidth(),this.ovmap.size.w-this.wComp),e=Math.max(a-c,0),f=Math.max(d-b,0);e<this.minRectSize||f<this.minRectSize?(this.extentRectangle.className=this.displayClass+this.minRectDisplayClass,e=c+e/2-this.minRectSize/2,this.extentRectangle.style.top=Math.round(b+f/2-this.minRectSize/2)+"px",this.extentRectangle.style.left=Math.round(e)+"px",this.extentRectangle.style.height=this.minRectSize+"px",this.extentRectangle.style.width=\n +this.minRectSize+"px"):(this.extentRectangle.className=this.displayClass+"ExtentRectangle",this.extentRectangle.style.top=Math.round(b)+"px",this.extentRectangle.style.left=Math.round(c)+"px",this.extentRectangle.style.height=Math.round(f)+"px",this.extentRectangle.style.width=Math.round(e)+"px");this.rectPxBounds=new OpenLayers.Bounds(Math.round(c),Math.round(d),Math.round(a),Math.round(b))},getRectBoundsFromMapBounds:function(a){var b=this.getOverviewPxFromLonLat({lon:a.left,lat:a.bottom}),a=this.getOverviewPxFromLonLat({lon:a.right,\n +lat:a.top}),c=null;b&&a&&(c=new OpenLayers.Bounds(b.x,b.y,a.x,a.y));return c},getMapBoundsFromRectBounds:function(a){var b=this.getLonLatFromOverviewPx({x:a.left,y:a.bottom}),a=this.getLonLatFromOverviewPx({x:a.right,y:a.top});return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},getLonLatFromOverviewPx:function(a){var b=this.ovmap.size,c=this.ovmap.getResolution(),d=this.ovmap.getExtent().getCenterLonLat();return{lon:d.lon+(a.x-b.w/2)*c,lat:d.lat-(a.y-b.h/2)*c}},getOverviewPxFromLonLat:function(a){var b=\n +this.ovmap.getResolution(),c=this.ovmap.getExtent();if(c)return{x:Math.round(1/b*(a.lon-c.left)),y:Math.round(1/b*(c.top-a.lat))}},CLASS_NAME:"OpenLayers.Control.OverviewMap"});OpenLayers.Animation=function(a){var b=!(!a.requestAnimationFrame&&!a.webkitRequestAnimationFrame&&!a.mozRequestAnimationFrame&&!a.oRequestAnimationFrame&&!a.msRequestAnimationFrame),c=function(){var b=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,16)};return function(c,d){b.apply(a,[c,d])}}(),d=0,e={};return{isNative:b,requestFrame:c,start:function(a,b,h){var b=0<b?b:Number.POSITIVE_INFINITY,\n +i=++d,j=+new Date;e[i]=function(){e[i]&&+new Date-j<=b?(a(),e[i]&&c(e[i],h)):delete e[i]};c(e[i],h);return i},stop:function(a){delete e[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.time=0;OpenLayers.Animation.stop(this.animationId);this.animationId=null;this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,\n +this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&this.callbacks.eachStep.call(this,\n +a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};\n +OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};\n +OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\\+title=[^\\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;window.Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),window.Proj4js&&\n +this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};\n +OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};\n +OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};\n +OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{var b=b.getCode(),c=c.getCode(),d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};\n +(function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;a.y=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,m,n,o,p;g=0;for(m=d.length;g<m;++g){n=d[g];e(c,n,b);e(n,c,a);for(p=g+1;p<m;++p)o=d[p],e(n,o,f),e(o,n,f)}}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326",\n +"EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,\n +maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!0,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+\n +"theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);this.maxExtent&&!(this.maxExtent instanceof OpenLayers.Bounds)&&(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));this.minExtent&&!(this.minExtent instanceof OpenLayers.Bounds)&&(this.minExtent=new OpenLayers.Bounds(this.minExtent));this.restrictedExtent&&\n +!(this.restrictedExtent instanceof OpenLayers.Bounds)&&(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));this.center&&!(this.center instanceof OpenLayers.LonLat)&&(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=\n +this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.width="100px";this.layerContainerDiv.style.height=\n +"100px";this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);9>parseFloat(navigator.appVersion.split("MSIE")[1])?this.events.register("resize",this,this.updateSize):(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),\n +e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),\n +OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,\n +"unload",this.unloadDestroy);b&&b.layers&&(delete this.center,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;\n +this.panTween&&(this.panTween.stop(),this.panTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy?OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy):this.events.unregister("resize",this,this.updateSize);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);\n +this.layers=null}this.viewPortDiv&&this.div.removeChild(this.viewPortDiv);this.viewPortDiv=null;this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==\n +typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=\n +this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=\n +"";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,\n +b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",\n +{map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):\n +this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null!=this.baseLayer&&!this.allOverlays&&this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),\n +!1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&\n +(a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,\n +a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();\n +if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,a.h=this.div.offsetHeight;\n +if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&this.size&&(this.center=\n +this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)(0!=a||0!=b)&&this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter()),a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},\n +panTo:function(a){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(a)){this.panTween||(this.panTween=new OpenLayers.Tween(this.panMethod));var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(){this.moveTo(a);\n +this.dragging=false;this.events.triggerEvent("moveend")},this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,i=0;this.restrictedExtent&&(h=c,i=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-i&&f>=this.minPx.y+i?Math.round(b):0;if(a||b){this.dragging||(this.dragging=\n +!0,this.events.triggerEvent("movestart"));this.center=null;a&&(this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-a+"px",this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-b+"px",this.minPx.y-=b,this.maxPx.y-=b);d=0;for(e=this.layers.length;d<e;++d)if(c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange))c.moveByPx(a,b),c.events.triggerEvent("move");this.events.triggerEvent("move")}},adjustZoom:function(a){var b=\n +this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;if(this.getResolutionForZoom(a)>c)for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}return a},moveTo:function(a,b,c){null!=a&&!(a instanceof OpenLayers.LonLat)&&(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));if(this.baseLayer.wrapDateLine){var d=b,b=this.adjustZoom(b);b!==d&&(a=this.getCenter())}var d=c.dragging||this.dragging,e=c.forceZoomChange;!this.getCachedCenter()&&\n +!this.isValidLonLat(a)&&(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&\n +(a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart");f&&(!e&&this.center&&this.centerLayerContainer(a),this.center=\n +a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,i=Math.round(f.getWidth()/a),j=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-i)/2-g/a,y:(this.size.h-j)/2-h/a};this.maxPx={x:this.minPx.x+Math.round(f.getWidth()/\n +a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)if(f=this.layers[b],f!==this.baseLayer&&!f.isBaseLayer&&(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),\n +g&&f.visibility))f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e});this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=parseInt(this.layerContainerDiv.style.left),a=parseInt(this.layerContainerDiv.style.top),\n +e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.layerContainerDiv.style.left=e+"px";this.layerContainerDiv.style.top=b+"px";d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():\n +null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=\n +null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,\n +b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a){this.isValidZoomLevel(a)&&this.setCenter(null,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,\n +b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},zoomToMaxExtent:function(a){this.zoomToExtent(this.getMaxExtent({restricted:a?a.restricted:!0}))},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*\n +c/2,e=this.getCachedCenter();this.zoomToExtent(new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c),b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);\n +a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution(),a=b.add(-c/2,0),d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=\n +null;if(null!=a)var b=parseInt(this.layerContainerDiv.style.left),c=parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);return b},getLayerPxFromViewPortPx:function(a){var b=null;if(null!=a){var b=-parseInt(this.layerContainerDiv.style.left),c=-parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);if(isNaN(b.x)||isNaN(b.y))b=null}return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){return this.getLayerPxFromViewPortPx(this.getPixelFromLonLat(a))},\n +CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,\n +numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},\n +destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=\n +this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});if(a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),a.maxExtent&&!(a.maxExtent instanceof OpenLayers.Bounds)&&(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),a.minExtent&&!(a.minExtent instanceof\n +OpenLayers.Bounds)))a.minExtent=new OpenLayers.Bounds(a.minExtent);OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),\n +this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&(this.inRange&&this.visibility)&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(){var a=this.visibility;this.isBaseLayer||(a=a&&this.inRange);this.display(a)},moveByPx:function(){},setMap:function(a){null==\n +this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},\n +removeMap:function(){},getImageSize:function(){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),\n +this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,\n +b,c,d={},e=!0;a=0 + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==\n +d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,\n +this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,\n +this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,\n +this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&("number"!==typeof c&&null!=this.maxExtent)&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==\n +typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){return this.getResolutionForZoom(this.map.getZoom())},getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize();return this.getZoomForResolution(Math.max(a.getWidth()/\n +c.w,a.getHeight()/c.h),b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom)var b=Math.floor(a),c=Math.ceil(a),a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c]);else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<\n +d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&\n +(b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,\n +null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter)var b=this.gutter*this.map.getResolution(),a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+b,a.top+b);this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var a=null;return a=this.sphericalMercator?this.map.calculateBounds():OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this)},getLonLatFromViewPortPx:function(a){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments)},getViewPortPxFromLonLat:function(a){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments)},initMercatorParameters:function(){this.RESOLUTIONS=[];for(var a=0;a<=this.MAX_ZOOM_LEVEL;++a)this.RESOLUTIONS[a]=\n +156543.03390625/Math.pow(2,a);this.units="m";this.projection=this.projection||"EPSG:900913"},forwardMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(e.x,e.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,\n +y:d},b,a);return new OpenLayers.LonLat(e.x,e.y)}}()};OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:!0,isBaseLayer:!0,isFixed:!0,pane:null,mapObject:null,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);null==this.pane&&(this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane"))},destroy:function(){this.pane=this.mapObject=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=\n +parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";"msie"==OpenLayers.BROWSER_NAME&&(this.pane.style.background="url("+OpenLayers.Util.getImageLocation("blank.gif")+")");this.isFixed?this.map.viewPortDiv.appendChild(this.pane):this.map.layerContainerDiv.appendChild(this.pane);this.loadMapObject();null==this.mapObject&&this.loadWarningMessage()},removeMap:function(a){this.pane&&this.pane.parentNode&&this.pane.parentNode.removeChild(this.pane);\n +OpenLayers.Layer.prototype.removeMap.apply(this,arguments)},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var a=this.map.getSize(),b=Math.min(a.w,300),c=Math.min(a.h,200),b=new OpenLayers.Size(b,c),a=(new OpenLayers.Pixel(a.w/2,a.h/2)).add(-b.w/2,-b.h/2),a=OpenLayers.Util.createDiv(this.name+"_warning",a,b,null,null,null,"auto");a.style.padding="7px";a.style.backgroundColor="yellow";a.innerHTML=this.getWarningHTML();this.div.appendChild(a)},getWarningHTML:function(){return""},\n +display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display},setZIndex:function(a){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1},moveByPx:function(a,b){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);this.dragPanMapObject?this.dragPanMapObject(a,-b):this.moveTo(this.map.getCachedCenter())},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,\n +arguments);if(null!=this.mapObject){var d=this.map.getCenter(),e=this.map.getZoom();if(null!=d){var f=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectCenter()),g=this.getOLZoomFromMapObjectZoom(this.getMapObjectZoom());if(!d.equals(f)||e!=g)!b&&f&&this.dragPanMapObject&&this.smoothDragPan?(e=this.map.getViewPortPxFromLonLat(f),d=this.map.getViewPortPxFromLonLat(d),this.dragPanMapObject(d.x-e.x,e.y-d.y)):(d=this.getMapObjectLonLatFromOLLonLat(d),e=this.getMapObjectZoomFromOLZoom(e),this.setMapObjectCenter(d,\n +e,c))}}},getLonLatFromViewPortPx:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectLonLatFromMapObjectPixel(this.getMapObjectPixelFromOLPixel(a))));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLPixelFromMapObjectPixel(this.getMapObjectPixelFromMapObjectLonLat(this.getMapObjectLonLatFromOLLonLat(a))));return b},getOLLonLatFromMapObjectLonLat:function(a){var b=\n +null;null!=a&&(b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),b=new OpenLayers.LonLat(b,a));return b},getMapObjectLonLatFromOLLonLat:function(a){var b=null;null!=a&&(b=this.getMapObjectLonLatFromLonLat(a.lon,a.lat));return b},getOLPixelFromMapObjectPixel:function(a){var b=null;null!=a&&(b=this.getXFromMapObjectPixel(a),a=this.getYFromMapObjectPixel(a),b=new OpenLayers.Pixel(b,a));return b},getMapObjectPixelFromOLPixel:function(a){var b=null;null!=a&&(b=this.getMapObjectPixelFromXY(a.x,\n +a.y));return b},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){for(var a=["minZoomLevel","maxZoomLevel","numZoomLevels"],b=0,c=a.length;b<c;b++){var d=a[b];this[d]=null!=this.options[d]?this.options[d]:this.map[d]}if(null==this.minZoomLevel||this.minZoomLevel<this.MIN_ZOOM_LEVEL)this.minZoomLevel=this.MIN_ZOOM_LEVEL;a=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;b=null==this.options.numZoomLevels&&null!=this.options.maxZoomLevel||null==this.numZoomLevels&&null!=this.maxZoomLevel?\n +this.maxZoomLevel-this.minZoomLevel+1:this.numZoomLevels;this.numZoomLevels=null!=b?Math.min(b,a):a;this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(null!=this.RESOLUTIONS){a=0;this.resolutions=[];for(b=this.minZoomLevel;b<=this.maxZoomLevel;b++)this.resolutions[a++]=this.RESOLUTIONS[b];this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1]}},getResolution:function(){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getResolution.apply(this,\n +arguments);var a=null,b=this.map.getSize(),c=this.getExtent();null!=b&&null!=c&&(a=Math.max(c.getWidth()/b.w,c.getHeight()/b.h));return a},getExtent:function(){var a=this.map.getSize(),b=this.getLonLatFromViewPortPx({x:0,y:0}),a=this.getLonLatFromViewPortPx({x:a.w,y:a.h});return null!=b&&null!=a?new OpenLayers.Bounds(b.lon,a.lat,a.lon,b.lat):null},getZoomForResolution:function(a){return null!=this.resolutions?OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments):this.getZoomForExtent(OpenLayers.Layer.prototype.getExtent.apply(this,\n +[]))},getOLZoomFromMapObjectZoom:function(a){var b=null;null!=a&&(b=a-this.minZoomLevel,this.map.baseLayer!==this&&(b=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));return b},getMapObjectZoomFromOLZoom:function(a){var b=null;null!=a&&(b=a+this.minZoomLevel,this.map.baseLayer!==this&&(b=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));return b},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,6.866455078125E-4,3.4332275390625E-4,1.71661376953125E-4,8.58306884765625E-5,4.291534423828125E-5,2.145767211914062E-5,1.072883605957031E-5,5.36441802978515E-6,2.68220901489257E-6,1.341104507446289E-6,6.705522537231445E-7],\n +type:null,wrapDateLine:!0,sphericalMercator:!1,version:null,initialize:function(a,b){b=b||{};b.version||(b.version="function"===typeof GMap2?"2":"3");var c=OpenLayers.Layer.Google["v"+b.version.replace(/\\./g,"_")];if(c)OpenLayers.Util.applyDefaults(b,c);else throw"Unsupported Google Maps API version: "+b.version;OpenLayers.Util.applyDefaults(b,c.DEFAULTS);b.maxExtent&&(b.maxExtent=b.maxExtent.clone());OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[a,b]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,\n +[a,b]);this.sphericalMercator&&(OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator),this.initMercatorParameters())},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions())},setVisibility:function(a){var b=null==this.opacity?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(b)},display:function(a){this._dragging||this.setGMapVisibility(a);OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments)},moveTo:function(a,\n +b,c){this._dragging=c;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging},setOpacity:function(a){a!==this.opacity&&(null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"}),this.opacity=a);if(this.getVisibility()){var b=this.getMapContainer();OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}},destroy:function(){if(this.map){this.setGMapVisibility(!1);var a=OpenLayers.Layer.Google.cache[this.map.id];a&&1>=a.count&&\n +this.removeGMapElements()}OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments)},removeGMapElements:function(){var a=OpenLayers.Layer.Google.cache[this.map.id];if(a){var b=this.mapObject&&this.getMapContainer();b&&b.parentNode&&b.parentNode.removeChild(b);(b=a.termsOfUse)&&b.parentNode&&b.parentNode.removeChild(b);(a=a.poweredBy)&&a.parentNode&&a.parentNode.removeChild(a)}},removeMap:function(a){this.visibility&&this.mapObject&&this.setGMapVisibility(!1);var b=OpenLayers.Layer.Google.cache[a.id];\n +b&&(1>=b.count?(this.removeGMapElements(),delete OpenLayers.Layer.Google.cache[a.id]):--b.count);delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments)},getOLBoundsFromMapObjectBounds:function(a){var b=null;null!=a&&(b=a.getSouthWest(),a=a.getNorthEast(),this.sphericalMercator?(b=this.forwardMercator(b.lng(),b.lat()),a=this.forwardMercator(a.lng(),a.lat())):(b=new OpenLayers.LonLat(b.lng(),b.lat()),\n +a=new OpenLayers.LonLat(a.lng(),a.lat())),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat));return b},getWarningHTML:function(){return OpenLayers.i18n("googleWarning")},getMapObjectCenter:function(){return this.mapObject.getCenter()},getMapObjectZoom:function(){return this.mapObject.getZoom()},getLongitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),a.lat()).lon:a.lng()},getLatitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),\n +a.lat()).lat:a.lat()},getXFromMapObjectPixel:function(a){return a.x},getYFromMapObjectPixel:function(a){return a.y},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};\n +OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){this.type||(this.type=G_NORMAL_MAP);var a,b,c,d=OpenLayers.Layer.Google.cache[this.map.id];if(d)a=d.mapObject,b=d.termsOfUse,c=d.poweredBy,++d.count;else{var d=this.map.viewPortDiv,e=document.createElement("div");e.id=this.map.id+"_GMap2Container";e.style.position="absolute";e.style.width="100%";e.style.height="100%";d.appendChild(e);try{a=new GMap2(e),b=e.lastChild,d.appendChild(b),b.style.zIndex=\n +"1100",b.style.right="",b.style.bottom="",b.className="olLayerGoogleCopyright",c=e.lastChild,d.appendChild(c),c.style.zIndex="1100",c.style.right="",c.style.bottom="",c.className="olLayerGooglePoweredBy gmnoprint"}catch(f){throw f;}OpenLayers.Layer.Google.cache[this.map.id]={mapObject:a,termsOfUse:b,poweredBy:c,count:1}}this.mapObject=a;this.termsOfUse=b;this.poweredBy=c;-1===OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)&&this.mapObject.addMapType(this.type);"function"==typeof a.getDragObject?\n +this.dragObject=a.getDragObject():this.dragPanMapObject=null;!1===this.isBaseLayer&&this.setGMapVisibility("none"!==this.div.style.display)},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded())this.mapObject.checkResize();else{if(!this._resized)var a=this,b=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(b);delete a._resized;a.mapObject.checkResize();a.moveTo(a.map.getCenter(),a.map.getZoom())});this._resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];\n +if(b){var c=this.mapObject.getContainer();!0===a?(this.mapObject.setMapType(this.type),c.style.display="",this.termsOfUse.style.left="",this.termsOfUse.style.display="",this.poweredBy.style.display="",b.displayed=this.id):(b.displayed===this.id&&delete b.displayed,b.displayed||(c.style.display="none",this.termsOfUse.style.display="none",this.termsOfUse.style.left="-9999px",this.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getContainer()},getMapObjectBoundsFromOLBounds:function(a){var b=\n +null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new GLatLngBounds(new GLatLng(b.lat,b.lon),new GLatLng(a.lat,a.lon)));return b},setMapObjectCenter:function(a,b){this.mapObject.setCenter(a,b)},dragPanMapObject:function(a,b){this.dragObject.moveBy(new GSize(-a,b))},getMapObjectLonLatFromMapObjectPixel:function(a){return this.mapObject.fromContainerPixelToLatLng(a)},\n +getMapObjectPixelFromMapObjectLonLat:function(a){return this.mapObject.fromLatLngToContainerPixel(a)},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new GLatLng(c.lat,c.lon)):c=new GLatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new GPoint(a,b)}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,\n +arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&\n +b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,\n +b)},createTextNode:function(a){"string"!==typeof a&&(a=""+a);return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else for(var a=a.getElementsByTagName("*"),e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)("*"==b||b==e.namespaceURI)&&d.push(e);return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,\n +c);else for(var a=a.attributes,e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){for(var b=!0,a=a.firstChild;a;a=\n +a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){for(var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY,a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,\n +c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){var b=b||{},c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,\n +b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,\n +b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,\n +b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if((!b||b===(a.localName||a.nodeName.split(":").pop()))&&(!c||c===a.namespaceURI))break a;a=null;break a;case 3:if(/^\\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,\n +e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,b)}return c},getXMLDoc:function(){!OpenLayers.Format.XML.document&&!this.xmldom&&(document.implementation&&\n +document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);\n +OpenLayers.Format.XML.document=null;OpenLayers.Format.WFST=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.WFST.DEFAULTS),b=OpenLayers.Format.WFST["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported WFST version: "+a.version;return new b(a)};OpenLayers.Format.WFST.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:!0,xy:!0,stateName:null,initialize:function(a){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]=\n +"wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},getSrsName:function(a,b){var c=b&&b.srsName;c||(c=a&&a.layer?a.layer.projection.getCode():this.srsName);return c},read:function(a,b){b=b||{};OpenLayers.Util.applyDefaults(b,{output:"features"});"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var c={};a&&this.readNode(a,c,!0);c.features&&"features"===b.output&&\n +(c=c.features);return c},readers:{wfs:{FeatureCollection:function(a,b){b.features=[];this.readChildNodes(a,b)}}},write:function(a,b){var c=this.writeNode("wfs:Transaction",{features:a,options:b}),d=this.schemaLocationAttr();d&&this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",d);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},writers:{wfs:{GetFeature:function(a){var b=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,handle:a&&a.handle,\n +outputFormat:a&&a.outputFormat,maxFeatures:a&&a.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(a)}});if("string"==typeof this.featureType)this.writeNode("Query",a,b);else for(var c=0,d=this.featureType.length;c<d;c++)a.featureType=this.featureType[c],this.writeNode("Query",a,b);return b},Transaction:function(a){var a=a||{},b=a.options||{},c=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version,handle:b.handle}}),d,e=a.features;if(e){!0===b.multi&&OpenLayers.Util.extend(this.geometryTypes,\n +{"OpenLayers.Geometry.Point":"MultiPoint","OpenLayers.Geometry.LineString":!0===this.multiCurve?"MultiCurve":"MultiLineString","OpenLayers.Geometry.Polygon":!0===this.multiSurface?"MultiSurface":"MultiPolygon"});var f,g,a=0;for(d=e.length;a<d;++a)g=e[a],(f=this.stateName[g.state])&&this.writeNode(f,{feature:g,options:b},c);!0===b.multi&&this.setGeometryTypes()}if(b.nativeElements){a=0;for(d=b.nativeElements.length;a<d;++a)this.writeNode("wfs:Native",b.nativeElements[a],c)}return c},Native:function(a){return this.createElementNSPlus("wfs:Native",\n +{attributes:{vendorId:a.vendorId,safeToIgnore:a.safeToIgnore},value:a.value})},Insert:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Insert",{attributes:{handle:a&&a.handle}});this.srsName=this.getSrsName(b);this.writeNode("feature:_typeName",b,a);return a},Update:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Update",{attributes:{handle:a&&a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+\n +this.featurePrefix,this.featureNS);var c=b.modified;if(null!==this.geometryName&&(!c||void 0!==c.geometry))this.srsName=this.getSrsName(b),this.writeNode("Property",{name:this.geometryName,value:b.geometry},a);for(var d in b.attributes)void 0!==b.attributes[d]&&(!c||!c.attributes||c.attributes&&void 0!==c.attributes[d])&&this.writeNode("Property",{name:d,value:b.attributes[d]},a);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a},Property:function(a){var b=this.createElementNSPlus("wfs:Property");\n +this.writeNode("Name",a.name,b);null!==a.value&&this.writeNode("Value",a.value,b);return b},Name:function(a){return this.createElementNSPlus("wfs:Name",{value:a})},Value:function(a){var b;a instanceof OpenLayers.Geometry?(b=this.createElementNSPlus("wfs:Value"),a=this.writeNode("feature:_geometry",a).firstChild,b.appendChild(a)):b=this.createElementNSPlus("wfs:Value",{value:a});return b},Delete:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Delete",{attributes:{handle:a&&\n +a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a}}},schemaLocationAttr:function(a){var a=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},a),b=OpenLayers.Util.extend({},this.schemaLocations);a.schema&&(b[a.featurePrefix]=a.schema);var a=[],c,d;for(d in b)(c=this.namespaces[d])&&\n +a.push(c+" "+b[d]);return a.join(" ")||void 0},setFilterProperty:function(a){if(a.filters)for(var b=0,c=a.filters.length;b<c;++b)OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this,a.filters[b]);else a instanceof OpenLayers.Filter.Spatial&&!a.property&&(a.property=this.geometryName)},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},defaultPrefix:"ogc",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b={exceptionReport:null};a.documentElement&&(this.readChildNodes(a,b),null===b.exceptionReport&&(b=(new OpenLayers.Format.OWSCommon).read(a)));return b},readers:{ogc:{ServiceExceptionReport:function(a,\n +b){b.exceptionReport={exceptions:[]};this.readChildNodes(a,b.exceptionReport)},ServiceException:function(a,b){var c={code:a.getAttribute("code"),locator:a.getAttribute("locator"),text:this.getChildValue(a)};b.exceptions.push(c)}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,errorProperty:null,name:null,stringifyOutput:!1,parser:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);a=this.CLASS_NAME;this.name=a.substring(a.lastIndexOf(".")+1)},getVersion:function(a,b){var c;a?(c=this.version,c||(c=a.getAttribute("version"),c||(c=this.defaultVersion))):c=b&&b.version||this.version||this.defaultVersion;return c},getParser:function(a){var a=\n +a||this.defaultVersion,b=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=a){var c=OpenLayers.Format[this.name]["v"+a.replace(/\\./g,"_")+b];if(!c)throw"Can\'t find a "+this.name+" parser for version "+a+b;this.parser=new c(this.options)}return this.parser},write:function(a,b){this.parser=this.getParser(this.getVersion(null,b));var c=this.parser.write(a,b);return!1===this.stringifyOutput?c:OpenLayers.Format.XML.prototype.write.apply(this,[c])},read:function(a,b){"string"==typeof a&&\n +(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var c=this.getVersion(a.documentElement);this.parser=this.getParser(c);var d=this.parser.read(a,b);if(null!==this.errorProperty&&void 0===d[this.errorProperty]){var e=new OpenLayers.Format.OGCExceptionReport;d.error=e.read(a)}d.version=c;return d},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&\n +(this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?\n +this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};\n +OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=\n +null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||\n +this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){var a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a,\n +b=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=\n +a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});\n +OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,\n +hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,\n +strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),\n +this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length){f=!0;g=0;for(h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a)}0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&\n +(b.label=""+b.label);return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0],a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),(!0===a.stroke||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),\n +(!0===a.fill||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));\n +return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,\n +c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\\$\\{\\w+\\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=\n +OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};\n +OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,type:"FID",initialize:function(a){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},evaluate:function(a){for(var b=0,c=this.fids.length;b<c;b++)if((a.fid||a.id)==this.fids[b])return!0;return!1},clone:function(){var a=new OpenLayers.Filter.FeatureId;OpenLayers.Util.extend(a,this);a.fids=this.fids.slice();return a},CLASS_NAME:"OpenLayers.Filter.FeatureId"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<\n +c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1,a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;\n +b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()==b.toUpperCase():a==b;break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()!=b.toUpperCase():a!=b;break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=\n +a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a)}return b},value2regex:function(a,b,c){if("."==a)throw Error("\'.\' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\\\"+(c?c:"!")+"(.|$)","g"),"\\\\$1");this.value=this.value.replace(RegExp("\\\\"+b,"g"),".");this.value=this.value.replace(RegExp("\\\\"+\n +a,"g"),".*");this.value=this.value.replace(RegExp("\\\\\\\\.\\\\*","g"),"\\\\"+a);return this.value=this.value.replace(RegExp("\\\\\\\\\\\\.","g"),"\\\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\\\)?\\\\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\\\)?\\\\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\\\\\/g,"\\\\");return a=a.replace(/\\.\\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});\n +OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Filter.Function=OpenLayers.Class(OpenLayers.Filter,{name:null,params:null,CLASS_NAME:"OpenLayers.Filter.Function"});OpenLayers.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){var b={};this.readers.ogc.Filter.apply(this,[a,b]);return b.filter},readers:{ogc:{_expression:function(a){for(var b="",c=a.firstChild;c;c=\n +c.nextSibling)switch(c.nodeType){case 1:a=this.readNode(c);a.property?b+="${"+a.property+"}":void 0!==a.value&&(b+=a.value);break;case 3:case 4:b+=c.nodeValue}return b},Filter:function(a,b){var c={fids:[],filters:[]};this.readChildNodes(a,c);0<c.fids.length?b.filter=new OpenLayers.Filter.FeatureId({fids:c.fids}):0<c.filters.length&&(b.filter=c.filters[0])},FeatureId:function(a,b){var c=a.getAttribute("fid");c&&b.fids.push(c)},And:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});\n +this.readChildNodes(a,c);b.filters.push(c)},Or:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(a,c);b.filters.push(c)},Not:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThan:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThan:function(a,\n +b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},\n +PropertyIsBetween:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(a,c);b.filters.push(c)},Literal:function(a,b){b.value=OpenLayers.String.numericIf(this.getChildValue(a))},PropertyName:function(a,b){b.property=this.getChildValue(a)},LowerBoundary:function(a,b){b.lowerBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,a))},UpperBoundary:function(a,b){b.upperBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,\n +a))},Intersects:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.INTERSECTS)},Within:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.WITHIN)},Contains:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.CONTAINS)},DWithin:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.DWITHIN)},Distance:function(a,b){b.distance=parseInt(this.getChildValue(a));b.distanceUnits=a.getAttribute("units")},Function:function(){}}},readSpatial:function(a,b,c){c=new OpenLayers.Filter.Spatial({type:c});\n +this.readChildNodes(a,c);c.value=c.components[0];delete c.components;b.filters.push(c)},writeOgcExpression:function(a,b){if(a instanceof OpenLayers.Filter.Function){var c=this.writeNode("Function",a,b);b.appendChild(c)}else this.writeNode("Literal",a,b);return b},write:function(a){return this.writers.ogc.Filter.apply(this,[a])},writeFeatureIdNodes:function(a,b){for(var c=0,d=a.fids.length;c<d;++c)this.writeNode("FeatureId",a.fids[c],b)},writers:{ogc:{Filter:function(a){var b=this.createElementNSPlus("ogc:Filter");\n +"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},FeatureId:function(a){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:a}})},And:function(a){for(var b=this.createElementNSPlus("ogc:And"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Or:function(a){for(var b=\n +this.createElementNSPlus("ogc:Or"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Not:function(a){var b=this.createElementNSPlus("ogc:Not"),a=a.filters[0];"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},PropertyIsLessThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThan");\n +this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLessThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");\n +this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsBetween:function(a){var b=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",a,b);this.writeNode("LowerBoundary",a,b);this.writeNode("UpperBoundary",a,b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",{value:a.property})},Literal:function(a){return this.createElementNSPlus("ogc:Literal",{value:a})},LowerBoundary:function(a){var b=this.createElementNSPlus("ogc:LowerBoundary");\n +this.writeOgcExpression(a.lowerBoundary,b);return b},UpperBoundary:function(a){var b=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",a.upperBoundary,b);return b},INTERSECTS:function(a){return this.writeSpatial(a,"Intersects")},WITHIN:function(a){return this.writeSpatial(a,"Within")},CONTAINS:function(a){return this.writeSpatial(a,"Contains")},DWITHIN:function(a){var b=this.writeSpatial(a,"DWithin");this.writeNode("Distance",a,b);return b},Distance:function(a){return this.createElementNSPlus("ogc:Distance",\n +{attributes:{units:a.distanceUnits},value:a.distance})},Function:function(a){for(var b=this.createElementNSPlus("ogc:Function",{attributes:{name:a.name}}),a=a.params,c=0,d=a.length;c<d;c++)this.writeOgcExpression(a[c],b);return b}}},getFilterType:function(a){var b=this.filterMap[a.type];if(!b)throw"Filter writing not supported for rule type: "+a.type;return b},filterMap:{"&&":"And","||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan",\n +"<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike",BBOX:"BBOX",DWITHIN:"DWITHIN",WITHIN:"WITHIN",CONTAINS:"CONTAINS",INTERSECTS:"INTERSECTS",FID:"FeatureId"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();\n +return this.bounds},calculateBounds:function(){},distanceTo:function(){},getVertices:function(){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):\n +Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};\n +OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point,c=c&&c.tolerance,e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,i=a.y2-a.y1,j=b.y2-b.y1,k=b.x2-b.x1,l=j*h-k*i,j=k*g-j*f,g=h*g-i*f;0==l?0==j&&0==g&&(e=!0):(f=j/l,l=g/l,0<=f&&(1>=f&&0<=l&&1>=l)&&(d?(h=a.x1+f*h,l=a.y1+f*i,e=new OpenLayers.Geometry.Point(h,l)):e=!0));if(c)if(e){if(d){a=[a,b];b=0;a:for(;2>b;++b){f=a[b];for(i=1;3>i;++i)if(h=f["x"+i],l=f["y"+i],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(l-e.y,2)),d<c){e.x=h;e.y=l;break a}}}}else{a=\n +[a,b];b=0;a:for(;2>b;++b){h=a[b];l=a[(b+1)%2];for(i=1;3>i;++i)if(f={x:h["x"+i],y:h["y"+i]},g=OpenLayers.Geometry.distanceToSegment(f,l),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}}}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,i=g-e,j=h-f,k=(i*(c-e)+j*(d-f))/(Math.pow(i,2)+Math.pow(j,2));0>=k||(1<=k?(e=g,f=h):(e+=k*i,f+=k*j));return{distance:Math.sqrt(Math.pow(e-c,2)+Math.pow(f-d,2)),x:e,y:f}};OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof\n +OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=!c?d:{x0:e,y0:f,x1:g,y1:h,distance:d}):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){var a=\n +a*(Math.PI/180),c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,\n +a,b),this.bounds=null);return this},getVertices:function(){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());\n +OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&(null!=a.bottom&&null!=a.right&&null!=a.top)&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<\n +c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=\n +this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&\n +this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);!isNaN(h)&&(!isNaN(f.x)&&!isNaN(f.y))&&(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var i=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,i+=f.y*h;return new OpenLayers.Geometry.Point(e/d,i/d)},getGeodesicLength:function(a){for(var b=\n +0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,i=this.components.length;h<\n +i&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(!a||!a.CLASS_NAME||this.CLASS_NAME!=a.CLASS_NAME)b=!1;else if(!OpenLayers.Util.isArray(a.components)||a.components.length!=this.components.length)b=!1;else for(var c=0,d=this.components.length;c<d;++c)if(!this.components[c].equals(a.components[c])){b=!1;break}return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,\n +b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<\n +f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments(),a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments(),\n +e,f,g,h,i,j,k,l=0,m=d.length;a:for(;l<m;++l){c=d[l];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var n=0,o=a.length;for(;n<o;++n){i=a[n];if(i.x1>f)break;if(!(i.x2<e)&&(j=i.y1,k=i.y2,!(Math.min(j,k)>Math.max(g,h))&&!(Math.max(j,k)<Math.min(g,h))&&OpenLayers.Geometry.segmentsIntersect(c,i))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:\n +{x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],i=!1,j,k,l,m={point:!0,tolerance:d},n=null,o=0,p=f.length-2;o<=p;++o)if(d=f[o],g.push(d.clone()),j=f[o+1],k={x1:d.x,y1:d.y,x2:j.x,y2:j.y},k=OpenLayers.Geometry.segmentsIntersect(a,k,m),k instanceof OpenLayers.Geometry.Point&&((l=k.x===a.x1&&k.y===a.y1||k.x===a.x2&&k.y===a.y2||k.equals(d)||k.equals(j)?!0:!1)||c))k.equals(h[h.length-\n +1])||h.push(k.clone()),!(0===o&&k.equals(d))&&!k.equals(j)&&(i=!0,k.equals(d)||g.push(k),e.push(new OpenLayers.Geometry.LineString(g)),g=[k.clone()]);i&&(g.push(j.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var q=a.x1<a.x2?1:-1,r=a.y1<a.y2?1:-1,n={lines:e,points:h.sort(function(a,b){return q*a.x-q*b.x||r*a.y-r*b.y})};return n},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var i=this.getVertices(),j,k,l,m,n,o=[];g=[];\n +for(var p=0,q=i.length-2;p<=q;++p){j=i[p];k=i[p+1];l={x1:j.x,y1:j.y,x2:k.x,y2:k.y};h=h||[a];d&&o.push(j.clone());for(var r=0;r<h.length;++r)if(m=h[r].splitWithSegment(l,b))if(n=m.lines,0<n.length&&(n.unshift(r,1),Array.prototype.splice.apply(h,n),r+=n.length-2),d)for(var s=0,t=m.points.length;s<t;++s)n=m.points[s],n.equals(j)||(o.push(n),g.push(new OpenLayers.Geometry.LineString(o)),o=n.equals(k)?[]:[n.clone()])}d&&(0<g.length&&0<o.length)&&(o.push(k.clone()),g.push(new OpenLayers.Geometry.LineString(o)))}else c=\n +a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),\n +h=a.x,i=a.y,j,k=0,l=g.length;k<l;++k)if(j=g[k],d=OpenLayers.Geometry.distanceToSegment(a,j),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(j.x2>h&&(i>j.y1&&i<j.y2||i<j.y1&&i>j.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:i}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),m,n,o=h.lengt + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +h,p={point:!0},k=0,l=g.length;a:for(;k<l;++k){i=g[k];j=i.x1;n=i.y1;for(var q=0;q<o;++q)if(d=h[q],m=OpenLayers.Geometry.segmentsIntersect(i,\n +d,p)){f=0;e={distance:0,x0:m.x,y0:m.y,x1:m.x,y1:m.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:j,y:n},d),d.distance<f&&(f=d.distance,e={distance:f,x0:j,y0:n,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&i&&(d=a.distanceTo(new OpenLayers.Geometry.Point(i.x2,i.y2),b),k=c?d.distance:d,k<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:k))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();\n +if(3>b.length)return this;var c=function(a,b,d,i){for(var j=0,k=0,l=b,m;l<d;l++){m=a[b];var n=a[d],o=a[l],o=Math.abs(0.5*(m.x*n.y+n.x*o.y+o.x*m.y-n.x*m.y-o.x*n.y-m.x*o.y));m=Math.sqrt(Math.pow(m.x-n.x,2)+Math.pow(m.y-n.y,2));m=2*(o/m);m>j&&(j=m,k=l)}j>i&&k!=b&&(e.push(k),c(a,b,k,i),c(a,k,d,i))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},\n +CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],split:function(a,b){for(var c=null,d=b&&b.mutual,e,f,g,h,i=[],j=[a],k=0,l=this.components.length;k<l;++k){f=this.components[k];g=!1;for(var m=0;m<j.length;++m)if(e=f.split(j[m],b)){if(d){g=e[0];for(var n=0,o=g.length;n<o;++n)0===n&&i.length?i[i.length-1].addComponent(g[n]):i.push(new OpenLayers.Geometry.MultiLineString([g[n]]));g=!0;e=e[1]}if(e.length){e.unshift(m,\n +1);Array.prototype.splice.apply(j,e);break}}g||(i.length?i[i.length-1].addComponent(f.clone()):i=[new OpenLayers.Geometry.MultiLineString(f.clone())])}i&&1<i.length?g=!0:i=[];j&&1<j.length?h=!0:j=[];if(g||h)c=d?[i,j]:j;return c},splitWith:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h,i,j;if(a instanceof OpenLayers.Geometry.LineString){j=[];i=[a];for(var k=0,l=this.components.length;k<l;++k){g=!1;f=this.components[k];for(var m=0;m<i.length;++m)if(e=i[m].split(f,b)){d&&(g=e[0],g.length&&(g.unshift(m,\n +1),Array.prototype.splice.apply(i,g),m+=g.length-2),e=e[1],0===e.length&&(e=[f.clone()]));g=0;for(var n=e.length;g<n;++g)0===g&&j.length?j[j.length-1].addComponent(e[g]):j.push(new OpenLayers.Geometry.MultiLineString([e[g]]));g=!0}g||(j.length?j[j.length-1].addComponent(f.clone()):j=[new OpenLayers.Geometry.MultiLineString([f.clone()])])}}else c=a.split(this);i&&1<i.length?h=!0:i=[];j&&1<j.length?g=!0:j=[];if(h||g)c=d?[i,j]:j;return c},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();if(null!=b||!a.equals(d))c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments);OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,\n +arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,\n +b);this.bounds=null}return this},getCentroid:function(){if(this.components&&2<this.components.length){for(var a=0,b=0,c=0;c<this.components.length-1;c++)var d=this.components[c],e=this.components[c+1],a=a+(d.x+e.x)*(d.x*e.y-e.x*d.y),b=b+(d.y+e.y)*(d.x*e.y-e.x*d.y);c=-1*this.getArea();return new OpenLayers.Geometry.Point(a/(6*c),b/(6*c))}return null},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=\n +this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){for(var b=OpenLayers.Number.limitSigDigs,\n +c=b(a.x,14),a=b(a.y,14),d=this.components.length-1,e,f,g,h,i,j=0,k=0;k<d;++k)if(e=this.components[k],g=b(e.x,14),e=b(e.y,14),f=this.components[k+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){j=-1;break}}else{i=b((a-f)*((h-g)/(f-e))+h,14);if(i==c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){j=-1;break}i<=c||g!=h&&(i<Math.min(g,h)||i>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++j}return-1==j?1:!!(j&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==\n +a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<\n +d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=\n +this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b){c=0;for(d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}}else{c=0;for(d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);}if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,\n +[a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:!0,xy:!0,initialize:function(a){this.regExes={trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g};OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=this.getElementsByTagNameNS(a.documentElement,this.gmlns,this.featureName),b=[],c=0;c<a.length;c++){var d=this.parseFeature(a[c]);d&&b.push(d)}return b},parseFeature:function(a){for(var b="MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope".split(" "),c,d,e,f=0;f<b.length;++f)if(c=b[f],d=this.getElementsByTagNameNS(a,this.gmlns,c),0<d.length){if(e=this.parseGeometry[c.toLowerCase()])e=e.apply(this,\n +[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var g;c=this.getElementsByTagNameNS(a,this.gmlns,"Box");for(f=0;f<c.length;++f)b=c[f],d=this.parseGeometry.box.apply(this,[b]),b=b.parentNode,"boundedBy"===(b.localName||b.nodeName.split(":").pop())?g=d:e=d.toGeometry();var h;this.extractAttributes&&(h=this.parseAttributes(a));h=new OpenLayers.Feature.Vector(e,h);h.bounds=\n +g;h.gml={featureType:a.firstChild.nodeName.split(":")[1],featureNS:a.firstChild.namespaceURI,featureNSPrefix:a.firstChild.prefix};for(var a=a.firstChild,i;a&&!(1==a.nodeType&&(i=a.getAttribute("fid")||a.getAttribute("id")));)a=a.nextSibling;h.fid=i;return h},parseGeometry:{point:function(a){var b,c;c=[];b=this.getElementsByTagNameNS(a,this.gmlns,"pos");0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));0==c.length&&(b=this.getElementsByTagNameNS(a,\n +this.gmlns,"coordinates"),0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.removeSpace,""),c=c.split(",")));0==c.length&&(b=this.getElementsByTagNameNS(a,this.gmlns,"coord"),0<b.length&&(a=this.getElementsByTagNameNS(b[0],this.gmlns,"X"),b=this.getElementsByTagNameNS(b[0],this.gmlns,"Y"),0<a.length&&0<b.length&&(c=[a[0].firstChild.nodeValue,b[0].firstChild.nodeValue])));2==c.length&&(c[2]=null);return this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],\n +c[0],c[2])},multipoint:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Point"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.point.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a,b){var c,d;d=[];var e=[];c=this.getElementsByTagNameNS(a,this.gmlns,"posList");if(0<c.length){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.split(this.regExes.splitSpace);var f=parseInt(c[0].getAttribute("dimension")),\n +g,h,i;for(c=0;c<d.length/f;++c)g=c*f,h=d[g],i=d[g+1],g=2==f?null:d[g+2],this.xy?e.push(new OpenLayers.Geometry.Point(h,i,g)):e.push(new OpenLayers.Geometry.Point(i,h,g))}if(0==d.length&&(c=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),0<c.length)){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.replace(this.regExes.trimComma,",");f=d.split(this.regExes.splitSpace);for(c=0;c<f.length;++c)d=f[c].split(","),2==d.length&&(d[2]=null),this.xy?e.push(new OpenLayers.Geometry.Point(d[0],\n +d[1],d[2])):e.push(new OpenLayers.Geometry.Point(d[1],d[0],d[2]))}d=null;0!=e.length&&(d=b?new OpenLayers.Geometry.LinearRing(e):new OpenLayers.Geometry.LineString(e));return d},multilinestring:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LineString"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiLineString(b)},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LinearRing"),\n +b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d],!0]))&&b.push(c);return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Polygon"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.polygon.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPolygon(b)},envelope:function(a){var b=[],c,d,e=this.getElementsByTagNameNS(a,this.gmlns,"lowerCorner");if(0<e.length){c=\n +[];0<e.length&&(c=e[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var f=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}a=this.getElementsByTagNameNS(a,this.gmlns,"upperCorner");if(0<a.length){c=[];0<a.length&&(c=a[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var g=this.xy?new OpenLayers.Geometry.Point(c[0],\n +c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}f&&g&&(b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b=new OpenLayers.Geometry.LinearRing(b),d=new OpenLayers.Geometry.Polygon([b]));return d},box:function(a){var b=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),c=a=null;0<b.length&&(b=b[0].firstChild.nodeValue,\n +b=b.split(" "),2==b.length&&(a=b[0].split(","),c=b[1].split(",")));if(null!==a&&null!==c)return new OpenLayers.Bounds(parseFloat(a[0]),parseFloat(a[1]),parseFloat(c[0]),parseFloat(c[1]))}},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d,e;a;){if(1==a.nodeType){a=a.childNodes;for(c=0;c<a.length;++c)if(d=a[c],1==d.nodeType)if(e=d.childNodes,1==e.length){if(e=e[0],3==e.nodeType||4==e.nodeType)d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,e=e.nodeValue.replace(this.regExes.trimSpace,""),\n +b[d]=e}else b[d.nodeName.split(":").pop()]=null;break}a=a.nextSibling}return b},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName),c=0;c<a.length;c++)b.appendChild(this.createFeatureXML(a[c]));return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.geometryName);c.appendChild(b);\n +var b=this.createElementNS(this.gmlns,"gml:"+this.featureName),d=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.layerName);d.setAttribute("fid",a.fid||a.id);d.appendChild(c);for(var e in a.attributes){var c=this.createTextNode(a.attributes[e]),f=this.createElementNS(this.featureNS,this.featurePrefix+":"+e.substring(e.lastIndexOf(":")+1));f.appendChild(c);d.appendChild(f)}b.appendChild(d);return b},buildGeometryNode:function(a){this.externalProjection&&this.internalProjection&&(a=\n +a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME;return this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()].apply(this,[a])},buildGeometry:{point:function(a){var b=this.createElementNS(this.gmlns,"gml:Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPoint"),a=a.components,c,d,e=0;e<a.length;e++)c=this.createElementNS(this.gmlns,"gml:pointMember"),d=this.buildGeometry.point.apply(this,\n +[a[e]]),c.appendChild(d),b.appendChild(c);return b},linestring:function(a){var b=this.createElementNS(this.gmlns,"gml:LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiLineString"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,"gml:lineStringMember"),d=this.buildGeometry.linestring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},linearring:function(a){var b=this.createElementNS(this.gmlns,\n +"gml:LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:Polygon"),a=a.components,c,d,e=0;e<a.length;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.gmlns,"gml:"+c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPolygon"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,\n +"gml:polygonMember"),d=this.buildGeometry.polygon.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},bounds:function(a){var b=this.createElementNS(this.gmlns,"gml:Box");b.appendChild(this.buildCoordinatesNode(a));return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.gmlns,"gml:coordinates");b.setAttribute("decimal",".");b.setAttribute("cs",",");b.setAttribute("ts"," ");var c=[];if(a instanceof OpenLayers.Bounds)c.push(a.left+","+a.bottom),c.push(a.right+","+a.top);\n +else for(var a=a.components?a.components:[a],d=0;d<a.length;d++)c.push(a[d].x+","+a[d].y);c=this.createTextNode(c.join(" "));b.appendChild(c);return b},CLASS_NAME:"OpenLayers.Format.GML"});OpenLayers.Format.GML||(OpenLayers.Format.GML={});\n +OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:!0,srsName:null,xy:!0,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g,featureMember:/^(.*:)?featureMembers?$/},\n +initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.setGeometryTypes();a&&a.featureNS&&this.setNamespace("feature",a.featureNS);this.singleFeatureType=!a||typeof a.featureType==="string"},read:function(a){typeof a=="string"&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));if(a&&a.nodeType==9)a=a.documentElement;var b=[];this.readNode(a,{features:b},true);if(b.length==0){var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember");if(c.length)for(var a=\n +0,d=c.length;a<d;++a)this.readNode(c[a],{features:b},true);else{c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMembers");c.length&&this.readNode(c[0],{features:b},true)}}return b},readNode:function(a,b,c){if(c===true&&this.autoConfig===true){this.featureType=null;delete this.namespaceAlias[this.featureNS];delete this.namespaces.feature;this.featureNS=null}if(!this.featureNS&&!(a.prefix in this.namespaces)&&a.parentNode.namespaceURI==this.namespaces.gml&&this.regExes.featureMember.test(a.parentNode.nodeName)){this.featureType=\n +a.nodeName.split(":").pop();this.setNamespace("feature",a.namespaceURI);this.featureNS=a.namespaceURI;this.autoConfig=true}return OpenLayers.Format.XML.prototype.readNode.apply(this,[a,b])},readers:{gml:{featureMember:function(a,b){this.readChildNodes(a,b)},featureMembers:function(a,b){this.readChildNodes(a,b)},name:function(a,b){b.name=this.getChildValue(a)},boundedBy:function(a,b){var c={};this.readChildNodes(a,c);if(c.components&&c.components.length>0)b.bounds=c.components[0]},Point:function(a,\n +b){var c={points:[]};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(c.points[0])},coordinates:function(a,b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace),d,e=c.length,f=Array(e),g=0;g<e;++g){d=c[g].split(",");f[g]=this.xy?new OpenLayers.Geometry.Point(d[0],d[1],d[2]):new OpenLayers.Geometry.Point(d[1],d[0],d[2])}b.points=f},coord:function(a,b){var c={};this.readChildNodes(a,\n +c);if(!b.points)b.points=[];b.points.push(new OpenLayers.Geometry.Point(c.x,c.y,c.z))},X:function(a,b){b.x=this.getChildValue(a)},Y:function(a,b){b.y=this.getChildValue(a)},Z:function(a,b){b.z=this.getChildValue(a)},MultiPoint:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPoint(c.components)]},pointMember:function(a,b){this.readChildNodes(a,b)},LineString:function(a,b){var c={};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.LineString(c.points))},\n +MultiLineString:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiLineString(c.components)]},lineStringMember:function(a,b){this.readChildNodes(a,b)},Polygon:function(a,b){var c={outer:null,inner:[]};this.readChildNodes(a,c);c.inner.unshift(c.outer);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.Polygon(c.inner))},LinearRing:function(a,b){var c={};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.LinearRing(c.points)]},\n +MultiPolygon:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)]},polygonMember:function(a,b){this.readChildNodes(a,b)},GeometryCollection:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.Collection(c.components)]},geometryMember:function(a,b){this.readChildNodes(a,b)}},feature:{"*":function(a,b){var c,d=a.localName||a.nodeName.split(":").pop();b.features?!this.singleFeatureType&&\n +OpenLayers.Util.indexOf(this.featureType,d)!==-1?c="_typeName":d===this.featureType&&(c="_typeName"):a.childNodes.length==0||a.childNodes.length==1&&a.firstChild.nodeType==3?this.extractAttributes&&(c="_attribute"):c="_geometry";c&&this.readers.feature[c].apply(this,[a,b])},_typeName:function(a,b){var c={components:[],attributes:{}};this.readChildNodes(a,c);if(c.name)c.attributes.name=c.name;var d=new OpenLayers.Feature.Vector(c.components[0],c.attributes);if(!this.singleFeatureType){d.type=a.nodeName.split(":").pop();\n +d.namespace=a.namespaceURI}var e=a.getAttribute("fid")||this.getAttributeNS(a,this.namespaces.gml,"id");if(e)d.fid=e;this.internalProjection&&(this.externalProjection&&d.geometry)&&d.geometry.transform(this.externalProjection,this.internalProjection);if(c.bounds)d.bounds=c.bounds;b.features.push(d)},_geometry:function(a,b){if(!this.geometryName)this.geometryName=a.nodeName.split(":").pop();this.readChildNodes(a,b)},_attribute:function(a,b){var c=a.localName||a.nodeName.split(":").pop(),d=this.getChildValue(a);\n +b.attributes[c]=d}},wfs:{FeatureCollection:function(a,b){this.readChildNodes(a,b)}}},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:{featureMember:function(a){var b=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",a,b);return b},MultiPoint:function(a){for(var b=\n +this.createElementNSPlus("gml:MultiPoint"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("pointMember",a[c],b);return b},pointMember:function(a){var b=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",a,b);return b},MultiLineString:function(a){for(var b=this.createElementNSPlus("gml:MultiLineString"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("lineStringMember",a[c],b);return b},lineStringMember:function(a){var b=this.createElementNSPlus("gml:lineStringMember");\n +this.writeNode("LineString",a,b);return b},MultiPolygon:function(a){for(var b=this.createElementNSPlus("gml:MultiPolygon"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("polygonMember",a[c],b);return b},polygonMember:function(a){var b=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",a,b);return b},GeometryCollection:function(a){for(var b=this.createElementNSPlus("gml:GeometryCollection"),c=0,d=a.components.length;c<d;++c)this.writeNode("geometryMember",a.components[c],\n +b);return b},geometryMember:function(a){var b=this.createElementNSPlus("gml:geometryMember"),a=this.writeNode("feature:_geometry",a);b.appendChild(a.firstChild);return b}},feature:{_typeName:function(a){var b=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:a.fid}});a.geometry&&this.writeNode("feature:_geometry",a.geometry,b);for(var c in a.attributes){var d=a.attributes[c];d!=null&&this.writeNode("feature:_attribute",{name:c,value:d},b)}return b},_geometry:function(a){this.externalProjection&&\n +this.internalProjection&&(a=a.clone().transform(this.internalProjection,this.externalProjection));var b=this.createElementNSPlus("feature:"+this.geometryName),a=this.writeNode("gml:"+this.geometryTypes[a.CLASS_NAME],a,b);this.srsName&&a.setAttribute("srsName",this.srsName);return b},_attribute:function(a){return this.createElementNSPlus("feature:"+a.name,{value:a.value})}},wfs:{FeatureCollection:function(a){for(var b=this.createElementNSPlus("wfs:FeatureCollection"),c=0,d=a.length;c<d;++c)this.writeNode("gml:featureMember",\n +a[c],b);return b}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:!1,multiCurve:!0,surface:!1,multiSurface:!0,initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a,b){this.readChildNodes(a,b)},Curve:function(a,b){var c={points:[]};this.readChildNodes(a,c);b.components||\n +(b.components=[]);b.components.push(new OpenLayers.Geometry.LineString(c.points))},segments:function(a,b){this.readChildNodes(a,b)},LineStringSegment:function(a,b){var c={};this.readChildNodes(a,c);c.points&&Array.prototype.push.apply(b.points,c.points)},pos:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),c=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2]);b.points=[c]},posList:function(a,\n +b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),d=parseInt(a.getAttribute("dimension"))||2,e,f,g,h=Array(c.length/d),i=0,j=c.length;i<j;i+=d)e=c[i],f=c[i+1],g=2==d?void 0:c[i+2],h[i/d]=this.xy?new OpenLayers.Geometry.Point(e,f,g):new OpenLayers.Geometry.Point(f,e,g);b.points=h},Surface:function(a,b){this.readChildNodes(a,b)},patches:function(a,b){this.readChildNodes(a,b)},PolygonPatch:function(a,b){this.readers.gml.Polygon.apply(this,[a,b])},exterior:function(a,\n +b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},interior:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},MultiCurve:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiLineString(c.components)])},curveMember:function(a,b){this.readChildNodes(a,b)},MultiSurface:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)])},\n +surfaceMember:function(a,b){this.readChildNodes(a,b)},surfaceMembers:function(a,b){this.readChildNodes(a,b)},pointMembers:function(a,b){this.readChildNodes(a,b)},lineStringMembers:function(a,b){this.readChildNodes(a,b)},polygonMembers:function(a,b){this.readChildNodes(a,b)},geometryMembers:function(a,b){this.readChildNodes(a,b)},Envelope:function(a,b){var c={points:Array(2)};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,\n +d.y,c.x,c.y))},lowerCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[0]=c.points[0]},upperCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[1]=c.points[0]}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,\n +this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a){for(var b=this.createElementNSPlus("gml:featureMembers"),c=0,d=a.length;c<d;++c)this.writeNode("feature:_typeName",a[c],b);return b},Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("pos",a,b);return b},pos:function(a){return this.createElementNSPlus("gml:pos",{value:this.xy?a.x+\n +" "+a.y:a.y+" "+a.x})},LineString:function(a){var b=this.createElementNSPlus("gml:LineString");this.writeNode("posList",a.components,b);return b},Curve:function(a){var b=this.createElementNSPlus("gml:Curve");this.writeNode("segments",a,b);return b},segments:function(a){var b=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",a,b);return b},LineStringSegment:function(a){var b=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",a.components,b);return b},\n +posList:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+" "+d.y:d.y+" "+d.x;return this.createElementNSPlus("gml:posList",{value:c.join(" ")})},Surface:function(a){var b=this.createElementNSPlus("gml:Surface");this.writeNode("patches",a,b);return b},patches:function(a){var b=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",a,b);return b},PolygonPatch:function(a){var b=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});\n +this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},exterior:function(a){var b=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",a,b);return b},interior:function(a){var b=this.createElementNSPlus("gml:interior");\n +this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",a.components,b);return b},MultiCurve:function(a){for(var b=this.createElementNSPlus("gml:MultiCurve"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("curveMember",a[c],b);return b},curveMember:function(a){var b=this.createElementNSPlus("gml:curveMember");this.curve?this.writeNode("Curve",a,b):this.writeNode("LineString",a,b);return b},MultiSurface:function(a){for(var b=\n +this.createElementNSPlus("gml:MultiSurface"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("surfaceMember",a[c],b);return b},surfaceMember:function(a){var b=this.createElementNSPlus("gml:surfaceMember");this.surface?this.writeNode("Surface",a,b):this.writeNode("Polygon",a,b);return b},Envelope:function(a){var b=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",a,b);this.writeNode("upperCorner",a,b);this.srsName&&b.setAttribute("srsName",this.srsName);return b},lowerCorner:function(a){return this.createElementNSPlus("gml:lowerCorner",\n +{value:this.xy?a.left+" "+a.bottom:a.bottom+" "+a.left})},upperCorner:function(a){return this.createElementNSPlus("gml:upperCorner",{value:this.xy?a.right+" "+a.top:a.top+" "+a.right})}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":!0===\n +this.curve?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":!1===this.multiCurve?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":!0===this.surface?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":!1===this.multiSurface?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,\n +c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escapeChar");c.value2regex(d,e,\n +f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,feature:OpenLayers.Format.GML.v3.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",\n +{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{matchCase:a.matchCase,wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Envelope",\n +a.value);a.projection&&c.setAttribute("srsName",a.projection);b.appendChild(c);return b},SortBy:function(a){for(var b=this.createElementNSPlus("ogc:SortBy"),c=0,d=a.length;c<d;c++)this.writeNode("ogc:SortProperty",a[c],b);return b},SortProperty:function(a){var b=this.createElementNSPlus("ogc:SortProperty");this.writeNode("ogc:PropertyName",a,b);this.writeNode("ogc:SortOrder","DESC"==a.order?"DESC":"ASC",b);return b},SortOrder:function(a){return this.createElementNSPlus("ogc:SortOrder",{value:a})}},\n +OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature},writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Envelope",a.value);a.projection&&\n +d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(a){var b=this.version;b||((a=a.getAttribute("xmlns:ows"))&&"1.1"===a.substring(a.lastIndexOf("/")+1)&&(b="1.1.0"),b||(b=this.defaultVersion));return b},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{ows:{Exception:function(a,b){var c={code:a.getAttribute("exceptionCode"),locator:a.getAttribute("locator"),texts:[]};b.exceptions.push(c);this.readChildNodes(a,c)},ExceptionText:function(a,b){var c=this.getChildValue(a);b.texts.push(c)},\n +ServiceIdentification:function(a,b){b.serviceIdentification={};this.readChildNodes(a,b.serviceIdentification)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},Keywords:function(a,b){b.keywords={};this.readChildNodes(a,b.keywords)},Keyword:function(a,b){b[this.getChildValue(a)]=!0},ServiceType:function(a,b){b.serviceType={codeSpace:a.getAttribute("codeSpace"),value:this.getChildValue(a)}},ServiceTypeVersion:function(a,b){b.serviceTypeVersion=\n +this.getChildValue(a)},Fees:function(a,b){b.fees=this.getChildValue(a)},AccessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ServiceProvider:function(a,b){b.serviceProvider={};this.readChildNodes(a,b.serviceProvider)},ProviderName:function(a,b){b.providerName=this.getChildValue(a)},ProviderSite:function(a,b){b.providerSite=this.getAttributeNS(a,this.namespaces.xlink,"href")},ServiceContact:function(a,b){b.serviceContact={};this.readChildNodes(a,b.serviceContact)},IndividualName:function(a,\n +b){b.individualName=this.getChildValue(a)},PositionName:function(a,b){b.positionName=this.getChildValue(a)},ContactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,b.contactInfo)},Phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},Voice:function(a,b){b.voice=this.getChildValue(a)},Address:function(a,b){b.address={};this.readChildNodes(a,b.address)},DeliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},AdministrativeArea:function(a,\n +b){b.administrativeArea=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ElectronicMailAddress:function(a,b){b.electronicMailAddress=this.getChildValue(a)},Role:function(a,b){b.role=this.getChildValue(a)},OperationsMetadata:function(a,b){b.operationsMetadata={};this.readChildNodes(a,b.operationsMetadata)},Operation:function(a,b){var c=a.getAttribute("name");b[c]={};this.readChildNodes(a,b[c])},DCP:function(a,\n +b){b.dcp={};this.readChildNodes(a,b.dcp)},HTTP:function(a,b){b.http={};this.readChildNodes(a,b.http)},Get:function(a,b){b.get||(b.get=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.get.push(c)},Post:function(a,b){b.post||(b.post=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.post.push(c)},Parameter:function(a,b){b.parameters||(b.parameters={});var c=a.getAttribute("name");b.parameters[c]={};this.readChildNodes(a,\n +b.parameters[c])},Constraint:function(a,b){b.constraints||(b.constraints={});var c=a.getAttribute("name");b.constraints[c]={};this.readChildNodes(a,b.constraints[c])},Value:function(a,b){b[this.getChildValue(a)]=!0},OutputFormat:function(a,b){b.formats.push({value:this.getChildValue(a)});this.readChildNodes(a,b)},WGS84BoundingBox:function(a,b){var c={};c.crs=a.getAttribute("crs");b.BoundingBox?b.BoundingBox.push(c):(b.projection=c.crs,c=b);this.readChildNodes(a,c)},BoundingBox:function(a,b){this.readers.ows.WGS84BoundingBox.apply(this,\n +[a,b])},LowerCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.left=c[0];b.bottom=c[1]},UpperCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.right=c[0];b.top=c[1];b.bounds=new OpenLayers.Bounds(b.left,b.bottom,b.right,b.top);delete b.left;delete b.bottom;delete b.right;delete b.top},\n +Language:function(a,b){b.language=this.getChildValue(a)}}},writers:{ows:{BoundingBox:function(a){var b=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:a.projection}});this.writeNode("ows:LowerCorner",a,b);this.writeNode("ows:UpperCorner",a,b);return b},LowerCorner:function(a){return this.createElementNSPlus("ows:LowerCorner",{value:a.bounds.left+" "+a.bounds.bottom})},UpperCorner:function(a){return this.createElementNSPlus("ows:UpperCorner",{value:a.bounds.right+" "+a.bounds.top})},Identifier:function(a){return this.createElementNSPlus("ows:Identifier",\n +{value:a})},Title:function(a){return this.createElementNSPlus("ows:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("ows:Abstract",{value:a})},OutputFormat:function(a){return this.createElementNSPlus("ows:OutputFormat",{value:a})}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.success=!1;b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("language"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Format.OWSCommon.v1.prototype.writers.ows},\n +CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v3.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,\n +b){b.numberOfFeatures=parseInt(a.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers.wfs.FeatureCollection.apply(this,arguments)},TransactionResponse:function(a,b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},TransactionSummary:function(a,b){b.success=!0},InsertResults:function(a,b){this.readChildNodes(a,b)},Feature:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,\n +feature:OpenLayers.Format.GML.v3.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.readers.ogc,ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows},writers:{wfs:OpenLayers.Util.applyDefaults({GetFeature:function(a){var b=OpenLayers.Format.WFST.v1.prototype.writers.wfs.GetFeature.apply(this,arguments);a&&this.setAttributes(b,{resultType:a.resultType,startIndex:a.startIndex,count:a.count});return b},Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,\n +featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType,srsName:a.srsName}});a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<d;b++)this.writeNode("wfs:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this,a.filter),this.writeNode("ogc:Filter",\n +a.filter,c));return c},PropertyName:function(a){return this.createElementNSPlus("wfs:PropertyName",{value:a.property})}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},\n +update:function(){},"delete":function(){},commit:function(){},abort:function(){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});\n +OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||!("function"==typeof JSON.parse&&"function"==typeof JSON.stringify))}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\\],:{}\\s]*$/.test(a.replace(/\\\\["\\\\\\/bfnrtu]/g,"@").replace(/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,"]").replace(/(?:^|:|,)(?:\\s*\\[)+/g,""))&&(c=eval("("+a+")"),"function"===\n +typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);\n +return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,\n +[a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),\n +"]");return c.join("")},string:function(a){var b={"\\u0008":"\\\\b","\\t":"\\\\t","\\n":"\\\\n","\\u000c":"\\\\f","\\r":"\\\\r",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\"};return/["\\\\\\x00-\\x1f]/.test(a)?\'"\'+a.replace(/([\\x00-\\x1f\\\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+\'"\':\'"\'+a+\'"\'},number:function(a){return isFinite(a)?""+a:"null"},"boolean":function(a){return""+a},date:function(a){function b(a){return 10>a?"0"+a:a}return\'"\'+a.getFullYear()+"-"+\n +b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+\'"\'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:!1,read:function(a,b,c){var b=b?b:"FeatureCollection",d=null,e=null;if(e="string"==typeof a?OpenLayers.Format.JSON.prototype.read.apply(this,[a,c]):a)if("string"!=typeof e.type)OpenLayers.Console.error("Bad GeoJSON - no type: "+a);else{if(this.isValidType(e,b))switch(b){case "Geometry":try{d=this.parseGeometry(e)}catch(f){OpenLayers.Console.error(f)}break;case "Feature":try{d=this.parseFeature(e),d.type="Feature"}catch(g){OpenLayers.Console.error(g)}break;\n +case "FeatureCollection":switch(d=[],e.type){case "Feature":try{d.push(this.parseFeature(e))}catch(h){d=null,OpenLayers.Console.error(h)}break;case "FeatureCollection":a=0;for(b=e.features.length;a<b;++a)try{d.push(this.parseFeature(e.features[a]))}catch(i){d=null,OpenLayers.Console.error(i)}break;default:try{var j=this.parseGeometry(e);d.push(new OpenLayers.Feature.Vector(j))}catch(k){d=null,OpenLayers.Console.error(k)}}}}else OpenLayers.Console.error("Bad JSON: "+a);return d},isValidType:function(a,\n +b){var c=!1;switch(b){case "Geometry":-1==OpenLayers.Util.indexOf("Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection".split(" "),a.type)?OpenLayers.Console.error("Unsupported geometry type: "+a.type):c=!0;break;case "FeatureCollection":c=!0;break;default:a.type==b?c=!0:OpenLayers.Console.error("Cannot convert types from "+a.type+" to "+b)}return c},parseFeature:function(a){var b,c,d;c=a.properties?a.properties:{};d=a.geometry&&a.geometry.bbox||a.bbox;try{b=this.parseGeometry(a.geometry)}catch(e){throw e;\n +}b=new OpenLayers.Feature.Vector(b,c);d&&(b.bounds=OpenLayers.Bounds.fromArray(d));a.id&&(b.fid=a.id);return b},parseGeometry:function(a){if(null==a)return null;var b,c=!1;if("GeometryCollection"==a.type){if(!OpenLayers.Util.isArray(a.geometries))throw"GeometryCollection must have geometries array: "+a;b=a.geometries.length;for(var c=Array(b),d=0;d<b;++d)c[d]=this.parseGeometry.apply(this,[a.geometries[d]]);b=new OpenLayers.Geometry.Collection(c);c=!0}else{if(!OpenLayers.Util.isArray(a.coordinates))throw"Geometry must have coordinates array: "+\n +a;if(!this.parseCoords[a.type.toLowerCase()])throw"Unsupported geometry type: "+a.type;try{b=this.parseCoords[a.type.toLowerCase()].apply(this,[a.coordinates])}catch(e){throw e;}}this.internalProjection&&(this.externalProjection&&!c)&&b.transform(this.externalProjection,this.internalProjection);return b},parseCoords:{point:function(a){if(!1==this.ignoreExtraDims&&2!=a.length)throw"Only 2D points are supported: "+a;return new OpenLayers.Geometry.Point(a[0],a[1])},multipoint:function(a){for(var b=[],\n +c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.LineString(b)},multilinestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.linestring.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiLineString(b)},\n +polygon:function(a){for(var b=[],c,d,e=0,f=a.length;e<f;++e){try{d=this.parseCoords.linestring.apply(this,[a[e]])}catch(g){throw g;}c=new OpenLayers.Geometry.LinearRing(d.components);b.push(c)}return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.polygon.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPolygon(b)},box:function(a){if(2!=a.length)throw"GeoJSON box coordinates must have 2 elements";\n +return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(a[0][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[0][1])])])}},write:function(a,b){var c={type:null};if(OpenLayers.Util.isArray(a)){c.type="FeatureCollection";var d=a.length;c.features=Array(d);for(var e=0;e<d;++e){var f=a[e];if(!f instanceof OpenLayers.Feature.Vector)throw"FeatureCollection only supports collections of features: "+\n +f;c.features[e]=this.extract.feature.apply(this,[f])}}else 0==a.CLASS_NAME.indexOf("OpenLayers.Geometry")?c=this.extract.geometry.apply(this,[a]):a instanceof OpenLayers.Feature.Vector&&(c=this.extract.feature.apply(this,[a]),a.layer&&a.layer.projection&&(c.crs=this.createCRSObject(a)));return OpenLayers.Format.JSON.prototype.write.apply(this,[c,b])},createCRSObject:function(a){var a=a.layer.projection.toString(),b={};a.match(/epsg:/i)&&(a=parseInt(a.substring(a.indexOf(":")+1)),b=4326==a?{type:"name",\n +properties:{name:"urn:ogc:def:crs:OGC:1.3:CRS84"}}:{type:"name",properties:{name:"EPSG:"+a}});return b},extract:{feature:function(a){var b=this.extract.geometry.apply(this,[a.geometry]),b={type:"Feature",properties:a.attributes,geometry:b};null!=a.fid&&(b.id=a.fid);return b},geometry:function(a){if(null==a)return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME.split(".")[2],a=this.extract[b.toLowerCase()].apply(this,\n +[a]);return"Collection"==b?{type:"GeometryCollection",geometries:a}:{type:b,coordinates:a}},point:function(a){return[a.x,a.y]},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,\n +[a.components[c]]));return b},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,[a.components[c]]));return b},multipolygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.polygon.apply(this,[a.components[c]]));return b},collection:function(a){for(var b=a.components.length,c=Array(b),d=0;d<b;++d)c[d]=this.extract.geometry.apply(this,[a.components[d]]);return c}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Protocol.Script=OpenLayers.Class(OpenLayers.Protocol,{url:null,params:null,callback:null,callbackTemplate:"OpenLayers.Protocol.Script.registry.${id}",callbackKey:"callback",callbackPrefix:"",scope:null,format:null,pendingRequests:null,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.pendingRequests={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);this.format||(this.format=new OpenLayers.Format.GeoJSON);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=\n +new OpenLayers.Format.QueryStringFilter({srsInBBOX:this.srsInBBOX});this.filterToParams=function(a,d){return b.write(a,d)}}},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.applyDefaults(a,this.options);a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.createRequest(a.url,a.params,OpenLayers.Function.bind(function(c){b.data=\n +c;this.handleRead(b,a)},this));b.priv=c;return b},createRequest:function(a,b,c){var c=OpenLayers.Protocol.Script.register(c),d=OpenLayers.String.format(this.callbackTemplate,{id:c}),b=OpenLayers.Util.extend({},b);b[this.callbackKey]=this.callbackPrefix+d;a=OpenLayers.Util.urlAppend(a,OpenLayers.Util.getParameterString(b));b=document.createElement("script");b.type="text/javascript";b.src=a;b.id="OpenLayers_Protocol_Script_"+c;this.pendingRequests[b.id]=b;document.getElementsByTagName("head")[0].appendChild(b);\n +return b},destroyRequest:function(a){OpenLayers.Protocol.Script.unregister(a.id.split("_").pop());delete this.pendingRequests[a.id];a.parentNode&&a.parentNode.removeChild(a)},handleRead:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){b.callback&&(a.data?(a.features=this.parseFeatures(a.data),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,this.destroyRequest(a.priv),b.callback.call(b.scope,a))},parseFeatures:function(a){return this.format.read(a)},\n +abort:function(a){if(a)this.destroyRequest(a.priv);else for(var b in this.pendingRequests)this.destroyRequest(this.pendingRequests[b])},destroy:function(){this.abort();delete this.params;delete this.format;OpenLayers.Protocol.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Protocol.Script"});(function(){var a=OpenLayers.Protocol.Script,b=0;a.registry={};a.register=function(c){var d="c"+ ++b;a.registry[d]=function(){c.apply(this,arguments)};return d};a.unregister=function(b){delete a.registry[b]}})();OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:!0,defaultControl:null,saveState:!1,allowDepress:!1,activeState:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.controls=[];this.activeState={}},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var a,b=this.controls.length-1;0<=b;b--)a=this.controls[b],a.events&&\n +a.events.un({activate:this.iconOn,deactivate:this.iconOff}),a.panel_div=null;this.activeState=null},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var a,b=0,c=this.controls.length;b<c;b++)a=this.controls[b],(a===this.defaultControl||this.saveState&&this.activeState[a.id])&&a.activate();!0===this.saveState&&(this.defaultControl=null);this.redraw();return!0}return!1},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){for(var a,\n +b=0,c=this.controls.length;b<c;b++)a=this.controls[b],this.activeState[a.id]=a.deactivate();this.redraw();return!0}return!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick);this.addControlsToMap(this.controls);return this.div},redraw:function(){for(var a=this.div.childNodes.length-1;0<=a;a--)this.div.removeChild(this.div.childNodes[a]);\n +this.div.innerHTML="";if(this.active)for(var a=0,b=this.controls.length;a<b;a++)this.div.appendChild(this.controls[a].panel_div)},activateControl:function(a){if(!this.active)return!1;if(a.type==OpenLayers.Control.TYPE_BUTTON)a.trigger();else if(a.type==OpenLayers.Control.TYPE_TOGGLE)a.active?a.deactivate():a.activate();else if(this.allowDepress&&a.active)a.deactivate();else{for(var b,c=0,d=this.controls.length;c<d;c++)b=this.controls[c],b!=a&&(b.type===OpenLayers.Control.TYPE_TOOL||null==b.type)&&\n +b.deactivate();a.activate()}},addControls:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.controls=this.controls.concat(a);for(var b=0,c=a.length;b<c;b++){var d=a[b],e=this.createControlMarkup(d);OpenLayers.Element.addClass(e,d.displayClass+"ItemInactive");OpenLayers.Element.addClass(e,"olButton");""!=d.title&&!e.title&&(e.title=d.title);d.panel_div=e}this.map&&(this.addControlsToMap(a),this.redraw())},createControlMarkup:function(){return document.createElement("div")},addControlsToMap:function(a){for(var b,\n +c=0,d=a.length;c<d;c++)b=a[c],!0===b.autoActivate?(b.autoActivate=!1,this.map.addControl(b),b.autoActivate=!0):(this.map.addControl(b),b.deactivate()),b.events.on({activate:this.iconOn,deactivate:this.iconOff})},iconOn:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\\\b("+this.displayClass+"Item)Inactive\\\\b"),"$1Active")},iconOff:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\\\b("+this.displayClass+"Item)Active\\\\b"),"$1Inactive")},onButtonClick:function(a){for(var b=\n +this.controls,a=a.buttonElement,c=b.length-1;0<=c;--c)if(b[c].panel_div===a){this.activateControl(b[c]);break}},getControlsBy:function(a,b){var c="function"==typeof b.test;return OpenLayers.Array.filter(this.controls,function(d){return d[a]==b||c&&b.test(d[a])})},getControlsByName:function(a){return this.getControlsBy("name",a)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomIn()},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomOut()},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map&&this.map.zoomToMaxExtent()},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.ZoomIn,new OpenLayers.Control.ZoomToMaxExtent,new OpenLayers.Control.ZoomOut])},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:!1,initialize:function(a,b,c,d){OpenLayers.Layer.prototype.initialize.apply(this,[a,d]);this.url=b;this.params||(this.params=OpenLayers.Util.extend({},c))},destroy:function(){this.params=this.url=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions()));\n +return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=OpenLayers.Util.extend(this.params,a);a=this.redraw();null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});return a},redraw:function(a){return a?this.mergeNewParams({_olSalt:Math.random()}):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c*=a.charCodeAt(d)*this.URL_HASH_FACTOR,\n +c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){var c=b||this.url,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);return OpenLayers.Util.urlAppend(c,e)},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Tile=OpenLayers.Class({events:null,eventListeners:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:!1,initialize:function(a,b,c,d,e,f){this.layer=a;this.position=b.clone();this.setBounds(c);this.url=d;e&&(this.size=e.clone());this.id=OpenLayers.Util.createUniqueID("Tile_");OpenLayers.Util.extend(this,f);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners)},unload:function(){this.isLoading&&(this.isLoading=\n +!1,this.events.triggerEvent("unload"))},destroy:function(){this.position=this.size=this.bounds=this.layer=null;this.eventListeners&&this.events.un(this.eventListeners);this.events.destroy();this.events=this.eventListeners=null},draw:function(a){a||this.clear();var b=this.shouldDraw();b&&!a&&(b=!1!==this.events.triggerEvent("beforedraw"));return b},shouldDraw:function(){var a=!1,b=this.layer.maxExtent;if(b){var c=this.layer.map,c=c.baseLayer.wrapDateLine&&c.getMaxExtent();this.bounds.intersectsBounds(b,\n +{inclusive:!1,worldBounds:c})&&(a=!0)}return a||this.layer.displayOutsideMaxExtent},setBounds:function(a){a=a.clone();if(this.layer.map.baseLayer.wrapDateLine)var b=this.layer.map.getMaxExtent(),c=this.layer.map.getResolution(),a=a.wrapDateLine(b,{leftTolerance:c,rightTolerance:c});this.bounds=a},moveTo:function(a,b,c){null==c&&(c=!0);this.setBounds(a);this.position=b.clone();c&&this.draw()},clear:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,imageReloadAttempts:null,layerAlphaHack:null,asyncRequestId:null,blankImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7",maxGetUrlLength:null,canvasContext:null,crossOriginKeyword:null,initialize:function(a,b,c,d,e,f){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=d;this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();if(null!=this.maxGetUrlLength||\n +this.layer.gutter||this.layerAlphaHack)this.frame=document.createElement("div"),this.frame.style.position="absolute",this.frame.style.overflow="hidden";null!=this.maxGetUrlLength&&OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame)},destroy:function(){this.imgDiv&&(this.clear(),this.frame=this.imgDiv=null);this.asyncRequestId=null;OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);a?(this.layer!=this.layer.map.baseLayer&&\n +this.la + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +yer.reproject&&(this.bounds=this.getBoundsFromBaseLayer(this.position)),this.isLoading?this._loadEvent="reload":(this.isLoading=!0,this._loadEvent="loadstart"),this.positionTile(),this.renderTile()):this.unload();return a},renderTile:function(){this.layer.div.appendChild(this.getTile());if(this.layer.async){var a=this.asyncRequestId=(this.asyncRequestId||0)+1;this.layer.getURLasync(this.bounds,function(b){a==this.asyncRequestId&&(this.url=b,this.initImage())},this)}else this.url=this.layer.getURL(this.bounds),\n +this.initImage()},positionTile:function(){var a=this.getTile().style,b=this.frame?this.size:this.layer.getImageSize(this.bounds);a.left=this.position.x+"%";a.top=this.position.y+"%";a.width=b.w+"%";a.height=b.h+"%"},clear:function(){OpenLayers.Tile.prototype.clear.apply(this,arguments);var a=this.imgDiv;if(a){OpenLayers.Event.stopObservingElement(a);var b=this.getTile();b.parentNode===this.layer.div&&this.layer.div.removeChild(b);this.setImgSrc();!0===this.layerAlphaHack&&(a.style.filter="");OpenLayers.Element.removeClass(a,\n +"olImageLoadError")}this.canvasContext=null},getImage:function(){if(!this.imgDiv){this.imgDiv=document.createElement("img");this.imgDiv.className="olTileImage";this.imgDiv.galleryImg="no";var a=this.imgDiv.style;if(this.frame){var b=0,c=0;this.layer.gutter&&(b=100*(this.layer.gutter/this.layer.tileSize.w),c=100*(this.layer.gutter/this.layer.tileSize.h));a.left=-b+"%";a.top=-c+"%";a.width=2*b+100+"%";a.height=2*c+100+"%"}a.visibility="hidden";a.opacity=0;1>this.layer.opacity&&(a.filter="alpha(opacity="+\n +100*this.layer.opacity+")");a.position="absolute";this.layerAlphaHack&&(a.paddingTop=a.height,a.height="0",a.width="100%");this.frame&&this.frame.appendChild(this.imgDiv)}return this.imgDiv},initImage:function(){this.events.triggerEvent(this._loadEvent);var a=this.getImage();if(this.url&&a.getAttribute("src")==this.url)this.onImageLoad();else{var b=OpenLayers.Function.bind(function(){OpenLayers.Event.stopObservingElement(a);OpenLayers.Event.observe(a,"load",OpenLayers.Function.bind(this.onImageLoad,\n +this));OpenLayers.Event.observe(a,"error",OpenLayers.Function.bind(this.onImageError,this));this.imageReloadAttempts=0;this.setImgSrc(this.url)},this);a.getAttribute("src")==this.blankImageUrl?b():(OpenLayers.Event.observe(a,"load",b),OpenLayers.Event.observe(a,"error",b),this.crossOriginKeyword&&a.removeAttribute("crossorigin"),a.src=this.blankImageUrl)}},setImgSrc:function(a){var b=this.imgDiv;b.style.visibility="hidden";b.style.opacity=0;a&&(this.crossOriginKeyword&&("data:"!==a.substr(0,5)?b.setAttribute("crossorigin",\n +this.crossOriginKeyword):b.removeAttribute("crossorigin")),b.src=a)},getTile:function(){return this.frame?this.frame:this.getImage()},createBackBuffer:function(){if(this.imgDiv&&!this.isLoading){var a;this.frame?(a=this.frame.cloneNode(!1),a.appendChild(this.imgDiv)):a=this.imgDiv;this.imgDiv=null;return a}},onImageLoad:function(){var a=this.imgDiv;OpenLayers.Event.stopObservingElement(a);a.style.visibility="inherit";a.style.opacity=this.layer.opacity;this.isLoading=!1;this.canvasContext=null;this.events.triggerEvent("loadend");\n +if(7>parseFloat(navigator.appVersion.split("MSIE")[1])&&this.layer&&this.layer.div){var b=document.createElement("span");b.style.display="none";var c=this.layer.div;c.appendChild(b);window.setTimeout(function(){b.parentNode===c&&b.parentNode.removeChild(b)},0)}!0===this.layerAlphaHack&&(a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+a.src+"\', sizingMethod=\'scale\')")},onImageError:function(){var a=this.imgDiv;null!=a.src&&(this.imageReloadAttempts++,this.imageReloadAttempts<=\n +OpenLayers.IMAGE_RELOAD_ATTEMPTS?this.setImgSrc(this.layer.getURL(this.bounds)):(OpenLayers.Element.addClass(a,"olImageLoadError"),this.events.triggerEvent("loaderror"),this.onImageLoad()))},getCanvasContext:function(){if(OpenLayers.CANVAS_SUPPORTED&&this.imgDiv&&!this.isLoading){if(!this.canvasContext){var a=document.createElement("canvas");a.width=this.size.w;a.height=this.size.h;this.canvasContext=a.getContext("2d");this.canvasContext.drawImage(this.imgDiv,0,0)}return this.canvasContext}},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,tileClass:OpenLayers.Tile.Image,grid:null,singleTile:!1,ratio:1.5,buffer:0,transitionEffect:null,numLoadingTiles:0,tileLoadingDelay:85,serverResolutions:null,moveTimerId:null,deferMoveGriddedTiles:null,tileQueueId:null,tileQueue:null,loading:!1,backBuffer:null,gridResolution:null,backBufferResolution:null,backBufferLonLat:null,backBufferTimerId:null,removeBackBufferDelay:null,\n +className:null,initialize:function(a,b,c,d){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.grid=[];this.tileQueue=[];null===this.removeBackBufferDelay&&(this.removeBackBufferDelay=this.singleTile?0:2500);null===this.className&&(this.className=this.singleTile?"olLayerGridSingleTile":"olLayerGrid");OpenLayers.Animation.isNative||(this.deferMoveGriddedTiles=OpenLayers.Function.bind(function(){this.moveGriddedTiles(true);this.moveTimerId=null},this))},setMap:function(a){OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this,\n +a);OpenLayers.Element.addClass(this.div,this.className)},removeMap:function(){null!==this.moveTimerId&&(window.clearTimeout(this.moveTimerId),this.moveTimerId=null);this.clearTileQueue();null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null)},destroy:function(){this.removeBackBuffer();this.clearGrid();this.tileSize=this.grid=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){this.clearTileQueue();if(this.grid){for(var a=\n +0,b=this.grid.length;a<b;a++)for(var c=this.grid[a],d=0,e=c.length;d<e;d++)this.destroyTile(c[d]);this.grid=[];this.gridResolution=null}},clone:function(a){null==a&&(a=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];a.gridResolution=null;a.backBuffer=null;a.backBufferTimerId=null;a.tileQueue=[];a.tileQueueId=null;a.loading=!1;a.moveTimerId=null;\n +return a},moveTo:function(a,b,c){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);a=a||this.map.getExtent();if(null!=a){var d=!this.grid.length||b,e=this.getTilesBounds(),f=this.map.getResolution(),g=this.getServerResolution(f);if(this.singleTile){if(d||!c&&!e.containsBounds(a))b&&"resize"!==this.transitionEffect&&this.removeBackBuffer(),(!b||"resize"===this.transitionEffect)&&this.applyBackBuffer(g),this.initSingleTile(a)}else(d=d||!e.intersectsBounds(a,{worldBounds:this.map.baseLayer.wrapDateLine&&\n +this.map.getMaxExtent()}),f!==g?(a=this.map.calculateBounds(null,g),d&&this.transformDiv(g/f)):(this.div.style.width="100%",this.div.style.height="100%",this.div.style.left="0%",this.div.style.top="0%"),d)?(b&&"resize"===this.transitionEffect&&this.applyBackBuffer(g),this.initGriddedTiles(a)):this.moveGriddedTiles()}},getTileData:function(a){var b=null,c=a.lon,d=a.lat,e=this.grid.length;if(this.map&&e){var f=this.map.getResolution(),a=this.tileSize.w,g=this.tileSize.h,h=this.grid[0][0].bounds,i=h.left,\n +h=h.top;if(c<i&&this.map.baseLayer.wrapDateLine)var j=this.map.getMaxExtent().getWidth(),k=Math.ceil((i-c)/j),c=c+j*k;c=(c-i)/(f*a);d=(h-d)/(f*g);f=Math.floor(c);i=Math.floor(d);0<=i&&i<e&&(e=this.grid[i][f])&&(b={tile:e,i:Math.floor((c-f)*a),j:Math.floor((d-i)*g)})}return b},queueTileDraw:function(a){a=a.object;~OpenLayers.Util.indexOf(this.tileQueue,a)||this.tileQueue.push(a);this.tileQueueId||(this.tileQueueId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.drawTileFromQueue,this),null,\n +this.div));return!1},drawTileFromQueue:function(){0===this.tileQueue.length?this.clearTileQueue():this.tileQueue.shift().draw(!0)},clearTileQueue:function(){OpenLayers.Animation.stop(this.tileQueueId);this.tileQueueId=null;this.tileQueue=[]},destroyTile:function(a){this.removeTileMonitoringHooks(a);a.destroy()},getServerResolution:function(a){a=a||this.map.getResolution();if(this.serverResolutions&&-1===OpenLayers.Util.indexOf(this.serverResolutions,a)){var b,c;for(b=this.serverResolutions.length-\n +1;0<=b;b--)if(c=this.serverResolutions[b],c>a){a=c;break}if(-1===b)throw"no appropriate resolution in serverResolutions";}return a},getServerZoom:function(){var a=this.getServerResolution();return this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,a):this.map.getZoomForResolution(a)+(this.zoomOffset||0)},transformDiv:function(a){this.div.style.width=100*a+"%";this.div.style.height=100*a+"%";var b=this.map.getSize(),c=parseInt(this.map.layerContainerDiv.style.left,10),d=(parseInt(this.map.layerContainerDiv.style.top,\n +10)-b.h/2)*(a-1);this.div.style.left=(c-b.w/2)*(a-1)+"%";this.div.style.top=d+"%"},getResolutionScale:function(){return parseInt(this.div.style.width,10)/100},applyBackBuffer:function(a){null!==this.backBufferTimerId&&this.removeBackBuffer();var b=this.backBuffer;if(!b){b=this.createBackBuffer();if(!b)return;this.div.insertBefore(b,this.div.firstChild);this.backBuffer=b;var c=this.grid[0][0].bounds;this.backBufferLonLat={lon:c.left,lat:c.top};this.backBufferResolution=this.gridResolution}var c=b.style,\n +d=this.backBufferResolution/a;c.width=100*d+"%";c.height=100*d+"%";a=this.getViewPortPxFromLonLat(this.backBufferLonLat,a);c=parseInt(this.map.layerContainerDiv.style.left,10);d=parseInt(this.map.layerContainerDiv.style.top,10);b.style.left=Math.round(a.x-c)+"%";b.style.top=Math.round(a.y-d)+"%"},createBackBuffer:function(){var a;if(0<this.grid.length){a=document.createElement("div");a.id=this.div.id+"_bb";a.className="olBackBuffer";a.style.position="absolute";a.style.width="100%";a.style.height=\n +"100%";for(var b=0,c=this.grid.length;b<c;b++)for(var d=0,e=this.grid[b].length;d<e;d++){var f=this.grid[b][d].createBackBuffer();f&&(f.style.top=b*this.tileSize.h+"%",f.style.left=d*this.tileSize.w+"%",a.appendChild(f))}}return a},removeBackBuffer:function(){this.backBuffer&&(this.div.removeChild(this.backBuffer),this.backBufferResolution=this.backBuffer=null,null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null))},moveByPx:function(){this.singleTile||\n +this.moveGriddedTiles()},setTileSize:function(a){this.singleTile&&(a=this.map.getSize(),a.h=parseInt(a.h*this.ratio),a.w=parseInt(a.w*this.ratio));OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getTilesBounds:function(){var a=null,b=this.grid.length;if(b)var a=this.grid[b-1][0].bounds,b=this.grid[0].length*a.getWidth(),c=this.grid.length*a.getHeight(),a=new OpenLayers.Bounds(a.left,a.bottom,a.left+b,a.bottom+c);return a},initSingleTile:function(a){this.clearTileQueue();var b=\n +a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio,b=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2),c=this.map.getLayerPxFromLonLat({lon:b.left,lat:b.top});this.grid.length||(this.grid[0]=[]);(a=this.grid[0][0])?a.moveTo(b,c):(a=this.addTile(b,c),this.addTileMonitoringHooks(a),a.draw(),this.grid[0][0]=a);this.removeExcessTiles(1,1);this.gridResolution=this.getServerResolution()},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=\n +a.left-b.lon,f=Math.floor(e/d)-this.buffer,e=-(e/d-f)*this.tileSize.w,f=b.lon+f*d,a=a.top-(b.lat+c),g=Math.ceil(a/c)+this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:f,tileoffsetlat:b.lat+g*c,tileoffsetx:e,tileoffsety:-(g-a/c)*this.tileSize.h}},getTileOrigin:function(){var a=this.tileOrigin;if(!a)var a=this.getMaxExtent(),b={tl:["left","top"],tr:["right","top"],bl:["left","bottom"],br:["right","bottom"]}[this.tileOriginCorner],a=new OpenLayers.LonLat(a[b[0]],a[b[1]]);return a},initGriddedTiles:function(a){this.clearTileQueue();\n +var b=this.map.getSize(),c=Math.ceil(b.h/this.tileSize.h)+Math.max(1,2*this.buffer),b=Math.ceil(b.w/this.tileSize.w)+Math.max(1,2*this.buffer),d=this.getTileOrigin(),e=this.getServerResolution(),d=this.calculateGridLayout(a,d,e),e=Math.round(d.tileoffsetx),f=Math.round(d.tileoffsety),g=d.tileoffsetlon,h=d.tileoffsetlat,i=d.tilelon,j=d.tilelat,k=e,l=g,m=0,n=parseInt(this.map.layerContainerDiv.style.left),o=parseInt(this.map.layerContainerDiv.style.top),d=[],p=this.map.getCenter();do{var q=this.grid[m++];\n +q||(q=[],this.grid.push(q));var g=l,e=k,r=0;do{var s=new OpenLayers.Bounds(g,h,g+i,h+j),t=e,t=t-n,u=f,u=u-o,u=new OpenLayers.Pixel(t,u);(t=q[r++])?t.moveTo(s,u,!1):(t=this.addTile(s,u),this.addTileMonitoringHooks(t),q.push(t));s=s.getCenterLonLat();d.push({tile:t,distance:Math.pow(s.lon-p.lon,2)+Math.pow(s.lat-p.lat,2)});g+=i;e+=this.tileSize.w}while(g<=a.right+i*this.buffer||r<b);h-=j;f+=this.tileSize.h}while(h>=a.bottom-j*this.buffer||m<c);this.removeExcessTiles(m,r);this.gridResolution=this.getServerResolution();\n +d.sort(function(a,b){return a.distance-b.distance});a=0;for(c=d.length;a<c;++a)d[a].tile.draw()},getMaxExtent:function(){return this.maxExtent},addTile:function(a,b){var c=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);c.events.register("beforedraw",this,this.queueTileDraw);return c},addTileMonitoringHooks:function(a){a.onLoadStart=function(){!1===this.loading&&(this.loading=!0,this.events.triggerEvent("loadstart"));this.events.triggerEvent("tileloadstart",{tile:a});this.numLoadingTiles++};\n +a.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded",{tile:a});0===this.tileQueue.length&&0===this.numLoadingTiles&&(this.loading=!1,this.events.triggerEvent("loadend"),this.backBuffer&&(this.backBufferTimerId=window.setTimeout(OpenLayers.Function.bind(this.removeBackBuffer,this),this.removeBackBufferDelay)))};a.onLoadError=function(){this.events.triggerEvent("tileerror",{tile:a})};a.events.on({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,\n +scope:this})},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},moveGriddedTiles:function(a){if(!a&&!OpenLayers.Animation.isNative)null!=this.moveTimerId&&window.clearTimeout(this.moveTimerId),this.moveTimerId=window.setTimeout(this.deferMoveGriddedTiles,this.tileLoadingDelay);else for(var a=this.buffer||1,b=this.getResolutionScale();;){var c=this.grid[0][0].position.x*b+parseInt(this.div.style.left,\n +10)+parseInt(this.map.layerContainerDiv.style.left),d=this.grid[0][0].position.y*b+parseInt(this.div.style.top,10)+parseInt(this.map.layerContainerDiv.style.top),e=this.tileSize.w*b,f=this.tileSize.h*b;if(c>-e*(a-1))this.shiftColumn(!0);else if(c<-e*a)this.shiftColumn(!1);else if(d>-f*(a-1))this.shiftRow(!0);else if(d<-f*a)this.shiftRow(!1);else break}},shiftRow:function(a){for(var b=this.grid,c=b[a?0:this.grid.length-1],d=this.getServerResolution(),e=a?-this.tileSize.h:this.tileSize.h,d=d*-e,f=a?\n +b.pop():b.shift(),g=0,h=c.length;g<h;g++){var i=c[g],j=i.bounds.clone(),i=i.position.clone();j.bottom+=d;j.top+=d;i.y+=e;f[g].moveTo(j,i)}a?b.unshift(f):b.push(f)},shiftColumn:function(a){for(var b=a?-this.tileSize.w:this.tileSize.w,c=this.getServerResolution()*b,d=0,e=this.grid.length;d<e;d++){var f=this.grid[d],g=f[a?0:f.length-1],h=g.bounds.clone(),g=g.position.clone();h.left+=c;h.right+=c;g.x+=b;var i=a?this.grid[d].pop():this.grid[d].shift();i.moveTo(h,g);a?f.unshift(i):f.push(i)}},removeExcessTiles:function(a,\n +b){for(var c,d;this.grid.length>a;){var e=this.grid.pop();c=0;for(d=e.length;c<d;c++){var f=e[c];this.destroyTile(f)}}c=0;for(d=this.grid.length;c<d;c++)for(;this.grid[c].length>b;)e=this.grid[c],f=e.pop(),this.destroyTile(f)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w,c=c*this.tileSize.h,e=this.getLonLatFromViewPortPx(a),a=b.left+d*Math.floor((e.lon-b.left)/d),b=b.bottom+\n +c*Math.floor((e.lat-b.bottom)/c);return new OpenLayers.Bounds(a,b,a+d,b+c)},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:"antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency".split(" "),request:null,response:null,initialize:function(a){this.request=new OpenLayers.Format.ArcXML.Request;this.response=new OpenLayers.Format.ArcXML.Response;if(a)if("feature"==a.requesttype){this.request.get_image=null;var b=this.request.get_feature.query;this.addCoordSys(b.featurecoordsys,a.featureCoordSys);\n +this.addCoordSys(b.filtercoordsys,a.filterCoordSys);a.polygon?(b.isspatial=!0,b.spatialfilter.polygon=a.polygon):a.envelope&&(b.isspatial=!0,b.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0},this.parseEnvelope(b.spatialfilter.envelope,a.envelope))}else"image"==a.requesttype?(this.request.get_feature=null,b=this.request.get_image.properties,this.parseEnvelope(b.envelope,a.envelope),this.addLayers(b.layerlist,a.layers),this.addImageSize(b.imagesize,a.tileSize),this.addCoordSys(b.featurecoordsys,\n +a.featureCoordSys),this.addCoordSys(b.filtercoordsys,a.filterCoordSys)):this.request=null;OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},parseEnvelope:function(a,b){b&&4==b.length&&(a.minx=b[0],a.miny=b[1],a.maxx=b[2],a.maxy=b[3])},addLayers:function(a,b){for(var c=0,d=b.length;c<d;c++)a.push(b[c])},addImageSize:function(a,b){null!==b&&(a.width=b.w,a.height=b.h,a.printwidth=b.w,a.printheight=b.h)},addCoordSys:function(a,b){"string"==typeof b?(a.id=parseInt(b),a.string=b):"object"==typeof b&&\n +null!==b.proj&&(a.id=b.proj.srsProjNumber,a.string=b.proj.srsCode)},iserror:function(a){var b=null;a?(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]),a=a.documentElement.getElementsByTagName("ERROR"),b=null!==a&&0<a.length):b=""!==this.response.error;return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null;a&&a.documentElement&&(b="ARCXML"==a.documentElement.nodeName?a.documentElement:a.documentElement.getElementsByTagName("ARCXML")[0]);\n +if(!b||"parsererror"===b.firstChild.nodeName){var c,d;try{c=a.firstChild.nodeValue,d=a.firstChild.childNodes[1].firstChild.nodeValue}catch(e){}throw{message:"Error parsing the ArcXML request",error:c,source:d};}return this.parseResponse(b)},write:function(a){a||(a=this.request);var b=this.createElementNS("","ARCXML");b.setAttribute("version","1.1");var c=this.createElementNS("","REQUEST");if(null!=a.get_image){var d=this.createElementNS("","GET_IMAGE");c.appendChild(d);var e=this.createElementNS("",\n +"PROPERTIES");d.appendChild(e);a=a.get_image.properties;null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),e.appendChild(d),0===a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id));null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),e.appendChild(d),0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id));null!=a.envelope&&(d=this.createElementNS("",\n +"ENVELOPE"),e.appendChild(d),d.setAttribute("minx",a.envelope.minx),d.setAttribute("miny",a.envelope.miny),d.setAttribute("maxx",a.envelope.maxx),d.setAttribute("maxy",a.envelope.maxy));d=this.createElementNS("","IMAGESIZE");e.appendChild(d);d.setAttribute("height",a.imagesize.height);d.setAttribute("width",a.imagesize.width);if(a.imagesize.height!=a.imagesize.printheight||a.imagesize.width!=a.imagesize.printwidth)d.setAttribute("printheight",a.imagesize.printheight),d.setArrtibute("printwidth",a.imagesize.printwidth);\n +null!=a.background&&(d=this.createElementNS("","BACKGROUND"),e.appendChild(d),d.setAttribute("color",a.background.color.r+","+a.background.color.g+","+a.background.color.b),null!==a.background.transcolor&&d.setAttribute("transcolor",a.background.transcolor.r+","+a.background.transcolor.g+","+a.background.transcolor.b));if(null!=a.layerlist&&0<a.layerlist.length){d=this.createElementNS("","LAYERLIST");e.appendChild(d);for(e=0;e<a.layerlist.length;e++){var f=this.createElementNS("","LAYERDEF");d.appendChild(f);\n +f.setAttribute("id",a.layerlist[e].id);f.setAttribute("visible",a.layerlist[e].visible);if("object"==typeof a.layerlist[e].query){var g=a.layerlist[e].query;if(0>g.where.length)continue;var h=null,h="boolean"==typeof g.spatialfilter&&g.spatialfilter?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY");h.setAttribute("where",g.where);"number"==typeof g.accuracy&&0<g.accuracy&&h.setAttribute("accuracy",g.accuracy);"number"==typeof g.featurelimit&&2E3>g.featurelimit&&h.setAttribute("featurelimit",\n +g.featurelimit);"string"==typeof g.subfields&&"#ALL#"!=g.subfields&&h.setAttribute("subfields",g.subfields);"string"==typeof g.joinexpression&&0<g.joinexpression.length&&h.setAttribute("joinexpression",g.joinexpression);"string"==typeof g.jointables&&0<g.jointables.length&&h.setAttribute("jointables",g.jointables);f.appendChild(h)}"object"==typeof a.layerlist[e].renderer&&this.addRenderer(f,a.layerlist[e].renderer)}}}else if(null!=a.get_feature&&(d=this.createElementNS("","GET_FEATURES"),d.setAttribute("outputmode",\n +"newxml"),d.setAttribute("checkesc","true"),a.get_feature.geometry?d.setAttribute("geometry",a.get_feature.geometry):d.setAttribute("geometry","false"),a.get_feature.compact&&d.setAttribute("compact",a.get_feature.compact),"number"==a.get_feature.featurelimit&&d.setAttribute("featurelimit",a.get_feature.featurelimit),d.setAttribute("globalenvelope","true"),c.appendChild(d),null!=a.get_feature.layer&&0<a.get_feature.layer.length&&(e=this.createElementNS("","LAYER"),e.setAttribute("id",a.get_feature.layer),\n +d.appendChild(e)),a=a.get_feature.query,null!=a))e=null,e=a.isspatial?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY"),d.appendChild(e),"number"==typeof a.accuracy&&e.setAttribute("accuracy",a.accuracy),null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),0==a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id),e.appendChild(d)),null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),\n +0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id),e.appendChild(d)),0<a.buffer&&(d=this.createElementNS("","BUFFER"),d.setAttribute("distance",a.buffer),e.appendChild(d)),a.isspatial&&(d=this.createElementNS("","SPATIALFILTER"),d.setAttribute("relation",a.spatialfilter.relation),e.appendChild(d),a.spatialfilter.envelope?(f=this.createElementNS("","ENVELOPE"),f.setAttribute("minx",a.spatialfilter.envelope.minx),f.setAttribute("miny",a.spatialfilter.envelope.miny),\n +f.setAttribute("maxx",a.spatialfilter.envelope.maxx),f.setAttribute("maxy",a.spatialfilter.envelope.maxy),d.appendChild(f)):"object"==typeof a.spatialfilter.polygon&&d.appendChild(this.writePolygonGeometry(a.spatialfilter.polygon))),null!=a.where&&0<a.where.length&&e.setAttribute("where",a.where);b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},addGroupRenderer:function(a,b){var c=this.createElementNS("","GROUPRENDERER");a.appendChild(c);for(var d=0;d<b.length;d++)this.addRenderer(c,\n +b[d])},addRenderer:function(a,b){if(OpenLayers.Util.isArray(b))this.addGroupRenderer(a,b);else{var c=this.createElementNS("",b.type.toUpperCase()+"RENDERER");a.appendChild(c);"VALUEMAPRENDERER"==c.tagName?this.addValueMapRenderer(c,b):"VALUEMAPLABELRENDERER"==c.tagName?this.addValueMapLabelRenderer(c,b):"SIMPLELABELRENDERER"==c.tagName?this.addSimpleLabelRenderer(c,b):"SCALEDEPENDENTRENDERER"==c.tagName&&this.addScaleDependentRenderer(c,b)}},addScaleDependentRenderer:function(a,b){("string"==typeof b.lower||\n +"number"==typeof b.lower)&&a.setAttribute("lower",b.lower);("string"==typeof b.upper||"number"==typeof b.upper)&&a.setAttribute("upper",b.upper);this.addRenderer(a,b.renderer)},addValueMapLabelRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);a.setAttribute("labelfield",b.labelfield);if("object"==typeof b.exacts)for(var c=0,d=b.exacts.length;c<d;c++){var e=b.exacts[c],f=this.createElementNS("","EXACT");"string"==typeof e.value&&f.setAttribute("value",e.value);"string"==typeof e.label&&\n +f.setAttribute("label",e.label);"string"==typeof e.method&&f.setAttribute("method",e.method);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"text"==e.symbol.type&&(g=this.createElementNS("","TEXTSYMBOL"));if(null!=g){for(var h=this.fontStyleKeys,i=0,j=h.length;i<j;i++){var k=h[i];e.symbol[k]&&g.setAttribute(k,e.symbol[k])}f.appendChild(g)}}}},addValueMapRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);if("object"==typeof b.ranges)for(var c=0,d=b.ranges.length;c<d;c++){var e=\n +b.ranges[c],f=this.createElementNS("","RANGE");f.setAttribute("lower",e.lower);f.setAttribute("upper",e.upper);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"simplepolygon"==e.symbol.type&&(g=this.createElementNS("","SIMPLEPOLYGONSYMBOL"));null!=g&&("string"==typeof e.symbol.boundarycolor&&g.setAttribute("boundarycolor",e.symbol.boundarycolor),"string"==typeof e.symbol.fillcolor&&g.setAttribute("fillcolor",e.symbol.fillcolor),"number"==typeof e.symbol.filltransparency&&g.setAttribute("filltransparency",\n +e.symbol.filltransparency),f.appendChild(g))}}else if("object"==typeof b.exacts){c=0;for(d=b.exacts.length;c<d;c++)e=b.exacts[c],f=this.createElementNS("","EXACT"),"string"==typeof e.value&&f.setAttribute("value",e.value),"string"==typeof e.label&&f.setAttribute("label",e.label),"string"==typeof e.method&&f.setAttribute("method",e.method),a.appendChild(f),"object"==typeof e.symbol&&(g=null,"simplemarker"==e.symbol.type&&(g=this.createElementNS("","SIMPLEMARKERSYMBOL")),null!=g&&("string"==typeof e.symbol.antialiasing&&\n +g.setAttribute("antialiasing",e.symbol.antialiasing),"string"==typeof e.symbol.color&&g.setAttribute("color",e.symbol.color),"string"==typeof e.symbol.outline&&g.setAttribute("outline",e.symbol.outline),"string"==typeof e.symbol.overlap&&g.setAttribute("overlap",e.symbol.overlap),"string"==typeof e.symbol.shadow&&g.setAttribute("shadow",e.symbol.shadow),"number"==typeof e.symbol.transparency&&g.setAttribute("transparency",e.symbol.transparency),"string"==typeof e.symbol.usecentroid&&g.setAttribute("usecentroid",\n +e.symbol.usecentroid),"number"==typeof e.symbol.width&&g.setAttribute("width",e.symbol.width),f.appendChild(g)))}},addSimpleLabelRenderer:function(a,b){a.setAttribute("field",b.field);for(var c="featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles".split(" "),d=0,e=c.length;d<e;d++){var f=c[d];b[f]&&a.setAttribute(f,b[f])}if("text"==b.symbol.type){var g=b.symbol,h=this.createElementNS("","TEXTSYMBOL");a.appendChild(h);c=this.fontStyleKeys;d=0;\n +for(e=c.length;d<e;d++)f=c[d],g[f]&&h.setAttribute(f,b[f])}},writePolygonGeometry:function(a){if(!(a instanceof OpenLayers.Geometry.Polygon))throw{message:"Cannot write polygon geometry to ArcXML with an "+a.CLASS_NAME+" object.",geometry:a};for(var b=this.createElementNS("","POLYGON"),c=0,d=a.components.length;c<d;c++){for(var e=a.components[c],f=this.createElementNS("","RING"),g=0,h=e.components.length;g<h;g++){var i=e.components[g],j=this.createElementNS("","POINT");j.setAttribute("x",i.x);j.setAttribute("y",\n +i.y);f.appendChild(j)}b.appendChild(f)}return b},parseResponse:function(a){"string"==typeof a&&(a=(new OpenLayers.Format.XML).read(a));var b=new OpenLayers.Format.ArcXML.Response,c=a.getElementsByTagName("ERROR");if(null!=c&&0<c.length)b.error=this.getChildValue(c,"Unknown error.");else{c=a.getElementsByTagName("RESPONSE");if(null==c||0==c.length)return b.error="No RESPONSE tag found in ArcXML response.",b;var d=c[0].firstChild.nodeName;"#text"==d&&(d=c[0].firstChild.nextSibling.nodeName);if("IMAGE"==\n +d)c=a.getElementsByTagName("ENVELOPE"),a=a.getElementsByTagName("OUTPUT"),null==c||0==c.length?b.error="No ENVELOPE tag found in ArcXML response.":null==a||0==a.length?b.error="No OUTPUT tag found in ArcXML response.":(c=this.parseAttributes(c[0]),d=this.parseAttributes(a[0]),b.image="string"==typeof d.type?{envelope:c,output:{type:d.type,data:this.getChildValue(a[0])}}:{envelope:c,output:d});else if("FEATURES"==d){if(a=c[0].getElementsByTagName("FEATURES"),c=a[0].getElementsByTagName("FEATURECOUNT"),\n +b.features.featurecount=c[0].getAttribute("count"),0<b.features.featurecount){c=a[0].getElementsByTagName("ENVELOPE");b.features.envelope=this.parseAttributes(c[0],"number");a=a[0].getElementsByTagName("FEATURE");for(c=0;c<a.length;c++){for(var d=new OpenLayers.Feature.Vector,e=a[c].getElementsByTagName("FIELD"),f=0;f<e.length;f++){var g=e[f].getAttribute("name"),h=e[f].getAttribute("value");d.attributes[g]=h}e=a[c].getElementsByTagName("POLYGON");if(0<e.length){e=e[0].getElementsByTagName("RING");\n +f=[];for(g=0;g<e.length;g++){h=[];h.push(this.parsePointGeometry(e[g]));for(var i=e[g].getElementsByTagName("HOLE"),j=0;j<i.length;j++)h.push(this.parsePointGeometry(i[j]));f.push(new OpenLayers.Geometry.Polygon(h))}d.geometry=1==f.length?f[0]:new OpenLayers.Geometry.MultiPolygon(f)}b.features.feature.push(d)}}}else b.error="Unidentified response type."}return b},parseAttributes:function(a,b){for(var c={},d=0;d<a.attributes.length;d++)c[a.attributes[d].nodeName]="number"==b?parseFloat(a.attributes[d].nodeValue):\n +a.attributes[d].nodeValue;return c},parsePointGeometry:function(a){var b=[],c=a.getElementsByTagName("COORDS");if(0<c.length){a=this.getChildValue(c[0]);a=a.split(/;/);for(c=0;c<a.length;c++){var d=a[c].split(/ /);b.push(new OpenLayers.Geometry.Point(d[0],d[1]))}}else if(a=a.getElementsByTagName("POINT"),0<a.length)for(c=0;c<a.length;c++)b.push(new OpenLayers.Geometry.Point(parseFloat(a[c].getAttribute("x")),parseFloat(a[c].getAttribute("y"))));return new OpenLayers.Geometry.LinearRing(b)},CLASS_NAME:"OpenLayers.Format.ArcXML"});\n +OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{get_image:{properties:{background:null,draw:!0,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:!1},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",\n +legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:!1,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]})},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});\n +OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{image:{envelope:null,output:""},features:{featurecount:0,envelope:null,feature:[]},error:""})},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});OpenLayers.ProxyHost="";\n +OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\\/\\/([^:]*:?[^@]*@)?([^:\\/\\?]*):?([^\\/\\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==e.hostname,d=d[4],\n +e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||(b?a="function"==typeof b?b(a):b+encodeURIComponent(a):OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:a}));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost}),a=OpenLayers.Util.applyDefaults(a,b),b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]="XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,\n +e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==\n +d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);\n +if(b.status&&(200>b.status||300<=b.status))this.events.triggerEvent("failure",a),f&&f(b)},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?\n +a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}};OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:""},featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:!0,name:"ArcIMS",isBaseLayer:!0,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:!0,async:!0,name:"ArcIMS"},initialize:function(a,b,c){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:c.serviceName},\n +this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(c,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,this.params,c]);if(this.transparent&&(this.isBaseLayer||(this.isBaseLayer=!1),"image/jpeg"==this.format))this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png";null===this.options.layers&&(this.options.layers=[])},getURL:function(a){var b="",a=this.adjustBounds(a),a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",\n +envelope:a.toArray(),tileSize:this.tileSize})),a=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:a.write(),async:!1});if(null!=a){b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;b=this.getUrlOrImage((new OpenLayers.Format.ArcXML).read(b).image.output)}return b},getURLasync:function(a,b,c){a=this.adjustBounds(a);a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:a.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),\n +async:!0,data:a.write(),callback:function(a){var e=a.responseXML;if(!e||!e.documentElement)e=a.responseText;a=(new OpenLayers.Format.ArcXML).read(e);b.call(c,this.getUrlOrImage(a.image.output))},scope:this})},getUrlOrImage:function(a){var b="";a.url?b=a.url:a.data&&(b="data:image/"+a.type+";base64,"+a.data);return b},setLayerQuery:function(a,b){for(var c=0;c<this.options.layers.length;c++)if(a==this.options.layers[c].id){this.options.layers[c].query=b;return}this.options.layers.push({id:a,visible:!0,\n +query:b})},getFeatureInfo:function(a,b,c){var d=c.buffer||1,e=c.callback||function(){},f=c.scope||window,g={};OpenLayers.Util.extend(g,this.options);g.requesttype="feature";a instanceof OpenLayers.LonLat?(g.polygon=null,g.envelope=[a.lon-d,a.lat-d,a.lon+d,a.lat+d]):a instanceof OpenLayers.Geometry.Polygon&&(g.envelope=null,g.polygon=a);var h=new OpenLayers.Format.ArcXML(g);OpenLayers.Util.extend(h.request.get_feature,c);h.request.get_feature.layer=b.id;"number"==typeof b.query.accuracy?h.request.get_feature.query.accuracy=\n +b.query.accuracy:(a=this.map.getCenter(),c=this.map.getViewPortPxFromLonLat(a),c.x++,c=this.map.getLonLatFromPixel(c),h.request.get_feature.query.accuracy=c.lon-a.lon);h.request.get_feature.query.where=b.query.where;h.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({CustomService:"Query"}),data:h.write(),callback:function(a){a=h.parseResponse(a.responseText);h.iserror()?e.call(f,null):e.call(f,a.features)}})},clone:function(a){null==\n +a&&(a=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("xml:lang"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)},AllowedValues:function(a,b){b.allowedValues={};this.readChildNodes(a,b.allowedValues)},AnyValue:function(a,b){b.anyValue=\n +!0},DataType:function(a,b){b.dataType=this.getChildValue(a)},Range:function(a,b){b.range={};this.readChildNodes(a,b.range)},MinimumValue:function(a,b){b.minValue=this.getChildValue(a)},MaximumValue:function(a,b){b.maxValue=this.getChildValue(a)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},SupportedCRS:function(a,b){b.supportedCRS=this.getChildValue(a)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Util.applyDefaults({Range:function(a){var b=this.createElementNSPlus("ows:Range",\n +{attributes:{"ows:rangeClosure":a.closure}});this.writeNode("ows:MinimumValue",a.minValue,b);this.writeNode("ows:MaximumValue",a.maxValue,b);return b},MinimumValue:function(a){return this.createElementNSPlus("ows:MinimumValue",{value:a})},MaximumValue:function(a){return this.createElementNSPlus("ows:MaximumValue",{value:a})},Value:function(a){return this.createElementNSPlus("ows:Value",{value:a})}},OpenLayers.Format.OWSCommon.v1.prototype.writers.ows)},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WCSGetCoverage=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.1.2",schemaLocation:"http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",write:function(a){a=this.writeNode("wcs:GetCoverage",\n +a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wcs:{GetCoverage:function(a){var b=this.createElementNSPlus("wcs:GetCoverage",{attributes:{version:a.version||this.VERSION,service:"WCS"}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("wcs:DomainSubset",a.domainSubset,b);this.writeNode("wcs:Output",a.output,b);return b},DomainSubset:function(a){var b=this.createElementNSPlus("wcs:DomainSubset",\n +{});this.writeNode("ows:BoundingBox",a.boundingBox,b);a.temporalSubset&&this.writeNode("wcs:TemporalSubset",a.temporalSubset,b);return b},TemporalSubset:function(a){for(var b=this.createElementNSPlus("wcs:TemporalSubset",{}),c=0,d=a.timePeriods.length;c<d;++c)this.writeNode("wcs:TimePeriod",a.timePeriods[c],b);return b},TimePeriod:function(a){var b=this.createElementNSPlus("wcs:TimePeriod",{});this.writeNode("wcs:BeginPosition",a.begin,b);this.writeNode("wcs:EndPosition",a.end,b);a.resolution&&this.writeNode("wcs:TimeResolution",\n +a.resolution,b);return b},BeginPosition:function(a){return this.createElementNSPlus("wcs:BeginPosition",{value:a})},EndPosition:function(a){return this.createElementNSPlus("wcs:EndPosition",{value:a})},TimeResolution:function(a){return this.createElementNSPlus("wcs:TimeResolution",{value:a})},Output:function(a){var b=this.createElementNSPlus("wcs:Output",{attributes:{format:a.format,store:a.store}});a.gridCRS&&this.writeNode("wcs:GridCRS",a.gridCRS,b);return b},GridCRS:function(a){var b=this.createElementNSPlus("wcs:GridCRS",\n +{});this.writeNode("wcs:GridBaseCRS",a.baseCRS,b);a.type&&this.writeNode("wcs:GridType",a.type,b);a.origin&&this.writeNode("wcs:GridOrigin",a.origin,b);this.writeNode("wcs:GridOffsets",a.offsets,b);a.CS&&this.writeNode("wcs:GridCS",a.CS,b);return b},GridBaseCRS:function(a){return this.createElementNSPlus("wcs:GridBaseCRS",{value:a})},GridOrigin:function(a){return this.createElementNSPlus("wcs:GridOrigin",{value:a})},GridType:function(a){return this.createElementNSPlus("wcs:GridType",{value:a})},GridOffsets:function(a){return this.createElementNSPlus("wcs:GridOffsets",\n +{value:a})},GridCS:function(a){return this.createElementNSPlus("wcs:GridCS",{value:a})}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WCSGetCoverage"});OpenLayers.Format.WPSExecute=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",gml:"http://www.opengis.net/gml",wps:"http://www.opengis.net/wps/1.0.0",wfs:"http://www.opengis.net/wfs",ogc:"http://www.opengis.net/ogc",wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",\n +schemaLocationAttr:function(){},write:function(a){var b;window.ActiveXObject?this.xmldom=b=new ActiveXObject("Microsoft.XMLDOM"):b=document.implementation.createDocument("","",null);a=this.writeNode("wps:Execute",a,b);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wps:{Execute:function(a){var b=this.createElementNSPlus("wps:Execute",{attributes:{version:this.VERSION,service:"WPS"}});this.writeNode("ows:Identifier",\n +a.identifier,b);this.writeNode("wps:DataInputs",a.dataInputs,b);this.writeNode("wps:ResponseForm",a.responseForm,b);return b},ResponseForm:function(a){var b=this.createElementNSPlus("wps:ResponseForm",{});a.rawDataOutput&&this.writeNode("wps:RawDataOutput",a.rawDataOutput,b);a.responseDocument&&this.writeNode("wps:ResponseDocument",a.responseDocument,b);return b},ResponseDocument:function(a){var b=this.createElementNSPlus("wps:ResponseDocument",{attributes:{storeExecuteResponse:a.storeExecuteResponse,\n +lineage:a.lineage,status:a.status}});a.output&&this.writeNode("wps:Output",a.output,b);return b},Output:function(a){var b=this.createElementNSPlus("wps:Output",{attributes:{asReference:a.asReference}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("ows:Title",a.title,b);this.writeNode("ows:Abstract",a["abstract"],b);return b},RawDataOutput:function(a){var b=this.createElementNSPlus("wps:RawDataOutput",{attributes:{mimeType:a.mimeType}});this.writeNode("ows:Identifier",a.identifier,\n +b);return b},DataInputs:function(a){for(var b=this.createElementNSPlus("wps:DataInputs",{}),c=0,d=a.length;c<d;++c)this.writeNode("wps:Input",a[c],b);return b},Input:function(a){var b=this.createElementNSPlus("wps:Input",{});this.writeNode("ows:Identifier",a.identifier,b);a.title&&this.writeNode("ows:Title",a.title,b);a.data&&this.writeNode("wps:Data",a.data,b);a.reference&&this.writeNode("wps:Reference",a.reference,b);return b},Data:function(a){var b=this.createElementNSPlus("wps:Data",{});a.literalData?\n +this.writeNode("wps:LiteralData",a.literalData,b):a.complexData&&this.writeNode("wps:ComplexData",a.complexData,b);return b},LiteralData:function(a){return this.createElementNSPlus("wps:LiteralData",{attributes:{uom:a.uom},value:a.value})},ComplexData:function(a){var b=this.createElementNSPlus("wps:ComplexData",{attributes:{mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}}),c=a.value;"string"===typeof c?b.appendChild(this.getXMLDoc().createCDATASection(a.value)):b.appendChild(c);return b},\n +Reference:function(a){var b=this.createElementNSPlus("wps:Reference",{attributes:{mimeType:a.mimeType,"xlink:href":a.href,method:a.method,encoding:a.encoding,schema:a.schema}});a.body&&this.writeNode("wps:Body",a.body,b);return b},Body:function(a){var b=this.createElementNSPlus("wps:Body",{});a.wcs?this.writeNode("wcs:GetCoverage",a.wcs,b):a.wfs?(this.featureType=a.wfs.featureType,this.version=a.wfs.version,this.writeNode("wfs:GetFeature",a.wfs,b)):this.writeNode("wps:Execute",a,b);return b}},wcs:OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,\n +wfs:OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WPSExecute"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},\n +setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",\n +c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);\n +OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();\n +break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,zoomWorldIcon:!1,panIcons:!0,forceFixedZoomLevel:!1,mouseDragStart:null,deltaY:null,zoomStart:null,destroy:function(){this._removeZoomBar();this.map.events.un({changebaselayer:this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart},setMap:function(a){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,\n +arguments);this.map.events.register("changebaselayer",this,this.redraw)},redraw:function(){null!=this.div&&(this.removeButtons(),this._removeZoomBar());this.draw()},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position.clone();this.buttons=[];var b={w:18,h:18};if(this.panIcons){var c=new OpenLayers.Pixel(a.x+b.w/2,a.y),d=b.w;this.zoomWorldIcon&&(c=new OpenLayers.Pixel(a.x+b.w,a.y));this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft",\n +"west-mini.png",a,b);this.zoomWorldIcon&&(this._addButton("zoomworld","zoom-world-mini.png",a.add(b.w,0),b),d*=2);this._addButton("panright","east-mini.png",a.add(d,0),b);this._addButton("pandown","south-mini.png",c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);c=this._addZoomBar(c.add(0,4*b.h+5));this._addButton("zoomout","zoom-minus-mini.png",c,b)}else this._addButton("zoomin","zoom-plus-mini.png",a,b),c=this._addZoomBar(a.add(0,b.h)),this._addButton("zoomout",\n +"zoom-minus-mini.png",c,b),this.zoomWorldIcon&&(c=c.add(0,b.h+3),this._addButton("zoomworld","zoom-world-mini.png",c,b));return this.div},_addZoomBar:function(a){var b=OpenLayers.Util.getImageLocation("slider.png"),c=this.id+"_"+this.map.id,d=this.map.getNumZoomLevels()-1-this.map.getZoom(),d=OpenLayers.Util.createAlphaImageDiv(c,a.add(-1,d*this.zoomStopHeight),{w:20,h:9},b,"absolute");d.style.cursor="move";this.slider=d;this.sliderEvents=new OpenLayers.Events(this,d,null,!0,{includeXY:!0});this.sliderEvents.on({touchstart:this.zoomBarDown,\n +touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});var e={w:this.zoomStopWidth,h:this.zoomStopHeight*this.map.getNumZoomLevels()},b=OpenLayers.Util.getImageLocation("zoombar.png"),c=null;OpenLayers.Util.alphaHack()?(c=this.id+"_"+this.map.id,c=OpenLayers.Util.createAlphaImageDiv(c,a,{w:e.w,h:this.zoomStopHeight},b,"absolute",null,"crop"),c.style.height=e.h+"px"):c=OpenLayers.Util.createDiv("OpenLayers_Control_PanZoomBar_Zoombar"+\n +this.map.id,a,e,b);c.style.cursor="pointer";c.className="olButton";this.zoombarDiv=c;this.div.appendChild(c);this.startTop=parseInt(c.style.top);this.div.appendChild(d);this.map.events.register("zoomend",this,this.moveZoomBar);return a=a.add(0,this.zoomStopHeight*this.map.getNumZoomLevels())},_removeZoomBar:function(){this.sliderEvents.un({touchstart:this.zoomBarDown,touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});this.sliderEvents.destroy();\n +this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar)},onButtonClick:function(a){OpenLayers.Control.PanZoom.prototype.onButtonClick.apply(this,arguments);if(a.buttonElement===this.zoombarDiv){var b=a.buttonXY.y/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom)b=Math.floor(b);b=this.map.getNumZoomLevels()-1-b;b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-\n +1);this.map.zoomTo(b)}},passEventToSlider:function(a){this.sliderEvents.handleBrowserEvent(a)},zoomBarDown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.map.events.on({touchmove:this.passEventToSlider,mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this}),this.mouseDragStart=a.xy.clone(),this.zoomStart=a.xy.clone(),this.div.style.cursor="move",this.zoombarDiv.offsets=null,OpenLayers.Event.stop(a)},zoomBarDrag:function(a){if(null!=this.mouseDragStart){var b=\n +this.mouseDragStart.y-a.xy.y,c=OpenLayers.Util.pagePosition(this.zoombarDiv);0<a.clientY-c[1]&&a.clientY-c[1]<parseInt(this.zoombarDiv.style.height)-2&&(this.slider.style.top=parseInt(this.slider.style.top)-b+"px",this.mouseDragStart=a.xy.clone());this.deltaY=this.zoomStart.y-a.xy.y;OpenLayers.Event.stop(a)}},zoomBarUp:function(a){if((OpenLayers.Event.isLeftClick(a)||"touchend"===a.type)&&this.mouseDragStart){this.div.style.cursor="";this.map.events.un({touchmove:this.passEventToSlider,mouseup:this.passEventToSlider,\n +mousemove:this.passEventToSlider,scope:this});var b=this.map.zoom;!this.forceFixedZoomLevel&&this.map.fractionalZoom?(b+=this.deltaY/this.zoomStopHeight,b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-1)):(b+=this.deltaY/this.zoomStopHeight,b=Math.max(Math.round(b),0));this.map.zoomTo(b);this.zoomStart=this.mouseDragStart=null;this.deltaY=0;OpenLayers.Event.stop(a)}},moveZoomBar:function(){this.slider.style.top=(this.map.getNumZoomLevels()-1-this.map.getZoom())*this.zoomStopHeight+this.startTop+\n +1+"px"},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",errorProperty:"service",CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wfs:"http://www.opengis.net/wfs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wfs:{WFS_Capabilities:function(a,b){this.readChildNodes(a,b)},\n +FeatureTypeList:function(a,b){b.featureTypeList={featureTypes:[]};this.readChildNodes(a,b.featureTypeList)},FeatureType:function(a,b){var c={};this.readChildNodes(a,c);b.featureTypes.push(c)},Name:function(a,b){var c=this.getChildValue(a);c&&(c=c.split(":"),b.name=c.pop(),0<c.length&&(b.featureNS=this.lookupNamespaceURI(a,c[0])))},Title:function(a,b){var c=this.getChildValue(a);c&&(b.title=c)},Abstract:function(a,b){var c=this.getChildValue(a);c&&(b["abstract"]=c)}}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},readers:{wfs:OpenLayers.Util.applyDefaults({DefaultSRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs),ows:OpenLayers.Format.OWSCommon.v1.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!0,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(a,b,c,d,e){this.url=b;this.maxExtent=this.extent=c;this.size=d;OpenLayers.Layer.prototype.initialize.apply(this,[a,e]);this.aspectRatio=this.extent.getHeight()/this.size.h/(this.extent.getWidth()/this.size.w)},destroy:function(){this.tile&&(this.removeTileMonitoringHooks(this.tile),this.tile.destroy(),this.tile=null);OpenLayers.Layer.prototype.destroy.apply(this,\n +arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions()));return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setMap:function(a){null==this.options.maxResolution&&(this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w);OpenLayers.Layer.prototype.setMap.apply(this,arguments)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=null==this.tile;if(b||d){this.setTileSize();\n +var e=this.map.getLayerPxFromLonLat({lon:this.extent.left,lat:this.extent.top});d?(this.tile=new OpenLayers.Tile.Image(this,e,this.extent,null,this.tileSize),this.addTileMonitoringHooks(this.tile)):(this.tile.size=this.tileSize.clone(),this.tile.position=e.clone());this.tile.draw()}},setTileSize:function(){var a=this.extent.getWidth()/this.map.getResolution(),b=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(a,b)},addTileMonitoringHooks:function(a){a.onLoadStart=\n +function(){this.events.triggerEvent("loadstart")};a.events.register("loadstart",this,a.onLoadStart);a.onLoadEnd=function(){this.events.triggerEvent("loadend")};a.events.register("loadend",this,a.onLoadEnd);a.events.register("unload",this,a.onLoadEnd)},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,scope:this})},setUrl:function(a){this.url=a;this.tile.draw()},getURL:function(){return this.url},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return!this.active?this.active=!0:!1},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{events:null,auto:!1,timer:null,initialize:function(a){OpenLayers.Strategy.prototype.initialize.apply(this,[a]);this.events=new OpenLayers.Events(this)},activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a&&this.auto)if("number"===typeof this.auto)this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),1E3*this.auto);else this.layer.events.on({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,\n +scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.auto&&("number"===typeof this.auto?window.clearInterval(this.timer):this.layer.events.un({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,scope:this}));return a},triggerSave:function(a){var b=a.feature;(b.state===OpenLayers.State.INSERT||b.state===OpenLayers.State.UPDATE||b.state===OpenLayers.State.DELETE)&&this.save([a.feature])},save:function(a){a||(a=this.layer.features);\n +this.events.triggerEvent("start",{features:a});var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b)){for(var d=a.length,e=Array(d),f,g,h=0;h<d;++h)f=a[h],g=f.clone(),g.fid=f.fid,g.state=f.state,f.url&&(g.url=f.url),g._original=f,g.geometry.transform(c,b),e[h]=g;a=e}this.layer.protocol.commit(a,{callback:this.onCommit,scope:this})},onCommit:function(a){var b={response:a};if(a.success()){for(var c=a.reqFeatures,d,e=[],f=a.insertIds||[],g=0,h=0,i=c.length;h<i;++h)if(d=c[h],\n +d=d._original||d,a=d.state)a==OpenLayers.State.DELETE?e.push(d):a==OpenLayers.State.INSERT&&(d.fid=f[g],++g),d.state=null;0<e.length&&this.layer.destroyFeatures(e);this.events.triggerEvent("success",b)}else this.events.triggerEvent("fail",b)},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{defaultDesc:"No description available",extractWaypoints:!0,extractTracks:!0,extractRoutes:!0,extractAttributes:!0,namespaces:{gpx:"http://www.topografix.com/GPX/1/1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",creator:"OpenLayers",initialize:function(a){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,\n +[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=[];if(this.extractTracks)for(var c=a.getElementsByTagName("trk"),d=0,e=c.length;d<e;d++){var f={};this.extractAttributes&&(f=this.parseAttributes(c[d]));for(var g=this.getElementsByTagNameNS(c[d],c[d].namespaceURI,"trkseg"),h=0,i=g.length;h<i;h++){var j=this.extractSegment(g[h],"trkpt");b.push(new OpenLayers.Feature.Vector(j,f))}}if(this.extractRoutes){e=a.getElementsByTagName("rte");c=0;for(d=\n +e.length;c<d;c++)f={},this.extractAttributes&&(f=this.parseAttributes(e[c])),g=this.extractSegment(e[c],"rtept"),b.push(new OpenLayers.Feature.Vector(g,f))}if(this.extractWaypoints){a=a.getElementsByTagName("wpt");c=0;for(e=a.length;c<e;c++)f={},this.extractAttributes&&(f=this.parseAttributes(a[c])),d=new OpenLayers.Geometry.Point(a[c].getAttribute("lon"),a[c].getAttribute("lat")),b.push(new OpenLayers.Feature.Vector(d,f))}if(this.internalProjection&&this.externalProjection){f=0;for(a=b.length;f<\n +a;f++)b[f].geometry.transform(this.externalProjection,this.internalProjection)}return b},extractSegment:function(a,b){for(var c=this.getElementsByTagNameNS(a,a.namespaceURI,b),d=[],e=0,f=c.length;e<f;e++)d.push(new OpenLayers.Geometry.Point(c[e].getAttribute("lon"),c[e].getAttribute("lat")));return new OpenLayers.Geometry.LineString(d)},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d;a;){if(1==a.nodeType&&a.firstChild&&(c=a.firstChild,3==c.nodeType||4==c.nodeType))d=a.prefix?a.nodeName.split(":")[1]:\n +a.nodeName,"trkseg"!=d&&"rtept"!=d&&(b[d]=c.nodeValue);a=a.nextSibling}return b},write:function(a,b){var a=OpenLayers.Util.isArray(a)?a:[a],c=this.createElementNS(this.namespaces.gpx,"gpx");c.setAttribute("version","1.1");c.setAttribute("creator",this.creator);this.setAttributes(c,{"xsi:schemaLocation":this.schemaLocation});b&&"object"==typeof b&&c.appendChild(this.buildMetadataNode(b));for(var d=0,e=a.length;d<e;d++)c.appendChild(this.buildFeatureNode(a[d]));return OpenLayers.Format.XML.prototype.write.apply(this,\n +[c])},buildMetadataNode:function(a){for(var b=["name","desc","author"],c=this.createElementNSPlus("gpx:metadata"),d=0;d<b.length;d++){var e=b[d];if(a[e]){var f=this.createElementNSPlus("gpx:"+e);f.appendChild(this.createTextNode(a[e]));c.appendChild(f)}}return c},buildFeatureNode:function(a){var b=a.geometry,b=b.clone();this.internalProjection&&this.externalProjection&&b.transform(this.internalProjection,this.externalProjection);if("OpenLayers.Geometry.Point"==b.CLASS_NAME){var c=this.buildWptNode(b);\n +this.appendAttributesNode(c,a);return c}c=this.createElementNSPlus("gpx:trk");this.appendAttributesNode(c,a);for(var a=this.buildTrkSegNode(b),a=OpenLayers.Util.isArray(a)?a:[a],b=0,d=a.length;b<d;b++)c.appendChild(a[b]);return c},buildTrkSegNode:function(a){var b,c,d,e;if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){b=this.createElementNSPlus("gpx:trkseg");c=0;for(d=a.components.length;c<d;c++)e=a.components[c],b.appendChild(this.buildTrkPtNode(e));\n +return b}b=[];c=0;for(d=a.components.length;c<d;c++)b.push(this.buildTrkSegNode(a.components[c]));return b},buildTrkPtNode:function(a){var b=this.createElementNSPlus("gpx:trkpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},buildWptNode:function(a){var b=this.createElementNSPlus("gpx:wpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},appendAttributesNode:function(a,b){var c=this.createElementNSPlus("gpx:name");c.appendChild(this.createTextNode(b.attributes.name||\n +b.id));a.appendChild(c);c=this.createElementNSPlus("gpx:desc");c.appendChild(this.createTextNode(b.attributes.description||this.defaultDesc));a.appendChild(c)},CLASS_NAME:"OpenLayers.Format.GPX"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);if("1.1.1"==c||"1.1.0"==c)c="1.1";return c},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSDescribeLayer.v1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(a){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=a.documentElement.childNodes,b=[],c,d,e=0;e<a.length;++e)if(c=a[e],d=c.nodeName,"LayerDescription"==d){d=c.getAttribute("name");var f="",g="",h="";c.getAttribute("owsType")?(f=c.getAttribute("owsType"),g=c.getAttribute("owsURL")):\n +""!=c.getAttribute("wfs")?(f="WFS",g=c.getAttribute("wfs")):""!=c.getAttribute("wcs")&&(f="WCS",g=c.getAttribute("wcs"));c=c.getElementsByTagName("Query");0<c.length&&((h=c[0].getAttribute("typeName"))||(h=c[0].getAttribute("typename")));b.push({layerName:d,owsType:f,owsURL:g,typeName:h})}return b},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,sphericalMercator:!1,zoomOffset:0,serverResolutions:null,initialize:function(a,b,c){if(c&&c.sphericalMercator||this.sphericalMercator)c=OpenLayers.Util.extend({projection:"EPSG:900913",numZoomLevels:19},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a||this.name,b||this.url,{},c])},clone:function(a){null==a&&(a=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getURL:function(a){var a=this.getXYZ(a),b=this.url;OpenLayers.Util.i + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +sArray(b)&&(b=this.selectUrl(""+a.x+a.y+a.z,b));return OpenLayers.String.format(b,a)},getXYZ:function(a){var b=this.getServerResolution(),c=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w)),a=Math.round((this.maxExtent.top-a.top)/(b*this.tileSize.h)),b=this.getServerZoom();if(this.wrapDateLine)var d=Math.pow(2,b),c=(c%d+d)%d;return{x:c,y:a,z:b}},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,\n +arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",url:["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png","http://b.tile.openstreetmap.org/${z}/${x}/${y}.png","http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"],attribution:"Data CC-By-SA by <a href=\'http://openstreetmap.org/\'>OpenStreetMap</a>",sphericalMercator:!0,wrapDateLine:!0,tileOptions:null,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},\n +this.options&&this.options.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth(),\n +a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,\n +d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/\n +2)/c)*c}},drawGeometry:function(){},drawText:function(){},removeText:function(){},clear:function(){},getFeatureIdFromEvent:function(){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(){},moveRoot:function(){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);\n +!1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};\n +OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},\n +setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,\n +b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==\n +d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,\n +b,c){var d=new Image;b.graphicTitle&&(d.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f),i=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),k=b[0],b=b[1];if(!isNaN(k)&&!isNaN(b)){var k=k+g|0,b=b+h|0,l=this.canvas;l.globalAlpha=i;var m=\n +OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);l.drawImage(d,k*m,b*m,e*m,f*m);if(this.hitDetection){this.setHitContextStyle("fill",c);this.hitContext.fillRect(k,b,e,f)}}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");\n +if(h.length&&!(2>h.length)&&(a=this.getLocalXY(a),e=a[0],g=a[1],!isNaN(e)&&!isNaN(g))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();\n +this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",\n +b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],\n +e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===\n +a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);var a="000000"+a.toString(16),b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);\n +"fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=\n +this.getLocalXY(a),a=d[0],d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",\n +c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,\n +a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();var d=this.getLocalXY(b[0]),f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){var a=a.components,d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<\n +d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");\n +this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];\n +null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];null==h&&(h=-0.5);\n +g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var i=c[0]+h*this.canvas.mozMeasureText(e[g]),j=c[1]+g*d;this.canvas.translate(i,j);this.canvas.mozDrawText(e[g]);this.canvas.translate(-i,-j)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,\n +0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers.Feature.Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];\n +this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=\n +a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:!1,interestingTagsExclude:null,areaTags:null,initialize:function(a){for(var b={interestingTagsExclude:"source source_ref source:ref history attribution created_by".split(" "),areaTags:"area building leisure tourism ruins historic landuse military natural sport".split(" ")},b=OpenLayers.Util.extend(b,a),c={},a=0;a<b.interestingTagsExclude.length;a++)c[b.interestingTagsExclude[a]]=!0;b.interestingTagsExclude=c;c={};for(a=0;a<b.areaTags.length;a++)c[b.areaTags[a]]=\n +!0;b.areaTags=c;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[b])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var b=this.getNodes(a),c=this.getWays(a),a=Array(c.length),d=0;d<c.length;d++){for(var e=Array(c[d].nodes.length),f=this.isWayArea(c[d])?1:0,g=0;g<c[d].nodes.length;g++){var h=b[c[d].nodes[g]],i=new OpenLayers.Geometry.Point(h.lon,h.lat);i.osm_id=parseInt(c[d].nodes[g]);\n +e[g]=i;h.used=!0}h=null;h=f?new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(e)):new OpenLayers.Geometry.LineString(e);this.internalProjection&&this.externalProjection&&h.transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(h,c[d].tags);e.osm_id=parseInt(c[d].id);e.fid="way."+e.osm_id;a[d]=e}for(var j in b){h=b[j];if(!h.used||this.checkTags){c=null;if(this.checkTags){c=this.getTags(h.node,!0);if(h.used&&!c[1])continue;c=c[0]}else c=this.getTags(h.node);\n +e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(h.lon,h.lat),c);this.internalProjection&&this.externalProjection&&e.geometry.transform(this.externalProjection,this.internalProjection);e.osm_id=parseInt(j);e.fid="node."+e.osm_id;a.push(e)}h.node=null}return a},getNodes:function(a){for(var a=a.getElementsByTagName("node"),b={},c=0;c<a.length;c++){var d=a[c],e=d.getAttribute("id");b[e]={lat:d.getAttribute("lat"),lon:d.getAttribute("lon"),node:d}}return b},getWays:function(a){for(var a=\n +a.getElementsByTagName("way"),b=[],c=0;c<a.length;c++){var d=a[c],e={id:d.getAttribute("id")};e.tags=this.getTags(d);d=d.getElementsByTagName("nd");e.nodes=Array(d.length);for(var f=0;f<d.length;f++)e.nodes[f]=d[f].getAttribute("ref");b.push(e)}return b},getTags:function(a,b){for(var c=a.getElementsByTagName("tag"),d={},e=!1,f=0;f<c.length;f++){var g=c[f].getAttribute("k");d[g]=c[f].getAttribute("v");b&&(this.interestingTagsExclude[g]||(e=!0))}return b?[d,e]:d},isWayArea:function(a){var b=!1,c=!1;\n +a.nodes[0]==a.nodes[a.nodes.length-1]&&(b=!0);if(this.checkTags)for(var d in a.tags)if(this.areaTags[d]){c=!0;break}return b&&(this.checkTags?c:!0)},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.osm_id=1;this.created_nodes={};var b=this.createElementNS(null,"osm");b.setAttribute("version","0.5");b.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var c=a.length-1;0<=c;c--)for(var d=this.createFeatureNodes(a[c]),e=0;e<d.length;e++)b.appendChild(d[e]);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[b])},createFeatureNodes:function(a){var b=[],c=a.geometry.CLASS_NAME,c=c.substring(c.lastIndexOf(".")+1),c=c.toLowerCase();(c=this.createXML[c])&&(b=c.apply(this,[a]));return b},createXML:{point:function(a){var b=null,c=a.geometry?a.geometry:a;this.internalProjection&&this.externalProjection&&(c=c.clone(),c.transform(this.internalProjection,this.externalProjection));var d=!1;a.osm_id?(b=a.osm_id,this.created_nodes[b]&&(d=!0)):(b=-this.osm_id,this.osm_id++);var e=d?this.created_nodes[b]:this.createElementNS(null,\n +"node");this.created_nodes[b]=e;e.setAttribute("id",b);e.setAttribute("lon",c.x);e.setAttribute("lat",c.y);a.attributes&&this.serializeTags(a,e);this.setState(a,e);return d?[]:[e]},linestring:function(a){var b,c=[],d=a.geometry;a.osm_id?b=a.osm_id:(b=-this.osm_id,this.osm_id++);var e=this.createElementNS(null,"way");e.setAttribute("id",b);for(b=0;b<d.components.length;b++){var f=this.createXML.point.apply(this,[d.components[b]]);if(f.length){var f=f[0],g=f.getAttribute("id");c.push(f)}else g=d.components[b].osm_id,\n +f=this.created_nodes[g];this.setState(a,f);f=this.createElementNS(null,"nd");f.setAttribute("ref",g);e.appendChild(f)}this.serializeTags(a,e);c.push(e);return c},polygon:function(a){var b=OpenLayers.Util.extend({area:"yes"},a.attributes),b=new OpenLayers.Feature.Vector(a.geometry.components[0],b);b.osm_id=a.osm_id;return this.createXML.linestring.apply(this,[b])}},serializeTags:function(a,b){for(var c in a.attributes){var d=this.createElementNS(null,"tag");d.setAttribute("k",c);d.setAttribute("v",\n +a.attributes[c]);b.appendChild(d)}},setState:function(a,b){if(a.state){var c=null;switch(a.state){case OpenLayers.State.UPDATE:case OpenLayers.State.DELETE:c="delete"}c&&b.setAttribute("action",c)}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:0))==\n +this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=!1;return!0},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,\n +this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,touch:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},\n +dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.stop(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):(this.started=\n +!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;if(this.started&&!this.timeoutId&&(a.xy.x!=this.last.x||a.xy.y!=this.last.y))!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=\n +document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy;return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(){},move:function(){},\n +up:function(){},out:function(){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this}));return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},\n +touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(){return this.start==\n +this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=this.touch=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,\n +"olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,touch:!1,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=\n +b},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this}));return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.stop(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?\n +!this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==\n +b;if((this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer)this.feature=null;this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=null);this.feature?("touchstart"===b&&OpenLayers.Event.stop(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):(!d||e)&&this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&\n +(d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",[this.lastFeature]);return c},triggerCallback:function(a,b,c){(b=this.EVENTMAP[a][b])&&("click"==a&&this.up&&this.down?Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c):this.callback(b,c))},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),\n +this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.touch=!1,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){("removelayer"==a.type||"order"==a.property)&&this.moveLayerToTop()},\n +moveLayerToTop:function(){this.layer.setZIndex(Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1)},moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(){},onDrag:function(){},onComplete:function(){},onEnter:function(){},onLeave:function(){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,\n +up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&(!this.over&&this.overFeature(a))&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=\n +!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*\n +(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},\n +cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=\n +a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,\n +b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);(!this.renderer||!this.renderer.supported())&&this.assignRenderer();if(!this.renderer||\n +!this.renderer.supported())this.renderer=null,this.displayError();this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),\n +this.protocol=null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));for(var a=OpenLayers.Layer.prototype.clone.apply(this,[a]),b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&\n +this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,\n +arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(){this.drawn=!1;if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,\n +arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+parseInt(this.map.layerContainerDiv.style.left,10),e=-Math.round(e),d=d+parseInt(this.map.layerContainerDiv.style.top,10),d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=\n +d+"px";d=this.renderer.setExtent(this.map.getExtent().scale(this.ratio),b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d){this.drawn=!0;f=0;for(d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)}},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);\n +var b=this.div.style.display;b!=this.renderer.root.style.display&&(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+\n +this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);\n +OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,\n +e)&&OpenLayers.Util.removeItem(this.selectedFeatures,e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){var a=!a||!a.silent,b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();\n +this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){!b&&a.state===OpenLayers.State.DELETE&&(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,\n +b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=\n +null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(){},preFeatureInsert:function(){},getDataExtent:function(){var a=null,b=this.features;\n +if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);\n +this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,\n +b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=\n +{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=\n +new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&\n +(this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){for(var b=this.layers||[this.layer],c,d,e=0;e<b.length;++e){c=b[e];for(var f=c.selectedFeatures.length-1;0<=f;--f)d=c.selectedFeatures[f],(!a||a.except!=d)&&this.unselect(d)}},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,a)?this.toggleSelect()?\n +this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=a.layer;this.hover&&(this.highlightOnly?\n +this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&(a._prevHighlighter=a._lastHighlighter,\n +a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=this.onBeforeSelect.call(this.scope,\n +a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",{feature:a});this.onUnselect.call(this.scope,\n +a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=d.features[f];h.getVisibility()&&(null==\n +this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();this.deactivate();this.layers&&\n +(this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,observeElement:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this)},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments)},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,\n +arguments)){this.observeElement=this.observeElement||document;for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.observe(this.observeElement,this.KEY_EVENTS[a],this.eventListener);return!0}return!1},deactivate:function(){var a=!1;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.stopObserving(this.observeElement,this.KEY_EVENTS[a],this.eventListener);a=!0}return a},handleKeyEvent:function(a){this.checkModifiers(a)&&\n +this.callback(a.type,[a])},CLASS_NAME:"OpenLayers.Handler.Keyboard"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,clickout:!0,toggle:!0,standalone:!1,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,handlers:null,deleteCodes:null,virtualStyle:null,vertexRenderIntent:null,mode:null,createVertices:!0,modified:!1,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(a,b){b=b||{};this.layer=\n +a;this.vertices=[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer(null,b.vertexRenderIntent));this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[b]);OpenLayers.Util.isArray(this.deleteCodes)||(this.deleteCodes=[this.deleteCodes]);var c=this,d={geometryTypes:this.geometryTypes,clickout:this.clickout,\n +toggle:this.toggle,onBeforeSelect:this.beforeSelectFeature,onSelect:this.selectFeature,onUnselect:this.unselectFeature,scope:this};!1===this.standalone&&(this.selectControl=new OpenLayers.Control.SelectFeature(a,d));this.dragControl=new OpenLayers.Control.DragFeature(a,{geometryTypes:["OpenLayers.Geometry.Point"],onStart:function(a,b){c.dragStart.apply(c,[a,b])},onDrag:function(a,b){c.dragVertex.apply(c,[a,b])},onComplete:function(a){c.dragComplete.apply(c,[a])},featureCallbacks:{over:function(a){(c.standalone!==\n +true||a._sketch||c.feature===a)&&c.dragControl.overFeature.apply(c.dragControl,[a])}}});this.handlers={keyboard:new OpenLayers.Handler.Keyboard(this,{keydown:this.handleKeypress})}},destroy:function(){this.layer=null;this.standalone||this.selectControl.destroy();this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return(this.standalone||this.selectControl.activate())&&this.handlers.keyboard.activate()&&OpenLayers.Control.prototype.activate.apply(this,\n +arguments)},deactivate:function(){var a=!1;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices,{silent:!0});this.layer.removeFeatures(this.virtualVertices,{silent:!0});this.vertices=[];this.dragControl.deactivate();var b=(a=this.feature)&&a.geometry&&a.layer;!1===this.standalone?(b&&this.selectControl.unselect.apply(this.selectControl,[a]),this.selectControl.deactivate()):b&&this.unselectFeature(a);this.handlers.keyboard.deactivate();a=!0}return a},\n +beforeSelectFeature:function(a){return this.layer.events.triggerEvent("beforefeaturemodified",{feature:a})},selectFeature:function(a){if(!this.standalone||!1!==this.beforeSelectFeature(a))this.feature=a,this.modified=!1,this.resetVertices(),this.dragControl.activate(),this.onModificationStart(this.feature);var b=a.modified;if(a.geometry&&(!b||!b.geometry))this._originalGeometry=a.geometry.clone()},unselectFeature:function(a){this.layer.removeFeatures(this.vertices,{silent:!0});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,\n +{silent:!0});this.virtualVertices=[];this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),delete this.dragHandle);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),delete this.radiusHandle);this.feature=null;this.dragControl.deactivate();this.onModificationEnd(a);this.layer.events.triggerEvent("afterfeaturemodified",{feature:a,modified:this.modified});this.modified=!1},dragStart:function(a,b){if(a!=this.feature&&(!a.geometry.parent&&a!=this.dragHandle&&\n +a!=this.radiusHandle)&&(!1===this.standalone&&this.feature&&this.selectControl.clickFeature.apply(this.selectControl,[this.feature]),null==this.geometryTypes||-1!=OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)))this.standalone||this.selectControl.clickFeature.apply(this.selectControl,[a]),this.dragControl.overFeature.apply(this.dragControl,[a]),this.dragControl.lastPixel=b,this.dragControl.handlers.drag.started=!0,this.dragControl.handlers.drag.start=b,this.dragControl.handlers.drag.last=\n +b},dragVertex:function(a,b){this.modified=!0;"OpenLayers.Geometry.Point"==this.feature.geometry.CLASS_NAME?(this.feature!=a&&(this.feature=a),this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b})):(a._index?(a.geometry.parent.addComponent(a.geometry,a._index),delete a._index,OpenLayers.Util.removeItem(this.virtualVertices,a),this.vertices.push(a)):a==this.dragHandle?(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[],this.radiusHandle&&\n +(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null)):a!==this.radiusHandle&&this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b}),0<this.virtualVertices.length&&(this.layer.destroyFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent));this.layer.drawFeature(a)},dragComplete:function(){this.resetVertices();this.setFeatureState();\n +this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&this.feature.state!=OpenLayers.State.DELETE&&(this.feature.state=OpenLayers.State.UPDATE,this.modified&&this._originalGeometry)){var a=this.feature;a.modified=OpenLayers.Util.extend(a.modified,{geometry:this._originalGeometry});delete this._originalGeometry}},resetVertices:function(){this.dragControl.feature&&this.dragControl.outFeature(this.dragControl.feature);\n +0<this.vertices.length&&(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[]);0<this.virtualVertices.length&&(this.layer.removeFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]);this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),this.dragHandle=null);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null);this.feature&&"OpenLayers.Geometry.Point"!=this.feature.geometry.CLASS_NAME&&(this.mode&\n +OpenLayers.Control.ModifyFeature.DRAG&&this.collectDragHandle(),this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE)&&this.collectRadiusHandle(),this.mode&OpenLayers.Control.ModifyFeature.RESHAPE&&(this.mode&OpenLayers.Control.ModifyFeature.RESIZE||this.collectVertices()))},handleKeypress:function(a){var b=a.keyCode;if(this.feature&&-1!=OpenLayers.Util.indexOf(this.deleteCodes,b)&&(b=this.dragControl.feature)&&-1!=OpenLayers.Util.indexOf(this.vertices,b)&&!this.dragControl.handlers.drag.dragging&&\n +b.geometry.parent)b.geometry.parent.removeComponent(b.geometry),this.layer.events.triggerEvent("vertexremoved",{vertex:b.geometry,feature:this.feature,pixel:a.xy}),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent),this.modified=!0,this.resetVertices(),this.setFeatureState(),this.onModification(this.feature),this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},collectVertices:function(){function a(c){var d,e,f;if("OpenLayers.Geometry.Point"==\n +c.CLASS_NAME)e=new OpenLayers.Feature.Vector(c),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e);else{f=c.components.length;"OpenLayers.Geometry.LinearRing"==c.CLASS_NAME&&(f-=1);for(d=0;d<f;++d)e=c.components[d],"OpenLayers.Geometry.Point"==e.CLASS_NAME?(e=new OpenLayers.Feature.Vector(e),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e)):a(e);if(b.createVertices&&"OpenLayers.Geometry.MultiPoint"!=c.CLASS_NAME){d=0;for(f=c.components.length;d<f-1;++d){e=c.components[d];\n +var g=c.components[d+1];"OpenLayers.Geometry.Point"==e.CLASS_NAME&&"OpenLayers.Geometry.Point"==g.CLASS_NAME&&(e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point((e.x+g.x)/2,(e.y+g.y)/2),null,b.virtualStyle),e.geometry.parent=c,e._index=d+1,e._sketch=!0,b.virtualVertices.push(e))}}}}this.vertices=[];this.virtualVertices=[];var b=this;a.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:!0});this.layer.addFeatures(this.vertices,{silent:!0})},collectDragHandle:function(){var a=\n +this.feature.geometry,b=a.getBounds().getCenterLonLat(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),c=new OpenLayers.Feature.Vector(b);b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);a.move(b,c)};c._sketch=!0;this.dragHandle=c;this.dragHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.dragHandle],{silent:!0})},collectRadiusHandle:function(){var a=this.feature.geometry,b=a.getBounds(),c=b.getCenterLonLat(),d=new OpenLayers.Geometry.Point(c.lon,c.lat),\n +b=new OpenLayers.Geometry.Point(b.right,b.bottom),c=new OpenLayers.Feature.Vector(b),e=this.mode&OpenLayers.Control.ModifyFeature.RESIZE,f=this.mode&OpenLayers.Control.ModifyFeature.RESHAPE,g=this.mode&OpenLayers.Control.ModifyFeature.ROTATE;b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);var j=this.x-d.x,k=this.y-d.y,l=j-b,m=k-c;if(g){var n=Math.atan2(m,l),n=Math.atan2(k,j)-n,n=n*(180/Math.PI);a.rotate(n,d)}if(e){var o;f?(k/=m,o=j/l/k):(l=Math.sqrt(l*l+m*m),k=Math.sqrt(j*\n +j+k*k)/l);a.resize(k,d,o)}};c._sketch=!0;this.radiusHandle=c;this.radiusHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.radiusHandle],{silent:!0})},setMap:function(a){this.standalone||this.selectControl.setMap(a);this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;\n +OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Layer.Bing=OpenLayers.Class(OpenLayers.Layer.XYZ,{key:null,serverResolutions:[156543.03390625,78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677,0.14929107084870338,0.07464553542435169],attributionTemplate:\'<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>\',\n +metadata:null,type:"Road",culture:"en-US",metadataParams:null,tileOptions:null,initialize:function(a){a=OpenLayers.Util.applyDefaults({sphericalMercator:!0},a);OpenLayers.Layer.XYZ.prototype.initialize.apply(this,[a.name||"Bing "+(a.type||this.type),null,a]);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options.tileOptions);this.loadMetadata()},loadMetadata:function(){this._callbackId="_callback_"+this.id.replace(/\\./g,"_");window[this._callbackId]=OpenLayers.Function.bind(OpenLayers.Layer.Bing.processMetadata,\n +this);var a=OpenLayers.Util.applyDefaults({key:this.key,jsonp:this._callbackId,include:"ImageryProviders"},this.metadataParams),a="http://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.type+"?"+OpenLayers.Util.getParameterString(a),b=document.createElement("script");b.type="text/javascript";b.src=a;b.id=this._callbackId;document.getElementsByTagName("head")[0].appendChild(b)},initLayer:function(){var a=this.metadata.resourceSets[0].resources[0],b=a.imageUrl.replace("{quadkey}","${quadkey}"),\n +b=b.replace("{culture}",this.culture);this.url=[];for(var c=0;c<a.imageUrlSubdomains.length;++c)this.url.push(b.replace("{subdomain}",a.imageUrlSubdomains[c]));this.addOptions({maxResolution:Math.min(this.serverResolutions[a.zoomMin],this.maxResolution||Number.POSITIVE_INFINITY),numZoomLevels:Math.min(a.zoomMax+1-a.zoomMin,this.numZoomLevels)},!0)},getURL:function(a){if(this.url){for(var b=this.getXYZ(a),a=b.x,c=b.y,b=b.z,d=[],e=b;0<e;--e){var f="0",g=1<<e-1;0!=(a&g)&&f++;0!=(c&g)&&(f++,f++);d.push(f)}d=\n +d.join("");a=this.selectUrl(""+a+c+b,this.url);return OpenLayers.String.format(a,{quadkey:d})}},updateAttribution:function(){var a=this.metadata;if(a.resourceSets&&this.map&&this.map.center){var b=a.resourceSets[0].resources[0],c=this.map.getExtent().transform(this.map.getProjectionObject(),new OpenLayers.Projection("EPSG:4326")),b=b.imageryProviders,d=OpenLayers.Util.indexOf(this.serverResolutions,this.getServerResolution()),e="",f,g,h,i,j,k,l;g=0;for(h=b.length;g<h;++g){f=b[g];i=0;for(j=f.coverageAreas.length;i<\n +j;++i)l=f.coverageAreas[i],k=OpenLayers.Bounds.fromArray(l.bbox,!0),c.intersectsBounds(k)&&(d<=l.zoomMax&&d>=l.zoomMin)&&(e+=f.attribution+" ")}this.attribution=OpenLayers.String.format(this.attributionTemplate,{type:this.type.toLowerCase(),logo:a.brandLogoUri,copyrights:e});this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"attribution"})}},setMap:function(){OpenLayers.Layer.XYZ.prototype.setMap.apply(this,arguments);this.updateAttribution();this.map.events.register("moveend",\n +this,this.updateAttribution)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Bing(this.options));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},destroy:function(){this.map&&this.map.events.unregister("moveend",this,this.updateAttribution);OpenLayers.Layer.XYZ.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.Bing"});\n +OpenLayers.Layer.Bing.processMetadata=function(a){this.metadata=a;this.initLayer();a=document.getElementById(this._callbackId);a.parentNode.removeChild(a);window[this._callbackId]=void 0;delete this._callbackId};OpenLayers.Layer.PointGrid=OpenLayers.Class(OpenLayers.Layer.Vector,{dx:null,dy:null,ratio:1.5,maxFeatures:250,rotation:0,origin:null,gridBounds:null,initialize:function(a){a=a||{};OpenLayers.Layer.Vector.prototype.initialize.apply(this,[a.name,a])},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);a.events.register("moveend",this,this.onMoveEnd)},removeMap:function(a){a.events.unregister("moveend",this,this.onMoveEnd);OpenLayers.Layer.Vector.prototype.removeMap.apply(this,\n +arguments)},setRatio:function(a){this.ratio=a;this.updateGrid(!0)},setMaxFeatures:function(a){this.maxFeatures=a;this.updateGrid(!0)},setSpacing:function(a,b){this.dx=a;this.dy=b||a;this.updateGrid(!0)},setOrigin:function(a){this.origin=a;this.updateGrid(!0)},getOrigin:function(){this.origin||(this.origin=this.map.getExtent().getCenterLonLat());return this.origin},setRotation:function(a){this.rotation=a;this.updateGrid(!0)},onMoveEnd:function(){this.updateGrid()},getViewBounds:function(){var a=this.map.getExtent();\n +if(this.rotation){var b=this.getOrigin(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),a=a.toGeometry();a.rotate(-this.rotation,b);a=a.getBounds()}return a},updateGrid:function(a){if(a||this.invalidBounds()){var b=this.getViewBounds(),c=this.getOrigin(),a=new OpenLayers.Geometry.Point(c.lon,c.lat),d=b.getWidth(),e=b.getHeight(),f=d/e,g=Math.sqrt(this.dx*this.dy*this.maxFeatures/f),d=Math.min(d*this.ratio,g*f),e=Math.min(e*this.ratio,g),b=b.getCenterLonLat();this.gridBounds=new OpenLayers.Bounds(b.lon-\n +d/2,b.lat-e/2,b.lon+d/2,b.lat+e/2);for(var b=Math.floor(e/this.dy),d=Math.floor(d/this.dx),e=c.lon+this.dx*Math.ceil((this.gridBounds.left-c.lon)/this.dx),c=c.lat+this.dy*Math.ceil((this.gridBounds.bottom-c.lat)/this.dy),g=Array(b*d),h,i=0;i<d;++i)for(var f=e+i*this.dx,j=0;j<b;++j)h=c+j*this.dy,h=new OpenLayers.Geometry.Point(f,h),this.rotation&&h.rotate(this.rotation,a),g[i*b+j]=new OpenLayers.Feature.Vector(h);this.destroyFeatures(this.features,{silent:!0});this.addFeatures(g,{silent:!0})}},invalidBounds:function(){return!this.gridBounds||\n +!this.gridBounds.containsBounds(this.getViewBounds())},CLASS_NAME:"OpenLayers.Layer.PointGrid"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=!1,c=!1,d=!1,e=\n +OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"),b=f&&"auto"==f||"scroll"==f}catch(g){}if(!c)for(var d=0,h=this.map.layers.length;d<h;d++)if(e==this.map.layers[d].div||e==this.map.layers[d].pane){c=!0;break}d=e==this.map.div;e=e.parentNode}!b&&d&&(c&&((b=0,a||(a=window.event),a.wheelDelta?(b=a.wheelDelta/120,window.opera&&9.2>window.opera.version()&&(b=-b)):a.detail&&(b=-a.detail/\n +3),this.delta+=b,this.interval)?(window.clearTimeout(this._timeoutId),this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(a)},this),this.interval)):this.wheelZoom(a)),OpenLayers.Event.stop(a))}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(this.mousePosition&&(a.xy=t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +his.mousePosition),a.xy||(a.xy=this.map.getPixelFromLonLat(this.map.getCenter())),0>b?this.callback("down",[a,this.cumulative?b:-1]):this.callback("up",[a,this.cumulative?b:1]))},mousemove:function(a){this.mousePosition=\n +a.xy},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",\n +b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(a){OpenLayers.Util.extend(this,a)},clone:function(){return new (eval(this.CLASS_NAME))(OpenLayers.Util.extend({},this))},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=\n +this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==\n +typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},\n +this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=\n +OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{profile:null,defaultVersion:"1.0.0",stringifyOutput:!0,namedLayersAsArray:!1,CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({outerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},innerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},Box:function(a,b){var c=\n +{};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,d.y,c.x,c.y))}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode(OpenLayers.Util.isArray(a)?"wfs:FeatureCollection":"gml:featureMember",a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);\n +return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[a],b);return b},coordinates:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+","+d.y:d.y+","+d.x,void 0!=d.z&&(c[e]+=","+d.z);return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:1==b?c[0]:c.join(" ")})},LineString:function(a){var b=\n +this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",a.components,b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",a.components[0],b);for(var c=1;c<a.components.length;++c)this.writeNode("innerBoundaryIs",a.components[c],b);return b},outerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",a,b);return b},innerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:innerBoundaryIs");\n +this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",a.components,b);return b},Box:function(a){var b=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:a.left,y:a.bottom},{x:a.right,y:a.top}],b);this.srsName&&b.setAttribute("srsName",this.srsName);return b}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},\n +CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,\n +b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escape");c.value2regex(d,e,f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,\n +feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",\n +{attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Box",a.value,b);a.projection&&c.setAttribute("srsName",a.projection);return b}},OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature},\n +writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Box",a.value);a.projection&&d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:!1,schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v2.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({WFS_TransactionResponse:function(a,\n +b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},InsertResult:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])},TransactionResult:function(a,b){this.readChildNodes(a,b)},Status:function(a,b){this.readChildNodes(a,b)},SUCCESS:function(a,b){b.success=!0}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,feature:OpenLayers.Format.GML.v2.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.readers.ogc},\n +writers:{wfs:OpenLayers.Util.applyDefaults({Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType}});a.srsNameInQuery&&a.srsName&&c.setAttribute("srsName",a.srsName);a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<\n +d;b++)this.writeNode("ogc:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(this.setFilterProperty(a.filter),this.writeNode("ogc:Filter",a.filter,c));return c}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,\n +0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){var a=a.id,b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;\n +null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});\n +OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){var b=a.getZIndex(b),d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};\n +OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);\n +this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(b&&(b.zIndexing||b.yOrdering))this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering)},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&\n +this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth(),a=a.scale(1/f),f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(){},drawGeometry:function(a,\n +b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));if(!1==e&&(b=document.getElementById(a.id)))b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b);\n +d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);\n +this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,\n +b,c,null)},drawGeometryNode:function(a,b,c){var c=c||a._style,d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;\n +case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(){},drawPoint:function(){},drawLineString:function(){},drawLinearRing:function(){},drawPolygon:function(){},drawRectangle:function(){},drawCircle:function(){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},\n +getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else if((c=OpenLayers.Util.getElement(a.id))&&c.parentNode)if(c.geometry&&\n +(c.geometry.destroy(),c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic)(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c)},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(){},createNode:function(){},moveRoot:function(a){var b=this.root;\n +a.root.parentNode==this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){var a=a||window.location.href,b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&\n +"OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}if(b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon))this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),\n +this.setCenter()},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);\n +"B"==d?this.map.setBaseLayer(c):("T"==d||"F"==d)&&c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null!==a&&"object"==typeof a&&!OpenLayers.Util.isElement(a)?(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=OpenLayers.Util.getElement(this.element))):(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),\n +this.base=b||document.location.href)},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=\n +this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);!this.element&&!this.anchor&&(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,\n +changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base;-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b+=a+OpenLayers.Util.getParameterString(this.createParams());this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){var a=a||this.map.getCenter(),d=OpenLayers.Util.getParameters(this.base);if(a){d.zoom=b||this.map.getZoom();b=a.lat;a=a.lon;this.displayProjection&&(b=\n +OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y);d.lat=Math.round(1E5*b)/1E5;d.lon=Math.round(1E5*a)/1E5;c=c||this.map.layers;d.layers="";a=0;for(b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",layername:null,type:null,isBaseLayer:!0,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(a,b,c){var d=[];d.push(a,b,{},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,d)},clone:function(a){null==a&&(a=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.getServerResolution(),\n +c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((a.bottom-this.tileOrigin.lat)/(b*this.tileSize.h)),c=this.serviceVersion+"/"+this.layername+"/"+this.getServerZoom()+"/"+c+"/"+a+"."+this.type,a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({refresh:this.load,scope:this});if(!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return!0}return!1},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,\n +scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart");b.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,b.map.getProjectionObject()),filter:b.filter},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a,b){var c=this.layer;c.destroyFeatures();var d=b.features;if(d&&0<d.length){if(!a.equals(c.projection))for(var e,f=0,g=d.length;f<g;++f)(e=d[f].geometry)&&e.transform(c.projection,a);c.addFeatures(d)}c.events.triggerEvent("loadend")},\n +CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Control.Zoom=OpenLayers.Class(OpenLayers.Control,{zoomInText:"+",zoomInId:"olZoomInLink",zoomOutText:"-",zoomOutId:"olZoomOutLink",draw:function(){var a=OpenLayers.Control.prototype.draw.apply(this),b=this.getOrCreateLinks(a),c=b.zoomIn,b=b.zoomOut,d=this.map.events;b.parentNode!==a&&(d=this.events,d.attachToElement(b.parentNode));d.register("buttonclick",this,this.onZoomClick);this.zoomInLink=c;this.zoomOutLink=b;return a},getOrCreateLinks:function(a){var b=document.getElementById(this.zoomInId),\n +c=document.getElementById(this.zoomOutId);b||(b=document.createElement("a"),b.href="#zoomIn",b.appendChild(document.createTextNode(this.zoomInText)),b.className="olControlZoomIn",a.appendChild(b));OpenLayers.Element.addClass(b,"olButton");c||(c=document.createElement("a"),c.href="#zoomOut",c.appendChild(document.createTextNode(this.zoomOutText)),c.className="olControlZoomOut",a.appendChild(c));OpenLayers.Element.addClass(c,"olButton");return{zoomIn:b,zoomOut:c}},onZoomClick:function(a){a=a.buttonElement;\n +a===this.zoomInLink?this.map.zoomIn():a===this.zoomOutLink&&this.map.zoomOut()},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onZoomClick);delete this.zoomInLink;delete this.zoomOutLink;OpenLayers.Control.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Control.Zoom"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,styleFrom:null,addNodes:function(a,b){if(2>a.length)throw Error("At least two point features have to be added to create a line from");for(var c=Array(a.length-1),d,e,f,g=0,h=a.length;g<h;g++){d=a[g];if(f=d.geometry){if("OpenLayers.Geometry.Point"!=f.CLASS_NAME)throw new TypeError("Only features with point geometries are supported.");}else f=d.lonlat,f=new OpenLayers.Geometry.Point(f.lon,f.lat);if(0<g){d=null!=this.dataFrom?\n +a[g+this.dataFrom].data||a[g+this.dataFrom].attributes:null;var i=null!=this.styleFrom?a[g+this.styleFrom].style:null;e=new OpenLayers.Geometry.LineString([e,f]);c[g-1]=new OpenLayers.Feature.Vector(e,d,i)}e=f}this.addFeatures(c,b)},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.SOURCE_NODE=-1;OpenLayers.Layer.PointTrack.TARGET_NODE=0;OpenLayers.Layer.PointTrack.dataFrom={SOURCE_NODE:-1,TARGET_NODE:0};OpenLayers.Protocol.WFS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.WFS.DEFAULTS),b=OpenLayers.Protocol.WFS["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported WFS version: "+a.version;return new b(a)};\n +OpenLayers.Protocol.WFS.fromWMSLayer=function(a,b){var c,d;c=a.params.LAYERS;c=(OpenLayers.Util.isArray(c)?c[0]:c).split(":");1<c.length&&(d=c[0]);c=c.pop();d={url:a.url,featureType:c,featurePrefix:d,srsName:a.projection&&a.projection.getCode()||a.map&&a.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(b,d))};OpenLayers.Protocol.WFS.DEFAULTS={version:"1.0.0"};OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,markers:null,drawn:!1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[]},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var a=0,b=this.markers.length;a<b;a++)this.markers[a].setOpacity(this.opacity)}},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,\n +arguments);if(b||!this.drawn){for(var d=0,e=this.markers.length;d<e;d++)this.drawMarker(this.markers[d]);this.drawn=!0}},addMarker:function(a){this.markers.push(a);1>this.opacity&&a.setOpacity(this.opacity);this.map&&this.map.getExtent()&&(a.map=this.map,this.drawMarker(a))},removeMarker:function(a){this.markers&&this.markers.length&&(OpenLayers.Util.removeItem(this.markers,a),a.erase())},clearMarkers:function(){if(null!=this.markers)for(;0<this.markers.length;)this.removeMarker(this.markers[0])},\n +drawMarker:function(a){var b=this.map.getLayerPxFromLonLat(a.lonlat);null==b?a.display(!1):a.isDrawn()?a.icon&&a.icon.moveTo(b):this.div.appendChild(a.draw(b))},getDataExtent:function(){var a=null;if(this.markers&&0<this.markers.length)for(var a=new OpenLayers.Bounds,b=0,c=this.markers.length;b<c;b++)a.extend(this.markers[b].lonlat);return a},CLASS_NAME:"OpenLayers.Layer.Markers"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,direction:null,type:OpenLayers.Control.TYPE_BUTTON,initialize:function(a,b){this.direction=a;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[b])},trigger:function(){var a=OpenLayers.Function.bind(function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},this);switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-a("h"));\n +break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,a("h"));break;case OpenLayers.Control.Pan.WEST:this.map.pan(-a("w"),0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(a("w"),0)}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.Format.CSWGetDomain=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetDomain.DEFAULTS),b=OpenLayers.Format.CSWGetDomain["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSWGetDomain version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetDomain.DEFAULTS={version:"2.0.2"};OpenLayers.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==\n +a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{csw:{GetDomainResponse:function(a,b){this.readChildNodes(a,b)},DomainValues:function(a,b){OpenLayers.Util.isArray(b.DomainValues)||(b.DomainValues=[]);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;this.readChildNodes(a,d);b.DomainValues.push(d)},PropertyName:function(a,b){b.PropertyName=this.getChildValue(a)},ParameterName:function(a,b){b.ParameterName=this.getChildValue(a)},ListOfValues:function(a,\n +b){OpenLayers.Util.isArray(b.ListOfValues)||(b.ListOfValues=[]);this.readChildNodes(a,b.ListOfValues)},Value:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.push({Value:d})},ConceptualScheme:function(a,b){b.ConceptualScheme={};this.readChildNodes(a,b.ConceptualScheme)},Name:function(a,b){b.Name=this.getChildValue(a)},Document:function(a,b){b.Document=this.getChildValue(a)},Authority:function(a,b){b.Authority=this.getChildValue(a)},\n +RangeOfValues:function(a,b){b.RangeOfValues={};this.readChildNodes(a,b.RangeOfValues)},MinValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MinValue=d},MaxValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MaxValue=d}}},write:function(a){a=this.writeNode("csw:GetDomain",a);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{csw:{GetDomain:function(a){var b=\n +this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});if(a.PropertyName||this.PropertyName)this.writeNode("csw:PropertyName",a.PropertyName||this.PropertyName,b);else if(a.ParameterName||this.ParameterName)this.writeNode("csw:ParameterName",a.ParameterName||this.ParameterName,b);this.readChildNodes(b,a);return b},PropertyName:function(a){return this.createElementNSPlus("csw:PropertyName",{value:a})},ParameterName:function(a){return this.createElementNSPlus("csw:ParameterName",\n +{value:a})}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{read:function(a){return(new OpenLayers.Format.ArcXML).read(a).features.feature}});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{DEFAULTS:{tolerance:10,node:!0,edge:!0,vertex:!0},greedy:!0,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.layer&&this.setLayer(this.options.layer);a=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(a,this.DEFAULTS);this.setTargets(this.options.targets);\n +0===this.targets.length&&this.layer&&this.addTargetLayer(this.layer);this.geoToleranceCache={}},setLayer:function(a){this.active?(this.deactivate(),this.layer=a,this.activate()):this.layer=a},setTargets:function(a){this.targets=[];if(a&&a.length)for(var b,c=0,d=a.length;c<d;++c)b=a[c],b instanceof OpenLayers.Layer.Vector?this.addTargetLayer(b):this.addTarget(b)},addTargetLayer:function(a){this.addTarget({layer:a})},addTarget:function(a){a=OpenLayers.Util.applyDefaults(a,this.defaults);a.nodeTolerance=\n +a.nodeTolerance||a.tolerance;a.vertexTolerance=a.vertexTolerance||a.tolerance;a.edgeTolerance=a.edgeTolerance||a.tolerance;this.targets.push(a)},removeTargetLayer:function(a){for(var b,c=this.targets.length-1;0<=c;--c)b=this.targets[c],b.layer===a&&this.removeTarget(b)},removeTarget:function(a){return OpenLayers.Util.removeItem(this.targets,a)},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a&&this.layer&&this.layer.events)this.layer.events.on({sketchstarted:this.onSketchModified,\n +sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.layer&&this.layer.events&&this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});this.point=this.feature=null;return a},onSketchModified:function(a){this.feature=a.feature;this.considerSnapping(a.vertex,a.vertex)},onVertexModified:function(a){this.feature=\n +a.feature;var b=this.layer.map.getLonLatFromViewPortPx(a.pixel);this.considerSnapping(a.vertex,new OpenLayers.Geometry.Point(b.lon,b.lat))},considerSnapping:function(a,b){for(var c={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null},d=!1,e,f,g=0,h=this.targets.length;g<h;++g)if(f=this.targets[g],e=this.testTarget(f,b))if(this.greedy){c=e;c.target=f;d=!0;break}else if(e.rank<c.rank||e.rank===c.rank&&e.dist<c.dist)c=e,c.target=f,d=!0;d&&(!1!==this.events.triggerEvent("beforesnap",\n +{point:a,x:c.x,y:c.y,distance:c.dist,layer:c.target.layer,snapType:this.precedence[c.rank]})?(a.x=c.x,a.y=c.y,this.point=a,this.events.triggerEvent("snap",{point:a,snapType:this.precedence[c.rank],layer:c.target.layer,distance:c.dist})):d=!1);this.point&&!d&&(a.x=b.x,a.y=b.y,this.point=null,this.events.triggerEvent("unsnap",{point:a}))},testTarget:function(a,b){var c=this.layer.map.getResolution();if("minResolution"in a&&c<a.minResolution||"maxResolution"in a&&c>=a.maxResolution)return null;for(var c=\n +{node:this.getGeoTolerance(a.nodeTolerance,c),vertex:this.getGeoTolerance(a.vertexTolerance,c),edge:this.getGeoTolerance(a.edgeTolerance,c)},d=Math.max(c.node,c.vertex,c.edge),e={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY},f=!1,g=a.layer.features,h,i,j,k,l,m,n=this.precedence.length,o=new OpenLayers.LonLat(b.x,b.y),p=0,q=g.length;p<q;++p)if(h=g[p],h!==this.feature&&(!h._sketch&&h.state!==OpenLayers.State.DELETE&&(!a.filter||a.filter.evaluate(h)))&&h.atPoint(o,d,d))for(var r=0,s=Math.min(e.rank+\n +1,n);r<s;++r)if(i=this.precedence[r],a[i])if("edge"===i){if(j=h.geometry.distanceTo(b,{details:!0}),l=j.distance,l<=c[i]&&l<e.dist){e={rank:r,dist:l,x:j.x0,y:j.y0};f=!0;break}}else{j=h.geometry.getVertices("node"===i);m=!1;for(var t=0,u=j.length;t<u;++t)if(k=j[t],l=k.distanceTo(b),l<=c[i]&&(r<e.rank||r===e.rank&&l<e.dist))e={rank:r,dist:l,x:k.x,y:k.y},m=f=!0;if(m)break}return f?e:null},getGeoTolerance:function(a,b){b!==this.resolution&&(this.resolution=b,this.geoToleranceCache={});var c=this.geoToleranceCache[a];\n +void 0===c&&(c=a*b,this.geoToleranceCache[a]=c);return c},destroy:function(){this.active&&this.deactivate();delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Date={toISOString:function(){if("toISOString"in Date.prototype)return function(a){return a.toISOString()};var a=function(a,c){for(var d=a+"";d.length<c;)d="0"+d;return d};return function(b){return isNaN(b.getTime())?"Invalid Date":b.getUTCFullYear()+"-"+a(b.getUTCMonth()+1,2)+"-"+a(b.getUTCDate(),2)+"T"+a(b.getUTCHours(),2)+":"+a(b.getUTCMinutes(),2)+":"+a(b.getUTCSeconds(),2)+"."+a(b.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(/^(?:(\\d{4})(?:-(\\d{2})(?:-(\\d{2}))?)?)?(?:(?:T(\\d{1,2}):(\\d{2}):(\\d{2}(?:\\.\\d+)?)(Z|(?:[+-]\\d{1,2}(?::(\\d{2}))?)))|Z)?$/))&&\n +(a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,b=new Date(b.getTime()+-1E3*(60*60*c+60*a)))}}else b=new Date("invalid");return b}};(function(){function a(){this._object=f&&!i?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&(f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\\/]+\\/[^\\+]+\\+xml/))&&\n +(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(i){}try{a.statusText=a._object.statusText}catch(r){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,i=h&&window.navigator.userAgent.match(/MSIE 7.0/);\n +b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,i,m,n){delete this._headers;arguments.length<3&&(i=true);this._async=i;var o=\n +this,p=this.readyState,q;if(h&&i){q=function(){if(p!=b.DONE){e(o);o.abort()}};window.attachEvent("onunload",q)}b.onopen&&b.onopen.apply(this,arguments);arguments.length>4?this._object.open(a,f,i,m,n):arguments.length>3?this._object.open(a,f,i,m):this._object.open(a,f,i);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||i){o.readyState=o._object.readyState;d(o);if(o._aborted)o.readyState=b.UNSENT;else{if(o.readyState==b.DONE){delete o._data;e(o);h&&i&&window.detachEvent("onunload",\n +q)}p!=o.readyState&&c(o);p=o.readyState}}}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);if(a&&a.nodeType){a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml;this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml")}this._data=a;a:{this._object.send(this._data);if(g&&!this._async){this.readyState=b.OPENED;for(d(this);this.readyState<b.DONE;){this.readyState++;c(this);if(this._aborted)break a}}}};\n +b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);if(this.readyState>b.UNSENT)this._aborted=true;this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){if(!this._headers)this._headers={};this._headers[a]=b;return this._object.setRequestHeader(a,\n +b)};b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)break;e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},\n +initEvent:function(){}};a.type=="readystatechange"&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]==a.type&&!c[2]&&(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],\n +b[4]);delete a.__func});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=\n +{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g,kmlColor:/(\\w{2})(\\w{2})(\\w{2})(\\w{2})/,kmlIconPalette:/root:\\/\\/icons\\/palette-(\\d+)(\\.\\w+)/,straightBracket:/\\$\\[(.*?)\\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&\n +(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,\n +b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=\n +null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=\n +d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var i=32*h,j=this.getElementsByTagNameNS(e,"*","Icon")[0];if(j){var k=this.parseProperty(j,"*","href");if(k){var l=this.parseProperty(j,"*","w"),m=this.parseProperty(j,\n +"*","h");OpenLayers.String.startsWith(k,"http://maps.google.com/mapfiles/kml")&&(!l&&!m)&&(m=l=64,h/=2);l=l||m;m=m||l;l&&(d=parseInt(l)*h);m&&(i=parseInt(m)*h);if(m=k.match(this.regExes.kmlIconPalette))l=m[1],m=m[2],k=this.parseProperty(j,"*","x"),j=this.parseProperty(j,"*","y"),k="http://maps.google.com/mapfiles/kml/pal"+l+"/icon"+(8*(j?7-j/32:7)+(k?k/32:0))+m;b.graphicOpacity=1;b.externalGraphic=k}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])k=parseFloat(e.getAttribute("x")),j=parseFloat(e.getAttribute("y")),\n +l=e.getAttribute("xunits"),"pixels"==l?b.graphicXOffset=-k*h:"insetPixels"==l?b.graphicXOffset=-d+k*h:"fraction"==l&&(b.graphicXOffset=-d*k),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-i+j*h+1:"insetPixels"==e?b.graphicYOffset=-(j*h)+1:"fraction"==e&&(b.graphicYOffset=-i*(1-j)+1);b.graphicWidth=d;b.graphicHeight=i;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,\n +"*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);if((a=a.getAttribute("id"))&&b)b.id=a;return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var i=f[g],j=this.parseProperty(i,"*","key");(i=this.parseProperty(i,"*","styleUrl"))&&"normal"==j&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||\n +"")+i])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&(g.attributes&&g.attributes.styleUrl)&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];if(h&&(h=this.parseStyle(h)))g.style=OpenLayers.Util.extend(g.style,h)}if(this.extractTracks){if((f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length)g={features:[],feature:g},\n +this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)}else c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<\n +f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,\n +i,e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;i=c.points[e];h.geometry=i;"z"in i&&(h.attributes.altitude=i.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes){i=0;for(var j=this.trackAttributes.length;i<j;++i)h.attributes[d]=c.attributes[this.trackAttributes[i]][e]}h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(i=c.angles[e],h.attributes.heading=\n +parseFloat(i[0]),h.attributes.tilt=parseFloat(i[1]),h.attributes.roll=parseFloat(i[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],\n +c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||\n +a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),a=[];if(0<b.length)var c=b[0].firstChild.nodeValue,\n +c=c.replace(this.regExes.removeSpace,""),a=c.split(",");b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,i=0;i<e;++i)if(g=\n +d[i].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[i]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[i];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing"),b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=\n +b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=this.parseGeometry[(a.prefix?a.nodeName.split(":")[1]:a.nodeName).toLowerCase()])&&c.push(b.apply(this,[a]));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));for(var d,e,f,a=a.childNodes,c=0,g=\n +a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");\n +var h={},i=e.getElementsByTagName("value");i.length&&(h.value=this.getChildValue(i[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d,a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=\n +null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&\n +(b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name");b.appendChild(this.createTextNode(a.style&&a.style.label?a.style.label:a.attributes.name||a.id));var c=this.createElementNS(this.kmlns,"description");c.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));var d=this.createElementNS(this.kmlns,"Placemark");null!=\n +a.fid&&d.setAttribute("id",a.fid);d.appendChild(b);d.appendChild(c);b=this.buildGeometryNode(a.geometry);d.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&d.appendChild(a);return d},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){return this.buildGeometry.collection.apply(this,\n +[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.kmlns,"Polygon"),a=a.components,c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",\n +c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.kmlns,"coordinates"),\n +c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),c;for(c in a)if(a[c]&&"name"!=c&&"description"!=\n +c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?null:b},\n +CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,\n +keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;\n +this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=\n +null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=\n +this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);!this.disableFirefoxOverflowHack&&"firefox"==OpenLayers.BROWSER_NAME&&(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;\n +a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);!this.autoSize&&!this.size&&this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=\n +a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),\n +c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class=\'"+this.contentDisplayClass+"\'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,\n +null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=\n +a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&(null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML)&&(this.contentDiv.innerHTML=\n +this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),\n +OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){var a=a.clone(),b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-\n +d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-\n +this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;if(!a&&(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,\n +"padding-top")),this.div.parentNode==document.body))document.body.removeChild(this.div),this.div.style.display="";return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,\n +"touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);\n +b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,th + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +is.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},\n +scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";\n +OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},\n +moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);a=this.calculateNewPx(a);OpenLayers.Popup.prototype.moveTo.apply(this,Array(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);this.lonlat&&this.map&&this.moveTo(this.map.getLayerPxFromLonLat(this.lonlat))},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);\n +return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){var a=a.offset(this.anchor.offset),b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});/*\n + Apache 2 \n +\n + Contains portions of Rico <http://openrico.org/>\n +\n + Copyright 2005 Sabre Airline Solutions \n +\n + Licensed under the Apache License, Version 2.0 (the "License"); you\n + may not use this file except in compliance with the License. You\n + may obtain a copy of the License at\n +\n + http://www.apache.org/licenses/LICENSE-2.0 \n +\n + Unless required by applicable law or agreed to in writing, software\n + distributed under the License is distributed on an "AS IS" BASIS,\n + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n + implied. See the License for the specific language governing\n + permissions and limitations under the License. \n +*/\n +OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};\n +OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(a,b,c){this.rgb={r:a,g:b,b:c}},setRed:function(a){this.rgb.r=a},setGreen:function(a){this.rgb.g=a},setBlue:function(a){this.rgb.b=a},setHue:function(a){var b=this.asHSB();b.h=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setSaturation:function(a){var b=this.asHSB();b.s=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setBrightness:function(a){var b=this.asHSB();b.b=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},\n +darken:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.max(b.b-a,0))},brighten:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.min(b.b+a,1))},blend:function(a){this.rgb.r=Math.floor((this.rgb.r+a.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+a.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+a.rgb.b)/2)},isBright:function(){this.asHSB();return 0.5<this.asHSB().b},isDark:function(){return!this.isBright()},asRGB:function(){return"rgb("+\n +this.rgb.r+","+this.rgb.g+","+this.rgb.b+")"},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart()},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b)},toString:function(){return this.asHex()}});\n +OpenLayers.Rico.Color.createFromHex=function(a){if(4==a.length)for(var b=a,a="#",c=1;4>c;c++)a+=b.charAt(c)+b.charAt(c);0==a.indexOf("#")&&(a=a.substring(1));b=a.substring(0,2);c=a.substring(2,4);a=a.substring(4,6);return new OpenLayers.Rico.Color(parseInt(b,16),parseInt(c,16),parseInt(a,16))};\n +OpenLayers.Rico.Color.createColorFromBackground=function(a){var b=OpenLayers.Element.getStyle(OpenLayers.Util.getElement(a),"backgroundColor");return"transparent"==b&&a.parentNode?OpenLayers.Rico.Color.createColorFromBackground(a.parentNode):null==b?new OpenLayers.Rico.Color(255,255,255):0==b.indexOf("rgb(")?(a=b.substring(4,b.length-1).split(","),new OpenLayers.Rico.Color(parseInt(a[0]),parseInt(a[1]),parseInt(a[2]))):0==b.indexOf("#")?OpenLayers.Rico.Color.createFromHex(b):new OpenLayers.Rico.Color(255,\n +255,255)};\n +OpenLayers.Rico.Color.HSBtoRGB=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=parseInt(255*c+0.5);else{var a=6*(a-Math.floor(a)),g=a-Math.floor(a),h=c*(1-b),i=c*(1-b*g),b=c*(1-b*(1-g));switch(parseInt(a)){case 0:d=255*c+0.5;e=255*b+0.5;f=255*h+0.5;break;case 1:d=255*i+0.5;e=255*c+0.5;f=255*h+0.5;break;case 2:d=255*h+0.5;e=255*c+0.5;f=255*b+0.5;break;case 3:d=255*h+0.5;e=255*i+0.5;f=255*c+0.5;break;case 4:d=255*b+0.5;e=255*h+0.5;f=255*c+0.5;break;case 5:d=255*c+0.5,e=255*h+0.5,f=255*i+0.5}}return{r:parseInt(d),g:parseInt(e),\n +b:parseInt(f)}};OpenLayers.Rico.Color.RGBtoHSB=function(a,b,c){var d,e=a>b?a:b;c>e&&(e=c);var f=a<b?a:b;c<f&&(f=c);d=0!=e?(e-f)/e:0;if(0==d)a=0;else{var g=(e-a)/(e-f),h=(e-b)/(e-f),c=(e-c)/(e-f),a=(a==e?c-h:b==e?2+g-c:4+h-g)/6;0>a&&(a+=1)}return{h:a,s:d,b:e/255}};OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};\n +OpenLayers.Rico.Corner={round:function(a,b){a=OpenLayers.Util.getElement(a);this._setOptions(b);var c=this.options.color;"fromElement"==this.options.color&&(c=this._background(a));var d=this.options.bgColor;"fromParent"==this.options.bgColor&&(d=this._background(a.offsetParent));this._roundCornersImpl(a,c,d)},changeColor:function(a,b){a.style.backgroundColor=b;for(var c=a.parentNode.getElementsByTagName("span"),d=0;d<c.length;d++)c[d].style.backgroundColor=b},changeOpacity:function(a,b){var c="alpha(opacity="+\n +100*b+")";a.style.opacity=b;a.style.filter=c;for(var d=a.parentNode.getElementsByTagName("span"),e=0;e<d.length;e++)d[e].style.opacity=b,d[e].style.filter=c},reRound:function(a,b){var c=a.parentNode.childNodes[2];a.parentNode.removeChild(a.parentNode.childNodes[0]);a.parentNode.removeChild(c);this.round(a.parentNode,b)},_roundCornersImpl:function(a,b,c){this.options.border&&this._renderBorder(a,c);this._isTopRounded()&&this._roundTopCorners(a,b,c);this._isBottomRounded()&&this._roundBottomCorners(a,\n +b,c)},_renderBorder:function(a,b){var c="1px solid "+this._borderColor(b);a.innerHTML="<div "+("style=\'border-left: "+c+";"+("border-right: "+c)+"\'")+">"+a.innerHTML+"</div>"},_roundTopCorners:function(a,b,c){for(var d=this._createCorner(c),e=0;e<this.options.numSlices;e++)d.appendChild(this._createCornerSlice(b,c,e,"top"));a.style.paddingTop=0;a.insertBefore(d,a.firstChild)},_roundBottomCorners:function(a,b,c){for(var d=this._createCorner(c),e=this.options.numSlices-1;0<=e;e--)d.appendChild(this._createCornerSlice(b,\n +c,e,"bottom"));a.style.paddingBottom=0;a.appendChild(d)},_createCorner:function(a){var b=document.createElement("div");b.style.backgroundColor=this._isTransparent()?"transparent":a;return b},_createCornerSlice:function(a,b,c,d){var e=document.createElement("span"),f=e.style;f.backgroundColor=a;f.display="block";f.height="1px";f.overflow="hidden";f.fontSize="1px";a=this._borderColor(a,b);this.options.border&&0==c?(f.borderTopStyle="solid",f.borderTopWidth="1px",f.borderLeftWidth="0px",f.borderRightWidth=\n +"0px",f.borderBottomWidth="0px",f.height="0px",f.borderColor=a):a&&(f.borderColor=a,f.borderStyle="solid",f.borderWidth="0px 1px");!this.options.compact&&c==this.options.numSlices-1&&(f.height="2px");this._setMargin(e,c,d);this._setBorder(e,c,d);return e},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:!0,border:!1,compact:!1};OpenLayers.Util.extend(this.options,a||{});this.options.numSlices=this.options.compact?2:4;this._isTransparent()&&(this.options.blend=\n +!1)},_whichSideTop:function(){return this._hasString(this.options.corners,"all","top")||0<=this.options.corners.indexOf("tl")&&0<=this.options.corners.indexOf("tr")?"":0<=this.options.corners.indexOf("tl")?"left":0<=this.options.corners.indexOf("tr")?"right":""},_whichSideBottom:function(){return this._hasString(this.options.corners,"all","bottom")||0<=this.options.corners.indexOf("bl")&&0<=this.options.corners.indexOf("br")?"":0<=this.options.corners.indexOf("bl")?"left":0<=this.options.corners.indexOf("br")?\n +"right":""},_borderColor:function(a,b){return"transparent"==a?b:this.options.border?this.options.border:this.options.blend?this._blend(b,a):""},_setMargin:function(a,b,c){b=this._marginSize(b);c="top"==c?this._whichSideTop():this._whichSideBottom();"left"==c?(a.style.marginLeft=b+"px",a.style.marginRight="0px"):"right"==c?(a.style.marginRight=b+"px",a.style.marginLeft="0px"):(a.style.marginLeft=b+"px",a.style.marginRight=b+"px")},_setBorder:function(a,b,c){b=this._borderSize(b);c="top"==c?this._whichSideTop():\n +this._whichSideBottom();"left"==c?(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth="0px"):"right"==c?(a.style.borderRightWidth=b+"px",a.style.borderLeftWidth="0px"):(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px");!1!=this.options.border&&(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px")},_marginSize:function(a){if(this._isTransparent())return 0;var b=[5,3,2,1],c=[3,2,1,0],d=[2,1],e=[1,0];return this.options.compact&&this.options.blend?e[a]:this.options.compact?\n +d[a]:this.options.blend?c[a]:b[a]},_borderSize:function(a){var b=[5,3,2,1],c=[2,1,1,1],d=[1,0],e=[0,2,0,0];return this.options.compact&&(this.options.blend||this._isTransparent())?1:this.options.compact?d[a]:this.options.blend?c[a]:this.options.border?e[a]:this._isTransparent()?b[a]:0},_hasString:function(a){for(var b=1;b<arguments.length;b++)if(0<=a.indexOf(arguments[b]))return!0;return!1},_blend:function(a,b){var c=OpenLayers.Rico.Color.createFromHex(a);c.blend(OpenLayers.Rico.Color.createFromHex(b));\n +return c},_background:function(a){try{return OpenLayers.Rico.Color.createColorFromBackground(a).asHex()}catch(b){return"#ffffff"}},_isTransparent:function(){return"transparent"==this.options.color},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr")},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br")},_hasSingleTextChild:function(a){return 1==a.childNodes.length&&3==a.childNodes[0].nodeType}};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Console.warn("AnchoredBubble is deprecated");this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments)},draw:function(a){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();\n +this.setOpacity();return this.div},updateRelativePosition:function(){this.setRicoCorners()},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners()},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=a);null!=this.div&&null!=this.contentDiv&&(this.div.style.background="transparent",OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor))},setOpacity:function(a){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,\n +a);null!=this.div&&null!=this.groupDiv&&OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity)},setBorder:function(){this.border=0},setRicoCorners:function(){var a={corners:this.getCornersToRound(this.relativePosition),color:this.backgroundColor,bgColor:"transparent",blend:!1};this.rounded?(OpenLayers.Rico.Corner.reRound(this.groupDiv,a),this.setBackgroundColor(),this.setOpacity()):(OpenLayers.Rico.Corner.round(this.div,a),this.rounded=!0)},getCornersToRound:function(){var a=["tl","tr",\n +"bl","br"],b=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(a,b);return a.join(" ")},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,readOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,\n +srsName:this.srsName,schema:this.schema},this.formatOptions)));!a.geometryName&&1<parseFloat(this.format.version)&&this.setGeometryName(null)},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),\n +c=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",a)]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},setFeatureType:function(a){this.featureType=a;this.format.featureType=a},setGeometryName:function(a){this.geometryName=a;this.format.geometryName=a},handleRead:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);if(b.callback){var c=\n +a.priv;200<=c.status&&300>c.status?(c=this.parseResponse(c,b.readOptions))&&!1!==c.success?(b.readOptions&&"object"==b.readOptions.output?OpenLayers.Util.extend(a,c):a.features=c,a.code=OpenLayers.Protocol.Response.SUCCESS):(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseResponse:function(a,b){var c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;if(!c||0>=c.length)return null;c=null!==this.readFormat?this.readFormat.read(c):\n +this.format.read(c,b);if(!this.featureNS){var d=this.readFormat||this.format;this.featureNS=d.featureNS;d.autoConfig=!1;this.geometryName||this.setGeometryName(d.geometryName)}return c},commit:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:a});c.priv=OpenLayers.Request.POST({url:b.url,headers:b.headers,data:this.format.write(a,b),callback:this.createCallback(this.handleCommit,c,b)});\n +return c},handleCommit:function(a,b){if(b.callback){var c=a.priv,d=c.responseXML;if(!d||!d.documentElement)d=c.responseText;c=this.format.read(d)||{};a.insertIds=c.insertIds||[];c.success?a.code=OpenLayers.Protocol.Response.SUCCESS:(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c);b.callback.call(b.scope,a)}},filterDelete:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);new OpenLayers.Protocol.Response({requestType:"commit"});var c=this.format.createElementNSPlus("wfs:Transaction",\n +{attributes:{service:"WFS",version:this.version}}),d=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(b.featureNS?this.featurePrefix+":":"")+b.featureType}});b.featureNS&&d.setAttribute("xmlns:"+this.featurePrefix,b.featureNS);var e=this.format.writeNode("ogc:Filter",a);d.appendChild(e);c.appendChild(d);c=OpenLayers.Format.XML.prototype.write.apply(this.format,[c]);return OpenLayers.Request.POST({url:this.url,callback:b.callback||function(){},data:c})},abort:function(a){a&&a.priv.abort()},\n +CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});OpenLayers.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:!1,citeCompliant:!1,mouseDown:!1,stoppedDown:null,lastDown:null,lastUp:null,persist:!1,stopDown:!1,stopUp:!1,layerOptions:null,pixelTolerance:5,touch:!1,lastTouchPx:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,\n +arguments))return!1;var a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);return!0},createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();\n +this.layer.addFeatures([this.point],{silent:!0})},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments))return!1;this.cancel();null!=this.layer.map&&(this.destroyFeature(!0),this.layer.destroy(!1));this.layer=null;this.touch=!1;return!0},destroyFeature:function(a){this.layer&&(a||!this.persist)&&this.layer.destroyFeatures();this.point=null},destroyPersistedFeature:function(){var a=this.layer;a&&1<a.features.length&&this.layer.features[0].destroy()},finalize:function(a){this.mouseDown=\n +!1;this.lastTouchPx=this.lastUp=this.lastDown=null;this.callback(a?"cancel":"done",[this.geometryClone()]);this.destroyFeature(a)},cancel:function(){this.finalize(!0)},click:function(a){OpenLayers.Event.stop(a);return!1},dblclick:function(a){OpenLayers.Event.stop(a);return!1},modifyFeature:function(a){this.point||this.createFeature(a);a=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=a.lon;this.point.geometry.y=a.lat;this.callback("modify",[this.point.geometry,this.point,!1]);this.point.geometry.clearBounds();\n +this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},getGeometry:function(){var a=this.point&&this.point.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPoint([a]));return a},geometryClone:function(){var a=this.getGeometry();return a&&a.clone()},mousedown:function(a){return this.down(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,\n +scope:this}));this.lastTouchPx=a.xy;return this.down(a)},mousemove:function(a){return this.move(a)},touchmove:function(a){this.lastTouchPx=a.xy;return this.move(a)},mouseup:function(a){return this.up(a)},touchend:function(a){a.xy=this.lastTouchPx;return this.up(a)},down:function(a){this.mouseDown=!0;this.lastDown=a.xy;this.touch||this.modifyFeature(a.xy);this.stoppedDown=this.stopDown;return!this.stopDown},move:function(a){!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy);\n +return!0},up:function(a){this.mouseDown=!1;this.stoppedDown=this.stopDown;return this.checkModifiers(a)&&(!this.lastUp||!this.lastUp.equals(a.xy))&&this.lastDown&&this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)?(this.touch&&this.modifyFeature(a.xy),this.persist&&this.destroyPersistedFeature(),this.lastUp=a.xy,this.finalize(),!this.stopUp):!0},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.stoppedDown=this.stopDown,this.mouseDown=!1)},passesTolerance:function(a,\n +b,c){var d=!0;null!=c&&a&&b&&a.distanceTo(b)>c&&(d=!1);return d},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,maxVertices:null,doubleTouchTolerance:20,freehand:!1,freehandToggle:"shiftKey",timerId:null,redoStack:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);\n +this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:!0})},destroyFeature:function(a){OpenLayers.Handler.Point.prototype.destroyFeature.call(this,a);this.line=null},destroyPersistedFeature:function(){var a=this.layer;a&&2<a.features.length&&this.layer.features[0].destroy()},removePoint:function(){this.point&&this.layer.removeFeatures([this.point])},addPoint:function(a){this.layer.removeFeatures([this.point]);a=this.layer.getLonLatFromViewPortPx(a);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.lon,\n +a.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.layer.addFeatures([this.point]);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();delete this.redoStack},insertXY:function(a,b){this.line.geometry.addComponent(new OpenLayers.Geometry.Point(a,b),this.getCurrentPointIndex());this.drawFeature();delete this.redoStack},insertDeltaXY:function(a,b){var c=this.line.geometry.components[this.getCurrentPointIndex()-\n +1];c&&(!isNaN(c.x)&&!isNaN(c.y))&&this.insertXY(c.x+a,c.y+b)},insertDirectionLength:function(a,b){var a=a*(Math.PI/180),c=b*Math.cos(a),d=b*Math.sin(a);this.insertDeltaXY(c,d)},insertDeflectionLength:function(a,b){var c=this.getCurrentPointIndex()-1;if(0<c){var d=this.line.geometry.components[c],c=this.line.geometry.components[c-1];this.insertDirectionLength(180*Math.atan2(d.y-c.y,d.x-c.x)/Math.PI+a,b)}},getCurrentPointIndex:function(){return this.line.geometry.components.length-1},undo:function(){var a=\n +this.line.geometry,b=a.components,c=this.getCurrentPointIndex()-1,b=b[c];if(a=a.removeComponent(b))this.redoStack||(this.redoStack=[]),this.redoStack.push(b),this.drawFeature();return a},redo:function(){var a=this.redoStack&&this.redoStack.pop();a&&(this.line.geometry.addComponent(a,this.getCurrentPointIndex()),this.drawFeature());return!!a},freehandMode:function(a){return this.freehandToggle&&a[this.freehandToggle]?!this.freehand:this.freehand},modifyFeature:function(a,b){this.line||this.createFeature(a);\n +var c=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=c.lon;this.point.geometry.y=c.lat;this.callback("modify",[this.point.geometry,this.getSketch(),b]);this.point.geometry.clearBounds();this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.line},getGeometry:function(){var a=this.line&&this.line.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiLineString([a]));return a},\n +touchstart:function(a){if(this.timerId&&this.passesTolerance(this.lastTouchPx,a.xy,this.doubleTouchTolerance))return this.finishGeometry(),window.clearTimeout(this.timerId),this.timerId=null,!1;this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);this.timerId=window.setTimeout(OpenLayers.Function.bind(function(){this.timerId=null},this),300);return OpenLayers.Handler.Point.prototype.touchstart.call(this,a)},down:function(a){var b=this.stopDown;this.freehandMode(a)&&(b=!0,this.touch&&\n +(this.modifyFeature(a.xy,!!this.lastUp),OpenLayers.Event.stop(a)));!this.touch&&(!this.lastDown||!this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance))&&this.modifyFeature(a.xy,!!this.lastUp);this.mouseDown=!0;this.lastDown=a.xy;this.stoppedDown=b;return!b},move:function(a){if(this.stoppedDown&&this.freehandMode(a))return this.persist&&this.destroyPersistedFeature(),this.maxVertices&&this.line&&this.line.geometry.components.length===this.maxVertices?(this.removePoint(),this.finalize()):this.addPoint(a.xy),\n +!1;!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy,!!this.lastUp);return!0},up:function(a){if(this.mouseDown&&(!this.lastUp||!this.lastUp.equals(a.xy)))this.stoppedDown&&this.freehandMode(a)?(this.persist&&this.destroyPersistedFeature(),this.removePoint(),this.finalize()):this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)&&(this.touch&&this.modifyFeature(a.xy),null==this.lastUp&&this.persist&&this.destroyPersistedFeature(),this.addPoint(a.xy),this.lastUp=a.xy,this.line.geometry.components.length===\n +this.maxVertices+1&&this.finishGeometry());this.stoppedDown=this.stopDown;this.mouseDown=!1;return!this.stopUp},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-1]);this.removePoint();this.finalize()},dblclick:function(a){this.freehandMode(a)||this.finishGeometry();return!1},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Spherical=OpenLayers.Spherical||{};OpenLayers.Spherical.DEFAULT_RADIUS=6378137;OpenLayers.Spherical.computeDistanceBetween=function(a,b,c){var c=c||OpenLayers.Spherical.DEFAULT_RADIUS,d=Math.sin(Math.PI*(b.lon-a.lon)/360),e=Math.sin(Math.PI*(b.lat-a.lat)/360),a=e*e+d*d*Math.cos(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180);return 2*c*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))};\n +OpenLayers.Spherical.computeHeading=function(a,b){var c=Math.sin(Math.PI*(a.lon-b.lon)/180)*Math.cos(Math.PI*b.lat/180),d=Math.cos(Math.PI*a.lat/180)*Math.sin(Math.PI*b.lat/180)-Math.sin(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180)*Math.cos(Math.PI*(a.lon-b.lon)/180);return 180*Math.atan2(c,d)/Math.PI};OpenLayers.Control.CacheWrite=OpenLayers.Class(OpenLayers.Control,{layers:null,imageFormat:"image/png",quotaRegEx:/quota/i,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.on({tileloadstart:this.makeSameOrigin,tileloaded:this.cache,scope:this})},removeLayer:function(a){a.layer.events.un({tileloadstart:this.makeSameOrigin,\n +tileloaded:this.cache,scope:this})},makeSameOrigin:function(a){if(this.active&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&!a.crossOriginKeyword&&"data:"!==a.url.substr(0,5))){var b=OpenLayers.Request.makeSameOrigin(a.url,OpenLayers.ProxyHost);OpenLayers.Control.CacheWrite.urlMap[b]=a.url;a.url=b}},cache:function(a){if(this.active&&window.localStorage&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&"data:"!==a.url.substr(0,5)))try{var b=a.getCanvasContext();if(b){var c=OpenLayers.Control.CacheWrite.urlMap;\n +window.localStorage.setItem("olCache_"+(c[a.url]||a.url),b.canvas.toDataURL(this.imageFormat));delete c[a.url]}}catch(d){(b=d.name||d.message)&&this.quotaRegEx.test(b)?this.events.triggerEvent("cachefull",{tile:a}):OpenLayers.Console.error(d.toString())}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,\n +arguments)},CLASS_NAME:"OpenLayers.Control.CacheWrite"});OpenLayers.Control.CacheWrite.clearCache=function(){if(window.localStorage){var a,b;for(a=window.localStorage.length-1;0<=a;--a)b=window.localStorage.key(a),"olCache_"===b.substr(0,8)&&window.localStorage.removeItem(b)}};OpenLayers.Control.CacheWrite.urlMap={};OpenLayers.Format.Context=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{layerOptions:null,layerParams:null,read:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this,arguments);if(b&&b.map)if(this.context=c,b.map instanceof OpenLayers.Map)c=this.mergeContextToMap(c,b.map);else{var d=b.map;if(OpenLayers.Util.isElement(d)||"string"==typeof d)d={div:d};c=this.contextToMap(c,d)}return c},getLayerFromContext:function(a){var b,c,d={queryable:a.queryable,visibility:a.visibility,\n +maxExtent:a.maxExtent,metadata:OpenLayers.Util.applyDefaults(a.metadata,{styles:a.styles,formats:a.formats,"abstract":a["abstract"],dataURL:a.dataURL}),numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.tileSize?new OpenLayers.Size(a.tileSize.width,a.tileSize.height):void 0,minScale:a.minScale||a.maxScaleDenominator,maxScale:a.maxScale||a.minScaleDenominator,srs:a.srs,dimensions:a.dimensions,\n +metadataURL:a.metadataURL};this.layerOptions&&OpenLayers.Util.applyDefaults(d,this.layerOptions);var e={layers:a.name,transparent:a.transparent,version:a.version};if(a.formats&&0<a.formats.length){e.format=a.formats[0].value;b=0;for(c=a.formats.length;b<c;b++){var f=a.formats[b];if(!0==f.current){e.format=f.value;break}}}if(a.styles&&0<a.styles.length){b=0;for(c=a.styles.length;b<c;b++)if(f=a.styles[b],!0==f.current){f.href?e.sld=f.href:f.body?e.sld_body=f.body:e.styles=f.name;break}}this.layerParams&&\n +OpenLayers.Util.applyDefaults(e,this.layerParams);b=null;c=a.service;c==OpenLayers.Format.Context.serviceTypes.WFS?(d.strategies=[new OpenLayers.Strategy.BBOX],d.protocol=new OpenLayers.Protocol.WFS({url:a.url,featurePrefix:a.name.split(":")[0],featureType:a.name.split(":").pop()}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.KML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.KML}),\n +b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.GML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.GML}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):a.features?(b=new OpenLayers.Layer.Vector(a.title||a.name,d),b.addFeatures(a.features)):!0!==a.categoryLayer&&(b=new OpenLayers.Layer.WMS(a.title||a.name,a.url,e,d));return b},getLayersFromContext:function(a){for(var b=[],c=\n +0,d=a.length;c<d;c++){var e=this.getLayerFromContext(a[c]);null!==e&&b.push(e)}return b},contextToMap:function(a,b){b=OpenLayers.Util.applyDefaults({maxExtent:a.maxExtent,projection:a.projection,units:a.units},b);b.maxExtent&&(b.maxResolution=b.maxExtent.getWidth()/OpenLayers.Map.TILE_WIDTH);b.metadata={contactInformation:a.contactInformation,"abstract":a["abstract"],keywords:a.keywords,logo:a.logo,descriptionURL:a.descriptionURL};var c=new OpenLayers.Map(b);c.addLayers(this.getLayersFromContext(a.layersContext));\n +c.setCenter(a.bounds.getCenterLonLat(),c.getZoomForExtent(a.bounds,!0));return c},mergeContextToMap:function(a,b){b.addLayers(this.getLayersFromContext(a.layersContext));return b},write:function(a,b){a=this.toContext(a);return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this,arguments)},CLASS_NAME:"OpenLayers.Format.Context"});\n +OpenLayers.Format.Context.serviceTypes={WMS:"urn:ogc:serviceType:WMS",WFS:"urn:ogc:serviceType:WFS",WCS:"urn:ogc:serviceType:WCS",GML:"urn:ogc:serviceType:GML",SLD:"urn:ogc:serviceType:SLD",FES:"urn:ogc:serviceType:FES",KML:"urn:ogc:serviceType:KML"};OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",layerToContext:function(a){var b=this.getParser(),c={queryable:a.queryable,visibility:a.visibility,name:a.params.LAYERS,title:a.name,"abstract":a.metadata["abstract"],dataURL:a.metadata.dataURL,metadataURL:a.metadataURL,server:{version:a.params.VERSION,url:a.url},maxExtent:a.maxExtent,transparent:a.params.TRANSPARENT,numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:1==a.opacity?void 0:\n +a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.singleTile||!a.tileSize?void 0:{width:a.tileSize.w,height:a.tileSize.h},minScale:a.options.resolutions||a.options.scales||a.options.maxResolution||a.options.minScale?a.minScale:void 0,maxScale:a.options.resolutions||a.options.scales||a.options.minResolution||a.options.maxScale?a.maxScale:void 0,formats:[],styles:[],srs:a.srs,dimensions:a.dimensions};a.metadata.servertitle&&(c.server.title=a.metadata.servertitle);\n +if(a.metadata.formats&&0<a.metadata.formats.length)for(var d=0,e=a.metadata.formats.length;d<e;d++){var f=a.metadata.formats[d];c.formats.push({value:f.value,current:f.value==a.params.FORMAT})}else c.formats.push({value:a.params.FORMAT,current:!0});if(a.metadata.styles&&0<a.metadata.styles.length){d=0;for(e=a.metadata.styles.length;d<e;d++)b=a.metadata.styles[d],b.current=b.href==a.params.SLD||b.body==a.params.SLD_BODY||b.name==a.params.STYLES?!0:!1,c.styles.push(b)}else c.styles.push({href:a.params.SLD,\n +body:a.params.SLD_BODY,name:a.params.STYLES||b.defaultStyleName,title:b.defaultStyleTitle,current:!0});return c},toContext:function(a){var b={},c=a.layers;if("OpenLayers.Map"==a.CLASS_NAME){var d=a.metadata||{};b.size=a.getSize();b.bounds=a.getExtent();b.projection=a.projection;b.title=a.title;b.keywords=d.keywords;b["abstract"]=d["abstract"];b.logo=d.logo;b.descriptionURL=d.descriptionURL;b.contactInformation=d.contactInformation;b.maxExtent=a.maxExtent}else OpenLayers.Util.applyDefaults(b,a),void 0!=\n +b.layers&&delete b.layers;void 0==b.layersContext&&(b.layersContext=[]);if(void 0!=c&&OpenLayers.Util.isArray(c)){a=0;for(d=c.length;a<d;a++){var e=c[a];e instanceof OpenLayers.Layer.WMS&&b.layersContext.push(this.layerToContext(e))}}return b},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(a){var b=null;if(null==a)b=this.namespaces[this.defaultPrefix];else for(b in this.namespaces)if(this.namespaces[b]==a)break;return b},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",\n +defaultStyleTitle:"Default",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a=a.documentElement;this.rootPrefix=a.prefix;var b={version:a.getAttribute("version")};this.runChildNodes(b,a);return b},runChildNodes:function(a,b){for(var c=b.childNodes,d,e,f,g=0,h=c.length;g<h;++g)d=c[g],1==d.nodeType&&(e=this.getNamespacePrefix(d.namespaceURI),f=d.nodeName.split(":").pop(),\n +(e=this["read_"+e+"_"+f])&&e.apply(this,[a,d]))},read_wmc_General:function(a,b){this.runChildNodes(a,b)},read_wmc_BoundingBox:function(a,b){a.projection=b.getAttribute("SRS");a.bounds=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"))},read_wmc_LayerList:function(a,b){a.layersContext=[];this.runChildNodes(a,b)},read_wmc_Layer:function(a,b){var c={visibility:"1"!=b.getAttribute("hidden"),queryable:"1"==b.getAttribute("queryable"),formats:[],\n +styles:[],metadata:{}};this.runChildNodes(c,b);a.layersContext.push(c)},read_wmc_Extension:function(a,b){this.runChildNodes(a,b)},read_ol_units:function(a,b){a.units=this.getChildValue(b)},read_ol_maxExtent:function(a,b){var c=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"));a.maxExtent=c},read_ol_transparent:function(a,b){a.transparent=this.getChildValue(b)},read_ol_numZoomLevels:function(a,b){a.numZoomLevels=parseInt(this.getChildValue(b))},\n +read_ol_opacity:function(a,b){a.opacity=parseFloat(this.getChildValue(b))},read_ol_singleTile:function(a,b){a.singleTile="true"==this.getChildValue(b)},read_ol_tileSize:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height")};a.tileSize=c},read_ol_isBaseLayer:function(a,b){a.isBaseLayer="true"==this.getChildValue(b)},read_ol_displayInLayerSwitcher:function(a,b){a.displayInLayerSwitcher="true"==this.getChildValue(b)},read_wmc_Server:function(a,b){a.version=b.getAttribute("version");\n +a.url=this.getOnlineResource_href(b);a.metadata.servertitle=b.getAttribute("title")},read_wmc_FormatList:function(a,b){this.runChildNodes(a,b)},read_wmc_Format:function(a,b){var c={value:this.getChildValue(b)};"1"==b.getAttribute("current")&&(c.current=!0);a.formats.push(c)},read_wmc_StyleList:function(a,b){this.runChildNodes(a,b)},read_wmc_Style:function(a,b){var c={};this.runChildNodes(c,b);"1"==b.getAttribute("current")&&(c.current=!0);a.styles.push(c)},read_wmc_SLD:function(a,b){this.runChildNodes(a,\n +b)},read_sld_StyledLayerDescriptor:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_sld_FeatureTypeStyle:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_wmc_OnlineResource:function(a,b){a.href=this.getAttributeNS(b,this.namespaces.xlink,"href")},read_wmc_Name:function(a,b){var c=this.getChildValue(b);c&&(a.name=c)},read_wmc_Title:function(a,b){var c=this.getChildValue(b);c&&(a.title=c)},read_wmc_MetadataURL:function(a,\n +b){a.metadataURL=this.getOnlineResource_href(b)},read_wmc_KeywordList:function(a,b){a.keywords=[];this.runChildNodes(a.keywords,b)},read_wmc_Keyword:function(a,b){a.push(this.getChildValue(b))},read_wmc_Abstract:function(a,b){var c=this.getChildValue(b);c&&(a["abstract"]=c)},read_wmc_LogoURL:function(a,b){a.logo={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),href:this.getOnlineResource_href(b)}},read_wmc_DescriptionURL:function(a,b){a.descriptionURL=\n +this.getOnlineResource_href(b)},read_wmc_ContactInformation:function(a,b){var c={};this.runChildNodes(c,b);a.contactInformation=c},read_wmc_ContactPersonPrimary:function(a,b){var c={};this.runChildNodes(c,b);a.personPrimary=c},read_wmc_ContactPerson:function(a,b){var c=this.getChildValue(b);c&&(a.person=c)},read_wmc_ContactOrganization:function(a,b){var c=this.getChildValue(b);c&&(a.organization=c)},read_wmc_ContactPosition:function(a,b){var c=this.getChildValue(b);c&&(a.position=c)},read_wmc_ContactAddress:function(a,\n +b){var c={};this.runChildNodes(c,b);a.contactAddress=c},read_wmc_AddressType:function(a,b){var c=this.getChildValue(b);c&&(a.type=c)},read_wmc_Address:function(a,b){var c=this.getChildValue(b);c&&(a.address=c)},read_wmc_City:function(a,b){var c=this.getChildValue(b);c&&(a.city=c)},read_wmc_StateOrProvince:function(a,b){var c=this.getChildValue(b);c&&(a.stateOrProvince=c)},read_wmc_PostCode:function(a,b){var c=this.getChildValue(b);c&&(a.postcode=c)},read_wmc_Country:function(a,b){var c=this.getChildValue(b);\n +c&&(a.country=c)},read_wmc_ContactVoiceTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.phone=c)},read_wmc_ContactFacsimileTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.fax=c)},read_wmc_ContactElectronicMailAddress:function(a,b){var c=this.getChildValue(b);c&&(a.email=c)},read_wmc_DataURL:function(a,b){a.dataURL=this.getOnlineResource_href(b)},read_wmc_LegendURL:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),\n +href:this.getOnlineResource_href(b)};a.legend=c},read_wmc_DimensionList:function(a,b){a.dimensions={};this.runChildNodes(a.dimensions,b)},read_wmc_Dimension:function(a,b){var c={name:b.getAttribute("name").toLowerCase(),units:b.getAttribute("units")||"",unitSymbol:b.getAttribute("unitSymbol")||"",userValue:b.getAttribute("userValue")||"",nearestValue:"1"===b.getAttribute("nearestValue"),multipleValues:"1"===b.getAttribute("multipleValues"),current:"1"===b.getAttribute("current"),"default":b.getAttribute("default")||\n +""},d=this.getChildValue(b);c.values=d.split(",");a[c.name]=c},write:function(a,b){var c=this.createElementDefaultNS("ViewContext");this.setAttributes(c,{version:this.VERSION,id:b&&"string"==typeof b.id?b.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);c.appendChild(this.write_wmc_General(a));c.appendChild(this.write_wmc_LayerList(a));return OpenLayers.Format.XML.prototype.write.apply(this,[c])},createElementDefaultNS:function(a,\n +b,c){a=this.createElementNS(this.namespaces[this.defaultPrefix],a);b&&a.appendChild(this.createTextNode(b));c&&this.setAttributes(a,c);return a},setAttributes:function(a,b){var c,d;for(d in b)c=b[d].toString(),c.match(/[A-Z]/)?this.setAttributeNS(a,null,d,c):a.setAttribute(d,c)},write_wmc_General:function(a){var b=this.createElementDefaultNS("General");a.size&&b.appendChild(this.createElementDefaultNS("Window",null,{width:a.size.w,height:a.size.h}));var c=a.bounds;b.appendChild(this.createElementDefaultNS("BoundingBox",\n +null,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),maxy:c.top.toPrecision(18),SRS:a.projection}));b.appendChild(this.createElementDefaultNS("Title",a.title));a.keywords&&b.appendChild(this.write_wmc_KeywordList(a.keywords));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.logo&&b.appendChild(this.write_wmc_URLType("LogoURL",a.logo.href,a.logo));a.descriptionURL&&b.appendChild(this.write_wmc_URLType("DescriptionURL",a.descriptionURL));\n +a.contactInformation&&b.appendChild(this.write_wmc_ContactInformation(a.contactInformation));b.appendChild(this.write_ol_MapExtension(a));return b},write_wmc_KeywordList:function(a){for(var b=this.createElementDefaultNS("KeywordList"),c=0,d=a.length;c<d;c++)b.appendChild(this.createElementDefaultNS("Keyword",a[c]));return b},write_wmc_ContactInformation:function(a){var b=this.createElementDefaultNS("ContactInformation");a.personPrimary&&b.appendChild(this.write_wmc_ContactPersonPrimary(a.personPrimary));\n +a.position&&b.appendChild(this.createElementDefaultNS("ContactPosition",a.position));a.contactAddress&&b.appendChild(this.write_wmc_ContactAddress(a.contactAddress));a.phone&&b.appendChild(this.createElementDefaultNS("ContactVoiceTelephone",a.phone));a.fax&&b.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone",a.fax));a.email&&b.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress",a.email));return b},write_wmc_ContactPersonPrimary:function(a){var b=this.createElementDefaultNS("ContactPersonPrimary");\n +a.person&&b.appendChild(this.createElementDefaultNS("ContactPerson",a.person));a.organization&&b.appendChild(this.createElementDefaultNS("ContactOrganization",a.organization));return b},write_wmc_ContactAddress:function(a){var b=this.createElementDefaultNS("ContactAddress");a.type&&b.appendChild(this.createElementDefaultNS("AddressType",a.type));a.address&&b.appendChild(this.createElementDefaultNS("Address",a.address));a.city&&b.appendChild(this.createElementDefaultNS("City",a.city));a.stateOrProvince&&\n +b.appendChild(this.createElementDefaultNS("StateOrProvince",a.stateOrProvince));a.postcode&&b.appendChild(this.createElementDefaultNS("PostCode",a.postcode));a.country&&b.appendChild(this.createElementDefaultNS("Country",a.country));return b},write_ol_MapExtension:function(a){var b=this.createElementDefaultNS("Extension");if(a=a.maxExtent){var c=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(c,{minx:a.left.toPrecision(18),miny:a.bottom.toPrecision(18),maxx:a.right.toPrecision(18),\n +maxy:a.top.toPrecision(18)});b.appendChild(c)}return b},write_wmc_LayerList:function(a){for(var b=this.createElementDefaultNS("LayerList"),c=0,d=a.layersContext.length;c<d;++c)b.appendChild(this.write_wmc_Layer(a.layersContext[c]));return b},write_wmc_Layer:function(a){var b=this.createElementDefaultNS("Layer",null,{queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1"});b.appendChild(this.write_wmc_Server(a));b.appendChild(this.createElementDefaultNS("Name",a.name));b.appendChild(this.createElementDefaultNS("Title",\n +a.title));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.dataURL&&b.appendChild(this.write_wmc_URLType("DataURL",a.dataURL));a.metadataURL&&b.appendChild(this.write_wmc_URLType("MetadataURL",a.metadataURL));return b},write_wmc_LayerExtension:function(a){var b=this.createElementDefaultNS("Extension"),c=a.maxExtent,d=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(d,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),\n +maxy:c.top.toPrecision(18)});b.appendChild(d);a.tileSize&&!a.singleTile&&(c=this.createElementNS(this.namespaces.ol,"ol:tileSize"),this.setAttributes(c,a.tileSize),b.appendChild(c));for(var c="transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile".split(" "),e=0,f=c.length;e<f;++e)(d=this.createOLPropertyNode(a,c[e]))&&b.appendChild(d);return b},createOLPropertyNode:function(a,b){var c=null;null!=a[b]&&(c=this.createElementNS(this.namespaces.ol,"ol:"+b),c.appendChild(this.createTextNode(a[b].toString())));\n +return c},write_wmc_Server:function(a){var a=a.server,b=this.createElementDefaultNS("Server"),c={service:"OGC:WMS",version:a.version};a.title&&(c.title=a.title);this.setAttributes(b,c);b.appendChild(this.write_wmc_OnlineResource(a.url));return b},write_wmc_URLType:function(a,b,c){a=this.createElementDefaultNS(a);a.appendChild(this.write_wmc_OnlineResource(b));if(c)for(var b=["width","height","format"],d=0;d<b.length;d++)b[d]in c&&a.setAttribute(b[d],c[b[d]]);return a},write_wmc_DimensionList:function(a){var b=\n +this.createElementDefaultNS("DimensionList"),c;for(c in a.dimensions){var d={},e=a.dimensions[c],f;for(f in e)d[f]="boolean"==typeof e[f]?Number(e[f]):e[f];e="";d.values&&(e=d.values.join(","),delete d.values);b.appendChild(this.createElementDefaultNS("Dimension",e,d))}return b},write_wmc_FormatList:function(a){for(var b=this.createElementDefaultNS("FormatList"),c=0,d=a.formats.length;c<d;c++){var e=a.formats[c];b.appendChild(this.createElementDefaultNS("Format",e.value,e.current&&!0==e.current?{current:"1"}:\n +null))}return b},write_wmc_StyleList:function(a){var b=this.createElementDefaultNS("StyleList");if((a=a.styles)&&OpenLayers.Util.isArray(a))for(var c,d=0,e=a.length;d<e;d++){var f=a[d],g=this.createElementDefaultNS("Style",null,f.current&&!0==f.current?{current:"1"}:null);f.href?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",\n +f.legend.href,f.legend)),f=this.write_wmc_OnlineResource(f.href),c.appendChild(f),g.appendChild(c)):f.body?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)),f=OpenLayers.Format.XML.prototype.read.apply(this,[f.body]).documentElement,c.ownerDocument&&c.ownerDocument.importNode&&(f=c.ownerDocument.importNode(f,\n +!0)),c.appendChild(f),g.appendChild(c)):(g.appendChild(this.createElementDefaultNS("Name",f.name)),g.appendChild(this.createElementDefaultNS("Title",f.title)),f["abstract"]&&g.appendChild(this.createElementDefaultNS("Abstract",f["abstract"])),f.legend&&g.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)));b.appendChild(g)}return b},write_wmc_OnlineResource:function(a){var b=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(b,this.namespaces.xlink,"xlink:type",\n +"simple");this.setAttributeNS(b,this.namespaces.xlink,"xlink:href",a);return b},getOnlineResource_href:function(a){var b={},a=a.getElementsByTagName("OnlineResource");0<a.length&&this.read_wmc_OnlineResource(b,a[0]);return b.href},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,slideRatio:null,initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);a={slideFactor:this.slideFactor,slideRatio:this.slideRatio};this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,a)])},\n +CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,\n +addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Kinetic=OpenLayers.Class({threshold:0,deceleration:0.0035,nbPoints:100,delay:200,points:void 0,timerId:void 0,initialize:function(a){OpenLayers.Util.extend(this,a)},begin:function(){OpenLayers.Animation.stop(this.timerId);this.timerId=void 0;this.points=[]},update:function(a){this.points.unshift({xy:a,tick:(new Date).getTime()});this.points.length>this.nbPoints&&this.points.pop()},end:function(a){for(var b,c=(new Date).getTime(),d=0,e=this.points.length,f;d<e;d++){f=this.points[d];if(c-\n +f.tick>this.delay)break;b=f}if(b&&(d=(new Date).getTime()-b.tick,c=Math.sqrt(Math.pow(a.x-b.xy.x,2)+Math.pow(a.y-b.xy.y,2)),d=c/d,!(0==d||d<this.threshold)))return c=Math.asin((a.y-b.xy.y)/c),b.xy.x<=a.x&&(c=Math.PI-c),{speed:d,theta:c}},move:function(a,b){var c=a.speed,d=Math.cos(a.theta),e=-Math.sin(a.theta),f=(new Date).getTime(),g=0,h=0;this.timerId=OpenLayers.Animation.start(OpenLayers.Function.bind(function(){if(null!=this.timerId){var a=(new Date).getTime()-f,j=-this.deceleration*Math.pow(a,\n +2)/2+c*a,k=j*d,j=j*e,l,m;l=!1;0>=-this.deceleration*a+c&&(OpenLayers.Animation.stop(this.timerId),this.timerId=null,l=!0);a=k-g;m=j-h;g=k;h=j;b(a,m,l)}},this))},CLASS_NAME:"OpenLayers.Kinetic"});OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:!0,initialize:function(a,b,c){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[a,c]);this.location=b;this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadRSS:function(){this.loaded||(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,\n +success:this.parseData,scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadRSS()},parseData:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=OpenLayers.Format.XML.prototype.read(a.responseText);if(this.useFeedTitle){a=null;try{a=b.getElementsByTagNameNS("*","title")[0].firstChild.nodeValue}catch(c){a=b.getElementsByTagName("title")[0].firstChild.nodeValue}a&&this.setName(a)}a={};OpenLayers.Util.extend(a,\n +this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(a.externalProjection=this.projection,a.internalProjection=this.map.getProjectionObject());for(var b=(new OpenLayers.Format.GeoRSS(a)).read(b),a=0,d=b.length;a<d;a++){var e={},f=b[a];if(f.geometry){var g=f.attributes.title?f.attributes.title:"Untitled",h=f.attributes.description?f.attributes.description:"No description.",i=f.attributes.link?f.attributes.link:"",f=f.geometry.getBounds().getCenterLonLat();e.icon=\n +null==this.icon?OpenLayers.Marker.defaultIcon():this.icon.clone();e.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(g||h){e.title=g;e.description=h;var j=\'<div class="olLayerGeoRSSClose">[x]</div>\',j=j+\'<div class="olLayerGeoRSSTitle">\';i&&(j+=\'<a class="link" href="\'+i+\'" target="_blank">\');j+=g;i&&(j+="</a>");j+="</div>";j+=\'<div style="" class="olLayerGeoRSSDescription">\';j+=h;j+="</div>";e.popupContentHTML=j}f=new OpenLayers.Feature(this,f,e);this.features.push(f);\n +e=f.createMarker();e.events.register("click",f,this.markerClick);this.addMarker(e)}}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||(b=this.createPopup(),OpenLayers.Event.observe(b.div,"click",OpenLayers.Function.bind(function(){for(var a=0,b=this.layer.map.popups.length;a<b;a++)this.layer.map.removePopup(this.layer.map.popups[a])},\n +this)),this.layer.map.addPopup(b));OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:!1,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,\n +graphicName:"square"},read:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c={namedLayers:!0===b.namedLayersAsArray?[]:{}};this.readChildNodes(a,c);return c},readers:OpenLayers.Util.applyDefaults({sld:{StyledLayerDescriptor:function(a,b){b.version=a.getAttribute("version");this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b.description=this.getChildValue(a)},NamedLayer:function(a,b){var c=\n +{userStyles:[],namedStyles:[]};this.readChildNodes(a,c);for(var d=0,e=c.userStyles.length;d<e;++d)c.userStyles[d].layerName=c.name;OpenLayers.Util.isArray(b.namedLayers)?b.namedLayers.push(c):b.namedLayers[c.name]=c},NamedStyle:function(a,b){b.namedStyles.push(this.getChildName(a.firstChild))},UserStyle:function(a,b){var c={defaultsPerSymbolizer:!0,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(a,c);this.multipleSymbolizers?(delete c.defaultsPerSymbolizer,c=new OpenLayers.Style2(c)):c=new OpenLayers.Style(this.defaultSymbolizer,\n +c);b.userStyles.push(c)},IsDefault:function(a,b){"1"==this.getChildValue(a)&&(b.isDefault=!0)},FeatureTypeStyle:function(a,b){++this.featureTypeCounter;var c={rules:this.multipleSymbolizers?b.rules:[]};this.readChildNodes(a,c);this.multipleSymbolizers||(b.rules=c.rules)},Rule:function(a,b){var c;this.multipleSymbolizers&&(c={symbolizers:[]});c=new OpenLayers.Rule(c);this.readChildNodes(a,c);b.rules.push(c)},ElseFilter:function(a,b){b.elseFilter=!0},MinScaleDenominator:function(a,b){b.minScaleDenominator=\n +parseFloat(this.getChildValue(a))},MaxScaleDenominator:function(a,b){b.maxScaleDenominator=parseFloat(this.getChildValue(a))},TextSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Text(c))):b.symbolizer.Text=OpenLayers.Util.applyDefaults(c,b.symbolizer.Text)},LabelPlacement:function(a,b){this.readChildNodes(a,b)},PointPlacement:function(a,b){var c={};this.readChildNodes(a,c);c.labelRotation=\n +c.rotation;delete c.rotation;var d,e=b.labelAnchorPointX,f=b.labelAnchorPointY;e<=1/3?d="l":e>1/3&&e<2/3?d="c":e>=2/3&&(d="r");f<=1/3?d+="b":f>1/3&&f<2/3?d+="m":f>=2/3&&(d+="t");c.labelAlign=d;OpenLayers.Util.applyDefaults(b,c)},AnchorPoint:function(a,b){this.readChildNodes(a,b)},AnchorPointX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointX=c)},AnchorPointY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointY=c)},Displacement:function(a,\n +b){this.readChildNodes(a,b)},DisplacementX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelXOffset=c)},DisplacementY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelYOffset=c)},LinePlacement:function(a,b){this.readChildNodes(a,b)},PerpendicularOffset:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelPerpendicularOffset=c)},Label:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.label=c)},Font:function(a,b){this.readChildNodes(a,\n +b)},Halo:function(a,b){var c={};this.readChildNodes(a,c);b.haloRadius=c.haloRadius;b.haloColor=c.fillColor;b.haloOpacity=c.fillOpacity},Radius:function(a,b){var c=this.readers.ogc._expression.call(this,a);null!=c&&(b.haloRadius=c)},RasterSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Raster(c))):b.symbolizer.Raster=OpenLayers.Util.applyDefaults(c,b.symbolizer.Raster)},Geometry:function(a,\n +b){b.geometry={};this.readChildNodes(a,b.geometry)},ColorMap:function(a,b){b.colorMap=[];this.readChildNodes(a,b.colorMap)},ColorMapEntry:function(a,b){var c=a.getAttribute("quantity"),d=a.getAttribute("opacity");b.push({color:a.getAttribute("color"),quantity:null!==c?parseFloat(c):void 0,label:a.getAttribute("label")||void 0,opacity:null!==d?parseFloat(d):void 0})},LineSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Line(c))):\n +b.symbolizer.Line=OpenLayers.Util.applyDefaults(c,b.symbolizer.Line)},PolygonSymbolizer:function(a,b){var c={fill:!1,stroke:!1};this.multipleSymbolizers||(c=b.symbolizer.Polygon||c);this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Polygon(c))):b.symbolizer.Polygon=c},PointSymbolizer:function(a,b){var c={fill:!1,stroke:!1,graphic:!1};this.multipleSymbolizers||(c=b.symbolizer.Point||c);this.readChildNodes(a,c);this.multipleSymbolizers?\n +(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Point(c))):b.symbolizer.Point=c},Stroke:function(a,b){b.stroke=!0;this.readChildNodes(a,b)},Fill:function(a,b){b.fill=!0;this.readChildNodes(a,b)},CssParameter:function(a,b){var c=a.getAttribute("name"),d=this.cssMap[c];b.label&&("fill"===c?d="fontColor":"fill-opacity"===c&&(d="fontOpacity"));d&&(c=this.readers.ogc._expression.call(this,a))&&(b[d]=c)},Graphic:function(a,b){b.graphic=!0;var c={};this.readChildNodes(a,c);\n +for(var d="stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat".split(" "),e,f,g=0,h=d.length;g<h;++g)e=d[g],f=c[e],void 0!=f&&(b[e]=f);void 0!=c.opacity&&(b.graphicOpacity=c.opacity);void 0!=c.size&&(isNaN(c.size/2)?b.graphicWidth=c.size:b.pointRadius=c.size/2);void 0!=c.href&&(b.externalGraphic=c.href);void 0!=c.rotation&&(b.rotation=c.rotation)},ExternalGraphic:function(a,b){this.readChildNodes(a,b)},Mark:function(a,b){this.readChildNodes(a,\n +b)},WellKnownName:function(a,b){b.graphicName=this.getChildValue(a)},Opacity:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.opacity=c)},Size:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.size=c)},Rotation:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.rotation=c)},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},Format:function(a,b){b.graphicFormat=this.getChildValue(a)}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),\n +cssMap:{stroke:"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle",fill:"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(a){var b=null,c;for(c in this.cssMap)if(this.cssMap[c]==a){b=c;break}return b},getGraphicFormat:function(a){var b,c;for(c in this.graphicFormats)if(this.graphicFormats[c].test(a)){b=\n +c;break}return b||this.defaultGraphicFormat},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\\.jpe?g$/i,"image/gif":/\\.gif$/i,"image/png":/\\.png$/i},write:function(a){return this.writers.sld.StyledLayerDescriptor.apply(this,[a])},writers:OpenLayers.Util.applyDefaults({sld:{_OGCExpression:function(a,b){var c=this.createElementNSPlus(a),d="string"==typeof b?b.split("${"):[b];c.appendChild(this.createTextNode(d[0]));for(var e,f,g=1,h=d.length;g<h;g++)e=d[g],f=e.indexOf("}"),0<f?(this.writeNode("ogc:PropertyName",\n +{property:e.substring(0,f)},c),c.appendChild(this.createTextNode(e.substring(++f)))):c.appendChild(this.createTextNode("${"+e));return c},StyledLayerDescriptor:function(a){var b=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});b.setAttribute("xmlns:ogc",this.namespaces.ogc);b.setAttribute("xmlns:gml",this.namespaces.gml);a.name&&this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&\n +this.writeNode("Abstract",a.description,b);if(OpenLayers.Util.isArray(a.namedLayers))for(var c=0,d=a.namedLayers.length;c<d;++c)this.writeNode("NamedLayer",a.namedLayers[c],b);else for(c in a.namedLayers)this.writeNode("NamedLayer",a.namedLayers[c],b);return b},Name:function(a){return this.createElementNSPlus("sld:Name",{value:a})},Title:function(a){return this.createElementNSPlus("sld:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("sld:Abstract",{value:a})},NamedLayer:function(a){var b=\n +this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",a.name,b);if(a.namedStyles)for(var c=0,d=a.namedStyles.length;c<d;++c)this.writeNode("NamedStyle",a.namedStyles[c],b);if(a.userStyles){c=0;for(d=a.userStyles.length;c<d;++c)this.writeNode("UserStyle",a.userStyles[c],b)}return b},NamedStyle:function(a){var b=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",a,b);return b},UserStyle:function(a){var b=this.createElementNSPlus("sld:UserStyle");a.name&&this.writeNode("Name",\n +a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.isDefault&&this.writeNode("IsDefault",a.isDefault,b);if(this.multipleSymbolizers&&a.rules){for(var c={"0":[]},d=[0],e,f,g,h,i,j=0,k=a.rules.length;j<k;++j)if(e=a.rules[j],e.symbolizers){f={};for(var l=0,m=e.symbolizers.length;l<m;++l)g=e.symbolizers[l],h=g.zIndex,h in f||(i=e.clone(),i.symbolizers=[],f[h]=i),f[h].symbolizers.push(g.clone());for(h in f)h in c||(d.push(h),c[h]=[]),c[h].push(f[h])}else c[0].push(e.clone());\n +d.sort();j=0;for(k=d.length;j<k;++j)e=c[d[j]],0<e.length&&(i=a.clone(),i.rules=c[d[j]],this.writeNode("FeatureTypeStyle",i,b))}else this.writeNode("FeatureTypeStyle",a,b);return b},IsDefault:function(a){return this.createElementNSPlus("sld:IsDefault",{value:a?"1":"0"})},FeatureTypeStyle:function(a){for(var b=this.createElementNSPlus("sld:FeatureTypeStyle"),c=0,d=a.rules.length;c<d;++c)this.writeNode("Rule",a.rules[c],b);return b},Rule:function(a){var b=this.createElementNSPlus("sld:Rule");a.name&&\n +this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.elseFilter?this.writeNode("ElseFilter",null,b):a.filter&&this.writeNode("ogc:Filter",a.filter,b);void 0!=a.minScaleDenominator&&this.writeNode("MinScaleDenominator",a.minScaleDenominator,b);void 0!=a.maxScaleDenominator&&this.writeNode("MaxScaleDenominator",a.maxScaleDenominator,b);var c,d;if(this.multipleSymbolizers&&a.symbolizers)for(var e=0,f=a.symbolizers.length;e<\n +f;++e)d=a.symbolizers[e],c=d.CLASS_NAME.split(".").pop(),this.writeNode(c+"Symbolizer",d,b);else for(var f=OpenLayers.Style.SYMBOLIZER_PREFIXES,e=0,g=f.length;e<g;++e)c=f[e],(d=a.symbolizer[c])&&this.writeNode(c+"Symbolizer",d,b);return b},ElseFilter:function(){return this.createElementNSPlus("sld:ElseFilter")},MinScaleDenominator:function(a){retu + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="9" aka="AAAAAAAAAAk="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +rn this.createElementNSPlus("sld:MinScaleDenominator",{value:a})},MaxScaleDenominator:function(a){return this.createElementNSPlus("sld:MaxScaleDenominator",\n +{value:a})},LineSymbolizer:function(a){var b=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",a,b);return b},Stroke:function(a){var b=this.createElementNSPlus("sld:Stroke");void 0!=a.strokeColor&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeColor"},b);void 0!=a.strokeOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeOpacity"},b);void 0!=a.strokeWidth&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeWidth"},b);void 0!=a.strokeDashstyle&&"solid"!==\n +a.strokeDashstyle&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeDashstyle"},b);void 0!=a.strokeLinecap&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeLinecap"},b);return b},CssParameter:function(a){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(a.key)},value:a.symbolizer[a.key]})},TextSymbolizer:function(a){var b=this.createElementNSPlus("sld:TextSymbolizer");null!=a.label&&this.writeNode("Label",a.label,b);(null!=a.fontFamily||null!=a.fontSize||\n +null!=a.fontWeight||null!=a.fontStyle)&&this.writeNode("Font",a,b);(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation||null!=a.labelPerpendicularOffset)&&this.writeNode("LabelPlacement",a,b);(null!=a.haloRadius||null!=a.haloColor||null!=a.haloOpacity)&&this.writeNode("Halo",a,b);(null!=a.fontColor||null!=a.fontOpacity)&&this.writeNode("Fill",{fillColor:a.fontColor,fillOpacity:a.fontOpacity},b);return b},LabelPlacement:function(a){var b=\n +this.createElementNSPlus("sld:LabelPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation)&&null==a.labelPerpendicularOffset&&this.writeNode("PointPlacement",a,b);null!=a.labelPerpendicularOffset&&this.writeNode("LinePlacement",a,b);return b},LinePlacement:function(a){var b=this.createElementNSPlus("sld:LinePlacement");this.writeNode("PerpendicularOffset",a.labelPerpendicularOffset,b);return b},PerpendicularOffset:function(a){return this.createElementNSPlus("sld:PerpendicularOffset",\n +{value:a})},PointPlacement:function(a){var b=this.createElementNSPlus("sld:PointPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign)&&this.writeNode("AnchorPoint",a,b);(null!=a.labelXOffset||null!=a.labelYOffset)&&this.writeNode("Displacement",a,b);null!=a.labelRotation&&this.writeNode("Rotation",a.labelRotation,b);return b},AnchorPoint:function(a){var b=this.createElementNSPlus("sld:AnchorPoint"),c=a.labelAnchorPointX,d=a.labelAnchorPointY;null!=c&&this.writeNode("AnchorPointX",\n +c,b);null!=d&&this.writeNode("AnchorPointY",d,b);if(null==c&&null==d){var e=a.labelAlign.substr(0,1),a=a.labelAlign.substr(1,1);"l"===e?c=0:"c"===e?c=0.5:"r"===e&&(c=1);"b"===a?d=0:"m"===a?d=0.5:"t"===a&&(d=1);this.writeNode("AnchorPointX",c,b);this.writeNode("AnchorPointY",d,b)}return b},AnchorPointX:function(a){return this.createElementNSPlus("sld:AnchorPointX",{value:a})},AnchorPointY:function(a){return this.createElementNSPlus("sld:AnchorPointY",{value:a})},Displacement:function(a){var b=this.createElementNSPlus("sld:Displacement");\n +null!=a.labelXOffset&&this.writeNode("DisplacementX",a.labelXOffset,b);null!=a.labelYOffset&&this.writeNode("DisplacementY",a.labelYOffset,b);return b},DisplacementX:function(a){return this.createElementNSPlus("sld:DisplacementX",{value:a})},DisplacementY:function(a){return this.createElementNSPlus("sld:DisplacementY",{value:a})},Font:function(a){var b=this.createElementNSPlus("sld:Font");a.fontFamily&&this.writeNode("CssParameter",{symbolizer:a,key:"fontFamily"},b);a.fontSize&&this.writeNode("CssParameter",\n +{symbolizer:a,key:"fontSize"},b);a.fontWeight&&this.writeNode("CssParameter",{symbolizer:a,key:"fontWeight"},b);a.fontStyle&&this.writeNode("CssParameter",{symbolizer:a,key:"fontStyle"},b);return b},Label:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Label",a)},Halo:function(a){var b=this.createElementNSPlus("sld:Halo");a.haloRadius&&this.writeNode("Radius",a.haloRadius,b);(a.haloColor||a.haloOpacity)&&this.writeNode("Fill",{fillColor:a.haloColor,fillOpacity:a.haloOpacity},b);\n +return b},Radius:function(a){return this.createElementNSPlus("sld:Radius",{value:a})},RasterSymbolizer:function(a){var b=this.createElementNSPlus("sld:RasterSymbolizer");a.geometry&&this.writeNode("Geometry",a.geometry,b);a.opacity&&this.writeNode("Opacity",a.opacity,b);a.colorMap&&this.writeNode("ColorMap",a.colorMap,b);return b},Geometry:function(a){var b=this.createElementNSPlus("sld:Geometry");a.property&&this.writeNode("ogc:PropertyName",a,b);return b},ColorMap:function(a){for(var b=this.createElementNSPlus("sld:ColorMap"),\n +c=0,d=a.length;c<d;++c)this.writeNode("ColorMapEntry",a[c],b);return b},ColorMapEntry:function(a){var b=this.createElementNSPlus("sld:ColorMapEntry");b.setAttribute("color",a.color);void 0!==a.opacity&&b.setAttribute("opacity",parseFloat(a.opacity));void 0!==a.quantity&&b.setAttribute("quantity",parseFloat(a.quantity));void 0!==a.label&&b.setAttribute("label",a.label);return b},PolygonSymbolizer:function(a){var b=this.createElementNSPlus("sld:PolygonSymbolizer");!1!==a.fill&&this.writeNode("Fill",\n +a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},Fill:function(a){var b=this.createElementNSPlus("sld:Fill");a.fillColor&&this.writeNode("CssParameter",{symbolizer:a,key:"fillColor"},b);null!=a.fillOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"fillOpacity"},b);return b},PointSymbolizer:function(a){var b=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",a,b);return b},Graphic:function(a){var b=this.createElementNSPlus("sld:Graphic");void 0!=a.externalGraphic?\n +this.writeNode("ExternalGraphic",a,b):this.writeNode("Mark",a,b);void 0!=a.graphicOpacity&&this.writeNode("Opacity",a.graphicOpacity,b);void 0!=a.pointRadius?this.writeNode("Size",2*a.pointRadius,b):void 0!=a.graphicWidth&&this.writeNode("Size",a.graphicWidth,b);void 0!=a.rotation&&this.writeNode("Rotation",a.rotation,b);return b},ExternalGraphic:function(a){var b=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",a.externalGraphic,b);this.writeNode("Format",a.graphicFormat||\n +this.getGraphicFormat(a.externalGraphic),b);return b},Mark:function(a){var b=this.createElementNSPlus("sld:Mark");a.graphicName&&this.writeNode("WellKnownName",a.graphicName,b);!1!==a.fill&&this.writeNode("Fill",a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},WellKnownName:function(a){return this.createElementNSPlus("sld:WellKnownName",{value:a})},Opacity:function(a){return this.createElementNSPlus("sld:Opacity",{value:a})},Size:function(a){return this.writers.sld._OGCExpression.call(this,\n +"sld:Size",a)},Rotation:function(a){return this.createElementNSPlus("sld:Rotation",{value:a})},OnlineResource:function(a){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":a}})},Format:function(a){return this.createElementNSPlus("sld:Format",{value:a})}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"},isBaseLayer:!0,encodeBBOX:!1,noMagic:!1,yx:{},initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);1.3<=parseFloat(c.VERSION)&&!c.EXCEPTIONS&&(c.EXCEPTIONS="INIMAGE");e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));\n +if(!this.noMagic&&this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"image/jpeg"==this.params.FORMAT&&(this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},reverseAxisOrder:function(){var a=this.projection.getCode();return 1.3<=parseFloat(this.params.VERSION)&&\n +!(!this.yx[a]&&!OpenLayers.Projection.defaults[a].yx)},getURL:function(a){var a=this.adjustBounds(a),b=this.getImageSize(),c={},d=this.reverseAxisOrder();c.BBOX=this.encodeBBOX?a.toBBOX(null,d):a.toArray(d);c.WIDTH=b.w;c.HEIGHT=b.h;return this.getFullRequestString(c)},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},getFullRequestString:function(a,b){var c=this.map.getProjectionObject(),c=this.projection&&this.projection.equals(c)?\n +this.projection.getCode():c.getCode(),c="none"==c?null:c;1.3<=parseFloat(this.params.VERSION)?this.params.CRS=c:this.params.SRS=c;"boolean"==typeof this.params.TRANSPARENT&&(a.TRANSPARENT=this.params.TRANSPARENT?"TRUE":"FALSE");return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_sld_MinScaleDenominator:function(a,b){var c=parseFloat(this.getChildValue(b));0<c&&(a.maxScale=c)},read_sld_MaxScaleDenominator:function(a,b){a.minScale=parseFloat(this.getChildValue(b))},read_wmc_SRS:function(a,b){"srs"in\n +a||(a.srs={});a.srs[this.getChildValue(b)]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[a]);if(a.maxScale){var c=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");c.appendChild(this.createTextNode(a.maxScale.toPrecision(16)));b.appendChild(c)}a.minScale&&(c=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator"),c.appendChild(this.createTextNode(a.minScale.toPrecision(16))),b.appendChild(c));if(a.srs)for(var d in a.srs)b.appendChild(this.createElementDefaultNS("SRS",\n +d));b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a));return b},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.XLS=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",stringifyOutput:!0,CLASS_NAME:"OpenLayers.Format.XLS"});OpenLayers.Format.XLS.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xls:"http://www.opengis.net/xls",gml:"http://www.opengis.net/gml",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},xy:!0,defaultPrefix:"xls",schemaLocation:null,read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{xls:{XLS:function(a,b){b.version=a.getAttribute("version");\n +this.readChildNodes(a,b)},Response:function(a,b){this.readChildNodes(a,b)},GeocodeResponse:function(a,b){b.responseLists=[];this.readChildNodes(a,b)},GeocodeResponseList:function(a,b){var c={features:[],numberOfGeocodedAddresses:parseInt(a.getAttribute("numberOfGeocodedAddresses"))};b.responseLists.push(c);this.readChildNodes(a,c)},GeocodedAddress:function(a,b){var c=new OpenLayers.Feature.Vector;b.features.push(c);this.readChildNodes(a,c);c.geometry=c.components[0]},GeocodeMatchCode:function(a,b){b.attributes.matchCode=\n +{accuracy:parseFloat(a.getAttribute("accuracy")),matchType:a.getAttribute("matchType")}},Address:function(a,b){var c={countryCode:a.getAttribute("countryCode"),addressee:a.getAttribute("addressee"),street:[],place:[]};b.attributes.address=c;this.readChildNodes(a,c)},freeFormAddress:function(a,b){b.freeFormAddress=this.getChildValue(a)},StreetAddress:function(a,b){this.readChildNodes(a,b)},Building:function(a,b){b.building={number:a.getAttribute("number"),subdivision:a.getAttribute("subdivision"),\n +buildingName:a.getAttribute("buildingName")}},Street:function(a,b){b.street.push(this.getChildValue(a))},Place:function(a,b){b.place[a.getAttribute("type")]=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)}},gml:OpenLayers.Format.GML.v3.prototype.readers.gml},write:function(a){return this.writers.xls.XLS.apply(this,[a])},writers:{xls:{XLS:function(a){var b=this.createElementNSPlus("xls:XLS",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});\n +this.writeNode("RequestHeader",a.header,b);this.writeNode("Request",a,b);return b},RequestHeader:function(){return this.createElementNSPlus("xls:RequestHeader")},Request:function(a){var b=this.createElementNSPlus("xls:Request",{attributes:{methodName:"GeocodeRequest",requestID:a.requestID||"",version:this.VERSION}});this.writeNode("GeocodeRequest",a.addresses,b);return b},GeocodeRequest:function(a){for(var b=this.createElementNSPlus("xls:GeocodeRequest"),c=0,d=a.length;c<d;c++)this.writeNode("Address",\n +a[c],b);return b},Address:function(a){var b=this.createElementNSPlus("xls:Address",{attributes:{countryCode:a.countryCode}});a.freeFormAddress?this.writeNode("freeFormAddress",a.freeFormAddress,b):(a.street&&this.writeNode("StreetAddress",a,b),a.municipality&&this.writeNode("Municipality",a.municipality,b),a.countrySubdivision&&this.writeNode("CountrySubdivision",a.countrySubdivision,b),a.postalCode&&this.writeNode("PostalCode",a.postalCode,b));return b},freeFormAddress:function(a){return this.createElementNSPlus("freeFormAddress",\n +{value:a})},StreetAddress:function(a){var b=this.createElementNSPlus("xls:StreetAddress");a.building&&this.writeNode(b,"Building",a.building);a=a.street;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=0,d=a.length;c<d;c++)this.writeNode("Street",a[c],b);return b},Building:function(a){return this.createElementNSPlus("xls:Building",{attributes:{number:a.number,subdivision:a.subdivision,buildingName:a.buildingName}})},Street:function(a){return this.createElementNSPlus("xls:Street",{value:a})},Municipality:function(a){return this.createElementNSPlus("xls:Place",\n +{attributes:{type:"Municipality"},value:a})},CountrySubdivision:function(a){return this.createElementNSPlus("xls:Place",{attributes:{type:"CountrySubdivision"},value:a})},PostalCode:function(a){return this.createElementNSPlus("xls:PostalCode",{value:a})}}},CLASS_NAME:"OpenLayers.Format.XLS.v1"});OpenLayers.Format.XLS.v1_1_0=OpenLayers.Class(OpenLayers.Format.XLS.v1,{VERSION:"1.1",schemaLocation:"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",CLASS_NAME:"OpenLayers.Format.XLS.v1_1_0"});OpenLayers.Format.XLS.v1_1=OpenLayers.Format.XLS.v1_1_0;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",\n +"1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,\n +"viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);\n +this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,\n +b,c){var b=b||a._style,c=c||a._options,d=parseFloat(a.getAttributeNS(null,"r")),e=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&d){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicTitle&&(a.setAttributeNS(null,"title",b.graphicTitle),d=a.getElementsByTagName("title"),0<d.length?d[0].firstChild.textContent=b.graphicTitle:(d=this.nodeFactory(null,"title"),d.textContent=b.graphicTitle,a.appendChild(d)));b.graphicWidth&&\n +b.graphicHeight&&a.setAttributeNS(null,"preserveAspectRatio","none");var d=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,d=d?d:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),i=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*d))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",d);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,\n +"href",b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+i);a.onclick=OpenLayers.Renderer.SVG.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var d=3*b.pointRadius,g=2*d,j=this.importSymbol(b.graphicName);f=this.getPosition(a);e=3*this.symbolMetrics[j.id][0]/g;h=a.parentNode;i=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(j.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",j.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,\n +"width",g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-d);a.setAttributeNS(null,"y",f.y-d);i?h.insertBefore(a,i):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);d=b.rotation;if((void 0!==d||void 0!==a._rotation)&&f)a._rotation=d,d|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+d+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[j.id],a.firstChild.setAttributeNS(null,"transform","rotate("+d+" "+f[1]+" "+f[2]+")"))}c.isFilled?(a.setAttributeNS(null,\n +"fill",b.fillColor),a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*e),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,e))):a.setAttributeNS(null,"stroke",\n +"none");b.pointerEvents&&a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\\s+/g,\n +",")}},createNode:function(a,b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,\n +b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left,b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?\n +(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,i=b.components.length;h<i;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,\n +"x",d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,\n +f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,\n +"font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=\n +b.label.split("\\n"),i=h.length;f.childNodes.length>i;)f.removeChild(f.lastChild);for(var j=0;j<i;j++){var k=this.nodeFactory(a+d+"_tspan_"+j,"tspan");!0===b.labelSelect&&(k._featureId=a,k._geometry=c,k._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&k.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");k.setAttribute("x",e);if(0==j){var l=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==l&&(l=-0.5);k.setAttribute("dy",l*(i-1)+"em")}else k.setAttribute("dy",\n +"1em");k.textContent=""===h[j]?" ":h[j];k.parentNode||f.appendChild(k)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),\n +d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,i;if(h<-d||h>d)i=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*i;if(c<-e||c>e)i=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*i;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left,a=this.top-a.y/b;return this.inValidRange(c,a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,\n +"cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");var a=this.nodeFactory(b,"symbol"),e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),f=[],g,h,i=0;i<d.length;i+=2)g=d[i],h=d[i+1],c.left=Math.min(c.left,\n +g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);b||(b=a.target,\n +b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){a.preventDefault&&a.preventDefault()};OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);"0.3.0"===c&&(c=this.defaultVersion);return c},toContext:function(a){var b={};"OpenLayers.Map"==a.CLASS_NAME&&(b.bounds=a.getExtent(),b.maxExtent=a.maxExtent,b.projection=a.projection,b.size=a.getSize(),b.layers=a.layers);return b},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",\n +defaultPrefix:"owc",extractAttributes:!0,xy:!0,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:"vector",geometryName:"geometry",nestingLayerLookup:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this)},setNestingPath:function(a){if(a.layersContext)for(var b=0,c=a.layersContext.length;b<c;b++){var d=\n +a.layersContext[b],e=[],f=a.title||"";a.metadata&&a.metadata.nestingPath&&(e=a.metadata.nestingPath.slice());""!=f&&e.push(f);d.metadata.nestingPath=e;d.layersContext&&this.setNestingPath(d)}},decomposeNestingPath:function(a){var b=[];if(OpenLayers.Util.isArray(a)){for(a=a.slice();0<a.length;)b.push(a.slice()),a.pop();b.reverse()}return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,\n +b);this.setNestingPath({layersContext:b.layersContext});a=[];this.processLayer(a,b);delete b.layersContext;b.layersContext=a;return b},processLayer:function(a,b){if(b.layersContext)for(var c=0,d=b.layersContext.length;c<d;c++){var e=b.layersContext[c];a.push(e);e.layersContext&&this.processLayer(a,e)}},write:function(a,b){this.nestingLayerLookup={};b=b||{};OpenLayers.Util.applyDefaults(b,a);var c=this.writeNode("OWSContext",b);this.nestingLayerLookup=null;this.setAttributeNS(c,this.namespaces.xsi,\n +"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},readers:{kml:{Document:function(a,b){b.features=(new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:!0})).read(a)}},owc:{OWSContext:function(a,b){this.readChildNodes(a,b)},General:function(a,b){this.readChildNodes(a,b)},ResourceList:function(a,b){this.readChildNodes(a,b)},Layer:function(a,b){var c={metadata:{},visibility:"1"!=a.getAttribute("hidden"),queryable:"1"==a.getAttribute("queryable"),\n +opacity:null!=a.getAttribute("opacity")?parseFloat(a.getAttribute("opacity")):null,name:a.getAttribute("name"),categoryLayer:null==a.getAttribute("name"),formats:[],styles:[]};b.layersContext||(b.layersContext=[]);b.layersContext.push(c);this.readChildNodes(a,c)},InlineGeometry:function(a,b){b.features=[];var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember"),d;1<=c.length&&(d=c[0]);d&&d.firstChild&&(c=d.firstChild.nextSibling?d.firstChild.nextSibling:d.firstChild,this.setNamespace("feature",\n +c.namespaceURI),this.featureType=c.localName||c.nodeName.split(":").pop(),this.readChildNodes(a,b))},Server:function(a,b){if(!b.service&&!b.version||b.service!=OpenLayers.Format.Context.serviceTypes.WMS)b.service=a.getAttribute("service"),b.version=a.getAttribute("version"),this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a);this.readChildNodes(a,b)},Title:function(a,b){b.title=this.getChildValue(a);this.readChildNodes(a,b)},StyleList:function(a,b){this.readChildNodes(a,b.styles)},\n +Style:function(a,b){var c={};b.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={};b.legend=c;this.readChildNodes(a,c)},OnlineResource:function(a,b){b.url=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)}},ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,gml:OpenLayers.Format.GML.v2.prototype.readers.gml,sld:OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{owc:{OWSContext:function(a){var b=\n +this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:a.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",a,b);this.writeNode("ResourceList",a,b);return b},General:function(a){var b=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",a,b);this.writeNode("ows:Title",a.title||"OpenLayers OWSContext",b);return b},ResourceList:function(a){for(var b=this.createElementNSPlus("ResourceList"),c=0,d=a.layers.length;c<d;c++){var e=\n +a.layers[c],f=this.decomposeNestingPath(e.metadata.nestingPath);this.writeNode("_Layer",{layer:e,subPaths:f},b)}return b},Server:function(a){var b=this.createElementNSPlus("Server",{attributes:{version:a.version,service:a.service}});this.writeNode("OnlineResource",a,b);return b},OnlineResource:function(a){return this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":a.url}})},InlineGeometry:function(a){var b=this.createElementNSPlus("InlineGeometry");this.writeNode("gml:boundedBy",a.getDataExtent(),\n +b);for(var c=0,d=a.features.length;c<d;c++)this.writeNode("gml:featureMember",a.features[c],b);return b},StyleList:function(a){for(var b=this.createElementNSPlus("StyleList"),c=0,d=a.length;c<d;c++)this.writeNode("Style",a[c],b);return b},Style:function(a){var b=this.createElementNSPlus("Style");this.writeNode("Name",a,b);this.writeNode("Title",a,b);a.legend&&this.writeNode("LegendURL",a,b);return b},Name:function(a){return this.createElementNSPlus("Name",{value:a.name})},Title:function(a){return this.createElementNSPlus("Title",\n +{value:a.title})},LegendURL:function(a){var b=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",a.legend,b);return b},_WMS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.params.LAYERS,queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1",opacity:a.hasOwnProperty("opacity")?a.opacity:null}});this.writeNode("ows:Title",a.name,b);this.writeNode("ows:OutputFormat",a.params.FORMAT,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,\n +version:a.params.VERSION,url:a.url},b);a.metadata.styles&&0<a.metadata.styles.length&&this.writeNode("StyleList",a.metadata.styles,b);return b},_Layer:function(a){var b,c,d;b=a.layer;c=a.subPaths;d=null;0<c.length?(b=c[0].join("/"),c=b.lastIndexOf("/"),d=this.nestingLayerLookup[b],c=0<c?b.substring(c+1,b.length):b,d||(d=this.createElementNSPlus("Layer"),this.writeNode("ows:Title",c,d),this.nestingLayerLookup[b]=d),a.subPaths.shift(),this.writeNode("_Layer",a,d)):(b instanceof OpenLayers.Layer.WMS?\n +d=this.writeNode("_WMS",b):b instanceof OpenLayers.Layer.Vector&&(b.protocol instanceof OpenLayers.Protocol.WFS.v1?d=this.writeNode("_WFS",b):b.protocol instanceof OpenLayers.Protocol.HTTP?b.protocol.format instanceof OpenLayers.Format.GML?(b.protocol.format.version="2.1.2",d=this.writeNode("_GML",b)):b.protocol.format instanceof OpenLayers.Format.KML&&(b.protocol.format.version="2.2",d=this.writeNode("_KML",b)):(this.setNamespace("feature",this.featureNS),d=this.writeNode("_InlineGeometry",b))),\n +b.options.maxScale&&this.writeNode("sld:MinScaleDenominator",b.options.maxScale,d),b.options.minScale&&this.writeNode("sld:MaxScaleDenominator",b.options.minScale,d),this.nestingLayerLookup[b.name]=d);return d},_WFS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.protocol.featurePrefix+":"+a.protocol.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:a.protocol.version,\n +url:a.protocol.url},b);return b},_InlineGeometry:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("InlineGeometry",a,b);return b},_GML:function(a){var b=this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:a.protocol.url,version:a.protocol.format.version},b);return b},_KML:function(a){var b=\n +this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:a.protocol.format.version,url:a.protocol.url},b);return b}},gml:OpenLayers.Util.applyDefaults({boundedBy:function(a){var b=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",a,b);return b}},OpenLayers.Format.GML.v2.prototype.writers.gml),ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,sld:OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,\n +feature:OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:!1,draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.eTop||(this.eTop=document.createElement("div"),this.eTop.className=this.displayClass+"Top",this.div.appendChild(this.eTop),this.eTop.style.visibility=""==this.topOutUnits||""==this.topInUnits?"hidden":"visible",this.eBottom=document.createElement("div"),\n +this.eBottom.className=this.displayClass+"Bottom",this.div.appendChild(this.eBottom),this.eBottom.style.visibility=""==this.bottomOutUnits||""==this.bottomInUnits?"hidden":"visible");this.map.events.register("moveend",this,this.update);this.update();return this.div},getBarLen:function(a){var b=parseInt(Math.log(a)/Math.log(10)),b=Math.pow(10,b),a=parseInt(a/b);return(5<a?5:2<a?2:1)*b},update:function(){var a=this.map.getResolution();if(a){var b=this.map.getUnits(),c=OpenLayers.INCHES_PER_UNIT,d=this.maxWidth*\n +a*c[b],e=1;!0===this.geodesic&&(e=(this.map.getGeodesicPixelSize().w||1.0E-6)*this.maxWidth/(d/c.km),d*=e);var f,g;1E5<d?(f=this.topOutUnits,g=this.bottomOutUnits):(f=this.topInUnits,g=this.bottomInUnits);var h=d/c[f],i=d/c[g],d=this.getBarLen(h),j=this.getBarLen(i),h=d/c[b]*c[f],i=j/c[b]*c[g],b=h/a/e,a=i/a/e;"visible"==this.eBottom.style.visibility&&(this.eBottom.style.width=Math.round(a)+"px",this.eBottom.innerHTML=j+" "+g);"visible"==this.eTop.style.visibility&&(this.eTop.style.width=Math.round(b)+\n +"px",this.eTop.innerHTML=d+" "+f)}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(a,b,c,d){this.url=a;this.size=b||{w:20,h:20};this.offset=c||{x:-(this.size.w/2),y:-(this.size.h/2)};this.calculateOffset=d;a=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(a)},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null},clone:function(){return new OpenLayers.Icon(this.url,\n +this.size,this.offset,this.calculateOffset)},setSize:function(a){null!=a&&(this.size=a);this.draw()},setUrl:function(a){null!=a&&(this.url=a);this.draw()},draw:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(a);return this.imageDiv},erase:function(){null!=this.imageDiv&&null!=this.imageDiv.parentNode&&OpenLayers.Element.remove(this.imageDiv)},setOpacity:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,\n +null,null,null,a)},moveTo:function(a){null!=a&&(this.px=a);null!=this.imageDiv&&(null==this.px?this.display(!1):(this.calculateOffset&&(this.offset=this.calculateOffset(this.size)),OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,{x:this.px.x+this.offset.x,y:this.px.y+this.offset.y})))},display:function(a){this.imageDiv.style.display=a?"":"none"},isDrawn:function(){return this.imageDiv&&this.imageDiv.parentNode&&11!=this.imageDiv.parentNode.nodeType},CLASS_NAME:"OpenLayers.Icon"});OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(a,b){this.lonlat=a;var c=b?b:OpenLayers.Marker.defaultIcon();null==this.icon?this.icon=c:(this.icon.url=c.url,this.icon.size=c.size,this.icon.offset=c.offset,this.icon.calculateOffset=c.calculateOffset);this.events=new OpenLayers.Events(this,this.icon.imageDiv)},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;null!=this.icon&&(this.icon.destroy(),this.icon=null)},\n +draw:function(a){return this.icon.draw(a)},erase:function(){null!=this.icon&&this.icon.erase()},moveTo:function(a){null!=a&&null!=this.icon&&this.icon.moveTo(a);this.lonlat=this.map.getLonLatFromLayerPx(a)},isDrawn:function(){return this.icon&&this.icon.isDrawn()},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsLonLat(this.lonlat));return a},inflate:function(a){this.icon&&this.icon.setSize({w:this.icon.size.w*a,h:this.icon.size.h*a})},setOpacity:function(a){this.icon.setOpacity(a)},\n +setUrl:function(a){this.icon.setUrl(a)},display:function(a){this.icon.display(a)},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){return new OpenLayers.Icon(OpenLayers.Util.getImageLocation("marker.png"),{w:21,h:25},{x:-10.5,y:-25})};OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,format:"image/png",serverResolutions:null,initialize:function(a,b,c,d){this.layername=c;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,{},d]);this.extension=this.format.split("/")[1].toLowerCase();this.extension="jpg"==this.extension?"jpeg":this.extension},clone:function(a){null==a&&(a=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getURL:function(a){function b(a,b){for(var a=""+a,c=[],d=0;d<b;++d)c.push("0");return c.join("").substring(0,b-a.length)+a}var c=this.getServerResolution(),d=this.maxExtent,e=this.tileSize,f=Math.round((a.left-d.left)/(c*e.w)),a=Math.round((a.bottom-d.bottom)/(c*e.h)),c=null!=this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,c):this.map.getZoom(),f=[this.layername,b(c,2),b(parseInt(f/1E6),3),b(parseInt(f/1E3)%1E3,3),b(parseInt(f)%1E3,3),b(parseInt(a/1E6),3),b(parseInt(a/\n +1E3)%1E3,3),b(parseInt(a)%1E3,3)+"."+this.extension].join("/"),c=this.url;OpenLayers.Util.isArray(c)&&(c=this.selectUrl(f,c));c="/"==c.charAt(c.length-1)?c:c+"/";return c+f},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,DEFAULT_PARAMS:{i:"jpeg",map:""},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b);return this.getFullRequestString({t:-Math.round(a.top/b),l:d,s:c})},calculateGridLayout:function(a,\n +b,c){var b=c*this.tileSize.w,c=c*this.tileSize.h,d=a.left,e=Math.floor(d/b)-this.buffer,d=-(d/b-e)*this.tileSize.w,e=e*b,a=a.top,f=Math.ceil(a/c)+this.buffer;return{tilelon:b,tilelat:c,tileoffsetlon:e,tileoffsetlat:f*c,tileoffsetx:d,tileoffsety:-(f-a/c+1)*this.tileSize.h}},clone:function(a){null==a&&(a=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=\n +[];return a},getTileBounds:function(a){var b=this.getResolution(),c=b*this.tileSize.w,b=b*this.tileSize.h,d=this.getLonLatFromViewPortPx(a),a=c*Math.floor(d.lon/c),d=b*Math.floor(d.lat/b);return new OpenLayers.Bounds(a,d,a+c,d+b)},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,preserveAspectRatio:!1,rotate:!0,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,irregular:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.rotationHandleSymbolizer||(this.rotationHandleSymbolizer={stroke:!1,pointRadius:10,fillOpacity:0,\n +cursor:"pointer"});this.createBox();this.createControl()},activate:function(){var a=!1;OpenLayers.Control.prototype.activate.apply(this,arguments)&&(this.dragControl.activate(),this.layer.addFeatures([this.box]),this.rotate&&this.layer.addFeatures(this.rotationHandles),this.layer.addFeatures(this.handles),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Control.prototype.deactivate.apply(this,arguments)&&(this.layer.removeFeatures(this.handles),this.rotate&&this.layer.removeFeatures(this.rotationHandles),\n +this.layer.removeFeatures([this.box]),this.dragControl.deactivate(),a=!0);return a},setMap:function(a){this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setFeature:function(a,b){var b=OpenLayers.Util.applyDefaults(b,{rotation:0,scale:1,ratio:1}),c=this.rotation,d=this.center;OpenLayers.Util.extend(this,b);if(!1!==this.events.triggerEvent("beforesetfeature",{feature:a})){this.feature=a;this.activate();this._setfeature=!0;var e=this.feature.geometry.getBounds();this.box.move(e.getCenterLonLat());\n +this.box.geometry.rotate(-c,d);this._angle=0;this.rotation?(c=a.geometry.clone(),c.rotate(-this.rotation,this.center),c=new OpenLayers.Feature.Vector(c.getBounds().toGeometry()),c.geometry.rotate(this.rotation,this.center),this.box.geometry.rotate(this.rotation,this.center),this.box.move(c.geometry.getBounds().getCenterLonLat()),c=c.geometry.components[0].components[0].getBounds().getCenterLonLat()):c=new OpenLayers.LonLat(e.left,e.bottom);this.handles[0].move(c);delete this._setfeature;this.events.triggerEvent("setfeature",\n +{feature:a})}},unsetFeature:function(){this.active?this.deactivate():(this.feature=null,this.rotation=0,this.ratio=this.scale=1)},createBox:function(){var a=this;this.center=new OpenLayers.Geometry.Point(0,0);this.box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,\n +1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,"string"==typeof this.renderIntent?null:this.renderIntent);this.box.geometry.move=function(b,c){a._moving=!0;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);a.center.move(b,c);delete a._moving};for(var b=function(a,b){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(a,b);this._handle.geometry.move(a,b)},c=function(a,b,c){OpenLayers.Geometry.Point.prototype.resize.apply(this,\n +arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(a,b,c);this._handle.geometry.resize(a,b,c)},d=function(a,b){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(a,b);this._handle.geometry.rotate(a,b)},e=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,g=!(!a._setfeature&&a.preserveAspectRatio)&&!(f&&f.shiftKey),\n +h=new OpenLayers.Geometry.Point(d,e),f=a.center;this.rotate(-a.rotation,f);h.rotate(-a.rotation,f);var i=this.x-f.x,j=this.y-f.y,k=i-(this.x-h.x),l=j-(this.y-h.y);a.irregular&&!a._setfeature&&(i-=(this.x-h.x)/2,j-=(this.y-h.y)/2);this.x=d;this.y=e;h=1;g?(j=1.0E-5>Math.abs(l)?1:j/l,h=(1.0E-5>Math.abs(k)?1:i/k)/j):(k=Math.sqrt(k*k+l*l),j=Math.sqrt(i*i+j*j)/k);a._moving=!0;a.box.geometry.rotate(-a.rotation,f);delete a._moving;a.box.geometry.resize(j,f,h);a.box.geometry.rotate(a.rotation,f);a.transformFeature({scale:j,\n +ratio:h});a.irregular&&!a._setfeature&&(i=f.clone(),i.x+=1.0E-5>Math.abs(d-f.x)?0:this.x-d,i.y+=1.0E-5>Math.abs(e-f.y)?0:this.y-e,a.box.geometry.move(this.x-d,this.y-e),a.transformFeature({center:i}))}},f=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,f=f&&f.shiftKey?45:1,g=a.center,h=this.x-g.x,i=this.y-g.y;this.x=d;this.y=e;d=Math.atan2(i-c,h-b);d=Math.atan2(i,h)-d;d*=180/Math.PI;a._angle=(a._angle+\n +d)%360;d=a.rotation%f;if(Math.abs(a._angle)>=f||0!==d)d=Math.round(a._angle/f)*f-d,a._angle=0,a.box.geometry.rotate(d,g),a.transformFeature({rotation:d})}},g=Array(8),h=Array(4),i,j,k,l="sw s se e ne n nw w".split(" "),m=0;8>m;++m)i=this.box.geometry.components[m],j=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-resize"},"string"==typeof this.renderIntent?null:this.renderIntent),0==m%2&&(k=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-rotate"},"string"==typeof this.rotationHandleSymbolizer?\n +null:this.rotationHandleSymbolizer),k.geometry.move=f,i._rotationHandle=k,h[m/2]=k),i.move=b,i.resize=c,i.rotate=d,j.geometry.move=e,i._handle=j,g[m]=j;this.rotationHandles=h;this.handles=g},createControl:function(){var a=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:!0,moveFeature:function(b){this.feature===a.feature&&(this.feature=a.box);OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments)},onDrag:function(b){b===a.box&&a.transformFeature({center:a.center})},\n +onStart:function(b){var c=!a.geometryTypes||-1!==OpenLayers.Util.indexOf(a.geometryTypes,b.geometry.CLASS_NAME),d=OpenLayers.Util.indexOf(a.handles,b),d=d+OpenLayers.Util.indexOf(a.rotationHandles,b);b!==a.feature&&(b!==a.box&&-2==d&&c)&&a.setFeature(b)},onComplete:function(){a.events.triggerEvent("transformcomplete",{feature:a.feature})}})},drawHandles:function(){for(var a=this.layer,b=0;8>b;++b)this.rotate&&0===b%2&&a.drawFeature(this.rotationHandles[b/2],this.rotationHandleSymbolizer),a.drawFeature(this.handles[b],\n +this.renderIntent)},transformFeature:function(a){if(!this._setfeature){this.scale*=a.scale||1;this.ratio*=a.ratio||1;var b=this.rotation;this.rotation=(this.rotation+(a.rotation||0))%360;if(!1!==this.events.triggerEvent("beforetransform",a)){var c=this.feature,d=c.geometry,e=this.center;d.rotate(-b,e);a.scale||a.ratio?d.resize(a.scale,e,a.ratio):a.center&&c.move(a.center.getBounds().getCenterLonLat());d.rotate(this.rotation,e);this.layer.drawFeature(c);c.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",\n +a)}}this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles()},destroy:function(){for(var a,b=0;8>b;++b)a=this.box.geometry.components[b],a._handle.destroy(),a._handle=null,a._rotationHandle&&a._rotationHandle.destroy(),a._rotationHandle=null;this.rotationHandles=this.rotationHandleSymbolizer=this.handles=this.feature=this.center=null;this.box.destroy();this.layer=this.box=null;this.dragControl.destroy();this.dragControl=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},\n +CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=\n +null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,\n +c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x),a=Math.max(c.x,\n +a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?\n +(this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,\n +"border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b;if(this.out){b=Math.abs(a.right-a.left);var c=Math.abs(a.top-a.bottom);b=Math.min(this.map.size.h/c,this.map.size.w/b);var c=this.map.getExtent(),d=this.map.getLonLatFromPixel(a.getCenterPixel()),a=d.lon-\n +c.getWidth()/2*b,e=d.lon+c.getWidth()/2*b,f=d.lat-c.getHeight()/2*b;b=d.lat+c.getHeight()/2*b;b=new OpenLayers.Bounds(a,f,e,b)}else b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),c=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,c.lon,c.lat);c=this.map.getZoom();this.map.zoomToExtent(b);c==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(c+(this.out?-1:1))}else this.out?this.map.setCenter(this.map.getLonLatFromPixel(a),this.map.getZoom()-1):this.map.setCenter(this.map.getLonLatFromPixel(a),\n +this.map.getZoom()+1)},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:1,documentDrag:!1,kinetic:null,enableKinetic:!1,kineticInterval:10,draw:function(){if(this.enableKinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},{interval:this.interval,\n +documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,f){c.map.pan(a,b,{dragging:!f,\n +animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,touch:!1,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.touch||(this.unregisterMouseListeners(),this.touch=!0);this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,\n +a.lastTouches=this.last.touches,this.handleSingle(a),this.down=null);return!0},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this})},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&(this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a))&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=\n +this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},\n +dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.stop(a),this.handleDouble(a)),(!this.last.touches||2!==this.last.touches.length)&&this.clearTimer()):(this.first=this.getEventInfo(a),this.queuePotentialClick(this.single?\n +OpenLayers.Util.extend({},a):null)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length)for(var a=0,c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=\n +!1;break}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,2))},passesDblclickTolerance:function(){var a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=\n +null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.clientX,clientY:d.clientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,this.touch=!1,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;\n +this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();\n +this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,\n +documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},this.mouseWheelOptions);OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&\n +this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom+1)},defaultDblRightClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom-1)},wheelChange:function(a,b){var c=this.map.getZoom(),d=this.map.getZoom()+Math.round(b),d=Math.max(d,0),d=Math.min(d,this.map.getNumZoomLevels());if(d!==c){var e=this.map.getSize(),c=e.w/2-a.xy.x,e=a.xy.y-e.h/2,f=this.map.baseLayer.getResolutionForZoom(d),g=this.map.getLonLatFromPixel(a.xy);\n +this.map.setCenter(new OpenLayers.LonLat(g.lon+c*f,g.lat+e*f),d)}},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},\n +CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,multi:!1,featureAdded:function(){},handlerOptions:null,initialize:function(a,b,c){OpenLayers.Control.prototype.initialize.apply(this,[c]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(a,b){this.layer.events.triggerEvent("sketchmodified",{vertex:a,feature:b})},create:function(a,b){this.layer.events.triggerEvent("sketchstarted",{vertex:a,feature:b})}},this.callbacks);this.layer=\n +a;this.handlerOptions=this.handlerOptions||{};this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{renderers:a.renderers,rendererOptions:a.rendererOptions});"multi"in this.handlerOptions||(this.handlerOptions.multi=this.multi);if(a=this.layer.styleMap&&this.layer.styleMap.styles.temporary)this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":a})});this.handler=new b(this,\n +this.callbacks,this.handlerOptions)},drawFeature:function(a){a=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",{feature:a})&&(a.state=OpenLayers.State.INSERT,this.layer.addFeatures([a]),this.featureAdded(a),this.events.triggerEvent("featureadded",{feature:a}))},insertXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertXY(a,b)},insertDeltaXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeltaXY(a,b)},insertDirectionLength:function(a,\n +b){this.handler&&this.handler.line&&this.handler.insertDirectionLength(a,b)},insertDeflectionLength:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeflectionLength(a,b)},undo:function(){return this.handler.undo&&this.handler.undo()},redo:function(){return this.handler.redo&&this.handler.redo()},finishSketch:function(){this.handler.finishGeometry()},cancel:function(){this.handler.cancel()},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{holeModifier:null,drawingHole:!1,polygon:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,\n +this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:!0})},addPoint:function(a){if(!this.drawingHole&&this.holeModifier&&this.evt&&this.evt[this.holeModifier])for(var b=this.point.geometry,c=this.control.layer.features,d,e=c.length-1;0<=e;--e)if(d=c[e].geometry,(d instanceof OpenLayers.Geometry.Polygon||d instanceof OpenLayers.Geometry.MultiPolygon)&&d.intersects(b)){b=c[e];this.control.layer.removeFeatures([b],{silent:!0});this.control.layer.events.registerPriority("sketchcomplete",\n +this,this.finalizeInteriorRing);this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology);b.geometry.addComponent(this.line.geometry);this.polygon=b;this.drawingHole=!0;break}OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments)},getCurrentPointIndex:function(){return this.line.geometry.components.length-2},enforceTopology:function(a){var a=a.vertex,b=this.line.geometry.components;this.polygon.geometry.intersects(a)||(b=b[b.length-3],a.x=b.x,a.y=b.y)},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-\n +2]);this.removePoint();this.finalize()},finalizeInteriorRing:function(){var a=this.line.geometry,b=0!==a.getArea();if(b){for(var c=this.polygon.geometry.component + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAo=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="10" aka="AAAAAAAAAAo="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +s,d=c.length-2;0<=d;--d)if(a.intersects(c[d])){b=!1;break}if(b){d=c.length-2;a:for(;0<d;--d)for(var e=c[d].components,f=0,g=e.length;f<g;++f)if(a.containsPoint(e[f])){b=!1;break a}}}b?this.polygon.state!==OpenLayers.State.INSERT&&(this.polygon.state=OpenLayers.State.UPDATE):this.polygon.geometry.removeComponent(a);this.restoreFeature();return!1},\n +cancel:function(){this.drawingHole&&(this.polygon.geometry.removeComponent(this.line.geometry),this.restoreFeature(!0));return OpenLayers.Handler.Path.prototype.cancel.apply(this,arguments)},restoreFeature:function(a){this.control.layer.events.unregister("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.unregister("sketchmodified",this,this.enforceTopology);this.layer.removeFeatures([this.polygon],{silent:!0});this.control.layer.addFeatures([this.polygon],{silent:!0});this.drawingHole=\n +!1;a||this.control.layer.events.triggerEvent("sketchcomplete",{feature:this.polygon})},destroyFeature:function(a){OpenLayers.Handler.Path.prototype.destroyFeature.call(this,a);this.polygon=null},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.polygon},getGeometry:function(){var a=this.polygon&&this.polygon.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPolygon([a]));return a},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{citeCompliant:!1,initialize:function(a,b){OpenLayers.Control.Panel.prototype.initialize.apply(this,[b]);this.addControls([new OpenLayers.Control.Navigation]);this.addControls([new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Point,{displayClass:"olControlDrawFeaturePoint",handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Path,{displayClass:"olControlDrawFeaturePath",\n +handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Polygon,{displayClass:"olControlDrawFeaturePolygon",handlerOptions:{citeCompliant:this.citeCompliant}})])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,\n +scope:this});return a},update:function(a){var b=this.getMapBounds();if(null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b)))this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a)},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));\n +return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){this.response&&!(a&&!0===a.noAbort)&&\n +(this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,\n +filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if((a=a.features)&&0<a.length){var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b))for(var d,e=0,f=a.length;e<f;++e)(d=a[e].geometry)&&d.transform(b,c);this.layer.addFeatures(a)}this.response=null;this.layer.events.triggerEvent("loadend")},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:!0,lzd:null,zoomLevels:null,initialize:function(a,b,c,d,e,f){this.lzd=c;this.zoomLevels=d;c=[];c.push(a,b,e,f);OpenLayers.Layer.Grid.prototype.initialize.apply(this,c);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getZoom:function(){var a=this.map.getZoom();this.map.getMaxExtent();return a-=Math.log(this.maxResolution/(this.lzd/512))/Math.log(2)},getURL:function(a){var a=\n +this.adjustBounds(a),b=this.getZoom(),c=this.map.getMaxExtent(),d=this.lzd/Math.pow(2,this.getZoom()),e=Math.floor((a.left-c.left)/d),a=Math.floor((a.bottom-c.bottom)/d);return this.map.getResolution()<=this.lzd/512&&this.getZoom()<=this.zoomLevels?this.getFullRequestString({L:b,X:e,Y:a}):OpenLayers.Util.getImageLocation("blank.gif")},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Protocol.CSW=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.CSW.DEFAULTS),b=OpenLayers.Protocol.CSW["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSW version: "+a.version;return new b(a)};OpenLayers.Protocol.CSW.DEFAULTS={version:"2.0.2"};OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":!0},createLayer:function(a,b){var c,d={layer:!0,matrixSet:!0},e;for(e in d)if(!(e in b))throw Error("Missing property \'"+e+"\' in layer configuration.");d=a.contents;e=d.tileMatrixSets[b.matrixSet];for(var f,g=0,h=d.layers.length;g<h;++g)if(d.layers[g].identifier===b.layer){f=d.layers[g];break}if(f&&e){for(var i,g=0,h=f.styles.length;g<h&&!(i=f.styles[g],i.isDefault);++g);\n +c=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(b,{url:"REST"===b.requestEncoding&&f.resourceUrl?f.resourceUrl.tile.template:a.operationsMetadata.GetTile.dcp.http.get[0].url,name:f.title,style:i.identifier,matrixIds:e.matrixIds,tileFullExtent:e.bounds}))}return c},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Layer.Google.v3={DEFAULTS:{sphericalMercator:!0,projection:"EPSG:900913"},animationEnabled:!0,loadMapObject:function(){this.type||(this.type=google.maps.MapTypeId.ROADMAP);var a,b=OpenLayers.Layer.Google.cache[this.map.id];b?(a=b.mapObject,++b.count):(b=this.map.viewPortDiv,a=document.createElement("div"),a.id=this.map.id+"_GMapContainer",a.style.position="absolute",a.style.width="100%",a.style.height="100%",b.appendChild(a),b=this.map.getCenter(),a=new google.maps.Map(a,{center:b?new google.maps.LatLng(b.lat,\n +b.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||0,mapTypeId:this.type,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}),b={mapObject:a,count:1},OpenLayers.Layer.Google.cache[this.map.id]=b,this.repositionListener=google.maps.event.addListenerOnce(a,"center_changed",OpenLayers.Function.bind(this.repositionMapElements,this)));this.mapObject=a;this.setGMapVisibility(this.visibility)},repositionMapElements:function(){google.maps.event.trigger(this.mapObject,\n +"resize");var a=this.mapObject.getDiv().firstChild;if(!a||3>a.childNodes.length)return this.repositionTimer=window.setTimeout(OpenLayers.Function.bind(this.repositionMapElements,this),250),!1;for(var b=OpenLayers.Layer.Google.cache[this.map.id],c=this.map.viewPortDiv,d=a.children.length-1;0<=d;--d){if(1000001==a.children[d].style.zIndex){var e=a.children[d];c.appendChild(e);e.style.zIndex="1100";e.style.bottom="";e.className="olLayerGoogleCopyright olLayerGoogleV3";e.style.display="";b.termsOfUse=\n +e}1E6==a.children[d].style.zIndex&&(e=a.children[d],c.appendChild(e),e.style.zIndex="1100",e.style.bottom="",e.className="olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint",e.style.display="",b.poweredBy=e);10000002==a.children[d].style.zIndex&&c.appendChild(a.children[d])}this.setGMapVisibility(this.visibility)},onMapResize:function(){if(this.visibility)google.maps.event.trigger(this.mapObject,"resize");else{var a=OpenLayers.Layer.Google.cache[this.map.id];if(!a.resized){var b=this;google.maps.event.addListenerOnce(this.mapObject,\n +"tilesloaded",function(){google.maps.event.trigger(b.mapObject,"resize");b.moveTo(b.map.getCenter(),b.map.getZoom());delete a.resized})}a.resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];if(b){for(var c=this.type,d=this.map.layers,e,f=d.length-1;0<=f;--f)if(e=d[f],e instanceof OpenLayers.Layer.Google&&!0===e.visibility&&!0===e.inRange){c=e.type;a=!0;break}d=this.mapObject.getDiv();!0===a?(this.mapObject.setMapTypeId(c),d.style.left="",b.termsOfUse&&b.termsOfUse.style&&\n +(b.termsOfUse.style.left="",b.termsOfUse.style.display="",b.poweredBy.style.display=""),b.displayed=this.id):(delete b.displayed,d.style.left="-9999px",b.termsOfUse&&b.termsOfUse.style&&(b.termsOfUse.style.display="none",b.termsOfUse.style.left="-9999px",b.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getDiv()},getMapObjectBoundsFromOLBounds:function(a){var b=null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,\n +a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new google.maps.LatLngBounds(new google.maps.LatLng(b.lat,b.lon),new google.maps.LatLng(a.lat,a.lon)));return b},getMapObjectLonLatFromMapObjectPixel:function(a){var b=this.map.getSize(),c=this.getLongitudeFromMapObjectLonLat(this.mapObject.center),d=this.getLatitudeFromMapObjectLonLat(this.mapObject.center),e=this.map.getResolution(),a=new OpenLayers.LonLat(c+(a.x-b.w/2)*e,d-(a.y-b.h/2)*e);\n +this.wrapDateLine&&(a=a.wrapDateLine(this.maxExtent));return this.getMapObjectLonLatFromLonLat(a.lon,a.lat)},getMapObjectPixelFromMapObjectLonLat:function(a){var b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),c=this.map.getResolution(),d=this.map.getExtent();return this.getMapObjectPixelFromXY(1/c*(b-d.left),1/c*(d.top-a))},setMapObjectCenter:function(a,b){if(!1===this.animationEnabled&&b!=this.mapObject.zoom){var c=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,\n +"idle",function(){c.style.visibility=""});c.style.visibility="hidden"}this.mapObject.setOptions({center:a,zoom:b})},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new google.maps.LatLng(c.lat,c.lon)):c=new google.maps.LatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new google.maps.Point(a,b)},destroy:function(){this.repositionListener&&\n +google.maps.event.removeListener(this.repositionListener);this.repositionTimer&&window.clearTimeout(this.repositionTimer);OpenLayers.Layer.Google.prototype.destroy.apply(this,arguments)}};OpenLayers.Format.WPSDescribeProcess=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{wps:"http://www.opengis.net/wps/1.0.0",ows:"http://www.opengis.net/ows/1.1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",defaultPrefix:"wps",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,\n +[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wps:{ProcessDescriptions:function(a,b){b.processDescriptions={};this.readChildNodes(a,b.processDescriptions)},ProcessDescription:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion"),statusSupported:"true"===a.getAttribute("statusSupported"),storeSupported:"true"===a.getAttribute("storeSupported")};this.readChildNodes(a,c);b[c.identifier]=c},DataInputs:function(a,\n +b){b.dataInputs=[];this.readChildNodes(a,b.dataInputs)},ProcessOutputs:function(a,b){b.processOutputs=[];this.readChildNodes(a,b.processOutputs)},Output:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},ComplexOutput:function(a,b){b.complexOutput={};this.readChildNodes(a,b.complexOutput)},Input:function(a,b){var c={maxOccurs:parseInt(a.getAttribute("maxOccurs")),minOccurs:parseInt(a.getAttribute("minOccurs"))};this.readChildNodes(a,c);b.push(c)},BoundingBoxData:function(a,b){b.boundingBoxData=\n +{};this.readChildNodes(a,b.boundingBoxData)},CRS:function(a,b){b.CRSs||(b.CRSs={});b.CRSs[this.getChildValue(a)]=!0},LiteralData:function(a,b){b.literalData={};this.readChildNodes(a,b.literalData)},ComplexData:function(a,b){b.complexData={};this.readChildNodes(a,b.complexData)},Default:function(a,b){b["default"]={};this.readChildNodes(a,b["default"])},Supported:function(a,b){b.supported={};this.readChildNodes(a,b.supported)},Format:function(a,b){var c={};this.readChildNodes(a,c);b.formats||(b.formats=\n +{});b.formats[c.mimeType]=!0},MimeType:function(a,b){b.mimeType=this.getChildValue(a)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSDescribeProcess"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",gmd:"http://www.isotc211.org/2005/gmd",geonet:"http://www.fao.org/geonetwork",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",\n +requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},\n +readers:{csw:{GetRecordsResponse:function(a,b){b.records=[];this.readChildNodes(a,b);var c=this.getAttributeNS(a,"","version");""!=c&&(b.version=c)},RequestId:function(a,b){b.RequestId=this.getChildValue(a)},SearchStatus:function(a,b){b.SearchStatus={};var c=this.getAttributeNS(a,"","timestamp");""!=c&&(b.SearchStatus.timestamp=c)},SearchResults:function(a,b){this.readChildNodes(a,b);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]="numberOfRecordsMatched"==c[e].name||"numberOfRecordsReturned"==\n +c[e].name||"nextRecord"==c[e].name?parseInt(c[e].nodeValue):c[e].nodeValue;b.SearchResults=d},SummaryRecord:function(a,b){var c={type:"SummaryRecord"};this.readChildNodes(a,c);b.records.push(c)},BriefRecord:function(a,b){var c={type:"BriefRecord"};this.readChildNodes(a,c);b.records.push(c)},DCMIRecord:function(a,b){var c={type:"DCMIRecord"};this.readChildNodes(a,c);b.records.push(c)},Record:function(a,b){var c={type:"Record"};this.readChildNodes(a,c);b.records.push(c)},"*":function(a,b){var c=a.localName||\n +a.nodeName.split(":").pop();b[c]=this.getChildValue(a)}},geonet:{info:function(a,b){var c={};this.readChildNodes(a,c);b.gninfo=c}},dc:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);for(var d={},e=a.attributes,f=0,g=e.length;f<g;++f)d[e[f].name]=e[f].nodeValue;d.value=this.getChildValue(a);""!=d.value&&b[c].push(d)}},dct:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);b[c].push(this.getChildValue(a))}},\n +ows:OpenLayers.Util.applyDefaults({BoundingBox:function(a,b){b.bounds&&(b.BoundingBox=[{crs:b.projection,value:[b.bounds.left,b.bounds.bottom,b.bounds.right,b.bounds.top]}],delete b.projection,delete b.bounds);OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows.BoundingBox.apply(this,arguments)}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows)},write:function(a){a=this.writeNode("csw:GetRecords",a);a.setAttribute("xmlns:gmd",this.namespaces.gmd);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[a])},writers:{csw:{GetRecords:function(a){a||(a={});var b=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:a.requestId||this.requestId,resultType:a.resultType||this.resultType,outputFormat:a.outputFormat||this.outputFormat,outputSchema:a.outputSchema||this.outputSchema,startPosition:a.startPosition||this.startPosition,maxRecords:a.maxRecords||this.maxRecords}});if(a.DistributedSearch||this.DistributedSearch)this.writeNode("csw:DistributedSearch",\n +a.DistributedSearch||this.DistributedSearch,b);var c=a.ResponseHandler||this.ResponseHandler;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ResponseHandler",c[d],b);this.writeNode("Query",a.Query||this.Query,b);return b},DistributedSearch:function(a){return this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:a.hopCount}})},ResponseHandler:function(a){return this.createElementNSPlus("csw:ResponseHandler",{value:a.value})},Query:function(a){a||\n +(a={});var b=this.createElementNSPlus("csw:Query",{attributes:{typeNames:a.typeNames||"csw:Record"}}),c=a.ElementName;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ElementName",c[d],b);else this.writeNode("csw:ElementSetName",a.ElementSetName||{value:"summary"},b);a.Constraint&&this.writeNode("csw:Constraint",a.Constraint,b);a.SortBy&&this.writeNode("ogc:SortBy",a.SortBy,b);return b},ElementName:function(a){return this.createElementNSPlus("csw:ElementName",\n +{value:a.value})},ElementSetName:function(a){return this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:a.typeNames},value:a.value})},Constraint:function(a){var b=this.createElementNSPlus("csw:Constraint",{attributes:{version:a.version}});if(a.Filter){var c=new OpenLayers.Format.Filter({version:a.version});b.appendChild(c.write(a.Filter))}else a.CqlText&&(a=this.createElementNSPlus("CqlText",{value:a.CqlText.value}),b.appendChild(a));return b}},ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},\n +CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(a,b,c){this.bounds=a;this.div=OpenLayers.Util.createDiv();this.div.style.overflow="hidden";this.events=new OpenLayers.Events(this,this.div);this.setBorder(b,c)},destroy:function(){this.div=this.bounds=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments)},setBorder:function(a,b){a||(a="red");b||(b=2);this.div.style.border=b+"px solid "+a},draw:function(a,b){OpenLayers.Util.modifyDOMElement(this.div,\n +null,a,b);return this.div},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsBounds(this.bounds,!0,!0));return a},display:function(a){this.div.style.display=a?"":"none"},CLASS_NAME:"OpenLayers.Marker.Box"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:!0,initialize:function(a){a=a||{};!1!==a.extractStyles&&(a.defaultStyle={externalGraphic:OpenLayers.Util.getImageLocation("marker.png"),graphicWidth:21,graphicHeight:25,graphicXOffset:-10.5,graphicYOffset:-12.5});OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){for(var a=a.split("\\n"),b,c=[],d=0;d<a.length-1;d++){var e=a[d].replace(/^\\s*/,"").replace(/\\s*$/,"");if("#"!=e.charAt(0))if(b){for(var e=\n +e.split("\\t"),f=new OpenLayers.Geometry.Point(0,0),g={},h=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null,i=!1,j=0;j<e.length;j++)if(e[j])if("point"==b[j])i=e[j].split(","),f.y=parseFloat(i[0]),f.x=parseFloat(i[1]),i=!0;else if("lat"==b[j])f.y=parseFloat(e[j]),i=!0;else if("lon"==b[j])f.x=parseFloat(e[j]),i=!0;else if("title"==b[j])g.title=e[j];else if("image"==b[j]||"icon"==b[j]&&h)h.externalGraphic=e[j];else if("iconSize"==b[j]&&h){var k=e[j].split(",");h.graphicWidth=\n +parseFloat(k[0]);h.graphicHeight=parseFloat(k[1])}else"iconOffset"==b[j]&&h?(k=e[j].split(","),h.graphicXOffset=parseFloat(k[0]),h.graphicYOffset=parseFloat(k[1])):"description"==b[j]?g.description=e[j]:"overflow"==b[j]?g.overflow=e[j]:g[b[j]]=e[j];i&&(this.internalProjection&&this.externalProjection&&f.transform(this.externalProjection,this.internalProjection),e=new OpenLayers.Feature.Vector(f,g,h),c.push(e))}else b=e.split("\\t")}return c},CLASS_NAME:"OpenLayers.Format.Text"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(a,b){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadText:function(){!this.loaded&&null!=this.location&&(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,\n +success:this.parseData,failure:function(){this.events.triggerEvent("loadend")},scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadText()},parseData:function(a){var a=a.responseText,b={};OpenLayers.Util.extend(b,this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(b.externalProjection=this.projection,b.internalProjection=this.map.getProjectionObject());for(var a=\n +(new OpenLayers.Format.Text(b)).read(a),b=0,c=a.length;b<c;b++){var d={},e=a[b],f,g,h;f=new OpenLayers.LonLat(e.geometry.x,e.geometry.y);e.style.graphicWidth&&e.style.graphicHeight&&(g=new OpenLayers.Size(e.style.graphicWidth,e.style.graphicHeight));void 0!==e.style.graphicXOffset&&void 0!==e.style.graphicYOffset&&(h=new OpenLayers.Pixel(e.style.graphicXOffset,e.style.graphicYOffset));null!=e.style.externalGraphic?d.icon=new OpenLayers.Icon(e.style.externalGraphic,g,h):(d.icon=OpenLayers.Marker.defaultIcon(),\n +null!=g&&d.icon.setSize(g));null!=e.attributes.title&&null!=e.attributes.description&&(d.popupContentHTML="<h2>"+e.attributes.title+"</h2><p>"+e.attributes.description+"</p>");d.overflow=e.attributes.overflow||"auto";d=new OpenLayers.Feature(this,f,d);this.features.push(d);f=d.createMarker();null!=e.attributes.title&&null!=e.attributes.description&&f.events.register("click",d,this.markerClick);this.addMarker(f)}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;\n +this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||this.layer.map.addPopup(this.createPopup());OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:"shiftKey",layerOptions:null,persist:!1,irregular:!1,citeCompliant:!1,angle:null,fixedRadius:!1,feature:null,layer:null,origin:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.Drag.prototype.initialize.apply(this,[a,b,c]);this.options=c?c:{}},setOptions:function(a){OpenLayers.Util.extend(this.options,\n +a);OpenLayers.Util.extend(this,a)},activate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.activate.apply(this,arguments)&&(a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions),this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a),this.map.addLayer(this.layer),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)&&(this.dragging&&this.cancel(),\n +null!=this.layer.map&&(this.layer.destroy(!1),this.feature&&this.feature.destroy()),this.feature=this.layer=null,a=!0);return a},down:function(a){this.fixedRadius=!!this.radius;a=this.layer.getLonLatFromViewPortPx(a.xy);this.origin=new OpenLayers.Geometry.Point(a.lon,a.lat);if(!this.fixedRadius||this.irregular)this.radius=this.map.getResolution();this.persist&&this.clear();this.feature=new OpenLayers.Feature.Vector;this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],\n +{silent:!0});this.layer.drawFeature(this.feature,this.style)},move:function(a){var b=this.layer.getLonLatFromViewPortPx(a.xy),b=new OpenLayers.Geometry.Point(b.lon,b.lat);this.irregular?(a=Math.sqrt(2)*Math.abs(b.y-this.origin.y)/2,this.radius=Math.max(this.map.getResolution()/2,a)):this.fixedRadius?this.origin=b:(this.calculateAngle(b,a),this.radius=Math.max(this.map.getResolution()/2,b.distanceTo(this.origin)));this.modifyGeometry();this.irregular&&(a=b.x-this.origin.x,b=b.y-this.origin.y,this.feature.geometry.resize(1,\n +this.origin,0==b?a/(this.radius*Math.sqrt(2)):a/b),this.feature.geometry.move(a/2,b/2));this.layer.drawFeature(this.feature,this.style)},up:function(a){this.finalize();this.start==this.last&&this.callback("done",[a.xy])},out:function(){this.finalize()},createGeometry:function(){this.angle=Math.PI*(1/this.sides-0.5);this.snapAngle&&(this.angle+=this.snapAngle*(Math.PI/180));this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle)},modifyGeometry:function(){var a,\n +b,c=this.feature.geometry.components[0];c.components.length!=this.sides+1&&(this.createGeometry(),c=this.feature.geometry.components[0]);for(var d=0;d<this.sides;++d)b=c.components[d],a=this.angle+2*d*Math.PI/this.sides,b.x=this.origin.x+this.radius*Math.cos(a),b.y=this.origin.y+this.radius*Math.sin(a),b.clearBounds()},calculateAngle:function(a,b){var c=Math.atan2(a.y-this.origin.y,a.x-this.origin.x);if(this.snapAngle&&this.snapToggle&&!b[this.snapToggle]){var d=Math.PI/180*this.snapAngle;this.angle=\n +Math.round(c/d)*d}else this.angle=c},cancel:function(){this.callback("cancel",null);this.finalize()},finalize:function(){this.origin=null;this.radius=this.options.radius},clear:function(){this.layer&&(this.layer.renderer.clear(),this.layer.destroyFeatures())},callback:function(a){this.callbacks[a]&&this.callbacks[a].apply(this.control,[this.feature.geometry.clone()]);!this.persist&&("done"==a||"cancel"==a)&&this.clear()},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{clearOnDeactivate:!1,layers:null,callbacks:null,selectionSymbolizer:{Polygon:{fillColor:"#FF0000",stroke:!1},Line:{strokeColor:"#FF0000",strokeWidth:2},Point:{graphicName:"square",fillColor:"#FF0000",pointRadius:5}},layerOptions:null,handlerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},\n +this.callbacks);this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:!1,tileOptions:{maxGetUrlLength:2048}});this.sketchStyle&&(this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})}));this.handler=new a(this,this.callbacks,this.handlerOptions)},destroy:function(){for(var a in this.layerCache)delete this.layerCache[a];\n +for(a in this.wfsCache)delete this.wfsCache[a];OpenLayers.Control.prototype.destroy.apply(this,arguments)},coupleLayerVisiblity:function(a){this.setVisibility(a.object.getVisibility())},createSelectionLayer:function(a){var b;if(this.layerCache[a.id])b=this.layerCache[a.id];else{b=new OpenLayers.Layer.WMS(a.name,a.url,a.params,OpenLayers.Util.applyDefaults(this.layerOptions,a.getOptions()));this.layerCache[a.id]=b;if(!1===this.layerOptions.displayInLayerSwitcher)a.events.on({visibilitychanged:this.coupleLayerVisiblity,\n +scope:b});this.map.addLayer(b)}return b},createSLD:function(a,b,c){for(var d={version:"1.0.0",namedLayers:{}},e=(""+a.params.LAYERS).split(","),f=0,g=e.length;f<g;f++){var h=e[f];d.namedLayers[h]={name:h,userStyles:[]};var i=this.selectionSymbolizer,j=c[f];0<=j.type.indexOf("Polygon")?i={Polygon:this.selectionSymbolizer.Polygon}:0<=j.type.indexOf("LineString")?i={Line:this.selectionSymbolizer.Line}:0<=j.type.indexOf("Point")&&(i={Point:this.selectionSymbolizer.Point});d.namedLayers[h].userStyles.push({name:"default",\n +rules:[new OpenLayers.Rule({symbolizer:i,filter:b[f],maxScaleDenominator:a.options.minScale})]})}return(new OpenLayers.Format.SLD({srsName:this.map.getProjection()})).write(d)},parseDescribeLayer:function(a){var b=new OpenLayers.Format.WMSDescribeLayer,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;for(var a=b.read(c),b=[],c=null,d=0,e=a.length;d<e;d++)"WFS"==a[d].owsType&&(b.push(a[d].typeName),c=a[d].owsURL);OpenLayers.Request.GET({url:c,params:{SERVICE:"WFS",TYPENAME:b.toString(),REQUEST:"DescribeFeatureType",\n +VERSION:"1.0.0"},callback:function(a){var b=new OpenLayers.Format.WFSDescribeFeatureType,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;this.control.wfsCache[this.layer.id]=b.read(c);this.control._queue&&this.control.applySelection()},scope:this})},getGeometryAttributes:function(a){for(var b=[],a=this.wfsCache[a.id],c=0,d=a.featureTypes.length;c<d;c++)for(var e=a.featureTypes[c].properties,f=0,g=e.length;f<g;f++){var h=e[f],i=h.type;(0<=i.indexOf("LineString")||0<=i.indexOf("GeometryAssociationType")||\n +0<=i.indexOf("GeometryPropertyType")||0<=i.indexOf("Point")||0<=i.indexOf("Polygon"))&&b.push(h)}return b},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];d&&!this.wfsCache[d.id]&&OpenLayers.Request.GET({url:d.url,params:{SERVICE:"WMS",VERSION:d.params.VERSION,LAYERS:d.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:d,control:this}})}return a},deactivate:function(){var a=\n +OpenLayers.Control.prototype.deactivate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];if(d&&!0===this.clearOnDeactivate){var e=this.layerCache,f=e[d.id];f&&(d.events.un({visibilitychanged:this.coupleLayerVisiblity,scope:f}),f.destroy(),delete e[d.id])}}return a},setLayers:function(a){this.active?(this.deactivate(),this.layers=a,this.activate()):this.layers=a},createFilter:function(a,b){var c=null;this.handler instanceof OpenLayers.Handler.RegularPolygon?c=!0===this.handler.irregular?\n +new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:a.name,value:b.getBounds()}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Polygon?c=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Path?c=0<=a.type.indexOf("Point")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,\n +property:a.name,distance:0.01*this.map.getExtent().getWidth(),distanceUnits:this.map.getUnits(),value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Click&&(c=0<=a.type.indexOf("Polygon")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:a.name,distance:0.01*this.map.getExtent().getWidth(),\n +distanceUnits:this.map.getUnits(),value:b}));return c},select:function(a){this._queue=function(){for(var b=0,c=this.layers.length;b<c;b++){for(var d=this.layers[b],e=this.getGeometryAttributes(d),f=[],g=0,h=e.length;g<h;g++){var i=e[g];if(null!==i){if(!(a instanceof OpenLayers.Geometry)){var j=this.map.getLonLatFromPixel(a.xy);a=new OpenLayers.Geometry.Point(j.lon,j.lat)}i=this.createFilter(i,a);null!==i&&f.push(i)}}g=this.createSelectionLayer(d);e=this.createSLD(d,f,e);this.events.triggerEvent("selected",\n +{layer:d,filters:f});g.mergeNewParams({SLD_BODY:e});delete this._queue}};this.applySelection()},applySelection:function(){for(var a=!0,b=0,c=this.layers.length;b<c;b++)if(!this.wfsCache[this.layers[b].id]){a=!1;break}a&&this._queue.call(this)},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.element=OpenLayers.Util.getElement(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.element=document.createElement("div"),this.div.appendChild(this.element));this.map.events.register("moveend",this,this.updateScale);this.updateScale();return this.div},updateScale:function(){var a;\n +if(!0===this.geodesic){if(!this.map.getUnits())return;a=OpenLayers.INCHES_PER_UNIT;a=(this.map.getGeodesicPixelSize().w||1.0E-6)*a.km*OpenLayers.DOTS_PER_INCH}else a=this.map.getScale();a&&(a=9500<=a&&95E4>=a?Math.round(a/1E3)+"K":95E4<=a?Math.round(a/1E6)+"M":Math.round(a),this.element.innerHTML=OpenLayers.i18n("Scale = 1 : ${scaleDenom}",{scaleDenom:a}))},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,useHttpTile:!1,singleTile:!1,useOverlay:!1,useAsyncOverlay:!0,TILE_PARAMS:{operation:"GETTILEIMAGE",version:"1.2.0"},SINGLE_TILE_PARAMS:{operation:"GETMAPIMAGE",format:"PNG",locale:"en",clip:"1",version:"1.0.0"},OVERLAY_PARAMS:{operation:"GETDYNAMICMAPOVERLAYIMAGE",format:"PNG",locale:"en",clip:"1",version:"2.0.0"},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:"png",querystring:null},defaultSize:new OpenLayers.Size(300,\n +300),tileOriginCorner:"tl",initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.transparent&&!0!=this.transparent;d&&null!=d.useOverlay&&(this.useOverlay=d.useOverlay);this.singleTile?this.useOverlay?(OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS),this.useAsyncOverlay||(this.params.version="1.0.0")):OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS):(this.useHttpTile?\n +OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS):OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS),this.setTileSize(this.defaultSize))},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var b;b=a.getCenterLonLat();var c=this.map.getSize();this.singleTile?(a={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:c.h*this.ratio,setdisplaywidth:c.w*\n +this.ratio,setviewcenterx:b.lon,setviewcentery:b.lat,setviewscale:this.map.getScale()},this.useOverlay&&!this.useAsyncOverlay&&(b={},b=OpenLayers.Util.extend(b,a),b.operation="GETVISIBLEMAPEXTENT",b.version="1.0.0",b.session=this.params.session,b.mapName=this.params.mapName,b.format="text/xml",b=this.getFullRequestString(b),OpenLayers.Request.GET({url:b,async:!1})),b=this.getFullRequestString(a)):(c=this.map.getResolution(),b=Math.floor((a.left-this.maxExtent.left)/c),b=Math.round(b/this.tileSize.w),\n +a=Math.floor((this.maxExtent.top-a.top)/c),a=Math.round(a/this.tileSize.h),b=this.useHttpTile?this.getImageFilePath({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}):this.getFullRequestString({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}));return b},getFullRequestString:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d=c,e=OpenLayers.Util.extend({},this.params),e=OpenLayers.Util.extend(e,a),\n +f=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),g;for(g in e)g.toUpperCase()in f&&delete e[g];e=OpenLayers.Util.getParameterString(e);e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},getImageFilePath:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d="",e="";0>a.tilerow&&(d="-");d=0==a.tilerow?d+"0":d+Math.floor(Math.abs(a.tilerow/this.params.tileRowsPerFolder))*\n +this.params.tileRowsPerFolder;0>a.tilecol&&(e="-");e=0==a.tilecol?e+"0":e+Math.floor(Math.abs(a.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;d="/S"+Math.floor(a.scaleindex)+"/"+this.params.basemaplayergroupname+"/R"+d+"/C"+e+"/"+a.tilerow%this.params.tileRowsPerFolder+"_"+a.tilecol%this.params.tileColumnsPerFolder+"."+this.params.format;this.params.querystring&&(d+="?"+this.params.querystring);return c+d},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=\n +c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{handlerOptions:null,callbacks:null,displaySystem:"metric",geodesic:!1,displaySystemUnits:{geographic:["dd"],english:["mi","ft","in"],metric:["km","m"]},partialDelay:300,delayedTrigger:null,persist:!1,immediate:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);var c={done:this.measureComplete,point:this.measurePartial};this.immediate&&(c.modify=this.measureImmediate);this.callbacks=OpenLayers.Util.extend(c,\n +this.callbacks);this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new a(this,this.callbacks,this.handlerOptions)},deactivate:function(){this.cancelDelay();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},cancel:function(){this.cancelDelay();this.handler.cancel()},setImmediate:function(a){(this.immediate=a)?this.callbacks.modify=this.measureImmediate:delete this.callbacks.modify},updateHandler:function(a,b){var c=this.active;c&&\n +this.deactivate();this.handler=new a(this,this.callbacks,b);c&&this.activate()},measureComplete:function(a){this.cancelDelay();this.measure(a,"measure")},measurePartial:function(a,b){this.cancelDelay();b=b.clone();this.handler.freehandMode(this.handler.evt)?this.measure(b,"measurepartial"):this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.delayedTrigger=null;this.measure(b,"measurepartial")},this),this.partialDelay)},measureImmediate:function(a,b,c){c&&!this.handler.freehandMode(this.handler.evt)&&\n +(this.cancelDelay(),this.measure(b.geometry,"measurepartial"))},cancelDelay:function(){null!==this.delayedTrigger&&(window.clearTimeout(this.delayedTrigger),this.delayedTrigger=null)},measure:function(a,b){var c,d;-1<a.CLASS_NAME.indexOf("LineString")?(c=this.getBestLength(a),d=1):(c=this.getBestArea(a),d=2);this.events.triggerEvent(b,{measure:c[0],units:c[1],order:d,geometry:a})},getBestArea:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getArea(a,\n +c),1<d);++e);return[d,c]},getArea:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicArea(this.map.getProjectionObject()),d="m"):(c=a.getArea(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=Math.pow(OpenLayers.INCHES_PER_UNIT[d]/e,2));return c},getBestLength:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getLength(a,c),1<d);++e);return[d,c]},getLength:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicLength(this.map.getProjectionObject()),\n +d="m"):(c=a.getLength(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=OpenLayers.INCHES_PER_UNIT[d]/e);return c},CLASS_NAME:"OpenLayers.Control.Measure"});OpenLayers.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_wmc_SRS:function(a,b){var c=this.getChildValue(b);"object"!=typeof a.projections&&(a.projections={});for(var c=c.split(/ +/),d=0,e=c.length;d<e;d++)a.projections[c[d]]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,\n +[a]);if(a.srs){var c=[],d;for(d in a.srs)c.push(d);b.appendChild(this.createElementDefaultNS("SRS",c.join(" ")))}b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a))},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=\n +1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,\n +arguments)},setBackgroundColor:function(){},setBorder:function(){},setOpacity:function(){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=\n +OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+\n +"_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,i=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,j=isNaN(c.size.h)?this.size.h-(f+\n +h):c.size.h;d.div.style.width=(0>i?0:i)+"px";d.div.style.height=(0>j?0:j)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,\n +50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",\n +"auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,\n +0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,\n +21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,\n +0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");\n +OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Tile.Image.IFrame={useIFrame:null,draw:function(){if(OpenLayers.Tile.Image.prototype.shouldDraw.call(this)){var a=this.layer.getURL(this.bounds),b=this.useIFrame;this.useIFrame=null!==this.maxGetUrlLength&&!this.layer.async&&a.length>this.maxGetUrlLength;a=b&&!this.useIFrame;b=!b&&this.useIFrame;if(a||b)this.imgDiv&&this.imgDiv.parentNode===this.frame&&this.frame.removeChild(this.imgDiv),this.imgDiv=null,a?(this.blankImageUrl=this._blankImageUrl,this.frame.removeChild(this.frame.firstChild)):\n +(this._blankImageUrl=this.blankImageUrl,this.blankImageUrl="about:blank")}return OpenLayers.Tile.Image.prototype.draw.apply(this,arguments)},getImage:function(){if(!0===this.useIFrame){if(!this.frame.childNodes.length){var a=document.createElement("div"),b=a.style;b.position="absolute";b.width="100%";b.height="100%";b.zIndex=1;b.backgroundImage="url("+this._blankImageUrl+")";this.frame.appendChild(a)}a=this.id+"_iFrame";9>parseFloat(navigator.appVersion.split("MSIE")[1])?(b=document.createElement(\'<iframe name="\'+\n +a+\'">\'),b.style.backgroundColor="#FFFFFF",b.style.filter="chroma(color=#FFFFFF)"):(b=document.createElement("iframe"),b.style.backgroundColor="transparent",b.name=a);b.scrolling="no";b.marginWidth="0px";b.marginHeight="0px";b.frameBorder="0";b.style.position="absolute";b.style.width="100%";b.style.height="100%";1>this.layer.opacity&&OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,this.layer.opacity);this.frame.appendChild(b);return this.imgDiv=b}return OpenLayers.Tile.Image.prototype.getImage.apply(this,\n +arguments)},createRequestForm:function(){var a=document.createElement("form");a.method="POST";var b=this.layer.params._OLSALT,b=(b?b+"_":"")+this.bounds.toBBOX();a.action=OpenLayers.Util.urlAppend(this.layer.url,b);a.target=this.id+"_iFrame";this.layer.getImageSize();var b=OpenLayers.Util.getParameters(this.url),c,d;for(d in b)c=document.createElement("input"),c.type="hidden",c.name=d,c.value=b[d],a.appendChild(c);return a},setImgSrc:function(a){if(!0===this.useIFrame)if(a){var b=this.createRequestForm();\n +this.frame.appendChild(b);b.submit();this.frame.removeChild(b)}else this.imgDiv.parentNode===this.frame&&(this.frame.removeChild(this.imgDiv),this.imgDiv=null);else OpenLayers.Tile.Image.prototype.setImgSrc.apply(this,arguments)},onImageLoad:function(){OpenLayers.Tile.Image.prototype.onImageLoad.apply(this,arguments);!0===this.useIFrame&&(this.imgDiv.style.opacity=1,this.frame.style.opacity=this.layer.opacity)},createBackBuffer:function(){var a;!1===this.useIFrame&&(a=OpenLayers.Tile.Image.prototype.createBackBuffer.call(this));\n +return a}};OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,\n +[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{gml:OpenLayers.Util.applyDefaults({name:function(a,b){b.name=this.getChildValue(a)},TimePeriod:function(a,b){b.timePeriod={};this.readChildNodes(a,b.timePeriod)},beginPosition:function(a,b){b.beginPosition=this.getChildValue(a)},endPosition:function(a,b){b.endPosition=this.getChildValue(a)}},OpenLayers.Format.GML.v3.prototype.readers.gml),sos:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,\n +b){b.contents={};this.readChildNodes(a,b.contents)},ObservationOfferingList:function(a,b){b.offeringList={};this.readChildNodes(a,b.offeringList)},ObservationOffering:function(a,b){var c=this.getAttributeNS(a,this.namespaces.gml,"id");b[c]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(a,b[c])},time:function(a,b){b.time={};this.readChildNodes(a,b.time)},procedure:function(a,b){b.procedures.push(this.getAttributeNS(a,\n +this.namespaces.xlink,"href"))},observedProperty:function(a,b){b.observedProperties.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},featureOfInterest:function(a,b){b.featureOfInterestIds.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},responseFormat:function(a,b){b.responseFormats.push(this.getChildValue(a))},resultModel:function(a,b){b.resultModels.push(this.getChildValue(a))},responseMode:function(a,b){b.responseModes.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},\n +CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;OpenLayers.Event.isMultiTouch(a)?(this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown):(this.started=!1,this.last=this.start=null);OpenLayers.Event.stop(a);return b},touchmove:function(a){if(this.started&&OpenLayers.Event.isMultiTouch(a)){this.pinching=\n +!0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}return!0},touchend:function(a){this.started&&(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null);return!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=\n +!1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0],a=a[1];return Math.sqrt(Math.pow(b.clientX-a.clientX,2)+Math.pow(b.clientY-a.clientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.Navigation,new OpenLayers.Control.ZoomBox])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.NavToolbar"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:!1,interval:0,timer:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(!0===this.layer.visibility&&this.start(),this.layer.events.on({visibilitychanged:this.reset,scope:this}));return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.stop();return a},reset:function(){!0===this.layer.visibility?this.start():this.stop()},start:function(){this.interval&&("number"===\n +typeof this.interval&&0<this.interval)&&(this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval))},refresh:function(){this.layer&&(this.layer.refresh&&"function"==typeof this.layer.refresh)&&this.layer.refresh({force:this.force})},stop:function(){null!==this.timer&&(window.clearInterval(this.timer),this.timer=null)},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:!0,initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"jpg"==this.params.FORMAT&&\n +(this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.projection.getCode().split(":"),b=b[b.length-1],c=this.getImageSize(),a={BBOX:a.toBBOX(),SIZE:c.w+","+c.h,F:"image",BBOXSR:b,IMAGESR:b};if(this.layerDefs){var b=[],d;for(d in this.layerDefs)this.layerDefs.hasOwnProperty(d)&&\n +this.layerDefs[d]&&(b.push(d),b.push(":"),b.push(this.layerDefs[d]),b.push(";"));0<b.length&&(a.LAYERDEFS=b.join(""))}return this.getFullRequestString(a)},setLayerFilter:function(a,b){this.layerDefs||(this.layerDefs={});b?this.layerDefs[a]=b:delete this.layerDefs[a]},clearLayerFilter:function(a){a?delete this.layerDefs[a]:delete this.layerDefs},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(a){this.regExes={typeStr:/^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,spaces:/\\s+/,parenComma:/\\)\\s*,\\s*\\(/,doubleParenComma:/\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,trimParens:/^\\s*\\(?(.*?)\\)?\\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){var b,c,a=a.replace(/[\\n\\r]/g," ");if(c=this.regExes.typeStr.exec(a))if(a=c[1].toLowerCase(),c=c[2],this.parse[a]&&(b=this.parse[a].apply(this,[c])),this.internalProjection&&this.externalProjection)if(b&&\n +"OpenLayers.Feature.Vector"==b.CLASS_NAME)b.geometry.transform(this.externalProjection,this.internalProjection);else if(b&&"geometrycollection"!=a&&"object"==typeof b){a=0;for(c=b.length;a<c;a++)b[a].geometry.transform(this.externalProjection,this.internalProjection)}return b},write:function(a){var b,c;a.constructor==Array?c=!0:(a=[a],c=!1);var d=[];c&&d.push("GEOMETRYCOLLECTION(");for(var e=0,f=a.length;e<f;++e)c&&0<e&&d.push(","),b=a[e].geometry,d.push(this.extractGeometry(b));c&&d.push(")");return d.join("")},\n +extractGeometry:function(a){var b=a.CLASS_NAME.split(".")[2].toLowerCase();if(!this.extract[b])return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return("collection"==b?"GEOMETRYCOLLECTION":b.toUpperCase())+"("+this.extract[b].apply(this,[a])+")"},extract:{point:function(a){return a.x+" "+a.y},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.point.apply(this,[a.components[c]])+\n +")");return b.join(",")},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b.join(",")},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},multipolygon:function(a){for(var b=\n +[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.polygon.apply(this,[a.components[c]])+")");return b.join(",")},collection:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extractGeometry.apply(this,[a.components[c]]));return b.join(",")}},parse:{point:function(a){a=OpenLayers.String.trim(a).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[0],a[1]))},multipoint:function(a){for(var b=OpenLayers.String.trim(a).split(","),\n +c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.point.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(c))},linestring:function(a){for(var a=OpenLayers.String.trim(a).split(","),b=[],c=0,d=a.length;c<d;++c)b.push(this.parse.point.apply(this,[a[c]]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(b))},multilinestring:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.parenComma),\n +c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.linestring.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(c))},polygon:function(a){for(var b,a=OpenLayers.String.trim(a).split(this.regExes.parenComma),c=[],d=0,e=a.length;d<e;++d)b=a[d].replace(this.regExes.trimParens,"$1"),b=this.parse.linestring.apply(this,[b]).geometry,b=new OpenLayers.Geometry.LinearRing(b.components),c.push(b);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(c))},\n +multipolygon:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.doubleParenComma),c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.polygon.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(c))},geometrycollection:function(a){for(var a=a.replace(/,\\s*([A-Za-z])/g,"|$1"),a=OpenLayers.String.trim(a).split("|"),b=[],c=0,d=a.length;c<d;++c)b.push(OpenLayers.Format.WKT.prototype.read.apply(this,[a[c]]));\n +return b}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:!1,px:null,timerId:null,mousemove:function(a){this.passesTolerance(a.xy)&&(this.clearTimer(),this.callback("move",[a]),this.px=a.xy,a=OpenLayers.Util.extend({},a),this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay));return!this.stopMove},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.clearTimer(),this.callback("move",[a]));return!0},\n +passesTolerance:function(a){var b=!0;this.pixelTolerance&&this.px&&Math.sqrt(Math.pow(this.px.x-a.x,2)+Math.pow(this.px.y-a.y,2))<this.pixelTolerance&&(b=!1);return b},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null)},delayedCall:function(a){this.callback("pause",[a])},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:!1,click:!0,single:!0,clickout:!0,toggle:!1,clickTolerance:5,hover:!1,box:!1,maxFeatures:10,features:null,hoverFeature:null,handlerOptions:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,initialize:function(a){a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.features={};this.handlers=\n +{};this.click&&(this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{}));this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"})));this.hover&&(this.handlers.hover=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{delay:250,pixelTolerance:2})))},\n +activate:function(){if(!this.active)for(var a in this.handlers)this.handlers[a].activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){if(this.active)for(var a in this.handlers)this.handlers[a].deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},selectClick:function(a){var b=this.pixelToBounds(a.xy);this.setModifiers(a);this.request(b,{single:this.single})},selectBox:function(a){var b;if(a instanceof OpenLayers.Bounds)b=\n +this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);else{if(this.click)return;b=this.pixelToBounds(a)}this.setModifiers(this.handlers.box.dragHandler.evt);this.request(b)},selectHover:function(a){this.request(this.pixelToBounds(a.xy),{single:!0,hover:!0})},cancelHover:function(){this.hoverResponse&&(this.protocol.abort(this.hoverResponse),this.hoverResponse=null,OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +"olCursorWait"))},request:function(a,b){var b=b||{},c=new OpenLayers.Filter.Spatial({type:this.filterType,value:a});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");c=this.protocol.read({maxFeatures:!0==b.single?this.maxFeatures:void 0,filter:c,callback:function(c){c.success()&&(c.features.length?!0==b.single?this.selectBestFeature(c.features,a.getCenterLonLat(),b):this.select(c.features):b.hover?this.hoverSelect():(this.events.triggerEvent("clickout"),this.clickout&&this.unselectAll()));\n +OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},scope:this});!0==b.hover&&(this.hoverResponse=c)},selectBestFeature:function(a,b,c){c= + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAs=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="11" aka="AAAAAAAAAAs="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +c||{};if(a.length){for(var b=new OpenLayers.Geometry.Point(b.lon,b.lat),d,e,f,g=Number.MAX_VALUE,h=0;h<a.length&&!(d=a[h],d.geometry&&(f=b.distanceTo(d.geometry,{edge:!1}),f<g&&(g=f,e=d,0==g)));++h);!0==c.hover?this.hoverSelect(e):this.select(e||a)}},setModifiers:function(a){this.modifiers={multiple:this.multiple||this.multipleKey&&a[this.multipleKey],\n +toggle:this.toggle||this.toggleKey&&a[this.toggleKey]}},select:function(a){!this.modifiers.multiple&&!this.modifiers.toggle&&this.unselectAll();OpenLayers.Util.isArray(a)||(a=[a]);var b=this.events.triggerEvent("beforefeaturesselected",{features:a});if(!1!==b){for(var c=[],d,e=0,f=a.length;e<f;++e)d=a[e],this.features[d.fid||d.id]?this.modifiers.toggle&&this.unselect(this.features[d.fid||d.id]):(b=this.events.triggerEvent("beforefeatureselected",{feature:d}),!1!==b&&(this.features[d.fid||d.id]=d,\n +c.push(d),this.events.triggerEvent("featureselected",{feature:d})));this.events.triggerEvent("featuresselected",{features:c})}},hoverSelect:function(a){var b=a?a.fid||a.id:null,c=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;c&&c!=b&&(this.events.triggerEvent("outfeature",{feature:this.hoverFeature}),this.hoverFeature=null);b&&b!=c&&(this.events.triggerEvent("hoverfeature",{feature:a}),this.hoverFeature=a)},unselect:function(a){delete this.features[a.fid||a.id];this.events.triggerEvent("featureunselected",\n +{feature:a})},unselectAll:function(){for(var a in this.features)this.unselect(this.features[a])},setMap:function(a){for(var b in this.handlers)this.handlers[b].setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},pixelToBounds:function(a){var b=a.add(-this.clickTolerance/2,this.clickTolerance/2),a=a.add(this.clickTolerance/2,-this.clickTolerance/2),b=this.map.getLonLatFromPixel(b),a=this.map.getLonLatFromPixel(a);return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\\\%");a=a.replace(/\\\\\\\\\\.(\\*)?/g,function(a,b){return b?a:"\\\\\\\\_"});a=a.replace(/\\\\\\\\\\.\\*/g,"\\\\\\\\%");a=a.replace(/(\\\\)?\\.(\\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\\\)?\\.\\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\\\\./g,".");return a=a.replace(/(\\\\)?\\\\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=\n +"lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){var d=d||{},e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&\n +d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+\n +c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND){e=0;for(f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d)}else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,element:null,prefix:"",separator:", ",suffix:"",numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.events.register("mousemove",this,this.redraw),this.map.events.register("mouseout",this,this.reset),\n +this.redraw(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.map.events.unregister("mousemove",this,this.redraw),this.map.events.unregister("mouseout",this,this.reset),this.element.innerHTML="",!0):!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.div.left="",this.div.top="",this.element=this.div);return this.div},redraw:function(a){var b;if(null==a)this.reset();else if(null==this.lastXy||Math.abs(a.xy.x-\n +this.lastXy.x)>this.granularity||Math.abs(a.xy.y-this.lastXy.y)>this.granularity)this.lastXy=a.xy;else if(b=this.map.getLonLatFromPixel(a.xy))this.displayProjection&&b.transform(this.map.getProjectionObject(),this.displayProjection),this.lastXy=a.xy,a=this.formatOutput(b),a!=this.element.innerHTML&&(this.element.innerHTML=a)},reset:function(){null!=this.emptyString&&(this.element.innerHTML=this.emptyString)},formatOutput:function(a){var b=parseInt(this.numDigits);return this.prefix+a.lon.toFixed(b)+\n +this.separator+a.lat.toFixed(b)+this.suffix},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Geolocate=OpenLayers.Class(OpenLayers.Control,{geolocation:navigator.geolocation,bind:!0,watch:!1,geolocationOptions:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return!this.geolocation?(this.events.triggerEvent("locationuncapable"),!1):OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.watch?this.watchId=this.geolocation.watchPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,\n +this),this.geolocationOptions):this.getCurrentLocation(),!0):!1},deactivate:function(){this.active&&null!==this.watchId&&this.geolocation.clearWatch(this.watchId);return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},geolocate:function(a){var b=(new OpenLayers.LonLat(a.coords.longitude,a.coords.latitude)).transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());this.bind&&this.map.setCenter(b);this.events.triggerEvent("locationupdated",{position:a,point:new OpenLayers.Geometry.Point(b.lon,\n +b.lat)})},getCurrentLocation:function(){if(!this.active||this.watch)return!1;this.geolocation.getCurrentPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);return!0},failure:function(a){this.events.triggerEvent("locationfailed",{error:a})},CLASS_NAME:"OpenLayers.Control.Geolocate"});OpenLayers.Tile.UTFGrid=OpenLayers.Class(OpenLayers.Tile,{url:null,utfgridResolution:2,json:null,format:null,destroy:function(){this.clear();OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(a)if(this.isLoading?(this.abortLoading(),this.events.triggerEvent("reload")):(this.isLoading=!0,this.events.triggerEvent("loadstart")),this.url=this.layer.getURL(this.bounds),this.layer.useJSONP){var b=new OpenLayers.Protocol.Script({url:this.url,\n +callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");this.json=a.data},scope:this});b.read();this.request=b}else this.request=OpenLayers.Request.GET({url:this.url,callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");a.status===200&&this.parseData(a.responseText)},scope:this});else this.unload();return a},abortLoading:function(){this.request&&(this.request.abort(),delete this.request);this.isLoading=!1},getFeatureInfo:function(a,b){var c=null;if(this.json){var d=\n +this.getFeatureId(a,b);null!==d&&(c={id:d,data:this.json.data[d]})}return c},getFeatureId:function(a,b){var c=null;if(this.json){var d=this.utfgridResolution,d=this.indexFromCharCode(this.json.grid[Math.floor(b/d)].charCodeAt(Math.floor(a/d))),e=this.json.keys;!isNaN(d)&&d in e&&(c=e[d])}return c},indexFromCharCode:function(a){93<=a&&a--;35<=a&&a--;return a-32},parseData:function(a){this.format||(this.format=new OpenLayers.Format.JSON);this.json=this.format.read(a)},clear:function(){this.json=null},\n +CLASS_NAME:"OpenLayers.Tile.UTFGrid"});OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:!0,clearOnDeactivate:!1,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.registry=OpenLayers.Util.extend({moveend:this.getState},this.registry);a={trigger:OpenLayers.Function.bind(this.previousTrigger,\n +this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(a,this.previousOptions);this.previous=new OpenLayers.Control.Button(a);a={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(a,this.nextOptions);this.next=new OpenLayers.Control.Button(a);this.clear()},onPreviousChange:function(a){a&&!this.previous.active?this.previous.activate():!a&&this.previous.active&&this.previous.deactivate()},\n +onNextChange:function(a){a&&!this.next.active?this.next.activate():!a&&this.next.active&&this.next.deactivate()},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var a in this)this[a]=null},setMap:function(a){this.map=a;this.next.setMap(a);this.previous.setMap(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw()},previousTrigger:function(){var a=this.previousStack.shift(),\n +b=this.previousStack.shift();void 0!=b?(this.nextStack.unshift(a),this.previousStack.unshift(b),this.restoring=!0,this.restore(b),this.restoring=!1,this.onNextChange(this.nextStack[0],this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1)):this.previousStack.unshift(a);return b},nextTrigger:function(){var a=this.nextStack.shift();void 0!=a&&(this.previousStack.unshift(a),this.restoring=!0,this.restore(a),this.restoring=!1,this.onNextChange(this.nextStack[0],\n +this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1));return a},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate()},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units}},restore:function(a){var b,c;if(this.map.getProjectionObject()==\n +a.projection)c=this.map.getZoomForResolution(a.resolution),b=a.center;else{b=a.center.clone();b.transform(a.projection,this.map.getProjectionObject());c=a.units;var d=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;c=this.map.getZoomForResolution((c&&d?OpenLayers.INCHES_PER_UNIT[c]/OpenLayers.INCHES_PER_UNIT[d]:1)*a.resolution)}this.map.setCenter(b,c)},setListeners:function(){this.listeners={};for(var a in this.registry)this.listeners[a]=OpenLayers.Function.bind(function(){if(!this.restoring){this.previousStack.unshift(this.registry[a].apply(this,\n +arguments));if(1<this.previousStack.length)this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);this.previousStack.length>this.limit+1&&this.previousStack.pop();0<this.nextStack.length&&(this.nextStack=[],this.onNextChange(null,0))}return!0},this)},activate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.activate.apply(this)){null==this.listeners&&this.setListeners();for(var b in this.listeners)this.map.events.register(b,this,this.listeners[b]);a=!0;0==this.previousStack.length&&\n +this.initStack()}return a},initStack:function(){this.map.getCenter()&&this.listeners.moveend()},deactivate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.deactivate.apply(this)){for(var b in this.listeners)this.map.events.unregister(b,this,this.listeners[b]);this.clearOnDeactivate&&this.clear();a=!0}return a},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=\n +function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});\n +b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c=new OpenLayers.Protocol.Response({reqFeatures:a,\n +requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,\n +d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);\n +return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=\n +a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;o.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);n=n&&a.success();f++;f>=m&&b.callback&&(o.code=n?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[o]))}var b=OpenLayers.Util.applyDefaults(b,this.options),e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,i,j=[],k=0,l=a.length;k<l;++k)if(h=\n +a[k],i=g[h.state])i.push(h),j.push(h);var m=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,n=!0,o=new OpenLayers.Protocol.Response({reqFeatures:j});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(k=h.length-1;0<=k;--k)e.push(this.update(h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];\n +for(k=h.length-1;0<=k;--k)e.push(this["delete"](h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:!1,resolution:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,\n +scope:this}));return a},cacheFeatures:function(a){var b=!0;this.clustering||(this.clearCache(),this.features=a.features,this.cluster(),b=!1);return b},clearCache:function(){this.features=null},cluster:function(a){if((!a||a.zoomChanged)&&this.features)if(a=this.layer.map.getResolution(),a!=this.resolution||!this.clustersExist()){this.resolution=a;for(var a=[],b,c,d,e=0;e<this.features.length;++e)if(b=this.features[e],b.geometry){c=!1;for(var f=a.length-1;0<=f;--f)if(d=a[f],this.shouldCluster(d,b)){this.addToCluster(d,\n +b);c=!0;break}c||a.push(this.createCluster(this.features[e]))}this.layer.removeAllFeatures();if(0<a.length){if(1<this.threshold){b=a.slice();a=[];e=0;for(d=b.length;e<d;++e)c=b[e],c.attributes.count<this.threshold?Array.prototype.push.apply(a,c.cluster):a.push(c)}this.clustering=!0;this.layer.addFeatures(a);this.clustering=!1}this.clusters=a}},clustersExist:function(){var a=!1;if(this.clusters&&0<this.clusters.length&&this.clusters.length==this.layer.features.length)for(var a=!0,b=0;b<this.clusters.length;++b)if(this.clusters[b]!=\n +this.layer.features[b]){a=!1;break}return a},shouldCluster:function(a,b){var c=a.geometry.getBounds().getCenterLonLat(),d=b.geometry.getBounds().getCenterLonLat();return Math.sqrt(Math.pow(c.lon-d.lon,2)+Math.pow(c.lat-d.lat,2))/this.resolution<=this.distance},addToCluster:function(a,b){a.cluster.push(b);a.attributes.count+=1},createCluster:function(a){var b=a.geometry.getBounds().getCenterLonLat(),b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.lon,b.lat),{count:1});b.cluster=[a];\n +return b},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);a&&(this.cache=[],this.layer.events.on({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this}));return a},deactivate:function(){this.cache=null;this.layer&&this.layer.events&&this.layer.events.un({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this});\n +return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments)},handleAdd:function(a){if(!this.caching&&this.filter){var b=a.features;a.features=[];for(var c,d=0,e=b.length;d<e;++d)c=b[d],this.filter.evaluate(c)?a.features.push(c):this.cache.push(c)}},handleRemove:function(){this.caching||(this.cache=[])},setFilter:function(a){this.filter=a;a=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});0<this.cache.length&&(this.caching=!0,this.layer.removeFeatures(this.cache.slice()),\n +this.caching=!1);0<a.length&&(a={features:a},this.handleAdd(a),0<a.features.length&&(this.caching=!0,this.layer.addFeatures(a.features),this.caching=!1))},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Protocol.SOS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.SOS.DEFAULTS),b=OpenLayers.Protocol.SOS["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported SOS version: "+a.version;return new b(a)};OpenLayers.Protocol.SOS.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},readers:{xsd:{schema:function(a,b){var c=[],d={};this.readChildNodes(a,{complexTypes:c,customTypes:d});for(var e=a.attributes,f,g,h=0,i=e.length;h<i;++h)f=e[h],g=f.name,0==g.indexOf("xmlns")?this.setNamespace(g.split(":")[1]||"",f.value):b[g]=f.value;b.featureTypes=c;b.targetPrefix=this.namespaceAlias[b.targetNamespace];h=0;for(i=c.length;h<i;++h)e=c[h],f=d[e.typeName],\n +d[e.typeName]&&(e.typeName=f.name)},complexType:function(a,b){var c={typeName:a.getAttribute("name")};this.readChildNodes(a,c);b.complexTypes.push(c)},complexContent:function(a,b){this.readChildNodes(a,b)},extension:function(a,b){this.readChildNodes(a,b)},sequence:function(a,b){var c={elements:[]};this.readChildNodes(a,c);b.properties=c.elements},element:function(a,b){if(b.elements){for(var c={},d=a.attributes,e,f=0,g=d.length;f<g;++f)e=d[f],c[e.name]=e.value;d=c.type;d||(d={},this.readChildNodes(a,\n +d),c.restriction=d,c.type=d.base);c.localType=(d.base||d).split(":").pop();b.elements.push(c)}b.complexTypes&&(d=a.getAttribute("type"),c=d.split(":").pop(),b.customTypes[c]={name:a.getAttribute("name"),type:d})},simpleType:function(a,b){this.readChildNodes(a,b)},restriction:function(a,b){b.base=a.getAttribute("base");this.readRestriction(a,b)}}},readRestriction:function(a,b){for(var c=a.childNodes,d,e,f=0,g=c.length;f<g;++f)d=c[f],1==d.nodeType&&(e=d.nodeName.split(":").pop(),d=d.getAttribute("value"),\n +b[e]?("string"==typeof b[e]&&(b[e]=[b[e]]),b[e].push(d)):b[e]=d)},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:!1,createGeometryFromItem:function(a){var b=this.getElementsByTagNameNS(a,this.georssns,"point"),c=this.getElementsByTagNameNS(a,this.geons,"lat"),d=this.getElementsByTagNameNS(a,\n +this.geons,"long"),e=this.getElementsByTagNameNS(a,this.georssns,"line"),f=this.getElementsByTagNameNS(a,this.georssns,"polygon"),g=this.getElementsByTagNameNS(a,this.georssns,"where"),a=this.getElementsByTagNameNS(a,this.georssns,"box");if(0<b.length||0<c.length&&0<d.length){0<b.length?(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\\s+/),2!=c.length&&(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\\s*,\\s*/))):c=[parseFloat(c[0].firstChild.nodeValue),parseFloat(d[0].firstChild.nodeValue)];\n +var h=new OpenLayers.Geometry.Point(c[1],c[0])}else if(0<e.length){c=OpenLayers.String.trim(this.getChildValue(e[0])).split(/\\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.LineString(d)}else if(0<f.length){c=OpenLayers.String.trim(this.getChildValue(f[0])).split(/\\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])}else 0<\n +g.length?(this.gmlParser||(this.gmlParser=new OpenLayers.Format.GML({xy:this.xy})),h=this.gmlParser.parseFeature(g[0]).geometry):0<a.length&&(c=OpenLayers.String.trim(a[0].firstChild.nodeValue).split(/\\s+/),d=[],3<c.length&&(b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b)),h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]));\n +h&&(this.internalProjection&&this.externalProjection)&&h.transform(this.externalProjection,this.internalProjection);return h},createFeatureFromItem:function(a){var b=this.createGeometryFromItem(a),c=this._getChildValue(a,"*","title",this.featureTitle),d=this._getChildValue(a,"*","description",this._getChildValue(a,"*","content",this._getChildValue(a,"*","summary",this.featureDescription))),e=this._getChildValue(a,"*","link");if(!e)try{e=this.getElementsByTagNameNS(a,"*","link")[0].getAttribute("href")}catch(f){e=\n +null}a=this._getChildValue(a,"*","id",null);b=new OpenLayers.Feature.Vector(b,{title:c,description:d,link:e});b.fid=a;return b},_getChildValue:function(a,b,c,d){return(a=this.getElementsByTagNameNS(a,b,c))&&a[0]&&a[0].firstChild&&a[0].firstChild.nodeValue?this.getChildValue(a[0]):void 0==d?"":d},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null,b=this.getElementsByTagNameNS(a,"*","item");0==b.length&&(b=this.getElementsByTagNameNS(a,"*","entry"));\n +for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=this.createFeatureFromItem(b[d]);return c},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNS(this.rssns,"rss");for(var c=0,d=a.length;c<d;c++)b.appendChild(this.createFeatureXML(a[c]))}else b=this.createFeatureXML(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.rssns,"item"),d=this.createElementNS(this.rssns,"title");\n +d.appendChild(this.createTextNode(a.attributes.title?a.attributes.title:""));var e=this.createElementNS(this.rssns,"description");e.appendChild(this.createTextNode(a.attributes.description?a.attributes.description:""));c.appendChild(d);c.appendChild(e);a.attributes.link&&(d=this.createElementNS(this.rssns,"link"),d.appendChild(this.createTextNode(a.attributes.link)),c.appendChild(d));for(var f in a.attributes)"link"==f||("title"==f||"description"==f)||(d=this.createTextNode(a.attributes[f]),e=f,-1!=\n +f.search(":")&&(e=f.split(":")[1]),e=this.createElementNS(this.featureNS,"feature:"+e),e.appendChild(d),c.appendChild(e));c.appendChild(b);return c},buildGeometryNode:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b;if("OpenLayers.Geometry.Polygon"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:polygon"),b.appendChild(this.buildCoordinatesNode(a.components[0]));else if("OpenLayers.Geometry.LineString"==\n +a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:line"),b.appendChild(this.buildCoordinatesNode(a));else if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:point"),b.appendChild(this.buildCoordinatesNode(a));else throw"Couldn\'t parse "+a.CLASS_NAME;return b},buildCoordinatesNode:function(a){var b=null;a.components&&(b=a.components);if(b){for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=b[d].y+" "+b[d].x;b=c.join(" ")}else b=a.y+" "+a.x;return this.createTextNode(b)},\n +CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.WPSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.WPSCapabilities"});OpenLayers.Format.WPSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wps:"http://www.opengis.net/wps/1.0.0",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);\n +var b={};this.readNode(a,b);return b},readers:{wps:{Capabilities:function(a,b){this.readChildNodes(a,b)},ProcessOfferings:function(a,b){b.processOfferings={};this.readChildNodes(a,b.processOfferings)},Process:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion")};this.readChildNodes(a,c);b[c.identifier]=c},Languages:function(a,b){b.languages=[];this.readChildNodes(a,b.languages)},Default:function(a,b){var c={isDefault:!0};this.readChildNodes(a,c);b.push(c)},\n +Supported:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSCapabilities.v1_0_0"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerCenter:null,pinchOrigin:null,currentCenter:null,autoActivate:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},activate:function(){var a=OpenLayers.Control.prototype.activate.apply(this,arguments);a&&(this.map.events.on({moveend:this.updateContainerCenter,\n +scope:this}),this.updateContainerCenter());return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.apply(this,arguments);this.map&&this.map.events&&this.map.events.un({moveend:this.updateContainerCenter,scope:this});return a},updateContainerCenter:function(){var a=this.map.layerContainerDiv;this.containerCenter={x:parseInt(a.style.left,10)+50,y:parseInt(a.style.top,10)+50}},pinchStart:function(a){this.currentCenter=this.pinchOrigin=a.xy},pinchMove:function(a,b){var c=b.scale,\n +d=this.containerCenter,e=this.pinchOrigin,f=a.xy,g=Math.round(f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(f.y-e.y+(c-1)*(d.y-e.y));this.applyTransform("translate("+g+"px, "+d+"px) scale("+c+")");this.currentCenter=f},applyTransform:function(a){var b=this.map.layerContainerDiv.style;b["-webkit-transform"]=a;b["-moz-transform"]=a},pinchDone:function(a,b,c){this.applyTransform("");a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var b=\n +this.map.getResolutionForZoom(a),c=this.map.getLonLatFromPixel(this.pinchOrigin),d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Control.TouchNavigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,clickHandlerOptions:null,documentDrag:!1,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;this.pinchZoom&&(this.pinchZoom.destroy(),delete this.pinchZoom);OpenLayers.Control.prototype.destroy.apply(this,\n +arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.dragPan.activate(),this.handlers.click.activate(),this.pinchZoom.activate(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.dragPan.deactivate(),this.handlers.click.deactivate(),this.pinchZoom.deactivate(),!0):!1},draw:function(){var a={click:this.defaultClick,dblclick:this.defaultDblClick},b=OpenLayers.Util.extend({"double":!0,stopDouble:!0,\n +pixelTolerance:2},this.clickHandlerOptions);this.handlers.click=new OpenLayers.Handler.Click(this,a,b);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.dragPan.draw();this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),\n +this.map.zoom+1)},CLASS_NAME:"OpenLayers.Control.TouchNavigation"});OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy();delete this.rules},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}return new OpenLayers.Style2(a)},\n +CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(a,b){OpenLayers.Format.GML.prototype.initialize.apply(this,[a]);this.layer=b;this.layer.featureNS&&(this.featureNS=this.layer.featureNS);this.layer.options.geometry_column&&(this.geometryName=this.layer.options.geometry_column);this.layer.options.typename&&(this.featureName=this.layer.options.typename)},write:function(a){var b=this.createElementNS(this.wfsns,\n +"wfs:Transaction");b.setAttribute("version","1.0.0");b.setAttribute("service","WFS");for(var c=0;c<a.length;c++)switch(a[c].state){case OpenLayers.State.INSERT:b.appendChild(this.insert(a[c]));break;case OpenLayers.State.UPDATE:b.appendChild(this.update(a[c]));break;case OpenLayers.State.DELETE:b.appendChild(this.remove(a[c]))}return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,"feature:"+\n +this.geometryName);c.appendChild(b);b=this.createElementNS(this.featureNS,"feature:"+this.featureName);b.appendChild(c);for(var d in a.attributes){var c=this.createTextNode(a.attributes[d]),e=d;-1!=d.search(":")&&(e=d.split(":")[1]);e=this.createElementNS(this.featureNS,"feature:"+e);e.appendChild(c);b.appendChild(e)}return b},insert:function(a){var b=this.createElementNS(this.wfsns,"wfs:Insert");b.appendChild(this.createFeatureXML(a));return b},update:function(a){a.fid||OpenLayers.Console.userError(OpenLayers.i18n("noFID"));\n +var b=this.createElementNS(this.wfsns,"wfs:Update");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),e=this.createTextNode(this.geometryName);d.appendChild(e);c.appendChild(d);d=this.createElementNS(this.wfsns,"wfs:Value");e=this.buildGeometryNode(a.geometry);a.layer&&e.setAttribute("srsName",a.layer.projection.getCode());\n +d.appendChild(e);c.appendChild(d);b.appendChild(c);for(var f in a.attributes)c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),d.appendChild(this.createTextNode(f)),c.appendChild(d),d=this.createElementNS(this.wfsns,"wfs:Value"),d.appendChild(this.createTextNode(a.attributes[f])),c.appendChild(d),b.appendChild(c);c=this.createElementNS(this.ogcns,"ogc:Filter");f=this.createElementNS(this.ogcns,"ogc:FeatureId");f.setAttribute("fid",a.fid);c.appendChild(f);\n +b.appendChild(c);return b},remove:function(a){if(!a.fid)return OpenLayers.Console.userError(OpenLayers.i18n("noFID")),!1;var b=this.createElementNS(this.wfsns,"wfs:Delete");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.ogcns,"ogc:Filter"),d=this.createElementNS(this.ogcns,"ogc:FeatureId");d.setAttribute("fid",a.fid);c.appendChild(d);b.appendChild(c);return b},destroy:function(){this.layer=\n +null},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Format.SLD.v1_0_0_GeoServer=OpenLayers.Class(OpenLayers.Format.SLD.v1_0_0,{version:"1.0.0",profile:"GeoServer",readers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.priority=c)},VendorOption:function(a,b){b.vendorOptions||(b.vendorOptions={});b.vendorOptions[a.getAttribute("name")]=this.getChildValue(a)}},OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.readers),\n +writers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Priority",a)},VendorOption:function(a){return this.createElementNSPlus("sld:VendorOption",{attributes:{name:a.name},value:a.value})},TextSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.TextSymbolizer.apply(this,arguments);!1!==a.graphic&&(a.externalGraphic||a.graphicName)&&this.writeNode("Graphic",a,b);"priority"in a&&\n +this.writeNode("Priority",a.priority,b);return this.addVendorOptions(b,a)},PointSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PointSymbolizer.apply(this,arguments),a)},LineSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.LineSymbolizer.apply(this,arguments),a)},PolygonSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PolygonSymbolizer.apply(this,\n +arguments),a)}},OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.writers),addVendorOptions:function(a,b){if(b.vendorOptions)for(var c in b.vendorOptions)this.writeNode("VendorOption",{name:c,value:b.vendorOptions[c]},a);return a},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0_GeoServer"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{drawMarker:function(a){var b=this.map.getLayerPxFromLonLat({lon:a.bounds.left,lat:a.bounds.top}),c=this.map.getLayerPxFromLonLat({lon:a.bounds.right,lat:a.bounds.bottom});null==c||null==b?a.display(!1):(b=a.draw(b,{w:Math.max(1,c.x-b.x),h:Math.max(1,c.y-b.y)}),a.drawn||(this.div.appendChild(b),a.drawn=!0))},removeMarker:function(a){OpenLayers.Util.removeItem(this.markers,a);null!=a.div&&a.div.parentNode==this.div&&this.div.removeChild(a.div)},\n +CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{readers:{wfs:OpenLayers.Util.applyDefaults({Service:function(a,b){b.service={};this.readChildNodes(a,b.service)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},OnlineResource:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.onlineResource=\n +c)},Keywords:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.keywords=c.split(", "))},Capability:function(a,b){b.capability={};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetFeature:function(a,b){b.getfeature={href:{},formats:[]};this.readChildNodes(a,b.getfeature)},ResultFormat:function(a,b){for(var c=a.childNodes,d,e=0;e<c.length;e++)d=c[e],1==d.nodeType&&b.formats.push(d.nodeName)},DCPType:function(a,b){this.readChildNodes(a,\n +b)},HTTP:function(a,b){this.readChildNodes(a,b.href)},Get:function(a,b){b.get=a.getAttribute("onlineResource")},Post:function(a,b){b.post=a.getAttribute("onlineResource")},SRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs)},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",profile:null,CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a;a&&9==a.nodeType&&(a=a.documentElement);var c={};this.readNode(a,c);void 0===c.service&&(a=new OpenLayers.Format.OGCExceptionReport,c.error=a.read(b));return c},readers:{wms:{Service:function(a,\n +b){b.service={};this.readChildNodes(a,b.service)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},BoundingBox:function(a){var b={};b.bbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))];a={x:parseFloat(a.getAttribute("resx")),y:parseFloat(a.getAttribute("resy"))};if(!isNaN(a.x)||!isNaN(a.y))b.res=\n +a;return b},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},ContactInformation:function(a,b){b.contactInformation={};this.readChildNodes(a,b.contactInformation)},ContactPersonPrimary:function(a,b){b.personPrimary={};this.readChildNodes(a,b.personPrimary)},ContactPerson:function(a,b){b.person=this.getChildValue(a)},ContactOrganization:function(a,b){b.organization=this.getChildValue(a)},ContactPosition:function(a,b){b.position=this.getChildValue(a)},ContactAddress:function(a,\n +b){b.contactAddress={};this.readChildNodes(a,b.contactAddress)},AddressType:function(a,b){b.type=this.getChildValue(a)},Address:function(a,b){b.address=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},StateOrProvince:function(a,b){b.stateOrProvince=this.getChildValue(a)},PostCode:function(a,b){b.postcode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ContactVoiceTelephone:function(a,b){b.phone=this.getChildValue(a)},ContactFacsimileTelephone:function(a,\n +b){b.fax=this.getChildValue(a)},ContactElectronicMailAddress:function(a,b){b.email=this.getChildValue(a)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},Capability:function(a,b){b.capability={nestedLayers:[],layers:[]};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetCapabilities:function(a,\n +b){b.getcapabilities={formats:[]};this.readChildNodes(a,b.getcapabilities)},Format:function(a,b){OpenLayers.Util.isArray(b.formats)?b.formats.push(this.getChildValue(a)):b.format=this.getChildValue(a)},DCPType:function(a,b){this.readChildNodes(a,b)},HTTP:function(a,b){this.readChildNodes(a,b)},Get:function(a,b){b.get={};this.readChildNodes(a,b.get);b.href||(b.href=b.get.href)},Post:function(a,b){b.post={};this.readChildNodes(a,b.post);b.href||(b.href=b.get.href)},GetMap:function(a,b){b.getmap={formats:[]};\n +this.readChildNodes(a,b.getmap)},GetFeatureInfo:function(a,b){b.getfeatureinfo={formats:[]};this.readChildNodes(a,b.getfeatureinfo)},Exception:function(a,b){b.exception={formats:[]};this.readChildNodes(a,b.exception)},Layer:function(a,b){var c,d;b.capability?(d=b.capability,c=b):d=b;var e=a.getAttributeNode("queryable"),f=e&&e.specified?a.getAttribute("queryable"):null,g=(e=a.getAttributeNode("cascaded"))&&e.specified?a.getAttribute("cascaded"):null,e=(e=a.getAttributeNode("opaque"))&&e.specified?\n +a.getAttribute("opaque"):null,h=a.getAttribute("noSubsets"),i=a.getAttribute("fixedWidth"),j=a.getAttribute("fixedHeight"),k=c||{},l=OpenLayers.Util.extend;c={nestedLayers:[],styles:c?[].concat(c.styles):[],srs:c?l({},k.srs):{},metadataURLs:[],bbox:c?l({},k.bbox):{},llbbox:k.llbbox,dimensions:c?l({},k.dimensions):{},authorityURLs:c?l({},k.authorityURLs):{},identifiers:{},keywords:[],queryable:f&&""!==f?"1"===f||"true"===f:k.queryable||!1,cascaded:null!==g?parseInt(g):k.cascaded||0,opaque:e?"1"===\n +e||"true"===e:k.opaque||!1,noSubsets:null!==h?"1"===h||"true"===h:k.noSubsets||!1,fixedWidth:null!=i?parseInt(i):k.fixedWidth||0,fixedHeight:null!=j?parseInt(j):k.fixedHeight||0,minScale:k.minScale,maxScale:k.maxScale,attribution:k.attribution};b.nestedLayers.push(c);c.capability=d;this.readChildNodes(a,c);delete c.capability;if(c.name&&(f=c.name.split(":"),g=d.request,e=g.getfeatureinfo,0<f.length&&(c.prefix=f[0]),d.layers.push(c),void 0===c.formats&&(c.formats=g.getmap.formats),void 0===c.infoFormats&&\n +e))c.infoFormats=e.formats},Attribution:function(a,b){b.attribution={};this.readChildNodes(a,b.attribution)},LogoURL:function(a,b){b.logo={width:a.getAttribute("width"),height:a.getAttribute("height")};this.readChildNodes(a,b.logo)},Style:function(a,b){var c={};b.styles.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={width:a.getAttribute("width"),height:a.getAttribute("height")};b.legend=c;this.readChildNodes(a,c)},MetadataURL:function(a,b){var c={type:a.getAttribute("type")};b.metadataURLs.push(c);\n +this.readChildNodes(a,c)},DataURL:function(a,b){b.dataURL={};this.readChildNodes(a,b.dataURL)},FeatureListURL:function(a,b){b.featureListURL={};this.readChildNodes(a,b.featureListURL)},AuthorityURL:function(a,b){var c=a.getAttribute("name"),d={};this.readChildNodes(a,d);b.authorityURLs[c]=d.href},Identifier:function(a,b){var c=a.getAttribute("authority");b.identifiers[c]=this.getChildValue(a)},KeywordList:function(a,b){this.readChildNodes(a,b)},SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}}},\n +CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMS_Capabilities:function(a,b){this.readChildNodes(a,b)},LayerLimit:function(a,b){b.layerLimit=parseInt(this.getChildValue(a))},MaxWidth:function(a,b){b.maxWidth=parseInt(this.getChildValue(a))},MaxHeight:function(a,b){b.maxHeight=parseInt(this.getChildValue(a))},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,\n +[a,b]);c.srs=a.getAttribute("CRS");b.bbox[c.srs]=c},CRS:function(a,b){this.readers.wms.SRS.apply(this,[a,b])},EX_GeographicBoundingBox:function(a,b){b.llbbox=[];this.readChildNodes(a,b.llbbox)},westBoundLongitude:function(a,b){b[0]=this.getChildValue(a)},eastBoundLongitude:function(a,b){b[2]=this.getChildValue(a)},southBoundLatitude:function(a,b){b[1]=this.getChildValue(a)},northBoundLatitude:function(a,b){b[3]=this.getChildValue(a)},MinScaleDenominator:function(a,b){b.maxScale=parseFloat(this.getChildValue(a)).toPrecision(16)},\n +MaxScaleDenominator:function(a,b){b.minScale=parseFloat(this.getChildValue(a)).toPrecision(16)},Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol"),nearestVal:"1"===a.getAttribute("nearestValue"),multipleVal:"1"===a.getAttribute("multipleValues"),"default":a.getAttribute("default")||"",current:"1"===a.getAttribute("current"),values:this.getChildValue(a).split(",")};b.dimensions[c.name]=c},Keyword:function(a,\n +b){var c={value:this.getChildValue(a),vocabulary:a.getAttribute("vocabulary")};b.keywords&&b.keywords.push(c)}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms),sld:{UserDefinedSymbolization:function(a,b){this.readers.wms.UserDefinedSymbolization.apply(this,[a,b]);b.userSymbols.inlineFeature=1==parseInt(a.getAttribute("InlineFeature"));b.userSymbols.remoteWCS=1==parseInt(a.getAttribute("RemoteWCS"))},DescribeLayer:function(a,b){this.readers.wms.DescribeLayer.apply(this,[a,b])},GetLegendGraphic:function(a,\n +b){this.readers.wms.GetLegendGraphic.apply(this,[a,b])}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{size:null,isBaseLayer:!0,standardTileSize:256,tileOriginCorner:"tl",numberOfTiers:0,tileCountUpToTier:null,tierSizeInTiles:null,tierImageSize:null,initialize:function(a,b,c,d){this.initializeZoomify(c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,c,{},d])},initializeZoomify:function(a){var a=a.clone(),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize));this.tierSizeInTiles=[b];\n +for(this.tierImageSize=[a];a.w>this.standardTileSize||a.h>this.standardTileSize;)a=new OpenLayers.Size(Math.floor(a.w/2),Math.floor(a.h/2)),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize)),this.tierSizeInTiles.push(b),this.tierImageSize.push(a);this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;this.tileCountUpToTier=[0];for(a=1;a<this.numberOfTiers;a++)this.tileCountUpToTier.push(this.tierSizeInTiles[a-\n +1].w*this.tierSizeInTiles[a-1].h+this.tileCountUpToTier[a-1])},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0;this.tierSizeInTiles.length=0;this.tierImageSize.length=0},clone:function(a){null==a&&(a=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/\n +(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),c="TileGroup"+Math.floor((c+a*this.tierSizeInTiles[b].w+this.tileCountUpToTier[b])/256)+"/"+b+"-"+c+"-"+a+".jpg",a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},getImageSize:function(){if(0<arguments.length){var a=this.adjustBounds(arguments[0]),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-\n +a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),d=this.standardTileSize,e=this.standardTileSize;c==this.tierSizeInTiles[b].w-1&&(d=this.tierImageSize[b].w%this.standardTileSize);a==this.tierSizeInTiles[b].h-1&&(e=this.tierImageSize[b].h%this.standardTileSize);return new OpenLayers.Size(d,e)}return this.tileSize},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.top)},calculateGridLayout:function(a,\n +b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.params.transparent&&!0!=this.params.transparent},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions()));\n +return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),a=[a.left,a.bottom,a.right,a.top],b=this.getImageSize();return this.getFullRequestString({mapext:a,imgext:a,map_size:[b.w,b.h],imgx:b.w/2,imgy:b.h/2,imgxy:[b.w,b.h]})},getFullRequestString:function(a,b){var c=null==b?this.url:b,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));\n +var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);d=c;e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,\n +arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},\n +setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=\n +"olv:shape"}return c},setStyle:function(a,b,c,d){var b=b||a._style,c=c||a._options,e=b.fillColor;if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;b.graphicTitle&&(a.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),i=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/\n +g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(i+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];if(c.isFilled){d||\n +(d=this.createNode("olv:fill",a.id+"_fill"));d.opacity=b.fillOpacity;if("OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",!b.graphicWidth||!b.graphicHeight))d.aspect="atmost";d.parentNode!=a&&a.appendChild(d)}else d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,i,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&\n +(a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];if(c.isStroked){if(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle)h.dashstyle=this.dashStyle(b)}else a.stroked=!1,h&&(h.on=!1);"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,\n +d){var d=d||a._style,e=d.rotation||0,f,g;if(!d.graphicWidth||!d.graphicHeight){var h=new Image;h.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==h.readyState||"interactive"==h.readyState)f=h.width/h.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);h.src=d.externalGraphic}else{g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var i=Math.round(d.graphicWidth||\n +g*f),j=Math.round(d.graphicHeight||g);a.style.width=i+"px";a.style.height=j+"px";var k=document.getElementById(a.id+"_image");k||(k=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(k));k.style.width=i+"px";k.style.height=j+"px";k.src=d.externalGraphic;k.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'\', sizingMethod=\'scale\')";k=e*Math.PI/180;e=Math.sin(k);k=Math.cos(k);e="progid:DXImageTransform.Microsoft.Matrix(M11="+k+",M12="+-e+",M21="+e+",M22="+k+",SizingMethod=\'auto expand\')\\n";\n +(k=d.graphicOpacity||d.fillOpacity)&&1!=k&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+k+")\\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);i=(new OpenLayers.Bounds(0,0,i,j)).toGeometry();i.rotate(d.rotation,e);i=i.getBounds();a.style.left=Math.round(parseInt(a.style.left)+i.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-i.bottom)+"px"}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&\n +(a.fillcolor=b);"none"==c&&a.strokecolor!=c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=\n +a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+\n +1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=\n +b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,i=0;i<e;i++)g=b.components[i],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[i]=" "+h+","+g+" l ";a.path="m"+f.join("")+(c?" x e":" e");return a},drawPolygon:function(a,b){this.setNodeDimension(a,\n +b);var c=this.getResolution(),d=[],e,f,g,h,i,j,k,l,m,n;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;j=i=null;k=0;for(l=g.length;k<l;k++)m=g[k],n=(m.x-this.featureDx)/c-this.offset.x|0,m=m.y/c-this.offset.y|0,n=" "+n+","+m,d.push(n),0==k&&d.push(" l"),h||(i?i!=n&&(j?j!=n&&(h=!0):j=n):i=n);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+\n +"px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&\n +(e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||\n +"cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},\n +importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");for(var a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;\n +0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Control.CacheRead=OpenLayers.Class(OpenLayers.Control,{fetchEvent:"tileloadstart",layers:null,autoActivate:!0,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.register(this.fetchEvent,this,this.fetch)},removeLayer:function(a){a.layer.events.unregister(this.fetchEvent,\n +this,this.fetch)},fetch:function(a){if(this.active&&window.localStorage&&a.tile instanceof OpenLayers.Tile.Image){var b=a.tile,c=b.url;!b.layer.crossOriginKeyword&&(OpenLayers.ProxyHost&&0===c.indexOf(OpenLayers.ProxyHost))&&(c=OpenLayers.Control.CacheWrite.urlMap[c]);if(c=window.localStorage.getItem("olCache_"+c))b.url=c,"tileerror"===a.type&&b.setImgSrc(c)}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&\n +this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.CacheRead"});OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:"_layer",featureIdentifier:"_feature",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},gmlFormat:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a.documentElement;if(b)var c=this["read_"+b.nodeName],a=c?c.call(this,b):(new OpenLayers.Format.GML(this.options?this.options:{})).read(a);return a},read_msGMLOutput:function(a){var b=\n +[];if(a=this.getSiblingNodesByTagCriteria(a,this.layerIdentifier))for(var c=0,d=a.length;c<d;++c){var e=a[c],f=e.nodeName;e.prefix&&(f=f.split(":")[1]);f=f.replace(this.layerIdentifier,"");if(e=this.getSiblingNodesByTagCriteria(e,this.featureIdentifier))for(var g=0;g<e.length;g++){var h=e[g],i=this.parseGeometry(h),h=this.parseAttributes(h),h=new OpenLayers.Feature.Vector(i.geometry,h,null);h.bounds=i.bounds;h.type=f;b.push(h)}}return b},read_FeatureInfoResponse:function(a){for(var b=[],a=this.getElementsByTagNameNS(a,\n +"*","FIELDS"),c=0,d=a.length;c<d;c++){var e=a[c],f={},g,h=e.attributes.length;if(0<h)for(g=0;g<h;g++){var i=e.attributes[g];f[i.nodeName]=i.nodeValue}else{e=e.childNodes;g=0;for(h=e.length;g<h;++g)i=e[g],3!=i.nodeType&&(f[i.getAttribute("name")]=i.getAttribute("value"))}b.push(new OpenLayers.Feature.Vector(null,f,null))}return b},getSiblingNodesByTagCriteria:function(a,b){var c=[],d,e,f,g;if(a&&a.hasChildNodes()){d=a.childNodes;f=d.length;for(var h=0;h<f;h++){for(g=d[h];g&&1!=g.nodeType;)g=g.nextSibling,\n +h++;e=g?g.nodeName:"";0<e.length&&-1<e.indexOf(b)?c.push(g):(e=this.getSiblingNodesByTagCriteria(g,b),0<e.length&&(0==c.length?c=e:c.push(e)))}}return c},parseAttributes:function(a){var b={};if(1==a.nodeType)for(var a=a.childNodes,c=a.length,d=0;d<c;++d){var e=a[d];if(1==e.nodeType){var f=e.childNodes,e=e.pr + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAw=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="12" aka="AAAAAAAAAAw="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +efix?e.nodeName.split(":")[1]:e.nodeName;if(0==f.length)b[e]=null;else if(1==f.length&&(f=f[0],3==f.nodeType||4==f.nodeType))f=f.nodeValue.replace(this.regExes.trimSpace,""),b[e]=f}}return b},\n +parseGeometry:function(a){this.gmlFormat||(this.gmlFormat=new OpenLayers.Format.GML);var a=this.gmlFormat.parseFeature(a),b,c=null;a&&(b=a.geometry&&a.geometry.clone(),c=a.bounds&&a.bounds.clone(),a.destroy());return{geometry:b,bounds:c}},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,requestEncoding:"KVP",drillDown:!1,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:!0,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,pending:0,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));\n +!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.request(a.xy,{})},getInfoForHover:function(a){this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(--this.pending,\n +0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0),this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)if(c=a[d],c instanceof OpenLayers.Layer.WMTS&&c.requestEncoding===this.requestEncoding&&(!this.queryVisible||c.getVisibility()))if(b.push(c),!this.drillDown||this.hover)break;return b},buildRequestOptions:function(a,b){var c=this.map.getLonLatFromPixel(b),d=\n +a.getURL(new OpenLayers.Bounds(c.lon,c.lat,c.lon,c.lat)),d=OpenLayers.Util.getParameters(d),c=a.getTileInfo(c);OpenLayers.Util.extend(d,{service:"WMTS",version:a.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:c.i,j:c.j});OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:OpenLayers.Util.isArray(a.url)?a.url[0]:a.url,params:OpenLayers.Util.upperCaseObject(d),callback:function(c){this.handleResponse(b,c,a)},scope:this}},request:function(a,b){var b=b||{},c=this.findLayers();\n +if(0<c.length){for(var d,e,f=0,g=c.length;f<g;f++)e=c[f],d=this.events.triggerEvent("beforegetfeatureinfo",{xy:a,layer:e}),!1!==d&&(++this.pending,d=this.buildRequestOptions(e,a),d=OpenLayers.Request.GET(d),!0===b.hover&&(this.hoverRequest=d));0<this.pending&&OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait")}},handleResponse:function(a,b,c){--this.pending;0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0);if(b.status&&(200>b.status||\n +300<=b.status))this.events.triggerEvent("exception",{xy:a,request:b,layer:c});else{var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;var e,f;try{e=this.format.read(d)}catch(g){f=!0,this.events.triggerEvent("exception",{xy:a,request:b,error:g,layer:c})}f||this.events.triggerEvent("getfeatureinfo",{text:b.responseText,features:e,request:b,xy:a,layer:c})}},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,scope:this}));return a},cacheFeatures:function(a){this.paging||(this.clearCache(),\n +this.features=a.features,this.pageNext(a))},clearCache:function(){if(this.features)for(var a=0;a<this.features.length;++a)this.features[a].destroy();this.num=this.features=null},pageCount:function(){return Math.ceil((this.features?this.features.length:0)/this.length)},pageNum:function(){return this.num},pageLength:function(a){a&&0<a&&(this.length=a);return this.length},pageNext:function(a){var b=!1;this.features&&(null===this.num&&(this.num=-1),b=this.page((this.num+1)*this.length,a));return b},pagePrevious:function(){var a=\n +!1;this.features&&(null===this.num&&(this.num=this.pageCount()),a=this.page((this.num-1)*this.length));return a},page:function(a,b){var c=!1;if(this.features&&0<=a&&a<this.features.length){var d=Math.floor(a/this.length);d!=this.num&&(this.paging=!0,c=this.features.slice(a,a+this.length),this.layer.removeFeatures(this.layer.features),this.num=d,b&&b.features?b.features=c:this.layer.addFeatures(c),this.paging=!1,c=!0)}return c},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Protocol.CSW.v2_0_2=OpenLayers.Class(OpenLayers.Protocol,{formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.CSWGetRecords.v2_0_2(OpenLayers.Util.extend({},this.formatOptions)))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,\n +this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format.write(a.params);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.data=this.parseData(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseData:function(a){var b=\n +a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.CSW.v2_0_2"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMT_MS_Capabilities:function(a,b){this.readChildNodes(a,b)},Keyword:function(a,b){b.keywords&&b.keywords.push(this.getChildValue(a))},DescribeLayer:function(a,b){b.describelayer={formats:[]};this.readChildNodes(a,b.describelayer)},GetLegendGraphic:function(a,b){b.getlegendgraphic={formats:[]};this.readChildNodes(a,b.getlegendgraphic)},GetStyles:function(a,b){b.getstyles=\n +{formats:[]};this.readChildNodes(a,b.getstyles)},PutStyles:function(a,b){b.putstyles={formats:[]};this.readChildNodes(a,b.putstyles)},UserDefinedSymbolization:function(a,b){var c={supportSLD:1==parseInt(a.getAttribute("SupportSLD")),userLayer:1==parseInt(a.getAttribute("UserLayer")),userStyle:1==parseInt(a.getAttribute("UserStyle")),remoteWFS:1==parseInt(a.getAttribute("RemoteWFS"))};b.userSymbols=c},LatLonBoundingBox:function(a,b){b.llbbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),\n +parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))]},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,[a,b]);c.srs=a.getAttribute("SRS");b.bbox[c.srs]=c},ScaleHint:function(a,b){var c=a.getAttribute("min"),d=a.getAttribute("max"),e=Math.pow(2,0.5),f=OpenLayers.INCHES_PER_UNIT.m;b.maxScale=parseFloat((c/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13));b.minScale=parseFloat((d/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13))},\n +Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol")};b.dimensions[c.name]=c},Extent:function(a,b){var c=a.getAttribute("name").toLowerCase();if(c in b.dimensions){c=b.dimensions[c];c.nearestVal="1"===a.getAttribute("nearestValue");c.multipleVal="1"===a.getAttribute("multipleValues");c.current="1"===a.getAttribute("current");c["default"]=a.getAttribute("default")||"";var d=this.getChildValue(a);c.values=d.split(",")}}},\n +OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:!0,visible:!0,numPoints:50,targetSize:200,layerName:null,labelled:!0,labelFormat:"dm",lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(a){a=a||{};a.layerName=a.layerName||OpenLayers.i18n("Graticule");OpenLayers.Control.prototype.initialize.apply(this,[a]);\n +this.labelSymbolizer.stroke=!1;this.labelSymbolizer.fill=!1;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}"},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);this.gratLayer&&(this.gratLayer.destroy(),this.gratLayer=null)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var a=new OpenLayers.Style({},\n +{rules:[new OpenLayers.Rule({symbolizer:{Point:this.labelSymbolizer,Line:this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({"default":a}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher})}return this.div},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.addLayer(this.gratLayer),this.map.events.register("moveend",this,this.update),this.update(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,\n +arguments)?(this.map.events.unregister("moveend",this,this.update),this.map.removeLayer(this.gratLayer),!0):!1},update:function(){var a=this.map.getExtent();if(a){this.gratLayer.destroyFeatures();var b=new OpenLayers.Projection("EPSG:4326"),c=this.map.getProjectionObject(),d=this.map.getResolution();c.proj&&"longlat"==c.proj.projName&&(this.numPoints=1);var e=this.map.getCenter(),f=new OpenLayers.Pixel(e.lon,e.lat);OpenLayers.Projection.transform(f,c,b);for(var e=this.targetSize*d,e=e*e,g,d=0;d<this.intervals.length;++d){g=\n +this.intervals[d];var h=g/2,i=f.offset({x:-h,y:-h}),h=f.offset({x:h,y:h});OpenLayers.Projection.transform(i,b,c);OpenLayers.Projection.transform(h,b,c);if((i.x-h.x)*(i.x-h.x)+(i.y-h.y)*(i.y-h.y)<=e)break}f.x=Math.floor(f.x/g)*g;f.y=Math.floor(f.y/g)*g;var d=0,e=[f.clone()],h=f.clone(),j;do h=h.offset({x:0,y:g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:0,y:-g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.push(h);\n +while(a.containsPixel(j)&&1E3>++d);d=0;i=[f.clone()];h=f.clone();do h=h.offset({x:-g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.push(h);while(a.containsPixel(j)&&1E3>++d);g=[];for(d=0;d<i.length;++d){j=i[d].x;for(var f=[],k=null,l=Math.min(e[0].y,90),h=Math.max(e[e.length-1].y,-90),m=(l-h)/this.numPoints,l=h,h=0;h<=this.numPoints;++h){var n=new OpenLayers.Geometry.Point(j,\n +l);n.transform(b,c);f.push(n);l+=m;n.y>=a.bottom&&!k&&(k=n)}this.labelled&&(k=new OpenLayers.Geometry.Point(k.x,a.bottom),j={value:j,label:this.labelled?OpenLayers.Util.getFormattedLonLat(j,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}for(h=0;h<e.length;++h)if(l=e[h].y,!(-90>l||90<l)){f=[];d=i[0].x;m=(i[i.length-1].x-d)/this.numPoints;\n +j=d;k=null;for(d=0;d<=this.numPoints;++d)n=new OpenLayers.Geometry.Point(j,l),n.transform(b,c),f.push(n),j+=m,n.x<a.right&&(k=n);this.labelled&&(k=new OpenLayers.Geometry.Point(a.right,k.y),j={value:l,label:this.labelled?OpenLayers.Util.getFormattedLonLat(l,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}this.gratLayer.addFeatures(g)}},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Layer.UTFGrid=OpenLayers.Class(OpenLayers.Layer.XYZ,{isBaseLayer:!1,projection:new OpenLayers.Projection("EPSG:900913"),useJSONP:!1,tileClass:OpenLayers.Tile.UTFGrid,initialize:function(a){OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,{},a]);this.tileOptions=OpenLayers.Util.extend({utfgridResolution:this.utfgridResolution},this.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.UTFGrid(this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getFeatureInfo:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureInfo(a.i,a.j));return b},getFeatureId:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureId(a.i,a.j));return b},CLASS_NAME:"OpenLayers.Layer.UTFGrid"});OpenLayers.Layer.ArcGISCache=OpenLayers.Class(OpenLayers.Layer.XYZ,{url:null,tileOrigin:null,tileSize:new OpenLayers.Size(256,256),useArcGISServer:!0,type:"png",useScales:!1,overrideDPI:!1,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.resolutions&&(this.serverResolutions=this.resolutions,this.maxExtent=this.getMaxExtentForResolution(this.resolutions[0]));if(this.layerInfo){var d=this.layerInfo,e=new OpenLayers.Bounds(d.fullExtent.xmin,d.fullExtent.ymin,\n +d.fullExtent.xmax,d.fullExtent.ymax);this.projection="EPSG:"+d.spatialReference.wkid;this.sphericalMercator=102100==d.spatialReference.wkid;this.units="esriFeet"==d.units?"ft":"m";if(d.tileInfo){this.tileSize=new OpenLayers.Size(d.tileInfo.width||d.tileInfo.cols,d.tileInfo.height||d.tileInfo.rows);this.tileOrigin=new OpenLayers.LonLat(d.tileInfo.origin.x,d.tileInfo.origin.y);var f=new OpenLayers.Geometry.Point(e.left,e.top),e=new OpenLayers.Geometry.Point(e.right,e.bottom);this.useScales?this.scales=\n +[]:this.resolutions=[];this.lods=[];for(var g in d.tileInfo.lods)if(d.tileInfo.lods.hasOwnProperty(g)){var h=d.tileInfo.lods[g];this.useScales?this.scales.push(h.scale):this.resolutions.push(h.resolution);var i=this.getContainingTileCoords(f,h.resolution);h.startTileCol=i.x;h.startTileRow=i.y;i=this.getContainingTileCoords(e,h.resolution);h.endTileCol=i.x;h.endTileRow=i.y;this.lods.push(h)}this.maxExtent=this.calculateMaxExtentWithLOD(this.lods[0]);this.serverResolutions=this.resolutions;this.overrideDPI&&\n +d.tileInfo.dpi&&(OpenLayers.DOTS_PER_INCH=d.tileInfo.dpi)}}},getContainingTileCoords:function(a,b){return new OpenLayers.Pixel(Math.max(Math.floor((a.x-this.tileOrigin.lon)/(this.tileSize.w*b)),0),Math.max(Math.floor((this.tileOrigin.lat-a.y)/(this.tileSize.h*b)),0))},calculateMaxExtentWithLOD:function(a){var b=this.tileOrigin.lon+a.startTileCol*this.tileSize.w*a.resolution,c=this.tileOrigin.lat-a.startTileRow*this.tileSize.h*a.resolution;return new OpenLayers.Bounds(b,c-(a.endTileRow-a.startTileRow+\n +1)*this.tileSize.h*a.resolution,b+(a.endTileCol-a.startTileCol+1)*this.tileSize.w*a.resolution,c)},calculateMaxExtentWithExtent:function(a,b){var c=new OpenLayers.Geometry.Point(a.left,a.top),d=new OpenLayers.Geometry.Point(a.right,a.bottom),c=this.getContainingTileCoords(c,b),d=this.getContainingTileCoords(d,b);return this.calculateMaxExtentWithLOD({resolution:b,startTileCol:c.x,startTileRow:c.y,endTileCol:d.x,endTileRow:d.y})},getUpperLeftTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.left,\n +this.maxExtent.top),a)},getLowerRightTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.right,this.maxExtent.bottom),a)},getMaxExtentForResolution:function(a){var b=this.getUpperLeftTileCoord(a),c=this.getLowerRightTileCoord(a),d=this.tileOrigin.lon+b.x*this.tileSize.w*a,e=this.tileOrigin.lat-b.y*this.tileSize.h*a;return new OpenLayers.Bounds(d,e-(c.y-b.y+1)*this.tileSize.h*a,d+(c.x-b.x+1)*this.tileSize.w*a,e)},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGISCache(this.name,\n +this.url,this.options));return OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},getMaxExtent:function(){return this.maxExtent=this.getMaxExtentForResolution(this.map.getResolution())},getTileOrigin:function(){var a=this.getMaxExtent();return new OpenLayers.LonLat(a.left,a.bottom)},getURL:function(a){var b=this.getResolution(),c=this.tileOrigin.lon+b*this.tileSize.w/2,d=this.tileOrigin.lat-b*this.tileSize.h/2,a=a.getCenterLonLat(),c=Math.round(Math.abs((a.lon-c)/(b*this.tileSize.w))),d=Math.round(Math.abs((d-\n +a.lat)/(b*this.tileSize.h))),a=this.map.getZoom();if(this.lods){if(b=this.lods[this.map.getZoom()],c<b.startTileCol||c>b.endTileCol||d<b.startTileRow||d>b.endTileRow)return null}else{var e=this.getUpperLeftTileCoord(b),b=this.getLowerRightTileCoord(b);if(c<e.x||c>=b.x||d<e.y||d>=b.y)return null}b=this.url;e=""+c+d+a;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(e,b));this.useArcGISServer?b+="/tile/${z}/${y}/${x}":(c="C"+this.zeroPad(c,8,16),d="R"+this.zeroPad(d,8,16),a="L"+this.zeroPad(a,2,16),b=\n +b+"/${z}/${y}/${x}."+this.type);b=OpenLayers.String.format(b,{x:c,y:d,z:a});return OpenLayers.Util.urlAppend(b,OpenLayers.Util.getParameterString(this.params))},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a},CLASS_NAME:"OpenLayers.Layer.ArcGISCache"});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,drillDown:!1,maxFeatures:10,clickCallback:"click",output:"features",layers:null,queryVisible:!1,url:null,layerUrls:null,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));\n +!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(a.xy,\n +{})},getInfoForHover:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d,e=a.length-1;0<=e;--e)if(c=a[e],c instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||c.getVisibility()))d=OpenLayers.Util.isArray(c.url)?c.url[0]:c.url,!1===this.drillDown&&!this.url&&(this.url=d),(!0===this.drillDown||\n +this.urlMatches(d))&&b.push(c);return b},urlMatches:function(a){var b=OpenLayers.Util.isEquivalentUrl(this.url,a);if(!b&&this.layerUrls)for(var c=0,d=this.layerUrls.length;c<d;++c)if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[c],a)){b=!0;break}return b},buildWMSOptions:function(a,b,c,d){for(var e=[],f=[],g=0,h=b.length;g<h;g++)null!=b[g].params.LAYERS&&(e=e.concat(b[g].params.LAYERS),f=f.concat(this.getStyleNames(b[g])));b=b[0];g=this.map.getProjection();(h=b.projection)&&h.equals(this.map.getProjectionObject())&&\n +(g=h.getCode());d=OpenLayers.Util.extend({service:"WMS",version:b.params.VERSION,request:"GetFeatureInfo",exceptions:b.params.EXCEPTIONS,bbox:this.map.getExtent().toBBOX(null,b.reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:d,info_format:b.params.INFO_FORMAT||this.infoFormat},1.3<=parseFloat(b.params.VERSION)?{crs:g,i:parseInt(c.x),j:parseInt(c.y)}:{srs:g,x:parseInt(c.x),y:parseInt(c.y)});0!=e.length&&(d=OpenLayers.Util.extend({layers:e,\n +query_layers:e,styles:f},d));OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:a,params:OpenLayers.Util.upperCaseObject(d),callback:function(b){this.handleResponse(c,b,a)},scope:this}},getStyleNames:function(a){return a.params.STYLES?a.params.STYLES:OpenLayers.Util.isArray(a.params.LAYERS)?Array(a.params.LAYERS.length):a.params.LAYERS.replace(/[^,]/g,"")},request:function(a,b){var c=this.findLayers();if(0==c.length)this.events.triggerEvent("nogetfeatureinfo"),OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +"olCursorWait");else if(b=b||{},!1===this.drillDown){var c=this.buildWMSOptions(this.url,c,a,c[0].params.FORMAT),d=OpenLayers.Request.GET(c);!0===b.hover&&(this.hoverRequest=d)}else{this._numRequests=this._requestCount=0;this.features=[];for(var d={},e,f=0,g=c.length;f<g;f++){var h=c[f];e=OpenLayers.Util.isArray(h.url)?h.url[0]:h.url;e in d?d[e].push(h):(this._numRequests++,d[e]=[h])}for(e in d)c=d[e],c=this.buildWMSOptions(e,c,a,c[0].params.FORMAT),OpenLayers.Request.GET(c)}},triggerGetFeatureInfo:function(a,\n +b,c){this.events.triggerEvent("getfeatureinfo",{text:a.responseText,features:c,request:a,xy:b});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},handleResponse:function(a,b,c){var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;d=this.format.read(d);!1===this.drillDown?this.triggerGetFeatureInfo(b,a,d):(this._requestCount++,this._features="object"===this.output?(this._features||[]).concat({url:c,features:d}):(this._features||[]).concat(d),this._requestCount===this._numRequests&&\n +(this.triggerGetFeatureInfo(b,a,this._features.concat()),delete this._features,delete this._requestCount,delete this._numRequests))},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={features:[]};this.readNode(a,b);for(var a=[],c=0,d=b.features.length;c<d;c++){var e=b.features[c];this.internalProjection&&(this.externalProjection&&e.components[0])&&e.components[0].transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(e.components[0],e.attributes);a.push(e)}return a},readers:{sa:{SamplingPoint:function(a,b){if(!b.attributes){var c=\n +{attributes:{}};b.features.push(c);b=c}b.attributes.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},position:function(a,b){this.readChildNodes(a,b)}},gml:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,b){this.readChildNodes(a,b)},featureMember:function(a,b){var c={attributes:{}};b.features.push(c);this.readChildNodes(a,c)},name:function(a,b){b.attributes.name=this.getChildValue(a)},pos:function(a,b){this.externalProjection||(this.externalProjection=new OpenLayers.Projection(a.getAttribute("srsName")));\n +OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[a,b])}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{sos:{GetFeatureOfInterest:function(a){for(var b=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:"SOS","xsi:schemaLocation":this.schemaLocation}}),c=0,d=a.fois.length;c<d;c++)this.writeNode("FeatureOfInterestId",{foi:a.fois[c]},b);return b},FeatureOfInterestId:function(a){return this.createElementNSPlus("FeatureOfInterestId",{value:a.foi})}}},\n +CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",sa:"http://www.opengis.net/sampling/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",\n +defaultPrefix:"sos",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={measurements:[],observations:[]};this.readNode(a,b);return b},write:function(a){a=this.writeNode("sos:GetObservation",a);a.setAttribute("xmlns:om",this.namespaces.om);a.setAttribute("xmlns:ogc",this.namespaces.ogc);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[a])},readers:{om:{ObservationCollection:function(a,b){b.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},member:function(a,b){this.readChildNodes(a,b)},Measurement:function(a,b){var c={};b.measurements.push(c);this.readChildNodes(a,c)},Observation:function(a,b){var c={};b.observations.push(c);this.readChildNodes(a,c)},samplingTime:function(a,b){var c={};b.samplingTime=c;this.readChildNodes(a,c)},observedProperty:function(a,b){b.observedProperty=this.getAttributeNS(a,this.namespaces.xlink,\n +"href");this.readChildNodes(a,b)},procedure:function(a,b){b.procedure=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)},featureOfInterest:function(a,b){var c={features:[]};b.fois=[];b.fois.push(c);this.readChildNodes(a,c);for(var d=[],e=0,f=c.features.length;e<f;e++){var g=c.features[e];d.push(new OpenLayers.Feature.Vector(g.components[0],g.attributes))}c.features=d},result:function(a,b){var c={};b.result=c;""!==this.getChildValue(a)?(c.value=this.getChildValue(a),c.uom=\n +a.getAttribute("uom")):this.readChildNodes(a,c)}},sa:OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,gml:OpenLayers.Util.applyDefaults({TimeInstant:function(a,b){var c={};b.timeInstant=c;this.readChildNodes(a,c)},timePosition:function(a,b){b.timePosition=this.getChildValue(a)}},OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml)},writers:{sos:{GetObservation:function(a){var b=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:"SOS"}});this.writeNode("offering",\n +a,b);a.eventTime&&this.writeNode("eventTime",a,b);for(var c in a.procedures)this.writeNode("procedure",a.procedures[c],b);for(var d in a.observedProperties)this.writeNode("observedProperty",a.observedProperties[d],b);a.foi&&this.writeNode("featureOfInterest",a.foi,b);this.writeNode("responseFormat",a,b);a.resultModel&&this.writeNode("resultModel",a,b);a.responseMode&&this.writeNode("responseMode",a,b);return b},featureOfInterest:function(a){var b=this.createElementNSPlus("featureOfInterest");this.writeNode("ObjectID",\n +a.objectId,b);return b},ObjectID:function(a){return this.createElementNSPlus("ObjectID",{value:a})},responseFormat:function(a){return this.createElementNSPlus("responseFormat",{value:a.responseFormat})},procedure:function(a){return this.createElementNSPlus("procedure",{value:a})},offering:function(a){return this.createElementNSPlus("offering",{value:a.offering})},observedProperty:function(a){return this.createElementNSPlus("observedProperty",{value:a})},eventTime:function(a){var b=this.createElementNSPlus("eventTime");\n +"latest"===a.eventTime&&this.writeNode("ogc:TM_Equals",a,b);return b},resultModel:function(a){return this.createElementNSPlus("resultModel",{value:a.resultModel})},responseMode:function(a){return this.createElementNSPlus("responseMode",{value:a.responseMode})}},ogc:{TM_Equals:function(a){var b=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},b);"latest"===a.eventTime&&this.writeNode("gml:TimeInstant",{value:"latest"},b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",\n +{value:a.property})}},gml:{TimeInstant:function(a){var b=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",a,b);return b},timePosition:function(a){return this.createElementNSPlus("gml:timePosition",{value:a.value})}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Control.UTFGrid=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,layers:null,defaultHandlerOptions:{delay:300,pixelTolerance:4,stopMove:!1,single:!0,"double":!1,stopSingle:!1,stopDouble:!1},handlerMode:"click",setHandler:function(a){this.handlerMode=a;this.resetHandler()},resetHandler:function(){this.handler&&(this.handler.deactivate(),this.handler.destroy(),this.handler=null);"hover"==this.handlerMode?this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.reset},\n +this.handlerOptions):"click"==this.handlerMode?this.handler=new OpenLayers.Handler.Click(this,{click:this.handleEvent},this.handlerOptions):"move"==this.handlerMode&&(this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.handleEvent},this.handlerOptions));return this.handler?!0:!1},initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||this.defaultHandlerOptions;OpenLayers.Control.prototype.initialize.apply(this,[a]);this.resetHandler()},handleEvent:function(a){if(null==\n +a)this.reset();else{var b=this.map.getLonLatFromPixel(a.xy);if(b){var c=this.findLayers();if(0<c.length){for(var d={},e,f,g=0,h=c.length;g<h;g++)e=c[g],f=OpenLayers.Util.indexOf(this.map.layers,e),d[f]=e.getFeatureInfo(b);this.callback(d,b,a.xy)}}}},callback:function(){},reset:function(){this.callback(null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)c=a[d],c instanceof OpenLayers.Layer.UTFGrid&&b.push(c);return b},CLASS_NAME:"OpenLayers.Control.UTFGrid"});OpenLayers.Format.CQL=function(){function a(a){function b(){var a=e.pop();switch(a.type){case "LOGICAL":var c=b(),g=b();return new OpenLayers.Filter.Logical({filters:[g,c],type:f[a.text.toUpperCase()]});case "NOT":return c=b(),new OpenLayers.Filter.Logical({filters:[c],type:OpenLayers.Filter.Logical.NOT});case "BETWEEN":return e.pop(),g=b(),a=b(),c=b(),new OpenLayers.Filter.Comparison({property:c,lowerBoundary:a,upperBoundary:g,type:OpenLayers.Filter.Comparison.BETWEEN});case "COMPARISON":return g=\n +b(),c=b(),new OpenLayers.Filter.Comparison({property:c,value:g,type:d[a.text.toUpperCase()]});case "VALUE":return/^\'.*\'$/.test(a.text)?a.text.substr(1,a.text.length-2):Number(a.text);case "SPATIAL":switch(a.text.toUpperCase()){case "BBOX":var c=b(),a=b(),g=b(),h=b(),i=b();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:i,value:OpenLayers.Bounds.fromArray([h,g,a,c])});case "INTERSECTS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,\n +property:c,value:g});case "WITHIN":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.WITHIN,property:c,value:g});case "CONTAINS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.CONTAINS,property:c,value:g});case "DWITHIN":return a=b(),g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,value:g,property:c,distance:Number(a)})}case "GEOMETRY":return OpenLayers.Geometry.fromWKT(a.text);default:return a.text}}\n +for(var c=[],e=[];a.length;){var g=a.shift();switch(g.type){case "PROPERTY":case "GEOMETRY":case "VALUE":e.push(g);break;case "COMPARISON":case "BETWEEN":case "LOGICAL":for(var i=h[g.type];0<c.length&&h[c[c.length-1].type]<=i;)e.push(c.pop());c.push(g);break;case "SPATIAL":case "NOT":case "LPAREN":c.push(g);break;case "RPAREN":for(;0<c.length&&"LPAREN"!=c[c.length-1].type;)e.push(c.pop());c.pop();0<c.length&&"SPATIAL"==c[c.length-1].type&&e.push(c.pop());case "COMMA":case "END":break;default:throw Error("Unknown token type "+\n +g.type);}}for(;0<c.length;)e.push(c.pop());a=b();if(0<e.length){a="Remaining tokens after building AST: \\n";for(c=e.length-1;0<=c;c--)a+=e[c].type+": "+e[c].text+"\\n";throw Error(a);}return a}var b={PROPERTY:/^[_a-zA-Z]\\w*/,COMPARISON:/^(=|<>|<=|<|>=|>|LIKE)/i,COMMA:/^,/,LOGICAL:/^(AND|OR)/i,VALUE:/^(\'\\w+\'|\\d+(\\.\\d*)?|\\.\\d+)/,LPAREN:/^\\(/,RPAREN:/^\\)/,SPATIAL:/^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,NOT:/^NOT/i,BETWEEN:/^BETWEEN/i,GEOMETRY:function(a){var b=/^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(a);\n +if(b){var c=a.length,b=a.indexOf("(",b[0].length);if(-1<b)for(var d=1;b<c&&0<d;)switch(b++,a.charAt(b)){case "(":d++;break;case ")":d--}return[a.substr(0,b+1)]}},END:/^$/},c={LPAREN:["GEOMETRY","SPATIAL","PROPERTY","VALUE","LPAREN"],RPAREN:["NOT","LOGICAL","END","RPAREN"],PROPERTY:["COMPARISON","BETWEEN","COMMA"],BETWEEN:["VALUE"],COMPARISON:["VALUE"],COMMA:["GEOMETRY","VALUE","PROPERTY"],VALUE:["LOGICAL","COMMA","RPAREN","END"],SPATIAL:["LPAREN"],LOGICAL:["NOT","VALUE","SPATIAL","PROPERTY","LPAREN"],\n +NOT:["PROPERTY","LPAREN"],GEOMETRY:["COMMA","RPAREN"]},d={"=":OpenLayers.Filter.Comparison.EQUAL_TO,"<>":OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"<":OpenLayers.Filter.Comparison.LESS_THAN,"<=":OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,">":OpenLayers.Filter.Comparison.GREATER_THAN,">=":OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,LIKE:OpenLayers.Filter.Comparison.LIKE,BETWEEN:OpenLayers.Filter.Comparison.BETWEEN},e={},f={AND:OpenLayers.Filter.Logical.AND,OR:OpenLayers.Filter.Logical.OR},\n +g={},h={RPAREN:3,LOGICAL:2,COMPARISON:1},i;for(i in d)d.hasOwnProperty(i)&&(e[d[i]]=i);for(i in f)f.hasOwnProperty(i)&&(g[f[i]]=i);return OpenLayers.Class(OpenLayers.Format,{read:function(d){var e=d,d=[],f,g=["NOT","GEOMETRY","SPATIAL","PROPERTY","LPAREN"];do{a:{f=g;for(var h=void 0,g=void 0,i=f.length,h=0;h<i;h++){var g=f[h],p=b[g]instanceof RegExp?b[g].exec(e):(0,b[g])(e);if(p){f=p[0];e=e.substr(f.length).replace(/^\\s*/,"");f={type:g,text:f,remainder:e};break a}}d="ERROR: In parsing: ["+e+"], expected one of: ";\n +for(h=0;h<i;h++)g=f[h],d+="\\n "+g+": "+b[g];throw Error(d);}e=f.remainder;g=c[f.type];if("END"!=f.type&&!g)throw Error("No follows list for "+f.type);d.push(f)}while("END"!=f.type);d=a(d);this.keepData&&(this.data=d);return d},write:function(a){if(a instanceof OpenLayers.Geometry)return a.toString();switch(a.CLASS_NAME){case "OpenLayers.Filter.Spatial":switch(a.type){case OpenLayers.Filter.Spatial.BBOX:return"BBOX("+a.property+","+a.value.toBBOX()+")";case OpenLayers.Filter.Spatial.DWITHIN:return"DWITHIN("+\n +a.property+", "+this.write(a.value)+", "+a.distance+")";case OpenLayers.Filter.Spatial.WITHIN:return"WITHIN("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.INTERSECTS:return"INTERSECTS("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.CONTAINS:return"CONTAINS("+a.property+", "+this.write(a.value)+")";default:throw Error("Unknown spatial filter type: "+a.type);}case "OpenLayers.Filter.Logical":if(a.type==OpenLayers.Filter.Logical.NOT)return"NOT ("+this.write(a.filters[0])+\n +")";for(var b="(",c=!0,d=0;d<a.filters.length;d++)c?c=!1:b+=") "+g[a.type]+" (",b+=this.write(a.filters[d]);return b+")";case "OpenLayers.Filter.Comparison":return a.type==OpenLayers.Filter.Comparison.BETWEEN?a.property+" BETWEEN "+this.write(a.lowerBoundary)+" AND "+this.write(a.upperBoundary):a.property+" "+e[a.type]+" "+this.write(a.value);case void 0:if("string"===typeof a)return"\'"+a+"\'";if("number"===typeof a)return""+a;default:throw Error("Can\'t encode: "+a.CLASS_NAME+" "+a);}},CLASS_NAME:"OpenLayers.Format.CQL"})}();OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{layer:null,source:null,sourceOptions:null,tolerance:null,edge:!0,deferDelete:!1,mutual:!0,targetFilter:null,sourceFilter:null,handler:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.source&&this.setSource(this.options.source)},setSource:function(a){this.active?(this.deactivate(),this.handler&&(this.handler.destroy(),delete this.handler),this.source=a,this.activate()):this.source=\n +a},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)if(this.source){if(this.source.events)this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this})}else this.handler||(this.handler=new OpenLayers.Handler.Path(this,{done:function(a){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(a)})}},{layerOptions:this.sourceOptions})),this.handler.activate();return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);\n +a&&this.source&&this.source.events&&this.layer.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});return a},onSketchComplete:function(a){this.feature=null;return!this.considerSplit(a.feature)},afterFeatureModified:function(a){a.modified&&"function"===typeof a.feature.geometry.split&&(this.feature=a.feature,this.considerSplit(a.feature))},removeByGeometry:function(a,b){for(var c=0,d=a.length;c<d;++c)if(a[c].geometry===b){a.splice(c,1);break}},\n +isEligible:function(a){return a.geometry?a.state!==OpenLayers.State.DELETE&&"function"===typeof a.geometry.split&&this.feature!==a&&(!this.targetFilter||this.targetFilter.evaluate(a.attributes)):!1},considerSplit:function(a){var b=!1,c=!1;if(!this.sourceFilter||this.sourceFilter.evaluate(a.attributes)){for(var d=this.layer&&this.layer.features||[],e,f,g=[],h=[],i=this.layer===this.source&&this.mutual,j={edge:this.edge,tolerance:this.tolerance,mutual:i},k=[a.geometry],l,m,n,o=0,p=d.length;o<p;++o)if(l=\n +d[o],this.isEligible(l)){m=[l.geometry];for(var q=0;q<k.length;++q){n=k[q];for(var r=0;r<m.length;++r)if(e=m[r],n.getBounds().intersectsBounds(e.getBounds())&&(e=n.split(e,j)))if(f=this.events.triggerEvent("beforesplit",{source:a,target:l}),!1!==f&&(i&&(f=e[0],1<f.length&&(f.unshift(q,1),Array.prototype.splice.apply(k,f),q+=f.length-3),e=e[1]),1<e.length))e.unshift(r,1),Array.prototype.splice.apply(m,e),r+=e.length-3}m&&1<m.length&&(this.geomsToFeatures(l,m),this.events.triggerEvent("split",{original:l,\n +features:m}),Array.prototype.push.apply(g,m),h.push(l),c=!0)}k&&1<k.length&&(this.geomsToFeatures(a,k),this.events.triggerEvent("split",{original:a,features:k}),Array.prototype.push.apply(g,k),h.push(a),b=!0);if(b||c){if(this.deferDelete){d=[];o=0;for(p=h.length;o<p;++o)c=h[o],c.state===OpenLayers.State.INSERT?d.push(c):(c.state=OpenLayers.State.DELETE,this.layer.drawFeature(c));this.layer.destroyFeatures(d,{silent:!0});o=0;for(p=g.length;o<p;++o)g[o].state=OpenLayers.State.INSERT}else this.layer.destroyFeatures(h,\n +{silent:!0});this.layer.addFeatures(g,{silent:!0});this.events.triggerEvent("aftersplit",{source:a,features:g})}}return b},geomsToFeatures:function(a,b){var c=a.clone();delete c.geometry;for(var d,e=0,f=b.length;e<f;++e)d=c.clone(),d.geometry=b[e],d.state=OpenLayers.State.INSERT,b[e]=d},destroy:function(){this.active&&this.deactivate();OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Split"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,serverResolutions:null,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png",png:"png","image/jpeg":"jpg","image/jpg":"jpg",jpeg:"jpg",jpg:"jpg"},matrix:null,initialize:function(a){var b=\n +{url:!0,layer:!0,style:!0,matrixSet:!0},c;for(c in b)if(!(c in a))throw Error("Missing property \'"+c+"\' in layer configuration.");a.params=OpenLayers.Util.upperCaseObject(a.params);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,a.params,a]);this.formatSuffix||(this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop());if(this.matrixIds&&(a=this.matrixIds.length)&&"string"===typeof this.matrixIds[0]){b=this.matrixIds;this.matrixIds=Array(a);for(c=0;c<a;++c)this.matrixIds[c]=\n +{identifier:b[c]}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties()},updateMatrixProperties:function(){if(this.matrix=this.getMatrix())if(this.matrix.topLeftCorner&&(this.tileOrigin=this.matrix.topLeftCorner),this.matrix.tileWidth&&this.matrix.tileHeight&&(this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight)),this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top)),!this.tileFullExtent)this.tileFullExtent=\n +this.maxExtent},moveTo:function(a,b,c){(b||!this.matrix)&&this.updateMatrixProperties();return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMTS(this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getIdentifier:function(){return this.getServerZoom()},getMatrix:function(){var a;if(!this.matrixIds||0===this.matrixIds.length)a={identifier:this.getIdentifier()};else if("scaleDenominator"in this.matrixIds[0])for(var b=\n +OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.getServerResolution()/2.8E-4,c=Number.POSITIVE_INFINITY,d,e=0,f=this.matrixIds.length;e<f;++e)d=Math.abs(1-this.matrixIds[e].scaleDenominator/b),d<c&&(c=d,a=this.matrixIds[e]);else a=this.matrixIds[this.getIdentifier()];return a},getTileInfo:function(a){var b=this.getServerResolution(),c=(a.lon-this.tileOrigin.lon)/(b*this.tileSize.w),a=(this.tileOrigin.lat-a.lat)/(b*this.tileSize.h),b=Math.floor(c),d=Math.floor(a);return{col:b,\n +row:d,i:Math.floor((c-b)*this.tileSize.w),j:Math.floor((a-d)*this.tileSize.h)}},getURL:function(a){var a=this.adjustBounds(a),b="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(a)){var c=this.getTileInfo(a.getCenterLonLat()),a=this.dimensions;if("REST"===this.requestEncoding.toUpperCase())if(b=this.params,"string"===typeof this.url&&-1!==this.url.indexOf("{")){var d=this.url.replace(/\\{/g,"${"),c={style:this.style,Style:this.style,TileMatrixSet:this.matrixSet,TileMatrix:this.matrix.identifier,\n +TileRow:c.row,TileCol:c.col};if(a){var e,f;for(f=a.length-1;0<=f;--f)e=a[f],c[e]=b[e.toUpperCase()]}b=OpenLayers.String.format(d,c)}else{d=this.version+"/"+this.layer+"/"+this.style+"/";if(a)for(f=0;f<a.length;f++)b[a[f]]&&(d=d+b[a[f]]+"/");d=d+this.matrixSet+"/"+this.matrix.identifier+"/"+c.row+"/"+c.col+"."+this.formatSuffix;b=OpenLayers.Util.isArray(this.url)?this.selectUrl(d,this.url):this.url;b.match(/\\/$/)||(b+="/");b+=d}else"KVP"===this.requestEncoding.toUpperCase()&&(b={SERVICE:"WMTS",REQUEST:"GetTile",\n +VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:c.row,TILECOL:c.col,FORMAT:this.format},b=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[b]))}return b},mergeNewParams:function(a){if("KVP"===this.requestEncoding.toUpperCase())return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(a)])},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||\n +{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format,c=OpenLayers.Format.XML.prototype.write.apply(c,[c.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.features=this.parseFeatures(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;\n +b.callback.call(b.scope,a)}},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{jpeg:"jpg",gif:"gif",png:"png",png8:"png",png24:"png",dithered:"png"},DEFAULT_FORMAT:"jpeg",initialize:function(a,b,c,d){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||this.DEFAULT_FORMAT]},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b),a=\n +-Math.round(a.top/b),b=Math.floor(d/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w,e=Math.floor(a/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h,c=["/",this.params.map,"/",c,"/",this.params.g.replace(/\\s/g,"_"),"/def/t",e,"/l",b,"/t",a,"l",d,".",this.extension],d=this.url;OpenLayers.Util.isArray(d)&&(d=this.selectUrl(c.join(""),d));return d+c.join("")},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",initialize:function(a){OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this,arguments);this.outputFormat&&!this.readFormat&&("gml2"==this.outputFormat.toLowerCase()?this.readFormat=new OpenLayers.Format.GML.v2({featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName}):"json"==this.outputFormat.toLowerCase()&&(this.readFormat=new OpenLayers.Format.GeoJSON))},CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1_1,{version:"1.1.1",profile:"WMSC",readers:{wms:OpenLayers.Util.applyDefaults({VendorSpecificCapabilities:function(a,b){b.vendorSpecific={tileSets:[]};this.readChildNodes(a,b.vendorSpecific)},TileSet:function(a,b){var c={srs:{},bbox:{},resolutions:[]};this.readChildNodes(a,c);b.tileSets.push(c)},Resolutions:function(a,b){for(var c=this.getChildValue(a).split(" "),d=0,e=c.length;d<e;d++)""!=c[d]&&b.resolutions.push(parseFloat(c[d]))},\n +Width:function(a,b){b.width=parseInt(this.getChildValue(a))},Height:function(a,b){b.height=parseInt(this.getChildValue(a))},Layers:function(a,b){b.layers=this.getChildValue(a)},Styles:function(a,b){b.styles=this.getChildValue(a)}},OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){for(var c=this.getChildValue(a).split(/ +/),d=0,e=c.length;d<e;d++)b.srs[c[d]]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{roundedCorner:!1,roundedCornerColor:"darkblue",layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[];this.roundedCorner&&OpenLayers.Console.warn("roundedCorner option is deprecated")},destroy:function(){this.clearLayersArray("base");\n +this.clearLayersArray("data");this.map.events.un({buttonclick:this.onButtonClick,addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,scope:this});this.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,\n +scope:this});this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();this.outsideViewport||this.minimizeControl();this.redraw();return this.div},onButtonClick:function(a){a=a.buttonElement;a===this.minimizeDiv?this.minimizeControl():a===this.maximizeDiv?this.maximizeControl():a._layerSwitcher===\n +this.id&&(a["for"]&&(a=document.getElementById(a["for"])),a.disabled||("radio"==a.type?(a.checked=!0,this.map.setBaseLayer(this.map.getLayer(a._layer))):(a.checked=!a.checked,this.updateMap())))},clearLayersArray:function(a){this[a+"LayersDiv"].innerHTML="";this[a+"Layers"]=[]},checkRedraw:function(){var a=!1;if(!this.layerStates.length||this.map.layers.length!=this.layerStates.length)a=!0;else for(var b=0,c=this.layerStates.length;b<c;b++){var d=this.layerStates[b],e=this.map.layers[b];if(d.name!=\n +e.name||d.inRange!=e.inRange||d.id!=e.id||d.visibility!=e.visibility){a=!0;break}}return a},redraw:function(){if(!this.checkRedraw())return this.div;this.clearLayersArray("base");this.clearLayersArray("data");var a=!1,b=!1,c=this.map.layers.length;this.layerStates=Array(c);for(var d=0;d<c;d++){var e=this.map.layers[d];this.layerStates[d]={name:e.name,visibility:e.visibility,inRange:e.inRange,id:e.id}}var f=this.map.layers.slice();this.ascending||f.reverse();d=0;for(c=f.length;d<c;d++){var e=f[d],\n +g=e.isBaseLayer;if(e.displayInLayerSwitcher){g?b=!0:a=!0;var h=g?e==this.map.baseLayer:e.getVisibility(),i=document.createElement("input");i.id=this.id+"_input_"+e.name;i.name=g?this.id+"_baseLayers":e.name;i.type=g?"radio":"checkbox";i.value=e.name;i.checked=h;i.defaultChecked=h;i.className="olButton";i._layer=e.id;i._layerSwitcher=this.id;!g&&!e.inRange&&(i.disabled=!0);h=document.createElement("label");h["for"]=i.id;OpenLayers.Element.addClass(h,"labelSpan olButton");h._layer=e.id;h._layerSwitcher=\n +this.id;!g&&!e.inRange&&(h.style.color="gray");h.innerHTML=e.name;h.style.verticalAlign=g?"bottom":"baseline";var j=document.createElement("br");(g?this.baseLayers:this.dataLayers).push({layer:e,inputElem:i,labelSpan:h});e=g?this.baseLayersDiv:this.dataLayersDiv;e.appendChild(i);e.appendChild(h);e.appendChild(j)}}this.dataLbl.style.display=a?"":"none";this.baseLbl.style.display=b?"":"none";return this.div},updateMap:function(){for(var a=0,b=this.baseLayers.length;a<b;a++){var c=this.baseLayers[a];\n +c.inputElem.checked&&this.map.setBaseLayer(c.layer,!1)}a=0;for(b=this.dataLayers.length;a<b;a++)c=this.dataLayers[a],c.layer.setVisibility(c.inputElem.checked)},maximizeControl:function(a){this.div.style.width="";this.div.style.height="";this.showControls(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.div.style.width="0px";this.div.style.height="0px";this.showControls(!0);null!=a&&OpenLayers.Event.stop(a)},showControls:function(a){this.maximizeDiv.style.display=a?"":"none";\n +this.minimizeDiv.style.display=a?"none":"";this.layersDiv.style.display=a?"none":""},loadContents:function(){this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("Base Layer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");\n +this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("Overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,"dataLayersDiv");this.ascending?(this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv),this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv)):(this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv),\n +this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv));this.div.appendChild(this.layersDiv);this.roundedCorner&&(OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.roundedCornerColor,blend:!1}),OpenLayers.Rico.Corner.changeOpacity(this.layersDiv,0.75));var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,null,a,"absolute");\n +OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv olButton");this.maximizeDiv.style.display="none";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,null,a,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv olButton");this.minimizeDiv.style.display="none";this.div.appendChild(this.minimizeDiv)},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:!1,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));return this.parseFeatures(a)},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNSPlus("atom:feed");b.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));\n +for(var c=0,d=a.length;c<d;c++)b.appendChild(this.buildEntryNode(a[c]))}else b=this.buildEntryNode(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},buildContentNode:function(a){var b=this.createElementNSPlus("atom:content",{attributes:{type:a.type||null}});if(a.src)b.setAttribute("src",a.src);else if("text"==a.type||null==a.type)b.appendChild(this.createTextNode(a.value));else if("html"==a.type){if("string"!=typeof a.value)throw"HTML content must be in form of an escaped string";b.appendChild(this.createTextNode(a.value))}else"xhtml"==\n +a.type?b.appendChild(a.value):"xhtml"==a.type||a.type.match(/(\\+|\\/)xml$/)?b.appendChild(a.value):b.appendChild(this.createTextNode(a.value));return b},buildEntryNode:function(a){var b=a.attributes,c=b.atom||{},d=this.createElementNSPlus("atom:entry");if(c.authors)for(var e=OpenLayers.Util.isArray(c.authors)?c.authors:[c.authors],f=0,g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("author",e[f]));if(c.categories)for(var e=OpenLayers.Util.isArray(c.categories)?c.categories:[c.categories],\n +h,f=0,g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:h.term,scheme:h.scheme||null,label:h.label||null}}));c.content&&d.appendChild(this.buildContentNode(c.content));if(c.contributors){e=OpenLayers.Util.isArray(c.contributors)?c.contributors:[c.contributors];f=0;for(g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("contributor",e[f]))}a.fid&&d.appendChild(this.createElementNSPlus("atom:id",{value:a.fid}));if(c.links){e=OpenLayers.Util.isArray(c.links)?\n +c.links:[c.links];f=0;for(g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:h.href,rel:h.rel||null,type:h.type||null,hreflang:h.hreflang||null,title:h.title||null,length:h.length||null}}))}c.published&&d.appendChild(this.createElementNSPlus("atom:published",{value:c.published}));c.rights&&d.appendChild(this.createElementNSPlus("atom:rights",{value:c.rights}));if(c.summary||b.description)d.appendChild(this.createElementNSPlus("atom:summary",{value:c.summary||\n +b.description}));d.appendChild(this.createElementNSPlus("atom:title",{value:c.title||b.title||this.defaultEntryTitle}));c.updated&&d.appendChild(this.createElementNSPlus("atom:updated",{value:c.updated}));a.geometry&&(b=this.createElementNSPlus("georss:where"),b.appendChild(this.buildGeometryNode(a.geometry)),d.appendChild(b));return d},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,\n +externalProjection:this.externalProjection})},buildGeometryNode:function(a){this.gmlParser||this.initGmlParser();return this.gmlParser.writeNode("feature:_geometry",a).firstChild},buildPersonConstructNode:function(a,b){var c=["uri","email"],d=this.createElementNSPlus("atom:"+a);d.appendChild(this.createElementNSPlus("atom:name",{value:b.name}));for(var e=0,f=c.length;e<f;e++)b[c[e]]&&d.appendChild(this.createElementNSPlus("atom:"+c[e],{value:b[c[e]]}));return d},getFirstChildValue:function(a,b,c,\n +d){return(a=this.getElementsByTagNameNS(a,b,c))&&0<a.length?this.getChildValue(a[0],d):d},parseFeature:function(a){var b={},c=null,d=null,e=null,f=this.namespaces.atom;this.parsePersonConstructs(a,"author",b);d=this.getElementsByTagNameNS(a,f,"category");0<d.length&&(b.categories=[]);for(var g=0,h=d.length;g<h;g++){c={};c.term=d[g].getAttribute("term");if(e=d[g].getAttribute("scheme"))c.scheme=e;if(e=d[g].getAttribute("label"))c.label=e;b.categories.push(c)}d=this.getElementsByTagNameNS(a,f,"content");\n +if(0<d.length){c={};if(e=d[0].getAttribute("type"))c.type=e;(e=d[0].getAttribute("src"))?c.src=e:(c.value="text"==c.type||"html"==c.type||null==c.type?this.getFirstChildValue(a,f,"content",null):"xhtml"==c.type||c.type.match(/(\\+|\\/)xml$/)?this.getChildEl(d[0]):this.getFirstChildValue(a,f,"content",null),b.content=c)}this.parsePersonConstructs(a,"contributor",b);b.id=this.getFirstChildValue(a,f,"id",null);d=this.getElementsByTagNameNS(a,f,"link");0<d.length&&(b.links=Array(d.length));for(var i=["rel",\n +"type","hreflang","title","length"],g=0,h=d.length;g<h;g++){c={};c.href=d[g].getAttribute("href");for(var j=0,k=i.length;j<k;j++)(e=d[g].getAttribute(i[j]))&&(c[i[j]]=e);b.links[g]=c}if(c=this.getFirstChildValue(a,f,"published",null))b.published=c;if(c=this.getFirstChildValue(a,f,"rights",null))b.rights=c;if(c=this.getFirstChildValue(a,f,"summary",null))b.summary=c;b.title=this.getFirstChildValue(a,f,"title",null);b.updated=this.getFirstChildValue(a,f,"updated",null);c={title:b.title,description:b.summary,\n +atom:b};a=this.parseLocations(a)[0];a=new OpenLayers.Feature.Vector(a,c);a.fid=b.id;return a},parseFeatures:function(a){var b=[],c=this.getElementsByTagNameNS(a,this.namespaces.atom,"entry");0==c.length&&(c=[a]);for(var a=0,d=c.length;a<d;a++)b.push(this.parseFeature(c[a]));return b},parseLocations:function(a){var b=this.namespaces.georss,c={components:[]},d=this.getElementsByTagNameNS(a,b,"where");if(d&&0<d.length){this.gmlParser||this.initGmlParser();for(var e=0,f=d.length;e<f;e++)this.gmlParser.readChildNodes(d[e],\n +c)}c=c.components;if((d=this.getElementsByTagNameNS(a,b,"point"))&&0<d.length){e=0;for(f=d.length;e<f;e++){var g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\\s+/);2!=g.length&&(g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\\s*,\\s*/));c.push(new OpenLayers.Geometry.Point(g[1],g[0]))}}var h=this.getElementsByTagNameNS(a,b,"line");if(h&&0<h.length)for(var i,e=0,f=h.length;e<f;e++){d=OpenLayers.String.trim(h[e].firstChild.nodeValue).split(/\\s+/);i=[];for(var j=0,k=d.length;j<\n +k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.LineString(i))}if((a=this.getElementsByTagNameNS(a,b,"polygon"))&&0<a.length){e=0;for(f=a.length;e<f;e++){d=OpenLayers.String.trim(a[e].firstChild.nodeValue).split(/\\s+/);i=[];j=0;for(k=d.length;j<k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(c)]))}}if(this.internalProjection&&this.externalProjection){e=0;for(f=c.length;e<\n +f;e++)c[e]&&c[e].transform(this.externalProjection,this.internalProjection)}return c},parsePersonConstructs:function(a,b,c){for(var d=[],e=this.namespaces.atom,a=this.getElementsByTagNameNS(a,e,b),f=["uri","email"],g=0,h=a.length;g<h;g++){var i={};i.name=this.getFirstChildValue(a[g],e,"name",null);for(var j=0,k=f.length;j<k;j++){var l=this.getFirstChildValue(a[g],e,f[j],null);l&&(i[f[j]]=l)}d.push(i)}0<d.length&&(c[b+"s"]=d)},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,slideFactor:75,observeElement:null,draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{keydown:this.defaultKeyPress},{observeElement:this.observeElement||document})},defaultKeyPress:function(a){var b,c=!0;switch(a.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,\n +-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:b=this.map.getSize();this.map.pan(0,-0.75*b.h);break;case 34:b=this.map.getSize();this.map.pan(0,0.75*b.h);break;case 35:b=this.map.getSize();this.map.pan(0.75*b.w,0);break;case 36:b=this.map.getSize();this.map.pan(-0.75*b.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();break;default:c=!1}c&&OpenLayers.Event.stop(a)},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a;a=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(a,this.yx)},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);b.version=this.version;return b},readers:{wmts:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contents={};b.contents.layers=[];b.contents.tileMatrixSets={};this.readChildNodes(a,b.contents)},Layer:function(a,b){var c={styles:[],formats:[],dimensions:[],tileMatrixSetLinks:[],layers:[]};this.readChildNodes(a,c);b.layers.push(c)},Style:function(a,\n +b){var c={};c.isDefault="true"===a.getAttribute("isDefault");this.readChildNodes(a,c);b.styles.push(c)},Format:function(a,b){b.formats.push(this.getChildValue(a))},TileMatrixSetLink:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLinks.push(c)},TileMatrixSet:function(a,b){if(b.layers){var c={matrixIds:[]};this.readChildNodes(a,c);b.tileMatrixSets[c.identifier]=c}else b.tileMatrixSet=this.getChildValue(a)},TileMatrix:function(a,b){var c={supportedCRS:b.supportedCRS};this.readChildNodes(a,\n +c);b.matrixIds.push(c)},ScaleDenominator:function(a,b){b.scaleDenominator=parseFloat(this.getChildValue(a))},TopLeftCorner:function(a,b){var c=this.getChildValue(a).split(" "),d;b.supportedCRS&&(d=!!this.yx[b.supportedCRS.replace(/urn:ogc:def:crs:(\\w+):.+:(\\w+)$/,"urn:ogc:def:crs:$1::$2")]);b.topLeftCorner=d?new OpenLayers.LonLat(c[1],c[0]):new OpenLayers.LonLat(c[0],c[1])},TileWidth:function(a,b){b.tileWidth=parseInt(this.getChildValue(a))},TileHeight:function(a,b){b.tileHeight=parseInt(this.getChildValue(a))},\n +MatrixWidth:function(a,b){b.matrixWidth=parseInt(this.getChildValue(a))},MatrixHeight:function(a,b){b.matrixHeight=parseInt(this.getChildValue(a))},ResourceURL:function(a,b){b.resourceUrl=b.resourceUrl||{};b.resourceUrl[a.getAttribute("resourceType")]={format:a.getAttribute("format"),template:a.getAttribute("template")}},WSDL:function(a,b){b.wsdl={};b.wsdl.href=a.getAttribute("xlink:href")},ServiceMetadataURL:function(a,b){b.serviceMetadataUrl={};b.serviceMetadataUrl.href=a.getAttribute("xlink:href")},\n +LegendURL:function(a,b){b.legend={};b.legend.href=a.getAttribute("xlink:href");b.legend.format=a.getAttribute("format")},Dimension:function(a,b){var c={values:[]};this.readChildNodes(a,c);b.dimensions.push(c)},Default:function(a,b){b["default"]=this.getChildValue(a)},Value:function(a,b){b.values.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme.xml new file mode 100644 index 0000000000000000000000000000000000000000..7470998eaa8ecb9da2e48865f15f1911bd63f310 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>theme</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>theme</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default.xml new file mode 100644 index 0000000000000000000000000000000000000000..a2cb14b5086b86839428869a123d32b2de3b6286 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>default</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>default</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default/style.css.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default/style.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..97fa5336d51d91546b18fddb8c798f9a414629e2 --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default/style.css.xml @@ -0,0 +1,524 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54195359.72</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>style.css</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/css</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string>div.olMap {\n + z-index: 0;\n + padding: 0 !important;\n + margin: 0 !important;\n + cursor: default;\n +}\n +\n +div.olMapViewport {\n + text-align: left;\n +}\n +\n +div.olLayerDiv {\n + -moz-user-select: none;\n + -khtml-user-select: none;\n +}\n +\n +.olLayerGoogleCopyright {\n + left: 2px;\n + bottom: 2px;\n +}\n +.olLayerGoogleV3.olLayerGoogleCopyright {\n + right: auto !important;\n +}\n +.olLayerGooglePoweredBy {\n + left: 2px;\n + bottom: 15px;\n +}\n +.olLayerGoogleV3.olLayerGooglePoweredBy {\n + bottom: 15px !important;\n +}\n +.olControlAttribution {\n + font-size: smaller;\n + right: 3px;\n + bottom: 4.5em;\n + position: absolute;\n + display: block;\n +}\n +.olControlScale {\n + right: 3px;\n + bottom: 3em;\n + display: block;\n + position: absolute;\n + font-size: smaller;\n +}\n +.olControlScaleLine {\n + display: block;\n + position: absolute;\n + left: 10px;\n + bottom: 15px;\n + font-size: xx-small;\n +}\n +.olControlScaleLineBottom {\n + border: solid 2px black;\n + border-bottom: none;\n + margin-top:-2px;\n + text-align: center;\n +}\n +.olControlScaleLineTop {\n + border: solid 2px black;\n + border-top: none;\n + text-align: center;\n +}\n +\n +.olControlPermalink {\n + right: 3px;\n + bottom: 1.5em;\n + display: block;\n + position: absolute;\n + font-size: smaller;\n +}\n +\n +div.olControlMousePosition {\n + bottom: 0;\n + right: 3px;\n + display: block;\n + position: absolute;\n + font-family: Arial;\n + font-size: smaller;\n +}\n +\n +.olControlOverviewMapContainer {\n + position: absolute;\n + bottom: 0;\n + right: 0;\n +}\n +\n +.olControlOverviewMapElement {\n + padding: 10px 18px 10px 10px;\n + background-color: #00008B;\n + -moz-border-radius: 1em 0 0 0;\n +}\n +\n +.olControlOverviewMapMinimizeButton,\n +.olControlOverviewMapMaximizeButton {\n + height: 18px;\n + width: 18px;\n + right: 0;\n + bottom: 80px;\n + cursor: pointer;\n +}\n +\n +.olControlOverviewMapExtentRectangle {\n + overflow: hidden;\n + background-image: url("img/blank.gif");\n + cursor: move;\n + border: 2px dotted red;\n +}\n +.olControlOverviewMapRectReplacement {\n + overflow: hidden;\n + cursor: move;\n + background-image: url("img/overview_replacement.gif");\n + background-repeat: no-repeat;\n + background-position: center;\n +}\n +\n +.olLayerGeoRSSDescription {\n + float:left;\n + width:100%;\n + overflow:auto;\n + font-size:1.0em;\n +}\n +.olLayerGeoRSSClose {\n + float:right;\n + color:gray;\n + font-size:1.2em;\n + margin-right:6px;\n + font-family:sans-serif;\n +}\n +.olLayerGeoRSSTitle {\n + float:left;font-size:1.2em;\n +}\n +\n +.olPopupContent {\n + padding:5px;\n + overflow: auto;\n +}\n +\n +.olControlNavigationHistory {\n + background-image: url("img/navigation_history.png");\n + background-repeat: no-repeat;\n + width: 24px;\n + height: 24px;\n +\n +}\n +.olControlNavigationHistoryPreviousItemActive {\n + background-position: 0 0;\n +}\n +.olControlNavigationHistoryPreviousItemInactive {\n + background-position: 0 -24px;\n +}\n +.olControlNavigationHistoryNextItemActive {\n + background-position: -24px 0;\n +}\n +.olControlNavigationHistoryNextItemInactive {\n + background-position: -24px -24px;\n +}\n +\n +div.olControlSaveFeaturesItemActive {\n + background-image: url(img/save_features_on.png);\n + background-repeat: no-repeat;\n + background-position: 0 1px;\n +}\n +div.olControlSaveFeaturesItemInactive {\n + background-image: url(img/save_features_off.png);\n + background-repeat: no-repeat;\n + background-position: 0 1px;\n +}\n +\n +.olHandlerBoxZoomBox {\n + border: 2px solid red;\n + position: absolute;\n + background-color: white;\n + opacity: 0.50;\n + font-size: 1px;\n + filter: alpha(opacity=50);\n +}\n +.olHandlerBoxSelectFeature {\n + border: 2px solid blue;\n + position: absolute;\n + background-color: white;\n + opacity: 0.50;\n + font-size: 1px;\n + filter: alpha(opacity=50);\n +}\n +\n +.olControlPanPanel {\n + top: 10px;\n + left: 5px;\n +}\n +\n +.olControlPanPanel div {\n + background-image: url(img/pan-panel.png);\n + height: 18px;\n + width: 18px;\n + cursor: pointer;\n + position: absolute;\n +}\n +\n +.olControlPanPanel .olControlPanNorthItemInactive {\n + top: 0;\n + left: 9px;\n + background-position: 0 0;\n +}\n +.olControlPanPanel .olControlPanSouthItemInactive {\n + top: 36px;\n + left: 9px;\n + background-position: 18px 0;\n +}\n +.olControlPanPanel .olControlPanWestItemInactive {\n + position: absolute;\n + top: 18px;\n + left: 0;\n + background-position: 0 18px;\n +}\n +.olControlPanPanel .olControlPanEastItemInactive {\n + top: 18px;\n + left: 18px;\n + background-position: 18px 18px;\n +}\n +\n +.olControlZoomPanel {\n + top: 71px;\n + left: 14px;\n +}\n +\n +.olControlZoomPanel div {\n + background-image: url(img/zoom-panel.png);\n + position: absolute;\n + height: 18px;\n + width: 18px;\n + cursor: pointer;\n +}\n +\n +.olControlZoomPanel .olControlZoomInItemInactive {\n + top: 0;\n + left: 0;\n + background-position: 0 0;\n +}\n +\n +.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {\n + top: 18px;\n + left: 0;\n + background-position: 0 -18px;\n +}\n +\n +.olControlZoomPanel .olControlZoomOutItemInactive {\n + top: 36px;\n + left: 0;\n + background-position: 0 18px;\n +}\n +\n +/*\n + * When a potential text is bigger than the image it move the image\n + * with some headers (closes #3154)\n + */\n +.olControlPanZoomBar div {\n + font-size: 1px;\n +}\n +\n +.olPopupCloseBox {\n + background: url("img/close.gif") no-repeat;\n + cursor: pointer;\n +}\n +\n +.olFramedCloudPopupContent {\n + padding: 5px;\n + overflow: auto;\n +}\n +\n +.olControlNoSelect {\n + -moz-user-select: none;\n + -khtml-user-select: none;\n +}\n +\n +.olImageLoadError {\n + background-color: pink;\n + opacity: 0.5;\n + filter: alpha(opacity=50); /* IE */\n +}\n +\n +/**\n + * Cursor styles\n + */\n +\n +.olCursorWait {\n + cursor: wait;\n +}\n +.olDragDown {\n + cursor: move;\n +}\n +.olDrawBox {\n + cursor: crosshair;\n +}\n +.olControlDragFeatureOver {\n + cursor: move;\n +}\n +.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown {\n + cursor: -moz-grabbing;\n +}\n +\n +/**\n + * Layer switcher\n + */\n +.olControlLayerSwitcher {\n + position: absolute;\n + top: 25px;\n + right: 0;\n + width: 20em;\n + font-family: sans-serif;\n + font-weight: bold;\n + margin-top: 3px;\n + margin-left: 3px;\n + margin-bottom: 3px;\n + font-size: smaller;\n + color: white;\n + background-color: transparent;\n +}\n +\n +.olControlLayerSwitcher .layersDiv {\n + padding-top: 5px;\n + padding-left: 10px;\n + padding-bottom: 5px;\n + padding-right: 10px;\n + background-color: darkblue;\n +}\n +\n +.olControlLayerSwitcher .layersDiv .baseLbl,\n +.olControlLayerSwitcher .layersDiv .dataLbl {\n + margin-top: 3px;\n + margin-left: 3px;\n + margin-bottom: 3px;\n +}\n +\n +.olControlLayerSwitcher .layersDiv .baseLayersDiv,\n +.olControlLayerSwitcher .layersDiv .dataLayersDiv {\n + padding-left: 10px;\n +}\n +\n +.olControlLayerSwitcher .maximizeDiv,\n +.olControlLayerSwitcher .minimizeDiv {\n + width: 18px;\n + height: 18px;\n + top: 5px;\n + right: 0;\n + cursor: pointer;\n +}\n +\n +.olBingAttribution {\n + color: #DDD;\n +}\n +.olBingAttribution.road {\n + color: #333;\n +}\n +\n +.olGoogleAttribution.hybrid, .olGoogleAttribution.satellite {\n + color: #EEE;\n +}\n +.olGoogleAttribution {\n + color: #333;\n +}\n +span.olGoogleAttribution a {\n + color: #77C;\n +}\n +span.olGoogleAttribution.hybrid a, span.olGoogleAttribution.satellite a {\n + color: #EEE;\n +}\n +\n +/**\n + * Editing and navigation icons.\n + * (using the editing_tool_bar.png sprint image)\n + */\n +.olControlNavToolbar ,\n +.olControlEditingToolbar {\n + margin: 5px 5px 0 0;\n +}\n +.olControlNavToolbar div,\n +.olControlEditingToolbar div {\n + background-image: url("img/editing_tool_bar.png");\n + background-repeat: no-repeat;\n + margin: 0 0 5px 5px;\n + width: 24px;\n + height: 22px;\n + cursor: pointer\n +}\n +/* positions */\n +.olControlEditingToolbar {\n + right: 0;\n + top: 0;\n +}\n +.olControlNavToolbar {\n + top: 295px;\n + left: 9px;\n +}\n +/* layouts */\n +.olControlEditingToolbar div {\n + float: right;\n +}\n +/* individual controls */\n +.olControlNavToolbar .olControlNavigationItemInactive,\n +.olControlEditingToolbar .olControlNavigationItemInactive {\n + background-position: -103px -1px;\n +}\n +.olControlNavToolbar .olControlNavigationItemActive ,\n +.olControlEditingToolbar .olControlNavigationItemActive {\n + background-position: -103px -24px;\n +}\n +.olControlNavToolbar .olControlZoomBoxItemInactive {\n + background-position: -128px -1px;\n +}\n +.olControlNavToolbar .olControlZoomBoxItemActive {\n + background-position: -128px -24px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePointItemInactive {\n + background-position: -77px -1px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePointItemActive {\n + background-position: -77px -24px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePathItemInactive {\n + background-position: -51px -1px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePathItemActive {\n + background-position: -51px -24px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive{\n + background-position: -26px -1px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive {\n + background-position: -26px -24px;\n +}\n +\n +div.olControlZoom {\n + position: absolute;\n + top: 8px;\n + left: 8px;\n + background: rgba(255,255,255,0.4);\n + border-radius: 4px;\n + padding: 2px;\n +}\n +div.olControlZoom a {\n + display: block;\n + margin: 1px;\n + padding: 0;\n + color: white;\n + font-size: 18px;\n + font-family: \'Lucida Grande\', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;\n + font-weight: bold;\n + text-decoration: none;\n + text-align: center;\n + height: 22px;\n + width:22px;\n + line-height: 19px;\n + background: #130085; /* fallback for IE - IE6 requires background shorthand*/\n + background: rgba(0, 60, 136, 0.5);\n + filter: alpha(opacity=80);\n +}\n +div.olControlZoom a:hover {\n + background: #130085; /* fallback for IE */\n + background: rgba(0, 60, 136, 0.7);\n + filter: alpha(opacity=100);\n +}\n +@media only screen and (max-width: 600px) {\n + div.olControlZoom a:hover {\n + background: rgba(0, 60, 136, 0.5);\n + }\n +}\n +a.olControlZoomIn {\n + border-radius: 4px 4px 0 0;\n +}\n +a.olControlZoomOut {\n + border-radius: 0 0 4px 4px;\n +}\n +\n +\n +/**\n + * Animations\n + */\n +\n +.olLayerGrid .olTileImage {\n + -webkit-transition: opacity 0.2s linear;\n + -moz-transition: opacity 0.2s linear;\n + -o-transition: opacity 0.2s linear;\n + transition: opacity 0.2s linear;\n +}\n +</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>9948</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>style.css</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/urlHandler.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/urlHandler.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..1d81b72c49962c68ac3cf032124252564cc861aa --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/urlHandler.js.xml @@ -0,0 +1,114 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54117433.53</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>urlHandler.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/**\n + * NEXEDI\n + * Author: Thomas Lechauve\n + * Date: 4/18/12\n + */\n +\n +\n +// Hash parser utility\n +$.parseHash = function(hashTag) {\n +\tvar tokenized = $.extractAuth(hashTag);\n +\tif (tokenized) {\n +\t\t$.publish(\'auth\', tokenized);\n +\t}\n +\tvar splitted = hashTag.substr(1).split(\'/\');\n +\treturn {\n +\t\troute : splitted[0],\n +\t\tid : splitted[1],\n +\t\tmethod : splitted[2]\n +\t}\n +};\n +\n +$.extractAuth = function (hashTag) {\n +\tvar del = hashTag.indexOf(\'&\');\n +\tif (del != -1) {\n +\t\tvar splitted = hashTag.substring(del+1).split(\'&\');\n +\t\tvar result = {};\n +\t\tfor (p in splitted) {\n +\t\t\tvar s = splitted[p].split(\'=\');\n +\t\t\tresult[s[0]] = s[1];\n +\t\t}\n +\t\treturn result;\n +\t}\n +\treturn false;\n +};\n +\n +$.genHash = function(url) {\n +\tif (\'id\' in url) {\n +\t\turl[\'id\'] = \'/\' + url[\'id\'];\n +\t}\n +\tif (\'method\' in url) {\n +\t\turl[\'method\'] = \'/\' + url[\'method\'];\n +\t}\n +\treturn \'/\' + url[\'route\'] + (url[\'id\'] || \'\') + (url[\'method\'] || \'\');\n +};\n +\n +/* Pub / Sub Pattern\n +\tWARNING\n +\tWhat\'s happening when we destroy a DOM object subscribed ?\n + */\n +var o = $({});\n +$.subscribe = function() {\n +\to.on.apply(o, arguments);\n +};\n +$.unsubscribe = function() {\n +\to.off.apply(o, arguments);\n +};\n +$.publish = function() {\n +\to.trigger.apply(o, arguments);\n +};\n +\n +// Event Handlers\n +$.hashHandler = function(){ $.publish("urlChange", window.location.hash.substr(1)); };\n +$.redirectHandler = function(event, url){ window.location.hash = $.genHash(url); };\n +\n +// redirections manager\n +$.redirect = function(url){ $.publish(\'redirect\', url); };\n +$.subscribe(\'redirect\', $.redirectHandler)\n +\n +$(window).bind(\'hashchange\', $.hashHandler);\n +$(window).bind(\'load\', $.hashHandler);\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>1543</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>urlHandler.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/user-extensions.js.xml b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/user-extensions.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6b9d7e0ff87f60e0e816979ee4275ba3d57e98b --- /dev/null +++ b/bt5/erp5_safeimage/SkinTemplateItem/portal_skins/erp5_safeimage/user-extensions.js.xml @@ -0,0 +1,139 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54892065.66</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>user-extensions.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/x-javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/**\n + * Selenium extensions for the ERP5 project\n + */\n +\n +/* pere */\n +\n +/**\n + * Checks the element referenced by `locator` is a float equals to `text`.\n + * Values are converted to float, to be format-independant (ie. 1 000 = 1000.0)\n + */\n +Selenium.prototype.assertFloat = function(locator, text) {\n + var actualValueText = getText(this.page().findElement(locator));\n + var actualValue = parseFloat(actualValueText\n + .replace(/ /g, "").replace(/ /g, ""));\n + var expectedValue = parseFloat(text.replace(/ /g, "").replace(/ /g, ""));\n +\n + if (isNaN(actualValue)) {\n + Assert.fail("Actual value "+ actualValueText +\n + " cannot be parsed as float");\n + }\n + Assert.matches(expectedValue.toString(), actualValue.toString());\n +};\n +\n +\n +/**\n + * like assertFloat, but for the value of <input elements.\n + */\n +Selenium.prototype.assertFloatValue = function(locator, text) {\n + var actualValueText = getInputValue(this.page().findElement(locator));\n + var actualValue = parseFloat(actualValueText\n + .replace(/ /g, "").replace(/ /g, ""));\n + var expectedValue = parseFloat(text.replace(/ /g, "").replace(/ /g, ""));\n +\n + if (isNaN(actualValue)) {\n + Assert.fail("Actual value "+ actualValueText +\n + " cannot be parsed as float");\n + }\n + Assert.matches(expectedValue.toString(), actualValue.toString());\n +};\n +\n +\n +/**\n + * Checks the portal status message.\n + */\n +Selenium.prototype.assertPortalStatusMessage = function(text) {\n + var psm_locator = "//div[@id=\'transition_message\']";\n + var actualValue = getText(this.page().findElement(psm_locator));\n + Assert.matches(text, actualValue);\n +};\n +\n +Selenium.prototype.doType = function(locator, newText) {\n + if (typeof(netscape) != "undefined" && typeof(netscape.security.PrivilegeManager) != "undefined" ) {\n + // On old firefox versions, we enable privilege to upload file in javascript.\n + // The user needs to have signed.applets.codebase_principal_support set to true in about:config\n + // This is done in prefs.js generated by product/ERP5Type/tests/runFunctionalTest.py\n + // This approach no longer work in newer firefox versions https://developer.mozilla.org/en-US/docs/Bypassing_Security_Restrictions_and_Signing_Code\n + // Without this, tests dealing with file upload will fail\n + netscape.security.PrivilegeManager.enablePrivilege("UniversalFileRead");\n + }\n + var element = this.page().findElement(locator);\n + this.page().replaceText(element, newText);\n +};\n +\n +/*\n + * Get the location of the current page. This function is missing in\n + * Selenium 0.8 or later.\n + */\n +Selenium.prototype.getAbsoluteLocation = function() {\n + return this.page().location || this.browserbot.getCurrentWindow().location;\n +};\n +\n +Selenium.prototype.doPhantomRender = function(filename) {\n + if (window.page && window.page.render) {\n + page.render(filename);\n + }\n +};\n +\n +Selenium.prototype.doZoomIn = function() {\n + this.page().SafeImage.map.zoomTo(1);\n +};\n +\n +Selenium.prototype.doZoomOut = function() {\n + this.page().SafeImage.map.zoomTo(0);\n +};\n +\n +\n +Selenium.prototype.assertElementPositionRangeTop = function(locator, range){\n + var positionTop = parseFloat(this.getElementPositionTop(locator));\n + /* example of range 450..455 */\n + var rangeList = range.split("..");\n + var minimumPositionTop = parseFloat(rangeList[0]);\n + var maximumPositionTop = parseFloat(rangeList[1]);\n + if (positionTop < minimumPositionTop || positionTop > maximumPositionTop ){\n + Assert.fail(positionTop + " is not between " + minimumPositionTop + " and " + maximumPositionTop);\n + };\n +}; + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>3622</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_safeimage/TestTemplateItem/testSafeImage.py b/bt5/erp5_safeimage/TestTemplateItem/testSafeImage.py new file mode 100644 index 0000000000000000000000000000000000000000..32737b9b39b852e4a203517b6f923ef2b285b515 --- /dev/null +++ b/bt5/erp5_safeimage/TestTemplateItem/testSafeImage.py @@ -0,0 +1,163 @@ +import Image +from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase +import transaction +from zLOG import LOG,INFO,ERROR +import json +from cStringIO import StringIO +import os + + +class FileUpload(file): + """Act as an uploaded file. + """ + __allow_access_to_unprotected_subobjects__ = 1 + def __init__(self, path, name): + self.filename = name + file.__init__(self, path) + self.headers = {} + + +def makeFilePath(name): + #return os.path.join(os.path.dirname(__file__), 'tmp', name) + return name + +def makeFileUpload(name, as_name=None): + if as_name is None: + as_name = name + path = makeFilePath(name) + return FileUpload(path, as_name) + +class TestSafeImage(ERP5TypeTestCase): + + def getBusinessTemplateList(self): + return ('erp5_base', + 'erp5_web', + 'erp5_ingestion_mysql_innodb_catalog', + 'erp5_ingestion', + 'erp5_dms', + 'erp5_safeimage' + ) + + def afterSetUp(self): + portal = self.getPortalObject() + self.image_module = self.portal.getDefaultModule(portal_type = 'Image Module') + self.assertTrue(self.image_module is not None) + if getattr(self.image_module,'testImage',None) is not None: + self.image_module.manage_delObjects(ids=['testImage']) + if getattr(self.image_module,'testTile',None) is not None: + self.image_module.manage_delObjects(ids=['testTile']) + if getattr(self.image_module,'testTileTransformed',None) is not None: + self.image_module.manage_delObjects(ids=['testTileTransformed']) + transaction.commit() + self.tic() + + def _createImage(self): + portal = self.getPortalObject() + image = portal.restrictedTraverse('portal_skins/erp5_safeimage/img/image_unit_test.jpg') + path_image = "image_unit_test.jpg" + fd = os.open(path_image, os.O_CREAT | os.O_RDWR) + os.write(fd,str(image.data)) + os.close(fd) + _image = makeFileUpload(path_image) + image = self.image_module.newContent(portal_type='Image',title='testImage', + id='testImage',file=_image,filename='testImage') + return image + + def _createTileImage(self): + portal = self.getPortalObject() + image = portal.restrictedTraverse('portal_skins/erp5_safeimage/img/image_unit_test.jpg') + path_image = "image_unit_test.jpg" + fd = os.open(path_image, os.O_CREAT | os.O_RDWR) + os.write(fd,str(image.data)) + os.close(fd) + tile_image = makeFileUpload(path_image) + tile = self.image_module.newContent(portal_type='Image Tile',title='testTile', + id='testTile',file=tile_image,filename='testTile') + return tile + + def _createTileImageTransformed(self): + portal = self.getPortalObject() + image = portal.restrictedTraverse('portal_skins/erp5_safeimage/img/image_unit_test.jpg') + path_image = "image_unit_test.jpg" + fd = os.open(path_image, os.O_CREAT | os.O_RDWR) + os.write(fd,str(image.data)) + os.close(fd) + tile_image_transformed = makeFileUpload(path_image) + tile_transformed = self.image_module.newContent(portal_type='Image Tile Transformed', + title='testTileTransformed',id='testTileTransformed', + file=tile_image_transformed,filename='testTileTransformed') + return tile_transformed + + def test_01_CreateImage(self): + image = self._createImage() + self.assertTrue(image.hasData()) + transaction.commit() + self.tic() + self.assertNotEqual(image,None) + + def test_02_CreateTileImage(self): + """" + We are going to check that tile image has following structure + 1/ + 1/Image Tile Group + 1/Image Tile Group/0-0-0 + 1/Image Tile Group/1-0-0 + 1/ImageProperties.xml + """ + tile = self._createTileImage() + transaction.commit() + self.tic() + self.assertNotEqual(tile,None) + image_property = getattr(tile, "ImageProperties.xml", None) + self.assertEquals(image_property.getData(), + """<IMAGE_PROPERTIES WIDTH="660" HEIGHT="495" NUMTILES="9" NUMIMAGES="1" VERSION="1.8" TILESIZE="256" />""") + self.assertNotEqual(image_property, None) + self.assertEquals("Embedded File", image_property.getPortalType()) + image_group = getattr(tile, "TileGroup0", None) + self.assertNotEquals(image_group, None) + self.assertEquals("Image Tile Group",image_group.getPortalType()) + splitted_image_list = image_group.objectValues(portal_type="Image") + self.assertEquals(set(['0-0-0','1-0-0','1-1-0','2-0-0','2-0-1','2-1-0','2-1-1','2-2-0','2-2-1']), + set([x.getId() for x in splitted_image_list])) + for x in splitted_image_list: + self.assertTrue(x.hasData()) + self.assertEquals(123,image_group['0-0-0'].getHeight()) + self.assertEquals(165,image_group['0-0-0'].getWidth()) + + def test_03_CreateTileImageTransformed(self): + """" + We are going to check that tile image has following structure + 1/ + 1/Image Tile Group + 1/Image Tile Group/0-0-0 + 1/Image Tile Group/1-0-0 + 1/ImageProperties.xml + 1/TransformFile.txt + """ + tile_transformed = self._createTileImageTransformed() + transaction.commit() + self.tic() + self.assertNotEqual(tile_transformed,None) + image_property = getattr(tile_transformed, "ImageProperties.xml", None) + self.assertEquals(image_property.getData(), + """<IMAGE_PROPERTIES WIDTH="660" HEIGHT="495" NUMTILES="9" NUMIMAGES="1" VERSION="1.8" TILESIZE="256" />""") + self.assertNotEqual(image_property, None) + self.assertEquals("Embedded File", image_property.getPortalType()) + image_transform = getattr(tile_transformed, "TransformFile.txt", None) + self.assertTrue(image_transform.getData().split()[1],'2-0-0') + self.assertNotEqual(image_transform, None) + self.assertEquals("Embedded File", image_transform.getPortalType()) + image_group = getattr(tile_transformed, "TileGroup0", None) + self.assertNotEquals(image_group, None) + self.assertEquals("Image Tile Group",image_group.getPortalType()) + splitted_image_list = image_group.objectValues(portal_type="Image") + self.assertEquals(set(['0-0-0','1-0-0','1-1-0','2-0-0','2-0-1','2-1-0','2-1-1','2-2-0','2-2-1']), + set([x.getId() for x in splitted_image_list])) + for x in splitted_image_list: + self.assertTrue(x.hasData()) + self.assertEquals(123,image_group['0-0-0'].getHeight()) + self.assertEquals(165,image_group['0-0-0'].getWidth()) + if getattr(self.image_module,'testTileTransformed',None) is not None: + self.image_module.manage_delObjects(ids=['testTileTransformed']) + transaction.commit() + self.tic() diff --git a/bt5/erp5_safeimage/bt/revision b/bt5/erp5_safeimage/bt/revision new file mode 100644 index 0000000000000000000000000000000000000000..ca7bf83ac53a27a2a914bed25e1a07478dd8ef47 --- /dev/null +++ b/bt5/erp5_safeimage/bt/revision @@ -0,0 +1 @@ +13 \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_action_path_list b/bt5/erp5_safeimage/bt/template_action_path_list new file mode 100644 index 0000000000000000000000000000000000000000..4a961c1f97fdf12b9f7c909511ea225e7e3d603f --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_action_path_list @@ -0,0 +1,3 @@ +Image Tile Group | view +Image Tile Transformed | view +Image Tile | view \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_document_id_list b/bt5/erp5_safeimage/bt/template_document_id_list new file mode 100644 index 0000000000000000000000000000000000000000..aa5c553564e0f9d186446e0cf808a3afced57b3f --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_document_id_list @@ -0,0 +1,2 @@ +TileImage +TileImageTransformed \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_extension_id_list b/bt5/erp5_safeimage/bt/template_extension_id_list new file mode 100644 index 0000000000000000000000000000000000000000..f68a94cffa22cba6151b27fd9046ab624d0f5fc8 --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_extension_id_list @@ -0,0 +1,2 @@ +ERP5SafeImage_Selenium +ERP5ZoomifyImage \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_format_version b/bt5/erp5_safeimage/bt/template_format_version new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_format_version @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_portal_type_allowed_content_type_list b/bt5/erp5_safeimage/bt/template_portal_type_allowed_content_type_list new file mode 100644 index 0000000000000000000000000000000000000000..cd7a83037bd6381420e234be85b1e5ebde66372e --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_portal_type_allowed_content_type_list @@ -0,0 +1,7 @@ +Image Module | Image Tile +Image Module | Image Tile Transformed +Image Tile Group | Image +Image Tile Transformed | Embedded File +Image Tile Transformed | Image Tile Group +Image Tile | Embedded File +Image Tile | Image Tile Group \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_portal_type_id_list b/bt5/erp5_safeimage/bt/template_portal_type_id_list new file mode 100644 index 0000000000000000000000000000000000000000..88aa8d5761e964160f7708419f55043ac3add971 --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_portal_type_id_list @@ -0,0 +1,3 @@ +Image Tile +Image Tile Group +Image Tile Transformed \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_portal_type_workflow_chain_list b/bt5/erp5_safeimage/bt/template_portal_type_workflow_chain_list new file mode 100644 index 0000000000000000000000000000000000000000..bdb63790ec138cd8f255fe0275519722b2a233ba --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_portal_type_workflow_chain_list @@ -0,0 +1,6 @@ +Image Tile Group | edit_workflow +Image Tile Group | validation_workflow +Image Tile Transformed | edit_workflow +Image Tile Transformed | validation_workflow +Image Tile | edit_workflow +Image Tile | validation_workflow \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_skin_id_list b/bt5/erp5_safeimage/bt/template_skin_id_list new file mode 100644 index 0000000000000000000000000000000000000000..abc5ffbb4d6e69f5099e06a361f361964f6a58a1 --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_skin_id_list @@ -0,0 +1 @@ +erp5_safeimage \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/template_test_id_list b/bt5/erp5_safeimage/bt/template_test_id_list new file mode 100644 index 0000000000000000000000000000000000000000..5bf1c89d736fd1c69c9d1f4e421292d6c072236e --- /dev/null +++ b/bt5/erp5_safeimage/bt/template_test_id_list @@ -0,0 +1 @@ +testSafeImage \ No newline at end of file diff --git a/bt5/erp5_safeimage/bt/title b/bt5/erp5_safeimage/bt/title new file mode 100644 index 0000000000000000000000000000000000000000..abc5ffbb4d6e69f5099e06a361f361964f6a58a1 --- /dev/null +++ b/bt5/erp5_safeimage/bt/title @@ -0,0 +1 @@ +erp5_safeimage \ No newline at end of file diff --git a/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverDecisionList.xml b/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverDecisionList.xml index cf48306ee4bcec483aab24c92c65e154f6a2b3df..8ca3d4bebcf0a147c34a189351b2c479487506d1 100644 --- a/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverDecisionList.xml +++ b/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverDecisionList.xml @@ -50,26 +50,9 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string># XXX currently we create a Solver Process and build Solver Decision in it if missing.\n -# But for better performance, Solver Process and Solver Decision should be created beforehand\n -# by causality workflow when a delivery becomes divergent.\n -solver_process = None\n -solver_list = context.getSolverValueList()\n -for i in solver_list:\n - if i.getValidationState() == \'draft\':\n - solver_process = i\n - break\n -\n -\n -if solver_process is None:\n - solver_process = context.getPortalObject().portal_solver_processes.newSolverProcess(context)\n -else:\n - # update existing solver process\n - solver_process.buildSolverDecisionList(context)\n -\n + <value> <string>solver_process = context.Delivery_getSolverProcess()\n # XXX should omit \'solved\' decision?\n -solver_decision_list = solver_process.objectValues(portal_type=\'Solver Decision\')\n -return solver_decision_list\n +return solver_process.SolverProcess_getSolverDecisionList()\n </string> </value> </item> <item> diff --git a/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverProcess.xml b/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverProcess.xml new file mode 100644 index 0000000000000000000000000000000000000000..d2e8cf93bffe4143081769a86a7f58a7529b4c56 --- /dev/null +++ b/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/Delivery_getSolverProcess.xml @@ -0,0 +1,77 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string># XXX currently we create a Solver Process and build Solver Decision in it if missing.\n +# But for better performance, Solver Process and Solver Decision should be created beforehand\n +# by causality workflow when a delivery becomes divergent.\n +for solver_process in context.getSolverValueList():\n + if solver_process.getValidationState() == \'draft\':\n + solver_process.buildSolverDecisionList(context)\n + break\n +else:\n + solver_process = context.getPortalObject().portal_solver_processes.newSolverProcess(context)\n +\n +return solver_process\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Delivery_getSolverProcess</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_initFromPreferences.xml b/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/SolverProcess_getSolverDecisionList.xml similarity index 86% rename from bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_initFromPreferences.xml rename to bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/SolverProcess_getSolverDecisionList.xml index 0d7463b8f5ba08e46b1d9c21a82d4540a0a68cce..c69adba714f5b404b5f99442d369edb7d707f2f7 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransaction_initFromPreferences.xml +++ b/bt5/erp5_simulation/SkinTemplateItem/portal_skins/erp5_simulation/SolverProcess_getSolverDecisionList.xml @@ -50,10 +50,7 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>preference_tool = context.getPortalObject().portal_preferences\n -context.edit(\n - source_section = preference_tool.getPreferredAccountingTransactionSourceSection(),\n - resource = preference_tool.getPreferredAccountingTransactionCurrency())\n + <value> <string>return context.objectValues(portal_type=\'Solver Decision\')\n </string> </value> </item> <item> @@ -62,7 +59,7 @@ context.edit(\n </item> <item> <key> <string>id</string> </key> - <value> <string>AccountingTransaction_initFromPreferences</string> </value> + <value> <string>SolverProcess_getSolverDecisionList</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_simulation/bt/revision b/bt5/erp5_simulation/bt/revision index 7b27b2519708501bbe7893dc04388ba380c65f9e..4a8d924028a2939d1a825e445ab19cb445b03a93 100644 --- a/bt5/erp5_simulation/bt/revision +++ b/bt5/erp5_simulation/bt/revision @@ -1 +1 @@ -173 \ No newline at end of file +174 \ No newline at end of file diff --git a/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildInvoice.xml b/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildInvoice.xml index f737abda8565505aacde6c257c834f1ec10aaa10..66d3638830c6a0686a762b37b4fd490e3446b963 100644 --- a/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildInvoice.xml +++ b/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildInvoice.xml @@ -78,6 +78,7 @@ for builder_id in builder_id_list:\n \'_updateSimulation\')\n activate_kw = dict(tag=index_tag)\n builder.activate(\n + limit=100,\n tag=\'invoice_builder_alarm\',\n serialization_tag=serialization_tag,\n after_tag=after_tag,\n diff --git a/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildPackingList.xml b/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildPackingList.xml index be0aa5a7440322c9505c699cb4f6f451d40453a4..1456dd56b3d72bef535399fbb7006f582428e927 100644 --- a/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildPackingList.xml +++ b/bt5/erp5_simulation_test/SkinTemplateItem/portal_skins/erp5_simulation_test/Alarm_buildPackingList.xml @@ -77,6 +77,7 @@ for builder_id in builder_id_list:\n \'_updateSimulation\')\n activate_kw = dict(tag=index_tag)\n builder.activate(\n + limit=100,\n tag=\'packing_list_builder_alarm\',\n serialization_tag=serialization_tag,\n after_tag=after_tag,\n diff --git a/bt5/erp5_simulation_test/bt/revision b/bt5/erp5_simulation_test/bt/revision index 7c091989d018956d085a80a955a265ebbb0d0a49..c24b6ae77df02a87472b208f251fad88382a2e55 100644 --- a/bt5/erp5_simulation_test/bt/revision +++ b/bt5/erp5_simulation_test/bt/revision @@ -1 +1 @@ -37 \ No newline at end of file +38 \ No newline at end of file diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_destination_payment.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_destination_payment.xml index b8c2f25774146d9d8ebc678b355bfdebdbf0680c..175bc97c23cc9575d1d8b5e9d6cde2d80b75d23e 100644 --- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_destination_payment.xml +++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_destination_payment.xml @@ -10,9 +10,9 @@ <key> <string>delegated_list</string> </key> <value> <list> - <string>title</string> <string>description</string> <string>items</string> + <string>title</string> </list> </value> </item> @@ -127,7 +127,7 @@ <dictionary> <item> <key> <string>_text</string> </key> - <value> <string>python:[(\'\', \'\')] + (here.getDestinationSection() and [(x.Title(), x.getRelativeUrl()) for x in here.getDestinationSectionValue().objectValues(portal_type = here.getPortalPaymentNodeTypeList())] or [])</string> </value> + <value> <string>python:[(\'\', \'\')] + (here.getDestinationSection() and [(x.getTitle(), x.getRelativeUrl()) for x in here.getDestinationSectionValue().contentValues(portal_type=here.getPortalPaymentNodeTypeList(), checked_permission="Access contents information")] or [])</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_source_payment.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_source_payment.xml index 9c00db6154567b4fce73e6db46543e4349caffec..210ab4092197c27ae336711c288cc3d3675e9b45 100644 --- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_source_payment.xml +++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Base_viewTradeFieldLibrary/my_view_mode_source_payment.xml @@ -10,9 +10,9 @@ <key> <string>delegated_list</string> </key> <value> <list> - <string>title</string> <string>description</string> <string>items</string> + <string>title</string> </list> </value> </item> @@ -127,7 +127,7 @@ <dictionary> <item> <key> <string>_text</string> </key> - <value> <string>python:[(\'\', \'\')] + (here.getSourceSection() and [(x.Title(), x.getRelativeUrl()) for x in here.getSourceSectionValue().objectValues(portal_type = here.getPortalPaymentNodeTypeList())] or [])</string> </value> + <value> <string>python:[(\'\', \'\')] + (here.getSourceSection() and [(x.getTitle(), x.getRelativeUrl()) for x in here.getSourceSectionValue().contentValues(portal_type=here.getPortalPaymentNodeTypeList(), checked_permission="Access contents information")] or [])</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Order_zSelectMovement.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Order_zSelectMovement.xml index a1b2632e7538f1fbe2aadb3b3f4e4a26d4059e1b..1b3aa197b3c8382c497d675ee23801d5e6d7ea27 100644 --- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Order_zSelectMovement.xml +++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/Order_zSelectMovement.xml @@ -16,7 +16,8 @@ <key> <string>arguments_src</string> </key> <value> <string>from_table_list:list\r\n where_expression\r\n -order_by_expression</string> </value> +order_by_expression\r\n +limit_expression</string> </value> </item> <item> <key> <string>cache_time_</string> </key> @@ -46,11 +47,11 @@ order_by_expression</string> </value> </item> <item> <key> <string>max_cache_</string> </key> - <value> <int>100</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>max_rows_</string> </key> - <value> <int>1000</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>src</string> </key> @@ -86,6 +87,9 @@ WHERE\n \n <dtml-if order_by_expression>\n ORDER BY <dtml-var order_by_expression>\n +</dtml-if>\n +<dtml-if limit_expression>\n +LIMIT <dtml-var limit_expression>\n </dtml-if> ]]></string> </value> diff --git a/bt5/erp5_trade/bt/revision b/bt5/erp5_trade/bt/revision index 5ec4258d7986f75cad28905646b9ac6c8e77a41c..8535dde961ab1d8c53a338313ce8841bc3348650 100644 --- a/bt5/erp5_trade/bt/revision +++ b/bt5/erp5_trade/bt/revision @@ -1 +1 @@ -1159 \ No newline at end of file +1161 \ No newline at end of file diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/business_template_zuite/testUpdateFromSvn.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/business_template_zuite/testUpdateFromSvn.xml index 7eda91a1375bdb9e67f9a4cb945ebb623c6e60c2..5b08837189fc95af60d3a09f8966fe9d286d8313 100644 --- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/business_template_zuite/testUpdateFromSvn.xml +++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/business_template_zuite/testUpdateFromSvn.xml @@ -40,13 +40,13 @@ xmlns:metal="http://xml.zope.org/namespaces/metal">\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n -<title>Test Update From Svn</title>\n +<title>Test Update From Svn (expected failure)</title>\n </head>\n <body>\n <table cellpadding="1" cellspacing="1" border="1">\n <thead>\n <tr><td rowspan="1" colspan="3">Test update from svn (You\n - must have checkout a copy of test_core in your svn dir)</td></tr>\n + must have checkout a copy of test_core in your svn dir) (expected failure)</td></tr>\n </thead><tbody>\n <tal:block tal:condition="python: context.TestTool_getSkinName()!=\'Mobile\'">\n <tal:block metal:use-macro="here/BTZuite_CommonTemplate/macros/init" />\n diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/datetime_field_zuite/testSurchargeWithInvalidDateTime.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/datetime_field_zuite/testSurchargeWithInvalidDateTime.xml index 89587149ea5ef2af5c95d908d1baa4ae1b8315e3..c164ce5b2eddc9bce40697d475aefbb733f084e7 100644 --- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/datetime_field_zuite/testSurchargeWithInvalidDateTime.xml +++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/datetime_field_zuite/testSurchargeWithInvalidDateTime.xml @@ -179,31 +179,6 @@ <td>//button[@title=\'Save\']</td>\n <td></td>\n </tr>\n -<tr>\n - <td>verifyValue</td>\n - <td>subfield_field_my_start_date_year</td>\n - <td></td>\n -</tr>\n -<tr>\n - <td>verifyValue</td>\n - <td>subfield_field_my_start_date_month</td>\n - <td></td>\n -</tr>\n -<tr>\n - <td>verifyValue</td>\n - <td>subfield_field_my_start_date_day</td>\n - <td></td>\n -</tr>\n -<tr>\n - <td>verifyValue</td>\n - <td>subfield_field_my_start_date_hour</td>\n - <td></td>\n -</tr>\n -<tr>\n - <td>verifyValue</td>\n - <td>subfield_field_my_start_date_minute</td>\n - <td></td>\n -</tr>\n <tr>\n <td>assertTextNotPresent</td>\n <td>You did not enter a valid date and time.</td>\n diff --git a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/BTZuite_CommonTemplate.xml b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/BTZuite_CommonTemplate.xml index e917458ab8c5817afd15ad82ccaacdc39c66acb9..a2bad9e718f63b3f8db39f26a160941112ac351d 100644 --- a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/BTZuite_CommonTemplate.xml +++ b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/BTZuite_CommonTemplate.xml @@ -69,7 +69,7 @@ </tr>\n <tr>\n <td>setTimeout</td>\n - <td>120000</td> <!-- business template operation takes time, so we use a larger timeout -->\n + <td>360000</td> <!-- business template operation takes time, so we use a larger timeout -->\n <td></td>\n </tr>\n </tal:block>\n diff --git a/bt5/erp5_ui_test/bt/revision b/bt5/erp5_ui_test/bt/revision index 8d75cc7df78d5c0d78c264b38938e5138e589cb9..8b8e485dc92f0bc4d2afc4bbf03dc01b2e570564 100644 --- a/bt5/erp5_ui_test/bt/revision +++ b/bt5/erp5_ui_test/bt/revision @@ -1 +1 @@ -705 \ No newline at end of file +707 diff --git a/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_CommonTemplate.xml b/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_CommonTemplate.xml index f8f36d927e7b1bfbe436df8acb48ee40e64b4168..933b179e0a7b46bbb90a9c3f86206fbbc69a8ef3 100644 --- a/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_CommonTemplate.xml +++ b/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_CommonTemplate.xml @@ -61,6 +61,11 @@ <td tal:content="python:here.getPortalObject().absolute_url()">http://example.com/erp5</td>\n <td>base_url</td>\n </tr>\n + <tr> <!-- reset language to en, in case previous test failed and left the language changed -->\n + <td>open</td>\n + <td>${base_url}/Base_doLanguage?select_language=en</td>\n + <td></td>\n + </tr>\n </tal:block>\n \n <tal:block metal:define-macro="wait_for_activities">\n diff --git a/bt5/erp5_ui_test_core/bt/revision b/bt5/erp5_ui_test_core/bt/revision index 4800c7da68cf871d3228361b50e329df2115f8b7..fc9afb48e033d9a7d2a778e81ae0e9424950c1cd 100644 --- a/bt5/erp5_ui_test_core/bt/revision +++ b/bt5/erp5_ui_test_core/bt/revision @@ -1 +1 @@ -58 \ No newline at end of file +59 \ No newline at end of file diff --git a/bt5/erp5_web_ui_test/PathTemplateItem/portal_tests/erp5_web_zuite/testWebPageClone.xml b/bt5/erp5_web_ui_test/PathTemplateItem/portal_tests/erp5_web_zuite/testWebPageClone.xml index f9dd2484da099d734225f27ccc4bf5378508de27..dc2cb79b5cec3e1d5baede38365d6f749eb1ba79 100644 --- a/bt5/erp5_web_ui_test/PathTemplateItem/portal_tests/erp5_web_zuite/testWebPageClone.xml +++ b/bt5/erp5_web_ui_test/PathTemplateItem/portal_tests/erp5_web_zuite/testWebPageClone.xml @@ -123,7 +123,7 @@ </tr>\n <tr>\n <td>assertLocation</td>\n - <td>regexp:${base_url}/web_site_module/test_web_site/web_page_module/[^/]+\\?portal_status_message=Created%20Clone%20Web%20Page.&editable_mode:int=1</td>\n + <td>regexp:${base_url}/web_site_module/test_web_site/web_page_module/[^/]+(/view)+\\?portal_status_message=Created%20Clone%20Web%20Page.&editable_mode:int=1</td>\n <td></td>\n </tr>\n </tbody></table>\n diff --git a/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py b/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py index e2689e2f93a1ba9ff9139300f6d2ffcb77caf934..91d4b4411249731a7febb29a96b354ce97db7f27 100644 --- a/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py +++ b/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py @@ -259,7 +259,9 @@ class TestUNG(ERP5TypeTestCase): self.changeSkin("UNGDoc") portal.event_module.EventModule_createNewEvent() self.tic() - event = portal.portal_catalog.getResultValue(portal_type="Note") + event = portal.portal_catalog.getResultValue( + portal_type="Note", + title='Buy Phone' ) self.assertEquals(event.getDescription(), "testUNG Sample") start_date = event.getStartDate() self.assertEquals(start_date.month(), 2) @@ -336,7 +338,8 @@ class TestUNG(ERP5TypeTestCase): self.tic() web_message = self.portal.portal_catalog.getResultValue(portal_type="Web Message") self.assertEquals(web_message, None) - note = self.portal.portal_catalog.getResultValue(portal_type="Note") + note = self.portal.portal_catalog.getResultValue(portal_type="Note", + title="Buy Coffee") self.assertEquals(note.getTitle(), "Buy Coffee") self.portal.REQUEST.form.clear() form_dict = dict(title=note.getTitle(), @@ -397,12 +400,12 @@ class TestUNG(ERP5TypeTestCase): self.assertTrue(response) self.tic() person = self.portal.portal_catalog.getResultValue(portal_type="Person", - first_name="UNG") + reference="ung_user") + self.assertEquals(person.getFirstName(), "UNG") self.assertEquals(person.getLastName(), "User") self.assertEquals(person.getValidationState(), "validated") self.assertEquals(person.getEmail().getPortalType(), "Email") self.assertEquals(person.getEmailText(), "g@g.com") - self.assertEquals(person.getReference(), "ung_user") self.changeSkin("UNGDoc") response = json.loads(self.portal.ERPSite_createUNGUser()) self.assertEquals(response, None) diff --git a/bt5/erp5_web_ung_theme/bt/revision b/bt5/erp5_web_ung_theme/bt/revision index 3d41066559f79350d72b566ac05f2c8823f7a999..8e9088e93bacfb905291087b6d86438b757cd912 100644 --- a/bt5/erp5_web_ung_theme/bt/revision +++ b/bt5/erp5_web_ung_theme/bt/revision @@ -1 +1 @@ -410 \ No newline at end of file +411 \ No newline at end of file diff --git a/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/Form_asRenderJSGadget.xml b/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/Form_asRenderJSGadget.xml index 19ab993a2dc4b201c5217ccb1ee6bb74e75f7cda..ccae0e74901d26aed12f5073d557dad9a8c4cb03 100644 --- a/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/Form_asRenderJSGadget.xml +++ b/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/Form_asRenderJSGadget.xml @@ -61,7 +61,7 @@ <div data-gadget-cacheable="1"\n tal:attributes="data-gadget string:gadgets/form/${field_type}/gadget?field_name=${field_name};\n id string:${form_id}_${field_name};\n - data-gadget-cache-id string: ${form_id}_${field_name};"></div>\n + data-gadget-cache-id string:${form_id}_${field_name};"></div>\n \n </div>\n </div>\n diff --git a/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/gadgets/tabular_gadget/gadget.xml b/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/gadgets/tabular_gadget/gadget.xml index 9667396456b7b4ca150eba9bca8ad46141ac1dd8..6653786bf5b0e38beaf1e8eccac5f463919b0b98 100644 --- a/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/gadgets/tabular_gadget/gadget.xml +++ b/bt5/erp5_xhtml_gadget_style/SkinTemplateItem/portal_skins/erp5_xhtml_gadget_style/gadgets/tabular_gadget/gadget.xml @@ -90,9 +90,10 @@ <!--Form render goes here -->\n <div id="form_gadget"\n tal:attributes="data-gadget string:${current_form_id}/Form_asRenderJSGadget;\n - data-gadget:data-source string:Form_asJSON?form_id=${current_form_id};\n - data-gadget:data-handler string:ERP5Form.update;\n - data-gadget:property string: {"cacheable": "1", "cache_id": "${current_form_id}"}">\n + data-gadget-source string:Form_asJSON?form_id=${current_form_id};\n + data-gadget-handler string:ERP5Form.update;\n + data-gadget-cacheable string:1;\n + data-gadget-cache-id current_form_id;">\n </div>\n \n </div>\n diff --git a/bt5/erp5_xhtml_gadget_style/bt/revision b/bt5/erp5_xhtml_gadget_style/bt/revision index 9a037142aa3c1b4c490e1a38251620f113465330..9d607966b721abde8931ddd052181fae905db503 100644 --- a/bt5/erp5_xhtml_gadget_style/bt/revision +++ b/bt5/erp5_xhtml_gadget_style/bt/revision @@ -1 +1 @@ -10 \ No newline at end of file +11 \ No newline at end of file diff --git a/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml b/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml index 0f6a4df733883c0972ab54159427d8dde21ed557..ac6d104851108aeb4612785e891b325476ce410d 100644 --- a/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml +++ b/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml @@ -59,7 +59,7 @@ #\n # BBB: For the history, erp5_xhtml_appearance.js is included by default when\n # js_list is not pre-defined before the global definitions.\n -js_list = (\'jquery/core/jquery.js\', \'erp5.js\',)\n +js_list = (\'jquery/core/jquery.min.js\', \'erp5.js\',)\n return js_list\n </string> </value> </item> diff --git a/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml b/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml index 9ff29092cf46fbc8a3a5ca1abb91b1e8d825883d..28c24772d94abf66deca79a6f9b493e04c7fe3da 100644 --- a/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml +++ b/bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml @@ -126,22 +126,18 @@ function buildTables(element_list, rowPredicate, columnPredicate,\n if ((row_list.length > 1) ||\n (row_list.length == 1 && row_list[0].length > 1)) {\n var first_element = row_list[0][0];\n - var container = first_element.parentNode;\n - var fake_table = document.createElement("table");\n - var i;\n - var j;\n - fake_table.className = tableClassName;\n - container.insertBefore(fake_table, first_element);\n - for (i = 0; i < row_list.length; i++) {\n - var fake_row = document.createElement("tr");\n - var row_element_list = row_list[i];\n - for (j = 0; j < row_element_list.length; j++) {\n - var fake_cell = document.createElement("td");\n - fake_cell.appendChild(row_element_list[j]);\n - fake_row.appendChild(fake_cell);\n - }\n - fake_table.appendChild(fake_row);\n - }\n + var fake_table = $("<table>");\n + fake_table.addClass(tableClassName);\n + fake_table.insertbefore(first_element);\n + $.each(row_list, function() {\n + var fake_row = $("<tr>");\n + $.each(this, function() {\n + var fake_cell = $("<td>");\n + fake_cell.append(this);\n + fake_row.append(fake_cell[0]);\n + });\n + fake_table.append(fake_row[0]);\n + });\n }\n }\n }\n @@ -168,18 +164,8 @@ function fixLeftRightHeightAndFocus(fix_height) {\n for (element_index = 0; element_index < matched_left_element_list.snapshotLength; element_index++) {\n var element = matched_left_element_list.snapshotItem(element_index);\n var right = document.evaluate(right_xpath, element, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n - var cell;\n - var row = document.createElement("tr");\n - var table = document.createElement("table");\n - table.className = "fake";\n - element.parentNode.insertBefore(table, element);\n - cell = document.createElement("td");\n - cell.appendChild(element);\n - row.appendChild(cell);\n - cell = document.createElement("td");\n - cell.appendChild(right);\n - row.appendChild(cell);\n - table.appendChild(row);\n + var table = $(\'<table class="fake">\').insertBefore(element);\n + table.append($("<tr>").append($("<td>").append(element)).append($("<td>").append(right)));\n }\n }\n autoFocus();\n @@ -237,13 +223,12 @@ var indexAllCheckBoxesAtBTInstallationOnLoad = function() {\n \n var resizeIFrameOnLoad = function() {\n /* Resize all frames in document in order to remove sliders */\n - var object_list = $("object.auto_height");\n - for( var i=0; i<object_list.length; i++) {\n - var object_document = object_list[i];\n - var inner_frame = object_document.contentDocument;\n + $("object.auto_height").each(function(){\n + var inner_frame = this.contentDocument;\n if (inner_frame){\n - object_document.style.height = inner_frame.documentElement.offsetHeight + \'px\';}\n - }\n + $(this).css("height", inner_frame.documentElement.offsetHeight + \'px\');\n + }\n + });\n }\n \n var changed = false;\n @@ -264,68 +249,55 @@ var addOnChangeEventHandler = function() {\n - clicking a relation field wheel\n - clicking on a input with type submit\n */\n - //var master = document.getElementById("master");\n - var master = $("#master");\n - if (master) {\n - //divs = master.getElementsByTagName("div");\n - divs = master.find("div");\n - for (i=0; i<divs.length; i++) {\n - if (divs[i].getAttribute("class") == "input") {\n - nodes = divs[i].childNodes;\n -\n - for (j=0; j<nodes.length; j++) {\n - if (nodes[j].nodeName == "INPUT" ||\n - nodes[j].nodeName == "SELECT" ||\n - nodes[j].nodeName == "TEXTAREA") {\n - if (nodes[j].value == "update..." ||\n - (nodes[j].nodeName == "INPUT" &&\n - nodes[j].type == \'submit\')) {\n + $("#master div").each(function(i) {\n + if ($(this).attr("class") == "input") {\n + $(this).children().each(function() {\n + if ($(this).prop("tagName") == "INPUT" ||\n + $(this).prop("tagName") == "SELECT" ||\n + $(this).prop("tagName") == "TEXTAREA") {\n + if ($(this).val() == "update..." ||\n + ($(this).prop("tagName") == "INPUT" &&\n + $(this).attr("type") == \'submit\')) {\n // this is a relation field wheel or a submit form button\n - nodes[j].onclick = function() { changed = false;};\n + this.onclick = function() { changed = false;};\n } else {\n - if (!nodes[j].onchange) {\n - nodes[j].onchange = function() { changed = true; };\n + if (!this.onchange) {\n + this.onchange = function() { changed = true; };\n }\n }\n } \n /* Listbox or MatrixBox */\n - if (nodes[j].nodeName == "DIV" && (\n - nodes[j].getAttribute("class") == "listbox-container" ||\n - nodes[j].getAttribute("class") == "MatrixContent")) {\n - trs = nodes[j].getElementsByTagName(\'td\');\n - for (k=0; k<trs.length; k++){\n - if (trs[k].getAttribute("class") == "listbox-search-line") {\n - continue;\n + if ($(this).prop("tagName") == "DIV" && (\n + $(this).attr("class") == "listbox-container" ||\n + $(this).attr("class") == "MatrixContent")) {\n + $(this).find(\'td\').each(function(){\n + if ($(this).attr("class") == "listbox-search-line") {\n + return non-false;\n }\n - inputs = trs[k].getElementsByTagName(\'input\');\n - for (l=0; l<inputs.length; l++){\n - if (inputs[l].getAttribute("type") != "hidden" &&\n - !inputs[l].onchange) {\n - inputs[l].onchange = function() { changed = true; };\n + $(this).find(\'input\').each(function(){\n + if ($(this).attr("type") != "hidden" &&\n + !this.onchange) {\n + this.onchange = function() { changed = true; };\n }\n - }\n - }\n + });\n + });\n }\n - }\n - }\n + });\n }\n - }\n + });\n }\n \n var rewriteIndentedSelect = function() {\n /*\n Under firefox, rewrite indented title categories using style definition.\n This way we can select items by pressing the first letter of their name. */\n - var master = $("#master");\n - if (master){\n - selects = master.find("select");\n - for (i=0; i<selects.length; i++) {\n - options = selects[i].childNodes;\n - for (j=0; j<options.length; j++) {\n - if (options[j].nodeName != "OPTION") {\n - continue;\n +\n + $("#master select").each(function() {\n + $(this).children().each(function() {\n + if ($(this).prop("tagName") != "OPTION") {\n + return non-false;\n }\n - text = options[j].innerHTML;\n + text = $(this).html();\n if (text.substring(0, 1) == \'\\n\') {\n text = text.substring(1, text.length);\n }\n @@ -341,12 +313,11 @@ var rewriteIndentedSelect = function() {\n }\n if (level >= 1) {\n level = level / 4.;\n - options[j].innerHTML = text.replace(/^( )+/, "");\n - options[j].style.paddingLeft = level+"em";\n + $(this).html(text.replace(/^( )+/, ""));\n + $(this).css("paddingLeft", level+"em");\n }\n - }\n - }\n - }\n + });\n + });\n }\n \n function queryStringToArray(query_string){\n @@ -355,7 +326,7 @@ function queryStringToArray(query_string){\n */\n var final ={};\n var b = query_string.split(\'&\');\n - $.each(b, function(x,y){\n + $.each(b, function(x, y){\n var temp = y.split(\'=\');\n final[temp[0]] = temp[1];});\n return final \n @@ -398,8 +369,7 @@ if (navigator.userAgent.toLowerCase().indexOf(\'firefox\') != -1)\n $(document).ready(rewriteIndentedSelect);\n $(document).ready(resizeIFrameOnLoad);\n $(document).ready(addOnChangeEventHandler);\n -$(document).ready(indexAllCheckBoxesAtBTInstallationOnLoad);\n - +$(document).ready(indexAllCheckBoxesAtBTInstallationOnLoad); ]]></string> </value> </item> diff --git a/bt5/erp5_xhtml_jquery_style/bt/revision b/bt5/erp5_xhtml_jquery_style/bt/revision index dec2bf5d6199c7cd0d84f3dc1e76a73ccc336302..b39356075901abfb43d27aef2ae5b76b6aee19c4 100644 --- a/bt5/erp5_xhtml_jquery_style/bt/revision +++ b/bt5/erp5_xhtml_jquery_style/bt/revision @@ -1 +1 @@ -19 \ No newline at end of file +23 \ No newline at end of file diff --git a/bt5/test_conflict_resolution/TestTemplateItem/testConflictResolution.py b/bt5/test_conflict_resolution/TestTemplateItem/testConflictResolution.py index 6455b3ec035d351cb7295d172c342a54eced511d..ece91d5ed36c008ff58099d9a8c643cac5b9cb8a 100644 --- a/bt5/test_conflict_resolution/TestTemplateItem/testConflictResolution.py +++ b/bt5/test_conflict_resolution/TestTemplateItem/testConflictResolution.py @@ -119,6 +119,8 @@ class TestERP5(ERP5TypeTestCase): active_process = self.portal.portal_activities.newActiveProcess() self.commit() remote = self.other_node + remote.getId() # force storage sync of remote ZODB connection + # (see also Products.ERP5Type.patches.ZODBConnection) for id in active_process.getRelativeUrl().split('/'): remote = getattr(remote, id) for x in xrange(100): diff --git a/bt5/test_conflict_resolution/bt/revision b/bt5/test_conflict_resolution/bt/revision index bf0d87ab1b2b0ec1a11a3973d2845b42413d9767..7813681f5b41c028345ca62a2be376bae70b7f61 100644 --- a/bt5/test_conflict_resolution/bt/revision +++ b/bt5/test_conflict_resolution/bt/revision @@ -1 +1 @@ -4 \ No newline at end of file +5 \ No newline at end of file diff --git a/erp5/tests/testERP5TestNode.py b/erp5/tests/testERP5TestNode.py index e72891fa05dc13517acece77540ef70fb8b24c02..0d01ddd47a3a5ab5728e91033f5361b965428f9b 100644 --- a/erp5/tests/testERP5TestNode.py +++ b/erp5/tests/testERP5TestNode.py @@ -5,6 +5,7 @@ from erp5.util.testnode.testnode import SlapOSInstance from erp5.util.testnode.ProcessManager import ProcessManager, SubprocessError from erp5.util.testnode.SlapOSControler import SlapOSControler +from erp5.util.testnode.SlapOSControler import createFolder from erp5.util.taskdistribution import TaskDistributor from erp5.util.taskdistribution import TaskDistributionTool from erp5.util.taskdistribution import TestResultProxy @@ -159,6 +160,8 @@ class ERP5TestNode(TestCase): node_test_suite.edit(working_directory=self.working_directory) self.assertEquals("%s/foo" % self.working_directory, node_test_suite.working_directory) + self.assertEquals("%s/foo/test_suite" % self.working_directory, + node_test_suite.test_suite_directory) def test_03_NodeTestSuiteCheckDataAfterEdit(self): """ @@ -463,7 +466,9 @@ branch = foo self.assertEqual(result['status_code'], expected_status) process_manager = ProcessManager(log=self.log, max_timeout=1) _checkCorrectStatus(0, *['sleep','0']) - _checkCorrectStatus(-15, *['sleep','2']) + # We must make sure that if the command is too long that + # it will be automatically killed + self.assertRaises(SubprocessError, process_manager.spawn, 'sleep','3') def test_13_SlaposControlerResetSoftware(self): test_node = self.getTestNode() @@ -476,3 +481,18 @@ branch = foo self.assertEquals([file_name], os.listdir(controler.software_root)) controler._resetSoftware() self.assertEquals([], os.listdir(controler.software_root)) + + def test_14_createFolder(self): + test_node = self.getTestNode() + node_test_suite = test_node.getNodeTestSuite('foo') + node_test_suite.edit(working_directory=self.working_directory) + folder = node_test_suite.test_suite_directory + self.assertEquals(False, os.path.exists(folder)) + createFolder(folder) + self.assertEquals(True, os.path.exists(folder)) + to_drop_path = os.path.join(folder, 'drop') + to_drop = open(to_drop_path, 'w') + to_drop.close() + self.assertEquals(True, os.path.exists(to_drop_path)) + createFolder(folder, clean=True) + self.assertEquals(False, os.path.exists(to_drop_path)) diff --git a/erp5/util/taskdistribution/__init__.py b/erp5/util/taskdistribution/__init__.py index 64c37f614b7d44897800023c837c90b23675fe21..e40db1c45c444158a0d520633edb61b38f5824fc 100644 --- a/erp5/util/taskdistribution/__init__.py +++ b/erp5/util/taskdistribution/__init__.py @@ -96,22 +96,14 @@ def patchRPCParser(error_handler): parser_klass.feed = verbose_feed class RPCRetry(object): - def __init__(self, proxy, retry_time, logger, timeout=120): + def __init__(self, proxy, retry_time, logger): super(RPCRetry, self).__init__() self._proxy = proxy self._retry_time = retry_time self._logger = logger - self.__rpc_lock = threading.Lock() - self.timeout = timeout def _RPC(self, func_id, args=()): - default_timeout = socket.getdefaulttimeout() - socket.setdefaulttimeout(self.timeout) - try: - with self.__rpc_lock: - return getattr(self._proxy, func_id)(*args) - finally: - socket.setdefaulttimeout(default_timeout) + return getattr(self._proxy, func_id)(*args) def _retryRPC(self, func_id, args=()): retry_time = self._retry_time @@ -325,7 +317,6 @@ class TestResultProxy(RPCRetry): def _watcher(self): cond = self._watcher_condition while self._watcher_can_run and self.isAlive(): - working = time.time() caption_list = [] append = caption_list.append for name, (stream, max_history_bytes) in \ @@ -349,8 +340,7 @@ class TestResultProxy(RPCRetry): append(caption) self.reportStatus('', '\n'.join(caption_list), '') with cond: - cond.wait(max(self._watcher_period - (working - time.time()), - 0)) + cond.wait(self._watcher_period) def _stopWatching(self): cond = self._watcher_condition @@ -359,6 +349,25 @@ class TestResultProxy(RPCRetry): cond.notify() self._watcher_thread.join() +class ServerProxy(xmlrpclib.ServerProxy): + + def __init__(self, *args, **kw): + xmlrpclib.ServerProxy.__init__(self, *args, **kw) + transport = self.__transport + def make_connection(*args, **kw): + conn = transport.__class__.make_connection(transport, *args, **kw) + # BBB: On Python < 2.7, HTTP connection is wrapped + c = getattr(conn, '_conn', conn) + assert hasattr(c, 'timeout') + c.timeout = 120 + return conn + transport.make_connection = make_connection + self.__rpc_lock = threading.Lock() + + def __request(self, *args, **kw): + with self.__rpc_lock: + return xmlrpclib.ServerProxy.__request(self, *args, **kw) + class TaskDistributionTool(RPCRetry): def __init__(self, portal_url, retry_time=64, logger=None): """ @@ -371,7 +380,7 @@ class TaskDistributionTool(RPCRetry): if portal_url is None: proxy = DummyTaskDistributionTool() else: - proxy = xmlrpclib.ServerProxy( + proxy = ServerProxy( portal_url, allow_none=True, ).portal_task_distribution @@ -423,10 +432,7 @@ class TaskDistributor(RPCRetry): if portal_url is None: proxy = DummyTaskDistributionTool() else: - proxy = xmlrpclib.ServerProxy( - portal_url, - allow_none=True, - ) + proxy = ServerProxy(portal_url, allow_none=True) super(TaskDistributor, self).__init__(proxy, retry_time,logger) protocol_revision = self._retryRPC('getProtocolRevision') if protocol_revision != 1: diff --git a/erp5/util/testnode/ProcessManager.py b/erp5/util/testnode/ProcessManager.py index a9ec40c7a102ff4b30b2bc7ea37aea74426df41b..3195805086fbae537721a6fb9d83b2905d192539 100644 --- a/erp5/util/testnode/ProcessManager.py +++ b/erp5/util/testnode/ProcessManager.py @@ -25,6 +25,7 @@ # ############################################################################## import os +import psutil import re import subprocess import threading @@ -98,6 +99,25 @@ def subprocess_capture(p, log, log_prefix, get_output=True): return (p.stdout and ''.join(stdout), p.stderr and ''.join(stderr)) +def killCommand(pid): + """ + To avoid letting orphaned childs, we stop the process and all it's + child (until childs does not change) and then we brutally kill + everyone at the same time + """ + process = psutil.Process(pid) + child_set = set([x.pid for x in process.get_children(recursive=True)]) + new_child_set = None + os.kill(pid, signal.SIGSTOP) + while new_child_set != child_set: + for child_pid in child_set: + os.kill(child_pid, signal.SIGSTOP) + time.sleep(1) + new_child_set = set([x.pid for x in process.get_children(recursive=True)]) + for child_pid in child_set: + os.kill(child_pid, signal.SIGKILL) + os.kill(pid, signal.SIGKILL) + class ProcessManager(object): stdin = file(os.devnull) @@ -115,7 +135,7 @@ class ProcessManager(object): def timeoutExpired(p, log): if p.poll() is None: log('PROCESS TOO LONG OR DEAD, GOING TO BE TERMINATED') - p.terminate() + killCommand(p.pid) if self.under_cancellation: raise CancellationError("Test Result was cancelled") @@ -147,7 +167,7 @@ class ProcessManager(object): self.process_pid_set.discard(p.pid) if self.under_cancellation: raise CancellationError("Test Result was cancelled") - if raise_error_if_fail and p.returncode != -15 and p.returncode: + if raise_error_if_fail and p.returncode: raise SubprocessError(result) return result @@ -163,7 +183,7 @@ class ProcessManager(object): self.under_cancellation = True for pgpid in self.process_pid_set: try: - os.kill(pgpid, signal.SIGTERM) + killCommand(pgpid) except: pass try: diff --git a/erp5/util/testnode/SlapOSControler.py b/erp5/util/testnode/SlapOSControler.py index 0f4f7ece81743710ae2a87c40b51ef77af5a830f..e072cf9cb1841128833d7b8497bc51bea55cb221 100644 --- a/erp5/util/testnode/SlapOSControler.py +++ b/erp5/util/testnode/SlapOSControler.py @@ -36,7 +36,9 @@ import glob MAX_PARTIONS = 10 MAX_SR_RETRIES = 3 -def createFolder(folder): +def createFolder(folder, clean=False): + if clean and os.path.exists(folder): + shutil.rmtree(folder) if not(os.path.exists(folder)): os.mkdir(folder) diff --git a/erp5/util/testnode/Updater.py b/erp5/util/testnode/Updater.py index e5b48e004a1a1b828538d4c788908e32d2a74fb0..efc9593c5a41595e9a9d136809b940c8f9c73bd6 100644 --- a/erp5/util/testnode/Updater.py +++ b/erp5/util/testnode/Updater.py @@ -131,7 +131,7 @@ class Updater(object): else: h = revision[1] if h != self._git('rev-parse', 'HEAD'): - self.deletePycFiles('.') + self.deletePycFiles(self.repository_path) # For performance reasons, 'reset --merge' only looks at mtime & ctime # to check is the index is correct and conflicts immediately if # contents or metadata changed. Even hardlinking a file changes its @@ -140,11 +140,11 @@ class Updater(object): self._git('update-index', '--refresh') self._git('reset', '--merge', h) else: - self.deletePycFiles('.') + self.deletePycFiles(self.repository_path) if os.path.exists('.git/svn'): self._git('svn', 'rebase') else: - self._git('fetch') + self._git('fetch', '--prune') self._git('update-index', '--refresh') # see note above self._git('reset', '--merge', '@{u}') self.revision = self._git_find_rev(self._git('rev-parse', 'HEAD')) diff --git a/erp5/util/testnode/testnode.py b/erp5/util/testnode/testnode.py index 74a5413f483810793953419eac8a74c229a257d2..7befadb25687286336e6a8952729ce6a40ccdcf2 100644 --- a/erp5/util/testnode/testnode.py +++ b/erp5/util/testnode/testnode.py @@ -93,6 +93,8 @@ class NodeTestSuite(SlapOSInstance): self.working_directory = os.path.join(self.working_directory, self.reference) SlapOSControler.createFolder(self.working_directory) + self.test_suite_directory = os.path.join( + self.working_directory, "test_suite") self.custom_profile_path = os.path.join(self.working_directory, 'software.cfg') if getattr(self, "vcs_repository_list", None) is not None: @@ -325,8 +327,10 @@ branch = %(branch)s # From this point, test runner becomes responsible for updating test # result. We only do cleanup if the test runner itself is not able # to run. + SlapOSControler.createFolder(node_test_suite.test_suite_directory, + clean=True) self.process_manager.spawn(*invocation_list, - cwd=config['test_suite_directory'], + cwd=node_test_suite.test_suite_directory, log_prefix='runTestSuite', get_output=False) def cleanUp(self,test_result): @@ -400,8 +404,6 @@ branch = %(branch)s self.cleanUp(test_result) except (SubprocessError, CalledProcessError) as e: log("SubprocessError", exc_info=sys.exc_info()) - if test_result is not None: - test_result.removeWatch(log_file_name) if remote_test_result_needs_cleanup: status_dict = e.status_dict or {} test_result.reportFailure( diff --git a/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers.xml b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers.xml new file mode 100644 index 0000000000000000000000000000000000000000..afb25a5359b725583fa579f295e37af242d0e76d --- /dev/null +++ b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>openlayers</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>openlayers</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/OpenLayers.js.xml b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/OpenLayers.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..19cd5b40f9468f3e9acec08fdb7e31e0aafffeef --- /dev/null +++ b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/OpenLayers.js.xml @@ -0,0 +1,1679 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54094902.62</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>OpenLayers.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>739725</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>OpenLayers.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*\n +\n + OpenLayers.js -- OpenLayers Map Viewer Library\n +\n + Copyright (c) 2006-2012 by OpenLayers Contributors\n + Published under the 2-clause BSD license.\n + See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.\n +\n + Includes compressed code under the following licenses:\n +\n + (For uncompressed versions of the code used, please see the\n + OpenLayers Github repository: <https://github.com/openlayers/openlayers>)\n +\n +*/\n +\n +/**\n + * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>\n + * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)\n + *\n + * Licensed under the Apache License, Version 2.0 (the "License");\n + * you may not use this file except in compliance with the License.\n + * You may obtain a copy of the License at\n + * http://www.apache.org/licenses/LICENSE-2.0\n + */\n +\n +/**\n + * OpenLayers.Util.pagePosition is based on Yahoo\'s getXY method, which is\n + * Copyright (c) 2006, Yahoo! Inc.\n + * All rights reserved.\n + * \n + * Redistribution and use of this software in source and binary forms, with or\n + * without modification, are permitted provided that the following conditions\n + * are met:\n + * \n + * * Redistributions of source code must retain the above copyright notice,\n + * this list of conditions and the following disclaimer.\n + * \n + * * Redistributions in binary form must reproduce the above copyright notice,\n + * this list of conditions and the following disclaimer in the documentation\n + * and/or other materials provided with the distribution.\n + * \n + * * Neither the name of Yahoo! Inc. nor the names of its contributors may be\n + * used to endorse or promote products derived from this software without\n + * specific prior written permission of Yahoo! Inc.\n + * \n + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\n + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \n + * POSSIBILITY OF SUCH DAMAGE.\n + */\n +var OpenLayers={VERSION_NUMBER:"Release 2.12",singleFile:!0,_getScriptLocation:function(){for(var a=/(^|(.*?\\/))(OpenLayers[^\\/]*?\\.js)(\\?|$)/,b=document.getElementsByTagName("script"),c,d="",e=0,f=b.length;e<f;e++)if(c=b[e].getAttribute("src"))if(c=c.match(a)){d=c[1];break}return function(){return d}}(),ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};\n +OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}!("function"==typeof window.Event&&b instanceof window.Event)&&(b.hasOwnProperty&&b.hasOwnProperty("toString"))&&(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\\s\\s*/,"").replace(/\\s\\s*$/,"")},camelize:function(a){for(var a=a.split("-"),b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\\.+/),h=0;h<g.length;h++)0==h&&(f=b),f=f[g[h]];"function"==\n +typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\\$\\{([\\w.]+?)\\}/g,numberRegEx:/^([+-]?)(?=\\d|\\.\\d)\\d*(\\.\\d*)?([Ee]([+-]?\\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a){return OpenLayers.String.isNumeric(a)?parseFloat(a):a}};\n +OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");\n +0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b}};OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};\n +OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=\n +a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+\n +","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},\n +getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+\n +d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){var b=null;if(a){switch(a.CLASS_NAME){case "OpenLayers.LonLat":b=new OpenLayers.Bounds(a.lon,a.lat,a.lon,a.lat);break;case "OpenLayers.Geometry.Point":b=new OpenLayers.Bounds(a.x,a.y,a.x,a.y);break;case "OpenLayers.Bounds":b=a}if(b){this.centerLonLat=null;if(null==this.left||b.left<this.left)this.left=\n +b.left;if(null==this.bottom||b.bottom<this.bottom)this.bottom=b.bottom;if(null==this.right||b.right>this.right)this.right=b.right;if(null==this.top||b.top>this.top)this.top=b.top}}},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});var b=b||{},c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,\n +a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;var a=OpenLayers.Util.toFloat(a),b=OpenLayers.Util.toFloat(b),d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};if(b.worldBounds)var c=this.wrapDateLine(b.worldBounds),a=a.wrapDateLine(b.worldBounds);else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==\n +a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,\n +{inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c),a=this.contains(a.right,a.top,c);return b?d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=\n +null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){var b=b||{},c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=\n +a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&(c>a.left&&e.right-d>a.right)&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};\n +OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\\\s)"+b+"(\\\\s|$)").test(c)},\n +addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\\\s+)"+b+"(\\\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){var a=OpenLayers.Util.getElement(a),c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];\n +c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&(-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position"))&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+\n +OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});\n +OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");\n +return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};\n +(function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),\n +b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!!(a&&1===a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};"undefined"===typeof window.$&&(window.$=OpenLayers.Util.getElement);\n +OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;c>=0;c--)a[c]==b&&a.splice(c,1);return a};OpenLayers.Util.indexOf=function(a,b){if(typeof a.indexOf=="function")return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};\n +OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){if(b)a.id=b;if(c){a.style.left=c.x+"px";a.style.top=c.y+"px"}if(d){a.style.width=d.w+"px";a.style.height=d.h+"px"}if(e)a.style.position=e;if(f)a.style.border=f;if(g)a.style.overflow=g;if(parseFloat(h)>=0&&parseFloat(h)<1){a.style.filter="alpha(opacity="+h*100+")";a.style.opacity=h}else if(parseFloat(h)==1){a.style.filter="";a.style.opacity=""}};\n +OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var i=document.createElement("div");if(d)i.style.backgroundImage="url("+d+")";a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,g,h);return i};\n +OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var i=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,null,g);if(h){i.style.display="none";b=function(){i.style.display="";OpenLayers.Event.stopObservingElement(i)};OpenLayers.Event.observe(i,"load",b);OpenLayers.Event.observe(i,"error",b)}i.style.alt=a;i.galleryImg="no";if(d)i.src=d;return i};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;\n +OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=false;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&a>=5.5&&a<7}return OpenLayers.Util.alphaHackNeeded};\n +OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,i);b=a.childNodes[0];if(e)b.src=e;OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);if(OpenLayers.Util.alphaHack()){if(a.style.display!="none")a.style.display="inline-block";h==null&&(h="scale");a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+b.src+"\', sizingMethod=\'"+h+"\')";if(parseFloat(a.style.opacity)>=0&&parseFloat(a.style.opacity)<\n +1)a.style.filter=a.style.filter+(" alpha(opacity="+a.style.opacity*100+")");b.style.filter="alpha(opacity=0)"}};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){var j=OpenLayers.Util.createDiv(),i=OpenLayers.Util.createImage(null,null,null,null,null,null,null,i);i.className="olAlphaImg";j.appendChild(i);OpenLayers.Util.modifyAlphaImageDiv(j,a,b,c,d,e,f,g,h);return j};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};\n +OpenLayers.Util.applyDefaults=function(a,b){var a=a||{},c=typeof window.Event=="function"&&b instanceof window.Event,d;for(d in b)if(a[d]===void 0||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];if(!c&&b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString"))a.toString=b.toString;return a};\n +OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(d!=null&&typeof d!="function"){if(typeof d=="object"&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++){f=d[g];e.push(encodeURIComponent(f===null||f===void 0?"":f))}d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(d.pop()===" "?b:d.length?"&"+b:"?"+b);return c};\n +OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};\n +OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;if(!b)b=a.textContent;if(!b)b=a.firstChild.nodeValue},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&c!=null;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;\n +OpenLayers.Util.toFloat=function(a,b){if(b==null)b=OpenLayers.Util.DEFAULT_PRECISION;typeof a!=="number"&&(a=parseFloat(a));return b===0?a:parseFloat(a.toPrecision(b))};OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return a*180/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};\n +OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),i=Math.sin(g),g=Math.cos(g),j=Math.sin(h),h=Math.cos(h),k=f,l=2*Math.PI,m=20;Math.abs(k-l)>1.0E-12&&--m>0;){var n=Math.sin(k),o=Math.cos(k),p=Math.sqrt(h*n*h*n+(g*j-i*h*o)*(g*j-i*h*o));if(p==0)return 0;var o=i*j+g*h*o,q=Math.atan2(p,o),r=Math.asin(g*\n +h*n/p),s=Math.cos(r)*Math.cos(r),n=o-2*i*j/s,t=c/16*s*(4+c*(4-3*s)),l=k,k=f+(1-t)*c*Math.sin(r)*(q+t*p*(n+t*o*(-1+2*n*n)))}if(m==0)return NaN;d=s*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(q-c*p*(n+c/4*(o*(-1+2*n*n)-c/6*n*(-3+4*p*p)*(-3+4*n*n))))).toFixed(3)/1E3};\n +OpenLayers.Util.destinationVincenty=function(a,b,c){for(var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon,a=a.lat,i=d.rad(b),b=Math.sin(i),i=Math.cos(i),a=(1-h)*Math.tan(d.rad(a)),j=1/Math.sqrt(1+a*a),k=a*j,l=Math.atan2(a,i),a=j*b,m=1-a*a,f=m*(f*f-g*g)/(g*g),n=1+f/16384*(4096+f*(-768+f*(320-175*f))),o=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*n),p=2*Math.PI;Math.abs(f-p)>1.0E-12;)var q=Math.cos(2*l+f),r=Math.sin(f),s=Math.cos(f),t=o*r*(q+o/4*(s*(-1+2*q*q)-o/6*q*(-3+4*r*r)*(-3+4*\n +q*q))),p=f,f=c/(g*n)+t;c=k*r-j*s*i;g=Math.atan2(k*s+j*r*i,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(r*b,j*s-k*r*i);i=h/16*m*(4+h*(4-3*m));q=b-(1-i)*h*a*(f+i*r*(q+i*s*(-1+2*q*q)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(q),d.deg(g))};\n +OpenLayers.Util.getParameters=function(a){var a=a===null||a===void 0?window.location.href:a,b="";if(OpenLayers.String.contains(a,"?"))var b=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,b=a.substring(b,c);for(var a={},b=b.split(/[&;]/),c=0,d=b.length;c<d;++c){var e=b[c].split("=");if(e[0]){var f=e[0];try{f=decodeURIComponent(f)}catch(g){f=unescape(f)}e=(e[1]||"").replace(/\\+/g," ");try{e=decodeURIComponent(e)}catch(h){e=unescape(e)}e=e.split(",");e.length==1&&(e=e[0]);\n +a[f]=e}}return a};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a==null&&(a="id_");OpenLayers.Util.lastSeqID=OpenLayers.Util.lastSeqID+1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.3701,km:39370.1,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;\n +OpenLayers.METERS_PER_INCH=0.0254000508001016;\n +OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,\n +Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/\n +OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,\n +Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,\n +SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/\n +OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});\n +OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,\n +"us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return a>1?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;if(a){b==null&&(b="degrees");c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH)}return c};\n +OpenLayers.Util.getScaleFromResolution=function(a,b){b==null&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};\n +OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&OpenLayers.Element.getStyle(a,"position")=="absolute"&&(a.style.top==""||a.style.left==""),e=null;if(a.getBoundingClientRect){a=a.getBoundingClientRect();e=c.scrollTop;b[0]=a.left+c.scrollLeft;b[1]=a.top+e}else if(document.getBoxObjectFor&&!d){a=document.getBoxObjectFor(a);c=document.getBoxObjectFor(c);b[0]=a.screenX-c.screenX;\n +b[1]=a.screenY-c.screenY}else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;){b[0]=b[0]+e.offsetLeft;b[1]=b[1]+e.offsetTop;e=e.offsetParent}c=OpenLayers.BROWSER_NAME;if(c=="opera"||c=="safari"&&OpenLayers.Element.getStyle(a,"position")=="absolute")b[1]=b[1]-document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]=b[0]-e.scrollLeft;if(c!="opera"||e.tagName!="TR")b[1]=b[1]-e.scrollTop;e=e.offsetParent}}return b};\n +OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;if(a==void 0){a=OpenLayers.BROWSER_NAME=="msie"&&document.compatMode!="CSS1Compat"?document.body:document.documentElement;arguments.callee.viewportElement=a}return a};\n +OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var a=OpenLayers.Util.createUrlObject(a,c),b=OpenLayers.Util.createUrlObject(b,c),d;for(d in a)if(d!=="args"&&a[d]!=b[d])return false;for(d in a.args){if(a.args[d]!=b.args[d])return false;delete b.args[d]}for(d in b.args)return false;return true};\n +OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\\w+:\\/\\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;if(a.indexOf("/")===0)a=d+a;else{c=c.pathname.split("/");c.pop();a=d+c.join("/")+"/"+a}}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?c.port=="80"||c.port=="0"?"":c.port:c.port==""||c.port=="0"?"80":c.port;d.hash=b.ignoreHash||\n +c.hash==="#"?"":c.hash;var e=c.search;if(!e){e=a.indexOf("?");e=e!=-1?a.substr(e):""}d.args=OpenLayers.Util.getParameters(e);d.pathname=c.pathname.charAt(0)=="/"?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=b==-1?c!=-1?a.substr(0,c):a:c!=-1?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return a.indexOf("webkit")==-1&&a.indexOf("gecko")!=-1}();\n +OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();b.indexOf("opera")!=-1?a="opera":b.indexOf("msie")!=-1?a="msie":b.indexOf("safari")!=-1?a="safari":b.indexOf("mozilla")!=-1&&(a=b.indexOf("firefox")!=-1?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};\n +OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=false,i=null,j=g;j&&j.tagName.toLowerCase()!="body";){var k=OpenLayers.Element.getStyle(j,"position");if(k=="absolute"){h=true;break}else if(k&&k!="static")break;j=j.parentNode}if(h&&(g.clientHeight===0||g.clientWidth===0)){i=document.createElement("div");i.style.visibility="hidden";i.style.position="absolute";\n +i.style.overflow="visible";i.style.width=document.body.clientWidth+"px";i.style.height=document.body.clientHeight+"px";i.appendChild(f)}f.style.position="absolute";if(b)if(b.w){d=b.w;f.style.width=d+"px"}else if(b.h){e=b.h;f.style.height=e+"px"}if(c&&c.displayClass)f.className=c.displayClass;b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes){a=0;for(c=b.childNodes.length;a<c;a++)if(b.childNodes[a].style)b.childNodes[a].style.overflow="visible"}f.appendChild(b);\n +i?g.appendChild(i):g.appendChild(f);if(!d){d=parseInt(b.scrollWidth);f.style.width=d+"px"}e||(e=parseInt(b.scrollHeight));f.removeChild(b);if(i){i.removeChild(f);g.removeChild(i)}else g.removeChild(f);return new OpenLayers.Size(d,e)};\n +OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(a==null){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);\n +OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};\n +OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");var a=(a+540)%360-180,d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round((f-d)/(1/60)*10),f=f/10;if(f>=60){f=f-60;d=d+1;if(d>=60){d=d-60;e=e+1}}e<10&&(e="0"+e);e=e+"\\u00b0";if(c.indexOf("dm")>=0){d<10&&(d="0"+d);e=e+(d+"\'");if(c.indexOf("dms")>=0){f<10&&(f="0"+f);e=e+(f+\'"\')}}return e=b=="lon"?e+(a<0?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(a<0?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(){throw Error("Read not implemented.");},write:function(){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.CSWGetRecords=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetRecords.DEFAULTS),b=OpenLayers.Format.CSWGetRecords["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSWGetRecords version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetRecords.DEFAULTS={version:"2.0.2"};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+\n +"_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&\n +this.handler.setMap(a)},draw:function(a){if(null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title))this.div.title=this.title;null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=\n +a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),\n +!0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Event={observers:!1,KEY_SPACE:32,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,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,\n +b){b||(a.preventDefault?a.preventDefault():a.returnValue=!1);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent))b="keydown";this.observers||(this.observers={});if(!a._eventCacheID){var e=\n +"eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=\n +b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){var d=d||!1,a=OpenLayers.Util.getElement(a),e=a._eventCacheID;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent))b="keydown";var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var i=g[h];if(i.name==b&&i.observer==c&&i.useCapture==d){g.splice(h,1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;\n +break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);\n +OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=\n +{};null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(){},attachToElement:function(a){this.element?OpenLayers.Event.stopObservingElement(this.element):\n +(this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=0,c=this.BROWSER_EVENTS.length;b<c;b++)OpenLayers.Event.observe(a,this.BROWSER_EVENTS[b],this.eventHandler);OpenLayers.Event.observe(a,"dragstart",OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&\n +!this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==\n +b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&!(d=c[e],d=d.func.apply(d.obj,[b]),void 0!=d&&!1==d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},\n +handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=c[h],d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;var a=document.body;if(a&&(!(0!=a.scrollTop||0!=a.scrollLeft)||!navigator.userAgent.match(/iPhone/i)))this.element.offsets=null},getMousePosition:function(a){this.includeXY?\n +this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[b.scrollLeft,b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+\n +this.element.scrolls[0]-this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);\n +delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",{buttonElement:c}),OpenLayers.Event.stop(a),\n +b=!1}else this.startEvt&&(this.completeRegEx.test(a.type)&&(b=OpenLayers.Util.pagePosition(c),this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})),this.cancelRegEx.test(a.type)&&delete this.startEvt,OpenLayers.Event.stop(a),b=!1);this.startRegEx.test(a.type)&&(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else delete this.startEvt;return b}});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:{w:180,h:90},layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:!1,handlers:null,resolutionFactor:1,maximized:!1,initialize:function(a){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[a])},destroy:function(){this.mapDiv&&(this.handlers.click&&this.handlers.click.destroy(),this.handlers.drag&&this.handlers.drag.destroy(),\n +this.ovmap&&this.ovmap.viewPortDiv.removeChild(this.extentRectangle),this.extentRectangle=null,this.rectEvents&&(this.rectEvents.destroy(),this.rectEvents=null),this.ovmap&&(this.ovmap.destroy(),this.ovmap=null),this.element.removeChild(this.mapDiv),this.mapDiv=null,this.div.removeChild(this.element),this.element=null,this.maximizeDiv&&(this.div.removeChild(this.maximizeDiv),this.maximizeDiv=null),this.minimizeDiv&&(this.div.removeChild(this.minimizeDiv),this.minimizeDiv=null),this.map.events.un({buttonclick:this.onButtonClick,\n +moveend:this.update,changebaselayer:this.baseLayerDraw,scope:this}),OpenLayers.Control.prototype.destroy.apply(this,arguments))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(0===this.layers.length)if(this.map.baseLayer)this.layers=[this.map.baseLayer.clone()];else return this.map.events.register("changebaselayer",this,this.baseLayerDraw),this.div;this.element=document.createElement("div");this.element.className=this.displayClass+"Element";this.element.style.display="none";\n +this.mapDiv=document.createElement("div");this.mapDiv.style.width=this.size.w+"px";this.mapDiv.style.height=this.size.h+"px";this.mapDiv.style.position="relative";this.mapDiv.style.overflow="hidden";this.mapDiv.id=OpenLayers.Util.createUniqueID("overviewMap");this.extentRectangle=document.createElement("div");this.extentRectangle.style.position="absolute";this.extentRectangle.style.zIndex=1E3;this.extentRectangle.className=this.displayClass+"ExtentRectangle";this.element.appendChild(this.mapDiv);\n +this.div.appendChild(this.element);if(this.outsideViewport)this.element.style.display="";else{this.div.className+=" "+this.displayClass+"Container";var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+"MaximizeButton",null,null,a,"absolute");this.maximizeDiv.style.display="none";this.maximizeDiv.className=this.displayClass+"MaximizeButton olButton";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");\n +this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_minimizeDiv",null,null,a,"absolute");this.minimizeDiv.style.display="none";this.minimizeDiv.className=this.displayClass+"MinimizeButton olButton";this.div.appendChild(this.minimizeDiv);this.minimizeControl()}this.map.getExtent()&&this.update();this.map.events.on({buttonclick:this.onButtonClick,moveend:this.update,scope:this});this.maximized&&this.maximizeControl();return this.div},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",\n +this,this.baseLayerDraw)},rectDrag:function(a){var b=this.handlers.drag.last.x-a.x,c=this.handlers.drag.last.y-a.y;if(0!=b||0!=c){var d=this.rectPxBounds.top,e=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),f=this.rectPxBounds.getWidth(),c=Math.max(0,d-c),c=Math.min(c,this.ovmap.size.h-this.hComp-a),b=Math.max(0,e-b),b=Math.min(b,this.ovmap.size.w-this.wComp-f);this.setRectPxBounds(new OpenLayers.Bounds(b,c+a,b+f,c))}},mapDivClick:function(a){var b=this.rectPxBounds.getCenterPixel(),\n +c=a.xy.x-b.x,d=a.xy.y-b.y,e=this.rectPxBounds.top,f=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),b=this.rectPxBounds.getWidth(),d=Math.max(0,e+d),d=Math.min(d,this.ovmap.size.h-a),c=Math.max(0,f+c),c=Math.min(c,this.ovmap.size.w-b);this.setRectPxBounds(new OpenLayers.Bounds(c,d+a,c+b,d));this.updateMapToRect()},onButtonClick:function(a){a.buttonElement===this.minimizeDiv?this.minimizeControl():a.buttonElement===this.maximizeDiv&&this.maximizeControl()},maximizeControl:function(a){this.element.style.display=\n +"";this.showToggle(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.element.style.display="none";this.showToggle(!0);null!=a&&OpenLayers.Event.stop(a)},showToggle:function(a){this.maximizeDiv.style.display=a?"":"none";this.minimizeDiv.style.display=a?"none":""},update:function(){null==this.ovmap&&this.createMap();(this.autoPan||!this.isSuitableOverview())&&this.updateOverview();this.updateRectToMap()},isSuitableOverview:function(){var a=this.map.getExtent(),b=this.map.maxExtent,\n +a=new OpenLayers.Bounds(Math.max(a.left,b.left),Math.max(a.bottom,b.bottom),Math.min(a.right,b.right),Math.min(a.top,b.top));this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()));b=this.ovmap.getResolution()/this.map.getResolution();return b>this.minRatio&&b<=this.maxRatio&&this.ovmap.getExtent().containsBounds(a)},updateOverview:function(){var a=this.map.getResolution(),b=this.ovmap.getResolution(),c=b/a;c>this.maxRatio?\n +b=this.minRatio*a:c<=this.minRatio&&(b=this.maxRatio*a);this.ovmap.getProjection()!=this.map.getProjection()?(a=this.map.center.clone(),a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject())):a=this.map.center;this.ovmap.setCenter(a,this.ovmap.getZoomForResolution(b*this.resolutionFactor));this.updateRectToMap()},createMap:function(){var a=OpenLayers.Util.extend({controls:[],maxResolution:"auto",fallThrough:!1},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,a);this.ovmap.viewPortDiv.appendChild(this.extentRectangle);\n +OpenLayers.Event.stopObserving(window,"unload",this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=(this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-right-width")))?this.wComp:2;this.hComp=(this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-bottom-width")))?\n +this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.mapDivClick},{single:!0,"double":!1,stopSingle:!0,stopDouble:!0,pixelTolerance:1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,!0);this.rectEvents.register("mouseover",this,function(){!this.handlers.drag.active&&!this.map.dragging&&this.handlers.drag.activate()});\n +this.rectEvents.register("mouseout",this,function(){this.handlers.drag.dragging||this.handlers.drag.deactivate()});if(this.ovmap.getProjection()!=this.map.getProjection()){var a=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units,b=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=a&&b?OpenLayers.INCHES_PER_UNIT[a]/OpenLayers.INCHES_PER_UNIT[b]:1}},updateRectToMap:function(){var a=this.getRectBoundsFromMapBounds(this.ovmap.getProjection()!=\n +this.map.getProjection()?this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()):this.map.getExtent());a&&this.setRectPxBounds(a)},updateMapToRect:function(){var a=this.getMapBoundsFromRectBounds(this.rectPxBounds);this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject()));this.map.panTo(a.getCenterLonLat())},setRectPxBounds:function(a){var b=Math.max(a.top,0),c=Math.max(a.left,0),d=\n +Math.min(a.top+Math.abs(a.getHeight()),this.ovmap.size.h-this.hComp),a=Math.min(a.left+a.getWidth(),this.ovmap.size.w-this.wComp),e=Math.max(a-c,0),f=Math.max(d-b,0);e<this.minRectSize||f<this.minRectSize?(this.extentRectangle.className=this.displayClass+this.minRectDisplayClass,e=c+e/2-this.minRectSize/2,this.extentRectangle.style.top=Math.round(b+f/2-this.minRectSize/2)+"px",this.extentRectangle.style.left=Math.round(e)+"px",this.extentRectangle.style.height=this.minRectSize+"px",this.extentRectangle.style.width=\n +this.minRectSize+"px"):(this.extentRectangle.className=this.displayClass+"ExtentRectangle",this.extentRectangle.style.top=Math.round(b)+"px",this.extentRectangle.style.left=Math.round(c)+"px",this.extentRectangle.style.height=Math.round(f)+"px",this.extentRectangle.style.width=Math.round(e)+"px");this.rectPxBounds=new OpenLayers.Bounds(Math.round(c),Math.round(d),Math.round(a),Math.round(b))},getRectBoundsFromMapBounds:function(a){var b=this.getOverviewPxFromLonLat({lon:a.left,lat:a.bottom}),a=this.getOverviewPxFromLonLat({lon:a.right,\n +lat:a.top}),c=null;b&&a&&(c=new OpenLayers.Bounds(b.x,b.y,a.x,a.y));return c},getMapBoundsFromRectBounds:function(a){var b=this.getLonLatFromOverviewPx({x:a.left,y:a.bottom}),a=this.getLonLatFromOverviewPx({x:a.right,y:a.top});return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},getLonLatFromOverviewPx:function(a){var b=this.ovmap.size,c=this.ovmap.getResolution(),d=this.ovmap.getExtent().getCenterLonLat();return{lon:d.lon+(a.x-b.w/2)*c,lat:d.lat-(a.y-b.h/2)*c}},getOverviewPxFromLonLat:function(a){var b=\n +this.ovmap.getResolution(),c=this.ovmap.getExtent();if(c)return{x:Math.round(1/b*(a.lon-c.left)),y:Math.round(1/b*(c.top-a.lat))}},CLASS_NAME:"OpenLayers.Control.OverviewMap"});OpenLayers.Animation=function(a){var b=!(!a.requestAnimationFrame&&!a.webkitRequestAnimationFrame&&!a.mozRequestAnimationFrame&&!a.oRequestAnimationFrame&&!a.msRequestAnimationFrame),c=function(){var b=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,16)};return function(c,d){b.apply(a,[c,d])}}(),d=0,e={};return{isNative:b,requestFrame:c,start:function(a,b,h){var b=0<b?b:Number.POSITIVE_INFINITY,\n +i=++d,j=+new Date;e[i]=function(){e[i]&&+new Date-j<=b?(a(),e[i]&&c(e[i],h)):delete e[i]};c(e[i],h);return i},stop:function(a){delete e[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.time=0;OpenLayers.Animation.stop(this.animationId);this.animationId=null;this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,\n +this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&this.callbacks.eachStep.call(this,\n +a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};\n +OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};\n +OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\\+title=[^\\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;window.Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),window.Proj4js&&\n +this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};\n +OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};\n +OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};\n +OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{var b=b.getCode(),c=c.getCode(),d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};\n +(function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;a.y=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,m,n,o,p;g=0;for(m=d.length;g<m;++g){n=d[g];e(c,n,b);e(n,c,a);for(p=g+1;p<m;++p)o=d[p],e(n,o,f),e(o,n,f)}}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326",\n +"EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,\n +maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!0,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+\n +"theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);this.maxExtent&&!(this.maxExtent instanceof OpenLayers.Bounds)&&(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));this.minExtent&&!(this.minExtent instanceof OpenLayers.Bounds)&&(this.minExtent=new OpenLayers.Bounds(this.minExtent));this.restrictedExtent&&\n +!(this.restrictedExtent instanceof OpenLayers.Bounds)&&(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));this.center&&!(this.center instanceof OpenLayers.LonLat)&&(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=\n +this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.width="100px";this.layerContainerDiv.style.height=\n +"100px";this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);9>parseFloat(navigator.appVersion.split("MSIE")[1])?this.events.register("resize",this,this.updateSize):(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),\n +e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),\n +OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,\n +"unload",this.unloadDestroy);b&&b.layers&&(delete this.center,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;\n +this.panTween&&(this.panTween.stop(),this.panTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy?OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy):this.events.unregister("resize",this,this.updateSize);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);\n +this.layers=null}this.viewPortDiv&&this.div.removeChild(this.viewPortDiv);this.viewPortDiv=null;this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==\n +typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=\n +this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=\n +"";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,\n +b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",\n +{map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):\n +this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null!=this.baseLayer&&!this.allOverlays&&this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),\n +!1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&\n +(a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,\n +a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();\n +if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,a.h=this.div.offsetHeight;\n +if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&this.size&&(this.center=\n +this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)(0!=a||0!=b)&&this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter()),a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},\n +panTo:function(a){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(a)){this.panTween||(this.panTween=new OpenLayers.Tween(this.panMethod));var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(){this.moveTo(a);\n +this.dragging=false;this.events.triggerEvent("moveend")},this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,i=0;this.restrictedExtent&&(h=c,i=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-i&&f>=this.minPx.y+i?Math.round(b):0;if(a||b){this.dragging||(this.dragging=\n +!0,this.events.triggerEvent("movestart"));this.center=null;a&&(this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-a+"px",this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-b+"px",this.minPx.y-=b,this.maxPx.y-=b);d=0;for(e=this.layers.length;d<e;++d)if(c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange))c.moveByPx(a,b),c.events.triggerEvent("move");this.events.triggerEvent("move")}},adjustZoom:function(a){var b=\n +this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;if(this.getResolutionForZoom(a)>c)for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}return a},moveTo:function(a,b,c){null!=a&&!(a instanceof OpenLayers.LonLat)&&(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));if(this.baseLayer.wrapDateLine){var d=b,b=this.adjustZoom(b);b!==d&&(a=this.getCenter())}var d=c.dragging||this.dragging,e=c.forceZoomChange;!this.getCachedCenter()&&\n +!this.isValidLonLat(a)&&(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&\n +(a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart");f&&(!e&&this.center&&this.centerLayerContainer(a),this.center=\n +a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,i=Math.round(f.getWidth()/a),j=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-i)/2-g/a,y:(this.size.h-j)/2-h/a};this.maxPx={x:this.minPx.x+Math.round(f.getWidth()/\n +a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)if(f=this.layers[b],f!==this.baseLayer&&!f.isBaseLayer&&(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),\n +g&&f.visibility))f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e});this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=parseInt(this.layerContainerDiv.style.left),a=parseInt(this.layerContainerDiv.style.top),\n +e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.layerContainerDiv.style.left=e+"px";this.layerContainerDiv.style.top=b+"px";d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():\n +null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=\n +null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,\n +b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a){this.isValidZoomLevel(a)&&this.setCenter(null,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,\n +b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},zoomToMaxExtent:function(a){this.zoomToExtent(this.getMaxExtent({restricted:a?a.restricted:!0}))},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*\n +c/2,e=this.getCachedCenter();this.zoomToExtent(new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c),b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);\n +a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution(),a=b.add(-c/2,0),d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=\n +null;if(null!=a)var b=parseInt(this.layerContainerDiv.style.left),c=parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);return b},getLayerPxFromViewPortPx:function(a){var b=null;if(null!=a){var b=-parseInt(this.layerContainerDiv.style.left),c=-parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);if(isNaN(b.x)||isNaN(b.y))b=null}return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){return this.getLayerPxFromViewPortPx(this.getPixelFromLonLat(a))},\n +CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,\n +numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},\n +destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=\n +this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});if(a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),a.maxExtent&&!(a.maxExtent instanceof OpenLayers.Bounds)&&(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),a.minExtent&&!(a.minExtent instanceof\n +OpenLayers.Bounds)))a.minExtent=new OpenLayers.Bounds(a.minExtent);OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),\n +this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&(this.inRange&&this.visibility)&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(){var a=this.visibility;this.isBaseLayer||(a=a&&this.inRange);this.display(a)},moveByPx:function(){},setMap:function(a){null==\n +this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},\n +removeMap:function(){},getImageSize:function(){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),\n +this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,\n +b,c,d={},e=!0;a=0 + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==\n +d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,\n +this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,\n +this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,\n +this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&("number"!==typeof c&&null!=this.maxExtent)&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==\n +typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){return this.getResolutionForZoom(this.map.getZoom())},getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize();return this.getZoomForResolution(Math.max(a.getWidth()/\n +c.w,a.getHeight()/c.h),b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom)var b=Math.floor(a),c=Math.ceil(a),a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c]);else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<\n +d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&\n +(b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,\n +null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter)var b=this.gutter*this.map.getResolution(),a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+b,a.top+b);this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var a=null;return a=this.sphericalMercator?this.map.calculateBounds():OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this)},getLonLatFromViewPortPx:function(a){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments)},getViewPortPxFromLonLat:function(a){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments)},initMercatorParameters:function(){this.RESOLUTIONS=[];for(var a=0;a<=this.MAX_ZOOM_LEVEL;++a)this.RESOLUTIONS[a]=\n +156543.03390625/Math.pow(2,a);this.units="m";this.projection=this.projection||"EPSG:900913"},forwardMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(e.x,e.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,\n +y:d},b,a);return new OpenLayers.LonLat(e.x,e.y)}}()};OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:!0,isBaseLayer:!0,isFixed:!0,pane:null,mapObject:null,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);null==this.pane&&(this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane"))},destroy:function(){this.pane=this.mapObject=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=\n +parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";"msie"==OpenLayers.BROWSER_NAME&&(this.pane.style.background="url("+OpenLayers.Util.getImageLocation("blank.gif")+")");this.isFixed?this.map.viewPortDiv.appendChild(this.pane):this.map.layerContainerDiv.appendChild(this.pane);this.loadMapObject();null==this.mapObject&&this.loadWarningMessage()},removeMap:function(a){this.pane&&this.pane.parentNode&&this.pane.parentNode.removeChild(this.pane);\n +OpenLayers.Layer.prototype.removeMap.apply(this,arguments)},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var a=this.map.getSize(),b=Math.min(a.w,300),c=Math.min(a.h,200),b=new OpenLayers.Size(b,c),a=(new OpenLayers.Pixel(a.w/2,a.h/2)).add(-b.w/2,-b.h/2),a=OpenLayers.Util.createDiv(this.name+"_warning",a,b,null,null,null,"auto");a.style.padding="7px";a.style.backgroundColor="yellow";a.innerHTML=this.getWarningHTML();this.div.appendChild(a)},getWarningHTML:function(){return""},\n +display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display},setZIndex:function(a){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1},moveByPx:function(a,b){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);this.dragPanMapObject?this.dragPanMapObject(a,-b):this.moveTo(this.map.getCachedCenter())},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,\n +arguments);if(null!=this.mapObject){var d=this.map.getCenter(),e=this.map.getZoom();if(null!=d){var f=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectCenter()),g=this.getOLZoomFromMapObjectZoom(this.getMapObjectZoom());if(!d.equals(f)||e!=g)!b&&f&&this.dragPanMapObject&&this.smoothDragPan?(e=this.map.getViewPortPxFromLonLat(f),d=this.map.getViewPortPxFromLonLat(d),this.dragPanMapObject(d.x-e.x,e.y-d.y)):(d=this.getMapObjectLonLatFromOLLonLat(d),e=this.getMapObjectZoomFromOLZoom(e),this.setMapObjectCenter(d,\n +e,c))}}},getLonLatFromViewPortPx:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectLonLatFromMapObjectPixel(this.getMapObjectPixelFromOLPixel(a))));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLPixelFromMapObjectPixel(this.getMapObjectPixelFromMapObjectLonLat(this.getMapObjectLonLatFromOLLonLat(a))));return b},getOLLonLatFromMapObjectLonLat:function(a){var b=\n +null;null!=a&&(b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),b=new OpenLayers.LonLat(b,a));return b},getMapObjectLonLatFromOLLonLat:function(a){var b=null;null!=a&&(b=this.getMapObjectLonLatFromLonLat(a.lon,a.lat));return b},getOLPixelFromMapObjectPixel:function(a){var b=null;null!=a&&(b=this.getXFromMapObjectPixel(a),a=this.getYFromMapObjectPixel(a),b=new OpenLayers.Pixel(b,a));return b},getMapObjectPixelFromOLPixel:function(a){var b=null;null!=a&&(b=this.getMapObjectPixelFromXY(a.x,\n +a.y));return b},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){for(var a=["minZoomLevel","maxZoomLevel","numZoomLevels"],b=0,c=a.length;b<c;b++){var d=a[b];this[d]=null!=this.options[d]?this.options[d]:this.map[d]}if(null==this.minZoomLevel||this.minZoomLevel<this.MIN_ZOOM_LEVEL)this.minZoomLevel=this.MIN_ZOOM_LEVEL;a=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;b=null==this.options.numZoomLevels&&null!=this.options.maxZoomLevel||null==this.numZoomLevels&&null!=this.maxZoomLevel?\n +this.maxZoomLevel-this.minZoomLevel+1:this.numZoomLevels;this.numZoomLevels=null!=b?Math.min(b,a):a;this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(null!=this.RESOLUTIONS){a=0;this.resolutions=[];for(b=this.minZoomLevel;b<=this.maxZoomLevel;b++)this.resolutions[a++]=this.RESOLUTIONS[b];this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1]}},getResolution:function(){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getResolution.apply(this,\n +arguments);var a=null,b=this.map.getSize(),c=this.getExtent();null!=b&&null!=c&&(a=Math.max(c.getWidth()/b.w,c.getHeight()/b.h));return a},getExtent:function(){var a=this.map.getSize(),b=this.getLonLatFromViewPortPx({x:0,y:0}),a=this.getLonLatFromViewPortPx({x:a.w,y:a.h});return null!=b&&null!=a?new OpenLayers.Bounds(b.lon,a.lat,a.lon,b.lat):null},getZoomForResolution:function(a){return null!=this.resolutions?OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments):this.getZoomForExtent(OpenLayers.Layer.prototype.getExtent.apply(this,\n +[]))},getOLZoomFromMapObjectZoom:function(a){var b=null;null!=a&&(b=a-this.minZoomLevel,this.map.baseLayer!==this&&(b=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));return b},getMapObjectZoomFromOLZoom:function(a){var b=null;null!=a&&(b=a+this.minZoomLevel,this.map.baseLayer!==this&&(b=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));return b},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,6.866455078125E-4,3.4332275390625E-4,1.71661376953125E-4,8.58306884765625E-5,4.291534423828125E-5,2.145767211914062E-5,1.072883605957031E-5,5.36441802978515E-6,2.68220901489257E-6,1.341104507446289E-6,6.705522537231445E-7],\n +type:null,wrapDateLine:!0,sphericalMercator:!1,version:null,initialize:function(a,b){b=b||{};b.version||(b.version="function"===typeof GMap2?"2":"3");var c=OpenLayers.Layer.Google["v"+b.version.replace(/\\./g,"_")];if(c)OpenLayers.Util.applyDefaults(b,c);else throw"Unsupported Google Maps API version: "+b.version;OpenLayers.Util.applyDefaults(b,c.DEFAULTS);b.maxExtent&&(b.maxExtent=b.maxExtent.clone());OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[a,b]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,\n +[a,b]);this.sphericalMercator&&(OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator),this.initMercatorParameters())},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions())},setVisibility:function(a){var b=null==this.opacity?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(b)},display:function(a){this._dragging||this.setGMapVisibility(a);OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments)},moveTo:function(a,\n +b,c){this._dragging=c;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging},setOpacity:function(a){a!==this.opacity&&(null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"}),this.opacity=a);if(this.getVisibility()){var b=this.getMapContainer();OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}},destroy:function(){if(this.map){this.setGMapVisibility(!1);var a=OpenLayers.Layer.Google.cache[this.map.id];a&&1>=a.count&&\n +this.removeGMapElements()}OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments)},removeGMapElements:function(){var a=OpenLayers.Layer.Google.cache[this.map.id];if(a){var b=this.mapObject&&this.getMapContainer();b&&b.parentNode&&b.parentNode.removeChild(b);(b=a.termsOfUse)&&b.parentNode&&b.parentNode.removeChild(b);(a=a.poweredBy)&&a.parentNode&&a.parentNode.removeChild(a)}},removeMap:function(a){this.visibility&&this.mapObject&&this.setGMapVisibility(!1);var b=OpenLayers.Layer.Google.cache[a.id];\n +b&&(1>=b.count?(this.removeGMapElements(),delete OpenLayers.Layer.Google.cache[a.id]):--b.count);delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments)},getOLBoundsFromMapObjectBounds:function(a){var b=null;null!=a&&(b=a.getSouthWest(),a=a.getNorthEast(),this.sphericalMercator?(b=this.forwardMercator(b.lng(),b.lat()),a=this.forwardMercator(a.lng(),a.lat())):(b=new OpenLayers.LonLat(b.lng(),b.lat()),\n +a=new OpenLayers.LonLat(a.lng(),a.lat())),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat));return b},getWarningHTML:function(){return OpenLayers.i18n("googleWarning")},getMapObjectCenter:function(){return this.mapObject.getCenter()},getMapObjectZoom:function(){return this.mapObject.getZoom()},getLongitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),a.lat()).lon:a.lng()},getLatitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),\n +a.lat()).lat:a.lat()},getXFromMapObjectPixel:function(a){return a.x},getYFromMapObjectPixel:function(a){return a.y},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};\n +OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){this.type||(this.type=G_NORMAL_MAP);var a,b,c,d=OpenLayers.Layer.Google.cache[this.map.id];if(d)a=d.mapObject,b=d.termsOfUse,c=d.poweredBy,++d.count;else{var d=this.map.viewPortDiv,e=document.createElement("div");e.id=this.map.id+"_GMap2Container";e.style.position="absolute";e.style.width="100%";e.style.height="100%";d.appendChild(e);try{a=new GMap2(e),b=e.lastChild,d.appendChild(b),b.style.zIndex=\n +"1100",b.style.right="",b.style.bottom="",b.className="olLayerGoogleCopyright",c=e.lastChild,d.appendChild(c),c.style.zIndex="1100",c.style.right="",c.style.bottom="",c.className="olLayerGooglePoweredBy gmnoprint"}catch(f){throw f;}OpenLayers.Layer.Google.cache[this.map.id]={mapObject:a,termsOfUse:b,poweredBy:c,count:1}}this.mapObject=a;this.termsOfUse=b;this.poweredBy=c;-1===OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)&&this.mapObject.addMapType(this.type);"function"==typeof a.getDragObject?\n +this.dragObject=a.getDragObject():this.dragPanMapObject=null;!1===this.isBaseLayer&&this.setGMapVisibility("none"!==this.div.style.display)},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded())this.mapObject.checkResize();else{if(!this._resized)var a=this,b=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(b);delete a._resized;a.mapObject.checkResize();a.moveTo(a.map.getCenter(),a.map.getZoom())});this._resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];\n +if(b){var c=this.mapObject.getContainer();!0===a?(this.mapObject.setMapType(this.type),c.style.display="",this.termsOfUse.style.left="",this.termsOfUse.style.display="",this.poweredBy.style.display="",b.displayed=this.id):(b.displayed===this.id&&delete b.displayed,b.displayed||(c.style.display="none",this.termsOfUse.style.display="none",this.termsOfUse.style.left="-9999px",this.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getContainer()},getMapObjectBoundsFromOLBounds:function(a){var b=\n +null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new GLatLngBounds(new GLatLng(b.lat,b.lon),new GLatLng(a.lat,a.lon)));return b},setMapObjectCenter:function(a,b){this.mapObject.setCenter(a,b)},dragPanMapObject:function(a,b){this.dragObject.moveBy(new GSize(-a,b))},getMapObjectLonLatFromMapObjectPixel:function(a){return this.mapObject.fromContainerPixelToLatLng(a)},\n +getMapObjectPixelFromMapObjectLonLat:function(a){return this.mapObject.fromLatLngToContainerPixel(a)},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new GLatLng(c.lat,c.lon)):c=new GLatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new GPoint(a,b)}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,\n +arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&\n +b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,\n +b)},createTextNode:function(a){"string"!==typeof a&&(a=""+a);return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else for(var a=a.getElementsByTagName("*"),e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)("*"==b||b==e.namespaceURI)&&d.push(e);return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,\n +c);else for(var a=a.attributes,e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){for(var b=!0,a=a.firstChild;a;a=\n +a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){for(var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY,a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,\n +c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){var b=b||{},c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,\n +b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,\n +b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,\n +b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if((!b||b===(a.localName||a.nodeName.split(":").pop()))&&(!c||c===a.namespaceURI))break a;a=null;break a;case 3:if(/^\\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,\n +e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,b)}return c},getXMLDoc:function(){!OpenLayers.Format.XML.document&&!this.xmldom&&(document.implementation&&\n +document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);\n +OpenLayers.Format.XML.document=null;OpenLayers.Format.WFST=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.WFST.DEFAULTS),b=OpenLayers.Format.WFST["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported WFST version: "+a.version;return new b(a)};OpenLayers.Format.WFST.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:!0,xy:!0,stateName:null,initialize:function(a){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]=\n +"wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},getSrsName:function(a,b){var c=b&&b.srsName;c||(c=a&&a.layer?a.layer.projection.getCode():this.srsName);return c},read:function(a,b){b=b||{};OpenLayers.Util.applyDefaults(b,{output:"features"});"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var c={};a&&this.readNode(a,c,!0);c.features&&"features"===b.output&&\n +(c=c.features);return c},readers:{wfs:{FeatureCollection:function(a,b){b.features=[];this.readChildNodes(a,b)}}},write:function(a,b){var c=this.writeNode("wfs:Transaction",{features:a,options:b}),d=this.schemaLocationAttr();d&&this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",d);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},writers:{wfs:{GetFeature:function(a){var b=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,handle:a&&a.handle,\n +outputFormat:a&&a.outputFormat,maxFeatures:a&&a.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(a)}});if("string"==typeof this.featureType)this.writeNode("Query",a,b);else for(var c=0,d=this.featureType.length;c<d;c++)a.featureType=this.featureType[c],this.writeNode("Query",a,b);return b},Transaction:function(a){var a=a||{},b=a.options||{},c=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version,handle:b.handle}}),d,e=a.features;if(e){!0===b.multi&&OpenLayers.Util.extend(this.geometryTypes,\n +{"OpenLayers.Geometry.Point":"MultiPoint","OpenLayers.Geometry.LineString":!0===this.multiCurve?"MultiCurve":"MultiLineString","OpenLayers.Geometry.Polygon":!0===this.multiSurface?"MultiSurface":"MultiPolygon"});var f,g,a=0;for(d=e.length;a<d;++a)g=e[a],(f=this.stateName[g.state])&&this.writeNode(f,{feature:g,options:b},c);!0===b.multi&&this.setGeometryTypes()}if(b.nativeElements){a=0;for(d=b.nativeElements.length;a<d;++a)this.writeNode("wfs:Native",b.nativeElements[a],c)}return c},Native:function(a){return this.createElementNSPlus("wfs:Native",\n +{attributes:{vendorId:a.vendorId,safeToIgnore:a.safeToIgnore},value:a.value})},Insert:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Insert",{attributes:{handle:a&&a.handle}});this.srsName=this.getSrsName(b);this.writeNode("feature:_typeName",b,a);return a},Update:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Update",{attributes:{handle:a&&a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+\n +this.featurePrefix,this.featureNS);var c=b.modified;if(null!==this.geometryName&&(!c||void 0!==c.geometry))this.srsName=this.getSrsName(b),this.writeNode("Property",{name:this.geometryName,value:b.geometry},a);for(var d in b.attributes)void 0!==b.attributes[d]&&(!c||!c.attributes||c.attributes&&void 0!==c.attributes[d])&&this.writeNode("Property",{name:d,value:b.attributes[d]},a);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a},Property:function(a){var b=this.createElementNSPlus("wfs:Property");\n +this.writeNode("Name",a.name,b);null!==a.value&&this.writeNode("Value",a.value,b);return b},Name:function(a){return this.createElementNSPlus("wfs:Name",{value:a})},Value:function(a){var b;a instanceof OpenLayers.Geometry?(b=this.createElementNSPlus("wfs:Value"),a=this.writeNode("feature:_geometry",a).firstChild,b.appendChild(a)):b=this.createElementNSPlus("wfs:Value",{value:a});return b},Delete:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Delete",{attributes:{handle:a&&\n +a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a}}},schemaLocationAttr:function(a){var a=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},a),b=OpenLayers.Util.extend({},this.schemaLocations);a.schema&&(b[a.featurePrefix]=a.schema);var a=[],c,d;for(d in b)(c=this.namespaces[d])&&\n +a.push(c+" "+b[d]);return a.join(" ")||void 0},setFilterProperty:function(a){if(a.filters)for(var b=0,c=a.filters.length;b<c;++b)OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this,a.filters[b]);else a instanceof OpenLayers.Filter.Spatial&&!a.property&&(a.property=this.geometryName)},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},defaultPrefix:"ogc",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b={exceptionReport:null};a.documentElement&&(this.readChildNodes(a,b),null===b.exceptionReport&&(b=(new OpenLayers.Format.OWSCommon).read(a)));return b},readers:{ogc:{ServiceExceptionReport:function(a,\n +b){b.exceptionReport={exceptions:[]};this.readChildNodes(a,b.exceptionReport)},ServiceException:function(a,b){var c={code:a.getAttribute("code"),locator:a.getAttribute("locator"),text:this.getChildValue(a)};b.exceptions.push(c)}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,errorProperty:null,name:null,stringifyOutput:!1,parser:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);a=this.CLASS_NAME;this.name=a.substring(a.lastIndexOf(".")+1)},getVersion:function(a,b){var c;a?(c=this.version,c||(c=a.getAttribute("version"),c||(c=this.defaultVersion))):c=b&&b.version||this.version||this.defaultVersion;return c},getParser:function(a){var a=\n +a||this.defaultVersion,b=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=a){var c=OpenLayers.Format[this.name]["v"+a.replace(/\\./g,"_")+b];if(!c)throw"Can\'t find a "+this.name+" parser for version "+a+b;this.parser=new c(this.options)}return this.parser},write:function(a,b){this.parser=this.getParser(this.getVersion(null,b));var c=this.parser.write(a,b);return!1===this.stringifyOutput?c:OpenLayers.Format.XML.prototype.write.apply(this,[c])},read:function(a,b){"string"==typeof a&&\n +(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var c=this.getVersion(a.documentElement);this.parser=this.getParser(c);var d=this.parser.read(a,b);if(null!==this.errorProperty&&void 0===d[this.errorProperty]){var e=new OpenLayers.Format.OGCExceptionReport;d.error=e.read(a)}d.version=c;return d},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&\n +(this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?\n +this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};\n +OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=\n +null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||\n +this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){var a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a,\n +b=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=\n +a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});\n +OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,\n +hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,\n +strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),\n +this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length){f=!0;g=0;for(h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a)}0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&\n +(b.label=""+b.label);return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0],a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),(!0===a.stroke||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),\n +(!0===a.fill||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));\n +return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,\n +c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\\$\\{\\w+\\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=\n +OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};\n +OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,type:"FID",initialize:function(a){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},evaluate:function(a){for(var b=0,c=this.fids.length;b<c;b++)if((a.fid||a.id)==this.fids[b])return!0;return!1},clone:function(){var a=new OpenLayers.Filter.FeatureId;OpenLayers.Util.extend(a,this);a.fids=this.fids.slice();return a},CLASS_NAME:"OpenLayers.Filter.FeatureId"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<\n +c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1,a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;\n +b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()==b.toUpperCase():a==b;break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()!=b.toUpperCase():a!=b;break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=\n +a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a)}return b},value2regex:function(a,b,c){if("."==a)throw Error("\'.\' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\\\"+(c?c:"!")+"(.|$)","g"),"\\\\$1");this.value=this.value.replace(RegExp("\\\\"+b,"g"),".");this.value=this.value.replace(RegExp("\\\\"+\n +a,"g"),".*");this.value=this.value.replace(RegExp("\\\\\\\\.\\\\*","g"),"\\\\"+a);return this.value=this.value.replace(RegExp("\\\\\\\\\\\\.","g"),"\\\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\\\)?\\\\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\\\)?\\\\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\\\\\/g,"\\\\");return a=a.replace(/\\.\\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});\n +OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Filter.Function=OpenLayers.Class(OpenLayers.Filter,{name:null,params:null,CLASS_NAME:"OpenLayers.Filter.Function"});OpenLayers.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){var b={};this.readers.ogc.Filter.apply(this,[a,b]);return b.filter},readers:{ogc:{_expression:function(a){for(var b="",c=a.firstChild;c;c=\n +c.nextSibling)switch(c.nodeType){case 1:a=this.readNode(c);a.property?b+="${"+a.property+"}":void 0!==a.value&&(b+=a.value);break;case 3:case 4:b+=c.nodeValue}return b},Filter:function(a,b){var c={fids:[],filters:[]};this.readChildNodes(a,c);0<c.fids.length?b.filter=new OpenLayers.Filter.FeatureId({fids:c.fids}):0<c.filters.length&&(b.filter=c.filters[0])},FeatureId:function(a,b){var c=a.getAttribute("fid");c&&b.fids.push(c)},And:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});\n +this.readChildNodes(a,c);b.filters.push(c)},Or:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(a,c);b.filters.push(c)},Not:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThan:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThan:function(a,\n +b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},\n +PropertyIsBetween:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(a,c);b.filters.push(c)},Literal:function(a,b){b.value=OpenLayers.String.numericIf(this.getChildValue(a))},PropertyName:function(a,b){b.property=this.getChildValue(a)},LowerBoundary:function(a,b){b.lowerBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,a))},UpperBoundary:function(a,b){b.upperBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,\n +a))},Intersects:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.INTERSECTS)},Within:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.WITHIN)},Contains:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.CONTAINS)},DWithin:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.DWITHIN)},Distance:function(a,b){b.distance=parseInt(this.getChildValue(a));b.distanceUnits=a.getAttribute("units")},Function:function(){}}},readSpatial:function(a,b,c){c=new OpenLayers.Filter.Spatial({type:c});\n +this.readChildNodes(a,c);c.value=c.components[0];delete c.components;b.filters.push(c)},writeOgcExpression:function(a,b){if(a instanceof OpenLayers.Filter.Function){var c=this.writeNode("Function",a,b);b.appendChild(c)}else this.writeNode("Literal",a,b);return b},write:function(a){return this.writers.ogc.Filter.apply(this,[a])},writeFeatureIdNodes:function(a,b){for(var c=0,d=a.fids.length;c<d;++c)this.writeNode("FeatureId",a.fids[c],b)},writers:{ogc:{Filter:function(a){var b=this.createElementNSPlus("ogc:Filter");\n +"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},FeatureId:function(a){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:a}})},And:function(a){for(var b=this.createElementNSPlus("ogc:And"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Or:function(a){for(var b=\n +this.createElementNSPlus("ogc:Or"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Not:function(a){var b=this.createElementNSPlus("ogc:Not"),a=a.filters[0];"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},PropertyIsLessThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThan");\n +this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLessThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");\n +this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsBetween:function(a){var b=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",a,b);this.writeNode("LowerBoundary",a,b);this.writeNode("UpperBoundary",a,b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",{value:a.property})},Literal:function(a){return this.createElementNSPlus("ogc:Literal",{value:a})},LowerBoundary:function(a){var b=this.createElementNSPlus("ogc:LowerBoundary");\n +this.writeOgcExpression(a.lowerBoundary,b);return b},UpperBoundary:function(a){var b=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",a.upperBoundary,b);return b},INTERSECTS:function(a){return this.writeSpatial(a,"Intersects")},WITHIN:function(a){return this.writeSpatial(a,"Within")},CONTAINS:function(a){return this.writeSpatial(a,"Contains")},DWITHIN:function(a){var b=this.writeSpatial(a,"DWithin");this.writeNode("Distance",a,b);return b},Distance:function(a){return this.createElementNSPlus("ogc:Distance",\n +{attributes:{units:a.distanceUnits},value:a.distance})},Function:function(a){for(var b=this.createElementNSPlus("ogc:Function",{attributes:{name:a.name}}),a=a.params,c=0,d=a.length;c<d;c++)this.writeOgcExpression(a[c],b);return b}}},getFilterType:function(a){var b=this.filterMap[a.type];if(!b)throw"Filter writing not supported for rule type: "+a.type;return b},filterMap:{"&&":"And","||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan",\n +"<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike",BBOX:"BBOX",DWITHIN:"DWITHIN",WITHIN:"WITHIN",CONTAINS:"CONTAINS",INTERSECTS:"INTERSECTS",FID:"FeatureId"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();\n +return this.bounds},calculateBounds:function(){},distanceTo:function(){},getVertices:function(){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):\n +Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};\n +OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point,c=c&&c.tolerance,e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,i=a.y2-a.y1,j=b.y2-b.y1,k=b.x2-b.x1,l=j*h-k*i,j=k*g-j*f,g=h*g-i*f;0==l?0==j&&0==g&&(e=!0):(f=j/l,l=g/l,0<=f&&(1>=f&&0<=l&&1>=l)&&(d?(h=a.x1+f*h,l=a.y1+f*i,e=new OpenLayers.Geometry.Point(h,l)):e=!0));if(c)if(e){if(d){a=[a,b];b=0;a:for(;2>b;++b){f=a[b];for(i=1;3>i;++i)if(h=f["x"+i],l=f["y"+i],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(l-e.y,2)),d<c){e.x=h;e.y=l;break a}}}}else{a=\n +[a,b];b=0;a:for(;2>b;++b){h=a[b];l=a[(b+1)%2];for(i=1;3>i;++i)if(f={x:h["x"+i],y:h["y"+i]},g=OpenLayers.Geometry.distanceToSegment(f,l),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}}}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,i=g-e,j=h-f,k=(i*(c-e)+j*(d-f))/(Math.pow(i,2)+Math.pow(j,2));0>=k||(1<=k?(e=g,f=h):(e+=k*i,f+=k*j));return{distance:Math.sqrt(Math.pow(e-c,2)+Math.pow(f-d,2)),x:e,y:f}};OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof\n +OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=!c?d:{x0:e,y0:f,x1:g,y1:h,distance:d}):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){var a=\n +a*(Math.PI/180),c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,\n +a,b),this.bounds=null);return this},getVertices:function(){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());\n +OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&(null!=a.bottom&&null!=a.right&&null!=a.top)&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<\n +c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=\n +this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&\n +this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);!isNaN(h)&&(!isNaN(f.x)&&!isNaN(f.y))&&(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var i=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,i+=f.y*h;return new OpenLayers.Geometry.Point(e/d,i/d)},getGeodesicLength:function(a){for(var b=\n +0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,i=this.components.length;h<\n +i&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(!a||!a.CLASS_NAME||this.CLASS_NAME!=a.CLASS_NAME)b=!1;else if(!OpenLayers.Util.isArray(a.components)||a.components.length!=this.components.length)b=!1;else for(var c=0,d=this.components.length;c<d;++c)if(!this.components[c].equals(a.components[c])){b=!1;break}return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,\n +b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<\n +f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments(),a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments(),\n +e,f,g,h,i,j,k,l=0,m=d.length;a:for(;l<m;++l){c=d[l];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var n=0,o=a.length;for(;n<o;++n){i=a[n];if(i.x1>f)break;if(!(i.x2<e)&&(j=i.y1,k=i.y2,!(Math.min(j,k)>Math.max(g,h))&&!(Math.max(j,k)<Math.min(g,h))&&OpenLayers.Geometry.segmentsIntersect(c,i))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:\n +{x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],i=!1,j,k,l,m={point:!0,tolerance:d},n=null,o=0,p=f.length-2;o<=p;++o)if(d=f[o],g.push(d.clone()),j=f[o+1],k={x1:d.x,y1:d.y,x2:j.x,y2:j.y},k=OpenLayers.Geometry.segmentsIntersect(a,k,m),k instanceof OpenLayers.Geometry.Point&&((l=k.x===a.x1&&k.y===a.y1||k.x===a.x2&&k.y===a.y2||k.equals(d)||k.equals(j)?!0:!1)||c))k.equals(h[h.length-\n +1])||h.push(k.clone()),!(0===o&&k.equals(d))&&!k.equals(j)&&(i=!0,k.equals(d)||g.push(k),e.push(new OpenLayers.Geometry.LineString(g)),g=[k.clone()]);i&&(g.push(j.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var q=a.x1<a.x2?1:-1,r=a.y1<a.y2?1:-1,n={lines:e,points:h.sort(function(a,b){return q*a.x-q*b.x||r*a.y-r*b.y})};return n},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var i=this.getVertices(),j,k,l,m,n,o=[];g=[];\n +for(var p=0,q=i.length-2;p<=q;++p){j=i[p];k=i[p+1];l={x1:j.x,y1:j.y,x2:k.x,y2:k.y};h=h||[a];d&&o.push(j.clone());for(var r=0;r<h.length;++r)if(m=h[r].splitWithSegment(l,b))if(n=m.lines,0<n.length&&(n.unshift(r,1),Array.prototype.splice.apply(h,n),r+=n.length-2),d)for(var s=0,t=m.points.length;s<t;++s)n=m.points[s],n.equals(j)||(o.push(n),g.push(new OpenLayers.Geometry.LineString(o)),o=n.equals(k)?[]:[n.clone()])}d&&(0<g.length&&0<o.length)&&(o.push(k.clone()),g.push(new OpenLayers.Geometry.LineString(o)))}else c=\n +a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),\n +h=a.x,i=a.y,j,k=0,l=g.length;k<l;++k)if(j=g[k],d=OpenLayers.Geometry.distanceToSegment(a,j),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(j.x2>h&&(i>j.y1&&i<j.y2||i<j.y1&&i>j.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:i}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),m,n,o=h.lengt + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +h,p={point:!0},k=0,l=g.length;a:for(;k<l;++k){i=g[k];j=i.x1;n=i.y1;for(var q=0;q<o;++q)if(d=h[q],m=OpenLayers.Geometry.segmentsIntersect(i,\n +d,p)){f=0;e={distance:0,x0:m.x,y0:m.y,x1:m.x,y1:m.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:j,y:n},d),d.distance<f&&(f=d.distance,e={distance:f,x0:j,y0:n,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&i&&(d=a.distanceTo(new OpenLayers.Geometry.Point(i.x2,i.y2),b),k=c?d.distance:d,k<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:k))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();\n +if(3>b.length)return this;var c=function(a,b,d,i){for(var j=0,k=0,l=b,m;l<d;l++){m=a[b];var n=a[d],o=a[l],o=Math.abs(0.5*(m.x*n.y+n.x*o.y+o.x*m.y-n.x*m.y-o.x*n.y-m.x*o.y));m=Math.sqrt(Math.pow(m.x-n.x,2)+Math.pow(m.y-n.y,2));m=2*(o/m);m>j&&(j=m,k=l)}j>i&&k!=b&&(e.push(k),c(a,b,k,i),c(a,k,d,i))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},\n +CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],split:function(a,b){for(var c=null,d=b&&b.mutual,e,f,g,h,i=[],j=[a],k=0,l=this.components.length;k<l;++k){f=this.components[k];g=!1;for(var m=0;m<j.length;++m)if(e=f.split(j[m],b)){if(d){g=e[0];for(var n=0,o=g.length;n<o;++n)0===n&&i.length?i[i.length-1].addComponent(g[n]):i.push(new OpenLayers.Geometry.MultiLineString([g[n]]));g=!0;e=e[1]}if(e.length){e.unshift(m,\n +1);Array.prototype.splice.apply(j,e);break}}g||(i.length?i[i.length-1].addComponent(f.clone()):i=[new OpenLayers.Geometry.MultiLineString(f.clone())])}i&&1<i.length?g=!0:i=[];j&&1<j.length?h=!0:j=[];if(g||h)c=d?[i,j]:j;return c},splitWith:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h,i,j;if(a instanceof OpenLayers.Geometry.LineString){j=[];i=[a];for(var k=0,l=this.components.length;k<l;++k){g=!1;f=this.components[k];for(var m=0;m<i.length;++m)if(e=i[m].split(f,b)){d&&(g=e[0],g.length&&(g.unshift(m,\n +1),Array.prototype.splice.apply(i,g),m+=g.length-2),e=e[1],0===e.length&&(e=[f.clone()]));g=0;for(var n=e.length;g<n;++g)0===g&&j.length?j[j.length-1].addComponent(e[g]):j.push(new OpenLayers.Geometry.MultiLineString([e[g]]));g=!0}g||(j.length?j[j.length-1].addComponent(f.clone()):j=[new OpenLayers.Geometry.MultiLineString([f.clone()])])}}else c=a.split(this);i&&1<i.length?h=!0:i=[];j&&1<j.length?g=!0:j=[];if(h||g)c=d?[i,j]:j;return c},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();if(null!=b||!a.equals(d))c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments);OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,\n +arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,\n +b);this.bounds=null}return this},getCentroid:function(){if(this.components&&2<this.components.length){for(var a=0,b=0,c=0;c<this.components.length-1;c++)var d=this.components[c],e=this.components[c+1],a=a+(d.x+e.x)*(d.x*e.y-e.x*d.y),b=b+(d.y+e.y)*(d.x*e.y-e.x*d.y);c=-1*this.getArea();return new OpenLayers.Geometry.Point(a/(6*c),b/(6*c))}return null},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=\n +this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){for(var b=OpenLayers.Number.limitSigDigs,\n +c=b(a.x,14),a=b(a.y,14),d=this.components.length-1,e,f,g,h,i,j=0,k=0;k<d;++k)if(e=this.components[k],g=b(e.x,14),e=b(e.y,14),f=this.components[k+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){j=-1;break}}else{i=b((a-f)*((h-g)/(f-e))+h,14);if(i==c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){j=-1;break}i<=c||g!=h&&(i<Math.min(g,h)||i>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++j}return-1==j?1:!!(j&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==\n +a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<\n +d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=\n +this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b){c=0;for(d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}}else{c=0;for(d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);}if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,\n +[a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:!0,xy:!0,initialize:function(a){this.regExes={trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g};OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=this.getElementsByTagNameNS(a.documentElement,this.gmlns,this.featureName),b=[],c=0;c<a.length;c++){var d=this.parseFeature(a[c]);d&&b.push(d)}return b},parseFeature:function(a){for(var b="MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope".split(" "),c,d,e,f=0;f<b.length;++f)if(c=b[f],d=this.getElementsByTagNameNS(a,this.gmlns,c),0<d.length){if(e=this.parseGeometry[c.toLowerCase()])e=e.apply(this,\n +[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var g;c=this.getElementsByTagNameNS(a,this.gmlns,"Box");for(f=0;f<c.length;++f)b=c[f],d=this.parseGeometry.box.apply(this,[b]),b=b.parentNode,"boundedBy"===(b.localName||b.nodeName.split(":").pop())?g=d:e=d.toGeometry();var h;this.extractAttributes&&(h=this.parseAttributes(a));h=new OpenLayers.Feature.Vector(e,h);h.bounds=\n +g;h.gml={featureType:a.firstChild.nodeName.split(":")[1],featureNS:a.firstChild.namespaceURI,featureNSPrefix:a.firstChild.prefix};for(var a=a.firstChild,i;a&&!(1==a.nodeType&&(i=a.getAttribute("fid")||a.getAttribute("id")));)a=a.nextSibling;h.fid=i;return h},parseGeometry:{point:function(a){var b,c;c=[];b=this.getElementsByTagNameNS(a,this.gmlns,"pos");0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));0==c.length&&(b=this.getElementsByTagNameNS(a,\n +this.gmlns,"coordinates"),0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.removeSpace,""),c=c.split(",")));0==c.length&&(b=this.getElementsByTagNameNS(a,this.gmlns,"coord"),0<b.length&&(a=this.getElementsByTagNameNS(b[0],this.gmlns,"X"),b=this.getElementsByTagNameNS(b[0],this.gmlns,"Y"),0<a.length&&0<b.length&&(c=[a[0].firstChild.nodeValue,b[0].firstChild.nodeValue])));2==c.length&&(c[2]=null);return this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],\n +c[0],c[2])},multipoint:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Point"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.point.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a,b){var c,d;d=[];var e=[];c=this.getElementsByTagNameNS(a,this.gmlns,"posList");if(0<c.length){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.split(this.regExes.splitSpace);var f=parseInt(c[0].getAttribute("dimension")),\n +g,h,i;for(c=0;c<d.length/f;++c)g=c*f,h=d[g],i=d[g+1],g=2==f?null:d[g+2],this.xy?e.push(new OpenLayers.Geometry.Point(h,i,g)):e.push(new OpenLayers.Geometry.Point(i,h,g))}if(0==d.length&&(c=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),0<c.length)){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.replace(this.regExes.trimComma,",");f=d.split(this.regExes.splitSpace);for(c=0;c<f.length;++c)d=f[c].split(","),2==d.length&&(d[2]=null),this.xy?e.push(new OpenLayers.Geometry.Point(d[0],\n +d[1],d[2])):e.push(new OpenLayers.Geometry.Point(d[1],d[0],d[2]))}d=null;0!=e.length&&(d=b?new OpenLayers.Geometry.LinearRing(e):new OpenLayers.Geometry.LineString(e));return d},multilinestring:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LineString"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiLineString(b)},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LinearRing"),\n +b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d],!0]))&&b.push(c);return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Polygon"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.polygon.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPolygon(b)},envelope:function(a){var b=[],c,d,e=this.getElementsByTagNameNS(a,this.gmlns,"lowerCorner");if(0<e.length){c=\n +[];0<e.length&&(c=e[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var f=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}a=this.getElementsByTagNameNS(a,this.gmlns,"upperCorner");if(0<a.length){c=[];0<a.length&&(c=a[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var g=this.xy?new OpenLayers.Geometry.Point(c[0],\n +c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}f&&g&&(b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b=new OpenLayers.Geometry.LinearRing(b),d=new OpenLayers.Geometry.Polygon([b]));return d},box:function(a){var b=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),c=a=null;0<b.length&&(b=b[0].firstChild.nodeValue,\n +b=b.split(" "),2==b.length&&(a=b[0].split(","),c=b[1].split(",")));if(null!==a&&null!==c)return new OpenLayers.Bounds(parseFloat(a[0]),parseFloat(a[1]),parseFloat(c[0]),parseFloat(c[1]))}},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d,e;a;){if(1==a.nodeType){a=a.childNodes;for(c=0;c<a.length;++c)if(d=a[c],1==d.nodeType)if(e=d.childNodes,1==e.length){if(e=e[0],3==e.nodeType||4==e.nodeType)d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,e=e.nodeValue.replace(this.regExes.trimSpace,""),\n +b[d]=e}else b[d.nodeName.split(":").pop()]=null;break}a=a.nextSibling}return b},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName),c=0;c<a.length;c++)b.appendChild(this.createFeatureXML(a[c]));return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.geometryName);c.appendChild(b);\n +var b=this.createElementNS(this.gmlns,"gml:"+this.featureName),d=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.layerName);d.setAttribute("fid",a.fid||a.id);d.appendChild(c);for(var e in a.attributes){var c=this.createTextNode(a.attributes[e]),f=this.createElementNS(this.featureNS,this.featurePrefix+":"+e.substring(e.lastIndexOf(":")+1));f.appendChild(c);d.appendChild(f)}b.appendChild(d);return b},buildGeometryNode:function(a){this.externalProjection&&this.internalProjection&&(a=\n +a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME;return this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()].apply(this,[a])},buildGeometry:{point:function(a){var b=this.createElementNS(this.gmlns,"gml:Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPoint"),a=a.components,c,d,e=0;e<a.length;e++)c=this.createElementNS(this.gmlns,"gml:pointMember"),d=this.buildGeometry.point.apply(this,\n +[a[e]]),c.appendChild(d),b.appendChild(c);return b},linestring:function(a){var b=this.createElementNS(this.gmlns,"gml:LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiLineString"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,"gml:lineStringMember"),d=this.buildGeometry.linestring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},linearring:function(a){var b=this.createElementNS(this.gmlns,\n +"gml:LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:Polygon"),a=a.components,c,d,e=0;e<a.length;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.gmlns,"gml:"+c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPolygon"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,\n +"gml:polygonMember"),d=this.buildGeometry.polygon.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},bounds:function(a){var b=this.createElementNS(this.gmlns,"gml:Box");b.appendChild(this.buildCoordinatesNode(a));return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.gmlns,"gml:coordinates");b.setAttribute("decimal",".");b.setAttribute("cs",",");b.setAttribute("ts"," ");var c=[];if(a instanceof OpenLayers.Bounds)c.push(a.left+","+a.bottom),c.push(a.right+","+a.top);\n +else for(var a=a.components?a.components:[a],d=0;d<a.length;d++)c.push(a[d].x+","+a[d].y);c=this.createTextNode(c.join(" "));b.appendChild(c);return b},CLASS_NAME:"OpenLayers.Format.GML"});OpenLayers.Format.GML||(OpenLayers.Format.GML={});\n +OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:!0,srsName:null,xy:!0,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g,featureMember:/^(.*:)?featureMembers?$/},\n +initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.setGeometryTypes();a&&a.featureNS&&this.setNamespace("feature",a.featureNS);this.singleFeatureType=!a||typeof a.featureType==="string"},read:function(a){typeof a=="string"&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));if(a&&a.nodeType==9)a=a.documentElement;var b=[];this.readNode(a,{features:b},true);if(b.length==0){var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember");if(c.length)for(var a=\n +0,d=c.length;a<d;++a)this.readNode(c[a],{features:b},true);else{c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMembers");c.length&&this.readNode(c[0],{features:b},true)}}return b},readNode:function(a,b,c){if(c===true&&this.autoConfig===true){this.featureType=null;delete this.namespaceAlias[this.featureNS];delete this.namespaces.feature;this.featureNS=null}if(!this.featureNS&&!(a.prefix in this.namespaces)&&a.parentNode.namespaceURI==this.namespaces.gml&&this.regExes.featureMember.test(a.parentNode.nodeName)){this.featureType=\n +a.nodeName.split(":").pop();this.setNamespace("feature",a.namespaceURI);this.featureNS=a.namespaceURI;this.autoConfig=true}return OpenLayers.Format.XML.prototype.readNode.apply(this,[a,b])},readers:{gml:{featureMember:function(a,b){this.readChildNodes(a,b)},featureMembers:function(a,b){this.readChildNodes(a,b)},name:function(a,b){b.name=this.getChildValue(a)},boundedBy:function(a,b){var c={};this.readChildNodes(a,c);if(c.components&&c.components.length>0)b.bounds=c.components[0]},Point:function(a,\n +b){var c={points:[]};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(c.points[0])},coordinates:function(a,b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace),d,e=c.length,f=Array(e),g=0;g<e;++g){d=c[g].split(",");f[g]=this.xy?new OpenLayers.Geometry.Point(d[0],d[1],d[2]):new OpenLayers.Geometry.Point(d[1],d[0],d[2])}b.points=f},coord:function(a,b){var c={};this.readChildNodes(a,\n +c);if(!b.points)b.points=[];b.points.push(new OpenLayers.Geometry.Point(c.x,c.y,c.z))},X:function(a,b){b.x=this.getChildValue(a)},Y:function(a,b){b.y=this.getChildValue(a)},Z:function(a,b){b.z=this.getChildValue(a)},MultiPoint:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPoint(c.components)]},pointMember:function(a,b){this.readChildNodes(a,b)},LineString:function(a,b){var c={};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.LineString(c.points))},\n +MultiLineString:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiLineString(c.components)]},lineStringMember:function(a,b){this.readChildNodes(a,b)},Polygon:function(a,b){var c={outer:null,inner:[]};this.readChildNodes(a,c);c.inner.unshift(c.outer);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.Polygon(c.inner))},LinearRing:function(a,b){var c={};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.LinearRing(c.points)]},\n +MultiPolygon:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)]},polygonMember:function(a,b){this.readChildNodes(a,b)},GeometryCollection:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.Collection(c.components)]},geometryMember:function(a,b){this.readChildNodes(a,b)}},feature:{"*":function(a,b){var c,d=a.localName||a.nodeName.split(":").pop();b.features?!this.singleFeatureType&&\n +OpenLayers.Util.indexOf(this.featureType,d)!==-1?c="_typeName":d===this.featureType&&(c="_typeName"):a.childNodes.length==0||a.childNodes.length==1&&a.firstChild.nodeType==3?this.extractAttributes&&(c="_attribute"):c="_geometry";c&&this.readers.feature[c].apply(this,[a,b])},_typeName:function(a,b){var c={components:[],attributes:{}};this.readChildNodes(a,c);if(c.name)c.attributes.name=c.name;var d=new OpenLayers.Feature.Vector(c.components[0],c.attributes);if(!this.singleFeatureType){d.type=a.nodeName.split(":").pop();\n +d.namespace=a.namespaceURI}var e=a.getAttribute("fid")||this.getAttributeNS(a,this.namespaces.gml,"id");if(e)d.fid=e;this.internalProjection&&(this.externalProjection&&d.geometry)&&d.geometry.transform(this.externalProjection,this.internalProjection);if(c.bounds)d.bounds=c.bounds;b.features.push(d)},_geometry:function(a,b){if(!this.geometryName)this.geometryName=a.nodeName.split(":").pop();this.readChildNodes(a,b)},_attribute:function(a,b){var c=a.localName||a.nodeName.split(":").pop(),d=this.getChildValue(a);\n +b.attributes[c]=d}},wfs:{FeatureCollection:function(a,b){this.readChildNodes(a,b)}}},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:{featureMember:function(a){var b=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",a,b);return b},MultiPoint:function(a){for(var b=\n +this.createElementNSPlus("gml:MultiPoint"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("pointMember",a[c],b);return b},pointMember:function(a){var b=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",a,b);return b},MultiLineString:function(a){for(var b=this.createElementNSPlus("gml:MultiLineString"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("lineStringMember",a[c],b);return b},lineStringMember:function(a){var b=this.createElementNSPlus("gml:lineStringMember");\n +this.writeNode("LineString",a,b);return b},MultiPolygon:function(a){for(var b=this.createElementNSPlus("gml:MultiPolygon"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("polygonMember",a[c],b);return b},polygonMember:function(a){var b=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",a,b);return b},GeometryCollection:function(a){for(var b=this.createElementNSPlus("gml:GeometryCollection"),c=0,d=a.components.length;c<d;++c)this.writeNode("geometryMember",a.components[c],\n +b);return b},geometryMember:function(a){var b=this.createElementNSPlus("gml:geometryMember"),a=this.writeNode("feature:_geometry",a);b.appendChild(a.firstChild);return b}},feature:{_typeName:function(a){var b=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:a.fid}});a.geometry&&this.writeNode("feature:_geometry",a.geometry,b);for(var c in a.attributes){var d=a.attributes[c];d!=null&&this.writeNode("feature:_attribute",{name:c,value:d},b)}return b},_geometry:function(a){this.externalProjection&&\n +this.internalProjection&&(a=a.clone().transform(this.internalProjection,this.externalProjection));var b=this.createElementNSPlus("feature:"+this.geometryName),a=this.writeNode("gml:"+this.geometryTypes[a.CLASS_NAME],a,b);this.srsName&&a.setAttribute("srsName",this.srsName);return b},_attribute:function(a){return this.createElementNSPlus("feature:"+a.name,{value:a.value})}},wfs:{FeatureCollection:function(a){for(var b=this.createElementNSPlus("wfs:FeatureCollection"),c=0,d=a.length;c<d;++c)this.writeNode("gml:featureMember",\n +a[c],b);return b}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:!1,multiCurve:!0,surface:!1,multiSurface:!0,initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a,b){this.readChildNodes(a,b)},Curve:function(a,b){var c={points:[]};this.readChildNodes(a,c);b.components||\n +(b.components=[]);b.components.push(new OpenLayers.Geometry.LineString(c.points))},segments:function(a,b){this.readChildNodes(a,b)},LineStringSegment:function(a,b){var c={};this.readChildNodes(a,c);c.points&&Array.prototype.push.apply(b.points,c.points)},pos:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),c=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2]);b.points=[c]},posList:function(a,\n +b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),d=parseInt(a.getAttribute("dimension"))||2,e,f,g,h=Array(c.length/d),i=0,j=c.length;i<j;i+=d)e=c[i],f=c[i+1],g=2==d?void 0:c[i+2],h[i/d]=this.xy?new OpenLayers.Geometry.Point(e,f,g):new OpenLayers.Geometry.Point(f,e,g);b.points=h},Surface:function(a,b){this.readChildNodes(a,b)},patches:function(a,b){this.readChildNodes(a,b)},PolygonPatch:function(a,b){this.readers.gml.Polygon.apply(this,[a,b])},exterior:function(a,\n +b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},interior:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},MultiCurve:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiLineString(c.components)])},curveMember:function(a,b){this.readChildNodes(a,b)},MultiSurface:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)])},\n +surfaceMember:function(a,b){this.readChildNodes(a,b)},surfaceMembers:function(a,b){this.readChildNodes(a,b)},pointMembers:function(a,b){this.readChildNodes(a,b)},lineStringMembers:function(a,b){this.readChildNodes(a,b)},polygonMembers:function(a,b){this.readChildNodes(a,b)},geometryMembers:function(a,b){this.readChildNodes(a,b)},Envelope:function(a,b){var c={points:Array(2)};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,\n +d.y,c.x,c.y))},lowerCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[0]=c.points[0]},upperCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[1]=c.points[0]}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,\n +this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a){for(var b=this.createElementNSPlus("gml:featureMembers"),c=0,d=a.length;c<d;++c)this.writeNode("feature:_typeName",a[c],b);return b},Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("pos",a,b);return b},pos:function(a){return this.createElementNSPlus("gml:pos",{value:this.xy?a.x+\n +" "+a.y:a.y+" "+a.x})},LineString:function(a){var b=this.createElementNSPlus("gml:LineString");this.writeNode("posList",a.components,b);return b},Curve:function(a){var b=this.createElementNSPlus("gml:Curve");this.writeNode("segments",a,b);return b},segments:function(a){var b=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",a,b);return b},LineStringSegment:function(a){var b=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",a.components,b);return b},\n +posList:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+" "+d.y:d.y+" "+d.x;return this.createElementNSPlus("gml:posList",{value:c.join(" ")})},Surface:function(a){var b=this.createElementNSPlus("gml:Surface");this.writeNode("patches",a,b);return b},patches:function(a){var b=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",a,b);return b},PolygonPatch:function(a){var b=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});\n +this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},exterior:function(a){var b=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",a,b);return b},interior:function(a){var b=this.createElementNSPlus("gml:interior");\n +this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",a.components,b);return b},MultiCurve:function(a){for(var b=this.createElementNSPlus("gml:MultiCurve"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("curveMember",a[c],b);return b},curveMember:function(a){var b=this.createElementNSPlus("gml:curveMember");this.curve?this.writeNode("Curve",a,b):this.writeNode("LineString",a,b);return b},MultiSurface:function(a){for(var b=\n +this.createElementNSPlus("gml:MultiSurface"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("surfaceMember",a[c],b);return b},surfaceMember:function(a){var b=this.createElementNSPlus("gml:surfaceMember");this.surface?this.writeNode("Surface",a,b):this.writeNode("Polygon",a,b);return b},Envelope:function(a){var b=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",a,b);this.writeNode("upperCorner",a,b);this.srsName&&b.setAttribute("srsName",this.srsName);return b},lowerCorner:function(a){return this.createElementNSPlus("gml:lowerCorner",\n +{value:this.xy?a.left+" "+a.bottom:a.bottom+" "+a.left})},upperCorner:function(a){return this.createElementNSPlus("gml:upperCorner",{value:this.xy?a.right+" "+a.top:a.top+" "+a.right})}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":!0===\n +this.curve?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":!1===this.multiCurve?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":!0===this.surface?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":!1===this.multiSurface?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,\n +c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escapeChar");c.value2regex(d,e,\n +f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,feature:OpenLayers.Format.GML.v3.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",\n +{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{matchCase:a.matchCase,wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Envelope",\n +a.value);a.projection&&c.setAttribute("srsName",a.projection);b.appendChild(c);return b},SortBy:function(a){for(var b=this.createElementNSPlus("ogc:SortBy"),c=0,d=a.length;c<d;c++)this.writeNode("ogc:SortProperty",a[c],b);return b},SortProperty:function(a){var b=this.createElementNSPlus("ogc:SortProperty");this.writeNode("ogc:PropertyName",a,b);this.writeNode("ogc:SortOrder","DESC"==a.order?"DESC":"ASC",b);return b},SortOrder:function(a){return this.createElementNSPlus("ogc:SortOrder",{value:a})}},\n +OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature},writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Envelope",a.value);a.projection&&\n +d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(a){var b=this.version;b||((a=a.getAttribute("xmlns:ows"))&&"1.1"===a.substring(a.lastIndexOf("/")+1)&&(b="1.1.0"),b||(b=this.defaultVersion));return b},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{ows:{Exception:function(a,b){var c={code:a.getAttribute("exceptionCode"),locator:a.getAttribute("locator"),texts:[]};b.exceptions.push(c);this.readChildNodes(a,c)},ExceptionText:function(a,b){var c=this.getChildValue(a);b.texts.push(c)},\n +ServiceIdentification:function(a,b){b.serviceIdentification={};this.readChildNodes(a,b.serviceIdentification)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},Keywords:function(a,b){b.keywords={};this.readChildNodes(a,b.keywords)},Keyword:function(a,b){b[this.getChildValue(a)]=!0},ServiceType:function(a,b){b.serviceType={codeSpace:a.getAttribute("codeSpace"),value:this.getChildValue(a)}},ServiceTypeVersion:function(a,b){b.serviceTypeVersion=\n +this.getChildValue(a)},Fees:function(a,b){b.fees=this.getChildValue(a)},AccessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ServiceProvider:function(a,b){b.serviceProvider={};this.readChildNodes(a,b.serviceProvider)},ProviderName:function(a,b){b.providerName=this.getChildValue(a)},ProviderSite:function(a,b){b.providerSite=this.getAttributeNS(a,this.namespaces.xlink,"href")},ServiceContact:function(a,b){b.serviceContact={};this.readChildNodes(a,b.serviceContact)},IndividualName:function(a,\n +b){b.individualName=this.getChildValue(a)},PositionName:function(a,b){b.positionName=this.getChildValue(a)},ContactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,b.contactInfo)},Phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},Voice:function(a,b){b.voice=this.getChildValue(a)},Address:function(a,b){b.address={};this.readChildNodes(a,b.address)},DeliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},AdministrativeArea:function(a,\n +b){b.administrativeArea=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ElectronicMailAddress:function(a,b){b.electronicMailAddress=this.getChildValue(a)},Role:function(a,b){b.role=this.getChildValue(a)},OperationsMetadata:function(a,b){b.operationsMetadata={};this.readChildNodes(a,b.operationsMetadata)},Operation:function(a,b){var c=a.getAttribute("name");b[c]={};this.readChildNodes(a,b[c])},DCP:function(a,\n +b){b.dcp={};this.readChildNodes(a,b.dcp)},HTTP:function(a,b){b.http={};this.readChildNodes(a,b.http)},Get:function(a,b){b.get||(b.get=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.get.push(c)},Post:function(a,b){b.post||(b.post=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.post.push(c)},Parameter:function(a,b){b.parameters||(b.parameters={});var c=a.getAttribute("name");b.parameters[c]={};this.readChildNodes(a,\n +b.parameters[c])},Constraint:function(a,b){b.constraints||(b.constraints={});var c=a.getAttribute("name");b.constraints[c]={};this.readChildNodes(a,b.constraints[c])},Value:function(a,b){b[this.getChildValue(a)]=!0},OutputFormat:function(a,b){b.formats.push({value:this.getChildValue(a)});this.readChildNodes(a,b)},WGS84BoundingBox:function(a,b){var c={};c.crs=a.getAttribute("crs");b.BoundingBox?b.BoundingBox.push(c):(b.projection=c.crs,c=b);this.readChildNodes(a,c)},BoundingBox:function(a,b){this.readers.ows.WGS84BoundingBox.apply(this,\n +[a,b])},LowerCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.left=c[0];b.bottom=c[1]},UpperCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.right=c[0];b.top=c[1];b.bounds=new OpenLayers.Bounds(b.left,b.bottom,b.right,b.top);delete b.left;delete b.bottom;delete b.right;delete b.top},\n +Language:function(a,b){b.language=this.getChildValue(a)}}},writers:{ows:{BoundingBox:function(a){var b=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:a.projection}});this.writeNode("ows:LowerCorner",a,b);this.writeNode("ows:UpperCorner",a,b);return b},LowerCorner:function(a){return this.createElementNSPlus("ows:LowerCorner",{value:a.bounds.left+" "+a.bounds.bottom})},UpperCorner:function(a){return this.createElementNSPlus("ows:UpperCorner",{value:a.bounds.right+" "+a.bounds.top})},Identifier:function(a){return this.createElementNSPlus("ows:Identifier",\n +{value:a})},Title:function(a){return this.createElementNSPlus("ows:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("ows:Abstract",{value:a})},OutputFormat:function(a){return this.createElementNSPlus("ows:OutputFormat",{value:a})}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.success=!1;b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("language"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Format.OWSCommon.v1.prototype.writers.ows},\n +CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v3.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,\n +b){b.numberOfFeatures=parseInt(a.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers.wfs.FeatureCollection.apply(this,arguments)},TransactionResponse:function(a,b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},TransactionSummary:function(a,b){b.success=!0},InsertResults:function(a,b){this.readChildNodes(a,b)},Feature:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,\n +feature:OpenLayers.Format.GML.v3.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.readers.ogc,ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows},writers:{wfs:OpenLayers.Util.applyDefaults({GetFeature:function(a){var b=OpenLayers.Format.WFST.v1.prototype.writers.wfs.GetFeature.apply(this,arguments);a&&this.setAttributes(b,{resultType:a.resultType,startIndex:a.startIndex,count:a.count});return b},Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,\n +featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType,srsName:a.srsName}});a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<d;b++)this.writeNode("wfs:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this,a.filter),this.writeNode("ogc:Filter",\n +a.filter,c));return c},PropertyName:function(a){return this.createElementNSPlus("wfs:PropertyName",{value:a.property})}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},\n +update:function(){},"delete":function(){},commit:function(){},abort:function(){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});\n +OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||!("function"==typeof JSON.parse&&"function"==typeof JSON.stringify))}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\\],:{}\\s]*$/.test(a.replace(/\\\\["\\\\\\/bfnrtu]/g,"@").replace(/"[^"\\\\\\n\\r]*"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,"]").replace(/(?:^|:|,)(?:\\s*\\[)+/g,""))&&(c=eval("("+a+")"),"function"===\n +typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);\n +return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,\n +[a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),\n +"]");return c.join("")},string:function(a){var b={"\\u0008":"\\\\b","\\t":"\\\\t","\\n":"\\\\n","\\u000c":"\\\\f","\\r":"\\\\r",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\"};return/["\\\\\\x00-\\x1f]/.test(a)?\'"\'+a.replace(/([\\x00-\\x1f\\\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+\'"\':\'"\'+a+\'"\'},number:function(a){return isFinite(a)?""+a:"null"},"boolean":function(a){return""+a},date:function(a){function b(a){return 10>a?"0"+a:a}return\'"\'+a.getFullYear()+"-"+\n +b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+\'"\'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:!1,read:function(a,b,c){var b=b?b:"FeatureCollection",d=null,e=null;if(e="string"==typeof a?OpenLayers.Format.JSON.prototype.read.apply(this,[a,c]):a)if("string"!=typeof e.type)OpenLayers.Console.error("Bad GeoJSON - no type: "+a);else{if(this.isValidType(e,b))switch(b){case "Geometry":try{d=this.parseGeometry(e)}catch(f){OpenLayers.Console.error(f)}break;case "Feature":try{d=this.parseFeature(e),d.type="Feature"}catch(g){OpenLayers.Console.error(g)}break;\n +case "FeatureCollection":switch(d=[],e.type){case "Feature":try{d.push(this.parseFeature(e))}catch(h){d=null,OpenLayers.Console.error(h)}break;case "FeatureCollection":a=0;for(b=e.features.length;a<b;++a)try{d.push(this.parseFeature(e.features[a]))}catch(i){d=null,OpenLayers.Console.error(i)}break;default:try{var j=this.parseGeometry(e);d.push(new OpenLayers.Feature.Vector(j))}catch(k){d=null,OpenLayers.Console.error(k)}}}}else OpenLayers.Console.error("Bad JSON: "+a);return d},isValidType:function(a,\n +b){var c=!1;switch(b){case "Geometry":-1==OpenLayers.Util.indexOf("Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection".split(" "),a.type)?OpenLayers.Console.error("Unsupported geometry type: "+a.type):c=!0;break;case "FeatureCollection":c=!0;break;default:a.type==b?c=!0:OpenLayers.Console.error("Cannot convert types from "+a.type+" to "+b)}return c},parseFeature:function(a){var b,c,d;c=a.properties?a.properties:{};d=a.geometry&&a.geometry.bbox||a.bbox;try{b=this.parseGeometry(a.geometry)}catch(e){throw e;\n +}b=new OpenLayers.Feature.Vector(b,c);d&&(b.bounds=OpenLayers.Bounds.fromArray(d));a.id&&(b.fid=a.id);return b},parseGeometry:function(a){if(null==a)return null;var b,c=!1;if("GeometryCollection"==a.type){if(!OpenLayers.Util.isArray(a.geometries))throw"GeometryCollection must have geometries array: "+a;b=a.geometries.length;for(var c=Array(b),d=0;d<b;++d)c[d]=this.parseGeometry.apply(this,[a.geometries[d]]);b=new OpenLayers.Geometry.Collection(c);c=!0}else{if(!OpenLayers.Util.isArray(a.coordinates))throw"Geometry must have coordinates array: "+\n +a;if(!this.parseCoords[a.type.toLowerCase()])throw"Unsupported geometry type: "+a.type;try{b=this.parseCoords[a.type.toLowerCase()].apply(this,[a.coordinates])}catch(e){throw e;}}this.internalProjection&&(this.externalProjection&&!c)&&b.transform(this.externalProjection,this.internalProjection);return b},parseCoords:{point:function(a){if(!1==this.ignoreExtraDims&&2!=a.length)throw"Only 2D points are supported: "+a;return new OpenLayers.Geometry.Point(a[0],a[1])},multipoint:function(a){for(var b=[],\n +c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.LineString(b)},multilinestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.linestring.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiLineString(b)},\n +polygon:function(a){for(var b=[],c,d,e=0,f=a.length;e<f;++e){try{d=this.parseCoords.linestring.apply(this,[a[e]])}catch(g){throw g;}c=new OpenLayers.Geometry.LinearRing(d.components);b.push(c)}return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.polygon.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPolygon(b)},box:function(a){if(2!=a.length)throw"GeoJSON box coordinates must have 2 elements";\n +return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(a[0][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[0][1])])])}},write:function(a,b){var c={type:null};if(OpenLayers.Util.isArray(a)){c.type="FeatureCollection";var d=a.length;c.features=Array(d);for(var e=0;e<d;++e){var f=a[e];if(!f instanceof OpenLayers.Feature.Vector)throw"FeatureCollection only supports collections of features: "+\n +f;c.features[e]=this.extract.feature.apply(this,[f])}}else 0==a.CLASS_NAME.indexOf("OpenLayers.Geometry")?c=this.extract.geometry.apply(this,[a]):a instanceof OpenLayers.Feature.Vector&&(c=this.extract.feature.apply(this,[a]),a.layer&&a.layer.projection&&(c.crs=this.createCRSObject(a)));return OpenLayers.Format.JSON.prototype.write.apply(this,[c,b])},createCRSObject:function(a){var a=a.layer.projection.toString(),b={};a.match(/epsg:/i)&&(a=parseInt(a.substring(a.indexOf(":")+1)),b=4326==a?{type:"name",\n +properties:{name:"urn:ogc:def:crs:OGC:1.3:CRS84"}}:{type:"name",properties:{name:"EPSG:"+a}});return b},extract:{feature:function(a){var b=this.extract.geometry.apply(this,[a.geometry]),b={type:"Feature",properties:a.attributes,geometry:b};null!=a.fid&&(b.id=a.fid);return b},geometry:function(a){if(null==a)return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME.split(".")[2],a=this.extract[b.toLowerCase()].apply(this,\n +[a]);return"Collection"==b?{type:"GeometryCollection",geometries:a}:{type:b,coordinates:a}},point:function(a){return[a.x,a.y]},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,\n +[a.components[c]]));return b},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,[a.components[c]]));return b},multipolygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.polygon.apply(this,[a.components[c]]));return b},collection:function(a){for(var b=a.components.length,c=Array(b),d=0;d<b;++d)c[d]=this.extract.geometry.apply(this,[a.components[d]]);return c}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Protocol.Script=OpenLayers.Class(OpenLayers.Protocol,{url:null,params:null,callback:null,callbackTemplate:"OpenLayers.Protocol.Script.registry.${id}",callbackKey:"callback",callbackPrefix:"",scope:null,format:null,pendingRequests:null,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.pendingRequests={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);this.format||(this.format=new OpenLayers.Format.GeoJSON);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=\n +new OpenLayers.Format.QueryStringFilter({srsInBBOX:this.srsInBBOX});this.filterToParams=function(a,d){return b.write(a,d)}}},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.applyDefaults(a,this.options);a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.createRequest(a.url,a.params,OpenLayers.Function.bind(function(c){b.data=\n +c;this.handleRead(b,a)},this));b.priv=c;return b},createRequest:function(a,b,c){var c=OpenLayers.Protocol.Script.register(c),d=OpenLayers.String.format(this.callbackTemplate,{id:c}),b=OpenLayers.Util.extend({},b);b[this.callbackKey]=this.callbackPrefix+d;a=OpenLayers.Util.urlAppend(a,OpenLayers.Util.getParameterString(b));b=document.createElement("script");b.type="text/javascript";b.src=a;b.id="OpenLayers_Protocol_Script_"+c;this.pendingRequests[b.id]=b;document.getElementsByTagName("head")[0].appendChild(b);\n +return b},destroyRequest:function(a){OpenLayers.Protocol.Script.unregister(a.id.split("_").pop());delete this.pendingRequests[a.id];a.parentNode&&a.parentNode.removeChild(a)},handleRead:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){b.callback&&(a.data?(a.features=this.parseFeatures(a.data),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,this.destroyRequest(a.priv),b.callback.call(b.scope,a))},parseFeatures:function(a){return this.format.read(a)},\n +abort:function(a){if(a)this.destroyRequest(a.priv);else for(var b in this.pendingRequests)this.destroyRequest(this.pendingRequests[b])},destroy:function(){this.abort();delete this.params;delete this.format;OpenLayers.Protocol.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Protocol.Script"});(function(){var a=OpenLayers.Protocol.Script,b=0;a.registry={};a.register=function(c){var d="c"+ ++b;a.registry[d]=function(){c.apply(this,arguments)};return d};a.unregister=function(b){delete a.registry[b]}})();OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:!0,defaultControl:null,saveState:!1,allowDepress:!1,activeState:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.controls=[];this.activeState={}},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var a,b=this.controls.length-1;0<=b;b--)a=this.controls[b],a.events&&\n +a.events.un({activate:this.iconOn,deactivate:this.iconOff}),a.panel_div=null;this.activeState=null},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var a,b=0,c=this.controls.length;b<c;b++)a=this.controls[b],(a===this.defaultControl||this.saveState&&this.activeState[a.id])&&a.activate();!0===this.saveState&&(this.defaultControl=null);this.redraw();return!0}return!1},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){for(var a,\n +b=0,c=this.controls.length;b<c;b++)a=this.controls[b],this.activeState[a.id]=a.deactivate();this.redraw();return!0}return!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick);this.addControlsToMap(this.controls);return this.div},redraw:function(){for(var a=this.div.childNodes.length-1;0<=a;a--)this.div.removeChild(this.div.childNodes[a]);\n +this.div.innerHTML="";if(this.active)for(var a=0,b=this.controls.length;a<b;a++)this.div.appendChild(this.controls[a].panel_div)},activateControl:function(a){if(!this.active)return!1;if(a.type==OpenLayers.Control.TYPE_BUTTON)a.trigger();else if(a.type==OpenLayers.Control.TYPE_TOGGLE)a.active?a.deactivate():a.activate();else if(this.allowDepress&&a.active)a.deactivate();else{for(var b,c=0,d=this.controls.length;c<d;c++)b=this.controls[c],b!=a&&(b.type===OpenLayers.Control.TYPE_TOOL||null==b.type)&&\n +b.deactivate();a.activate()}},addControls:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.controls=this.controls.concat(a);for(var b=0,c=a.length;b<c;b++){var d=a[b],e=this.createControlMarkup(d);OpenLayers.Element.addClass(e,d.displayClass+"ItemInactive");OpenLayers.Element.addClass(e,"olButton");""!=d.title&&!e.title&&(e.title=d.title);d.panel_div=e}this.map&&(this.addControlsToMap(a),this.redraw())},createControlMarkup:function(){return document.createElement("div")},addControlsToMap:function(a){for(var b,\n +c=0,d=a.length;c<d;c++)b=a[c],!0===b.autoActivate?(b.autoActivate=!1,this.map.addControl(b),b.autoActivate=!0):(this.map.addControl(b),b.deactivate()),b.events.on({activate:this.iconOn,deactivate:this.iconOff})},iconOn:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\\\b("+this.displayClass+"Item)Inactive\\\\b"),"$1Active")},iconOff:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\\\b("+this.displayClass+"Item)Active\\\\b"),"$1Inactive")},onButtonClick:function(a){for(var b=\n +this.controls,a=a.buttonElement,c=b.length-1;0<=c;--c)if(b[c].panel_div===a){this.activateControl(b[c]);break}},getControlsBy:function(a,b){var c="function"==typeof b.test;return OpenLayers.Array.filter(this.controls,function(d){return d[a]==b||c&&b.test(d[a])})},getControlsByName:function(a){return this.getControlsBy("name",a)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomIn()},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomOut()},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map&&this.map.zoomToMaxExtent()},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.ZoomIn,new OpenLayers.Control.ZoomToMaxExtent,new OpenLayers.Control.ZoomOut])},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:!1,initialize:function(a,b,c,d){OpenLayers.Layer.prototype.initialize.apply(this,[a,d]);this.url=b;this.params||(this.params=OpenLayers.Util.extend({},c))},destroy:function(){this.params=this.url=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions()));\n +return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=OpenLayers.Util.extend(this.params,a);a=this.redraw();null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});return a},redraw:function(a){return a?this.mergeNewParams({_olSalt:Math.random()}):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c*=a.charCodeAt(d)*this.URL_HASH_FACTOR,\n +c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){var c=b||this.url,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);return OpenLayers.Util.urlAppend(c,e)},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Tile=OpenLayers.Class({events:null,eventListeners:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:!1,initialize:function(a,b,c,d,e,f){this.layer=a;this.position=b.clone();this.setBounds(c);this.url=d;e&&(this.size=e.clone());this.id=OpenLayers.Util.createUniqueID("Tile_");OpenLayers.Util.extend(this,f);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners)},unload:function(){this.isLoading&&(this.isLoading=\n +!1,this.events.triggerEvent("unload"))},destroy:function(){this.position=this.size=this.bounds=this.layer=null;this.eventListeners&&this.events.un(this.eventListeners);this.events.destroy();this.events=this.eventListeners=null},draw:function(a){a||this.clear();var b=this.shouldDraw();b&&!a&&(b=!1!==this.events.triggerEvent("beforedraw"));return b},shouldDraw:function(){var a=!1,b=this.layer.maxExtent;if(b){var c=this.layer.map,c=c.baseLayer.wrapDateLine&&c.getMaxExtent();this.bounds.intersectsBounds(b,\n +{inclusive:!1,worldBounds:c})&&(a=!0)}return a||this.layer.displayOutsideMaxExtent},setBounds:function(a){a=a.clone();if(this.layer.map.baseLayer.wrapDateLine)var b=this.layer.map.getMaxExtent(),c=this.layer.map.getResolution(),a=a.wrapDateLine(b,{leftTolerance:c,rightTolerance:c});this.bounds=a},moveTo:function(a,b,c){null==c&&(c=!0);this.setBounds(a);this.position=b.clone();c&&this.draw()},clear:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,imageReloadAttempts:null,layerAlphaHack:null,asyncRequestId:null,blankImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7",maxGetUrlLength:null,canvasContext:null,crossOriginKeyword:null,initialize:function(a,b,c,d,e,f){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=d;this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();if(null!=this.maxGetUrlLength||\n +this.layer.gutter||this.layerAlphaHack)this.frame=document.createElement("div"),this.frame.style.position="absolute",this.frame.style.overflow="hidden";null!=this.maxGetUrlLength&&OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame)},destroy:function(){this.imgDiv&&(this.clear(),this.frame=this.imgDiv=null);this.asyncRequestId=null;OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);a?(this.layer!=this.layer.map.baseLayer&&\n +this.la + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +yer.reproject&&(this.bounds=this.getBoundsFromBaseLayer(this.position)),this.isLoading?this._loadEvent="reload":(this.isLoading=!0,this._loadEvent="loadstart"),this.positionTile(),this.renderTile()):this.unload();return a},renderTile:function(){this.layer.div.appendChild(this.getTile());if(this.layer.async){var a=this.asyncRequestId=(this.asyncRequestId||0)+1;this.layer.getURLasync(this.bounds,function(b){a==this.asyncRequestId&&(this.url=b,this.initImage())},this)}else this.url=this.layer.getURL(this.bounds),\n +this.initImage()},positionTile:function(){var a=this.getTile().style,b=this.frame?this.size:this.layer.getImageSize(this.bounds);a.left=this.position.x+"%";a.top=this.position.y+"%";a.width=b.w+"%";a.height=b.h+"%"},clear:function(){OpenLayers.Tile.prototype.clear.apply(this,arguments);var a=this.imgDiv;if(a){OpenLayers.Event.stopObservingElement(a);var b=this.getTile();b.parentNode===this.layer.div&&this.layer.div.removeChild(b);this.setImgSrc();!0===this.layerAlphaHack&&(a.style.filter="");OpenLayers.Element.removeClass(a,\n +"olImageLoadError")}this.canvasContext=null},getImage:function(){if(!this.imgDiv){this.imgDiv=document.createElement("img");this.imgDiv.className="olTileImage";this.imgDiv.galleryImg="no";var a=this.imgDiv.style;if(this.frame){var b=0,c=0;this.layer.gutter&&(b=100*(this.layer.gutter/this.layer.tileSize.w),c=100*(this.layer.gutter/this.layer.tileSize.h));a.left=-b+"%";a.top=-c+"%";a.width=2*b+100+"%";a.height=2*c+100+"%"}a.visibility="hidden";a.opacity=0;1>this.layer.opacity&&(a.filter="alpha(opacity="+\n +100*this.layer.opacity+")");a.position="absolute";this.layerAlphaHack&&(a.paddingTop=a.height,a.height="0",a.width="100%");this.frame&&this.frame.appendChild(this.imgDiv)}return this.imgDiv},initImage:function(){this.events.triggerEvent(this._loadEvent);var a=this.getImage();if(this.url&&a.getAttribute("src")==this.url)this.onImageLoad();else{var b=OpenLayers.Function.bind(function(){OpenLayers.Event.stopObservingElement(a);OpenLayers.Event.observe(a,"load",OpenLayers.Function.bind(this.onImageLoad,\n +this));OpenLayers.Event.observe(a,"error",OpenLayers.Function.bind(this.onImageError,this));this.imageReloadAttempts=0;this.setImgSrc(this.url)},this);a.getAttribute("src")==this.blankImageUrl?b():(OpenLayers.Event.observe(a,"load",b),OpenLayers.Event.observe(a,"error",b),this.crossOriginKeyword&&a.removeAttribute("crossorigin"),a.src=this.blankImageUrl)}},setImgSrc:function(a){var b=this.imgDiv;b.style.visibility="hidden";b.style.opacity=0;a&&(this.crossOriginKeyword&&("data:"!==a.substr(0,5)?b.setAttribute("crossorigin",\n +this.crossOriginKeyword):b.removeAttribute("crossorigin")),b.src=a)},getTile:function(){return this.frame?this.frame:this.getImage()},createBackBuffer:function(){if(this.imgDiv&&!this.isLoading){var a;this.frame?(a=this.frame.cloneNode(!1),a.appendChild(this.imgDiv)):a=this.imgDiv;this.imgDiv=null;return a}},onImageLoad:function(){var a=this.imgDiv;OpenLayers.Event.stopObservingElement(a);a.style.visibility="inherit";a.style.opacity=this.layer.opacity;this.isLoading=!1;this.canvasContext=null;this.events.triggerEvent("loadend");\n +if(7>parseFloat(navigator.appVersion.split("MSIE")[1])&&this.layer&&this.layer.div){var b=document.createElement("span");b.style.display="none";var c=this.layer.div;c.appendChild(b);window.setTimeout(function(){b.parentNode===c&&b.parentNode.removeChild(b)},0)}!0===this.layerAlphaHack&&(a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+a.src+"\', sizingMethod=\'scale\')")},onImageError:function(){var a=this.imgDiv;null!=a.src&&(this.imageReloadAttempts++,this.imageReloadAttempts<=\n +OpenLayers.IMAGE_RELOAD_ATTEMPTS?this.setImgSrc(this.layer.getURL(this.bounds)):(OpenLayers.Element.addClass(a,"olImageLoadError"),this.events.triggerEvent("loaderror"),this.onImageLoad()))},getCanvasContext:function(){if(OpenLayers.CANVAS_SUPPORTED&&this.imgDiv&&!this.isLoading){if(!this.canvasContext){var a=document.createElement("canvas");a.width=this.size.w;a.height=this.size.h;this.canvasContext=a.getContext("2d");this.canvasContext.drawImage(this.imgDiv,0,0)}return this.canvasContext}},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,tileClass:OpenLayers.Tile.Image,grid:null,singleTile:!1,ratio:1.5,buffer:0,transitionEffect:null,numLoadingTiles:0,tileLoadingDelay:85,serverResolutions:null,moveTimerId:null,deferMoveGriddedTiles:null,tileQueueId:null,tileQueue:null,loading:!1,backBuffer:null,gridResolution:null,backBufferResolution:null,backBufferLonLat:null,backBufferTimerId:null,removeBackBufferDelay:null,\n +className:null,initialize:function(a,b,c,d){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.grid=[];this.tileQueue=[];null===this.removeBackBufferDelay&&(this.removeBackBufferDelay=this.singleTile?0:2500);null===this.className&&(this.className=this.singleTile?"olLayerGridSingleTile":"olLayerGrid");OpenLayers.Animation.isNative||(this.deferMoveGriddedTiles=OpenLayers.Function.bind(function(){this.moveGriddedTiles(true);this.moveTimerId=null},this))},setMap:function(a){OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this,\n +a);OpenLayers.Element.addClass(this.div,this.className)},removeMap:function(){null!==this.moveTimerId&&(window.clearTimeout(this.moveTimerId),this.moveTimerId=null);this.clearTileQueue();null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null)},destroy:function(){this.removeBackBuffer();this.clearGrid();this.tileSize=this.grid=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){this.clearTileQueue();if(this.grid){for(var a=\n +0,b=this.grid.length;a<b;a++)for(var c=this.grid[a],d=0,e=c.length;d<e;d++)this.destroyTile(c[d]);this.grid=[];this.gridResolution=null}},clone:function(a){null==a&&(a=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];a.gridResolution=null;a.backBuffer=null;a.backBufferTimerId=null;a.tileQueue=[];a.tileQueueId=null;a.loading=!1;a.moveTimerId=null;\n +return a},moveTo:function(a,b,c){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);a=a||this.map.getExtent();if(null!=a){var d=!this.grid.length||b,e=this.getTilesBounds(),f=this.map.getResolution(),g=this.getServerResolution(f);if(this.singleTile){if(d||!c&&!e.containsBounds(a))b&&"resize"!==this.transitionEffect&&this.removeBackBuffer(),(!b||"resize"===this.transitionEffect)&&this.applyBackBuffer(g),this.initSingleTile(a)}else(d=d||!e.intersectsBounds(a,{worldBounds:this.map.baseLayer.wrapDateLine&&\n +this.map.getMaxExtent()}),f!==g?(a=this.map.calculateBounds(null,g),d&&this.transformDiv(g/f)):(this.div.style.width="100%",this.div.style.height="100%",this.div.style.left="0%",this.div.style.top="0%"),d)?(b&&"resize"===this.transitionEffect&&this.applyBackBuffer(g),this.initGriddedTiles(a)):this.moveGriddedTiles()}},getTileData:function(a){var b=null,c=a.lon,d=a.lat,e=this.grid.length;if(this.map&&e){var f=this.map.getResolution(),a=this.tileSize.w,g=this.tileSize.h,h=this.grid[0][0].bounds,i=h.left,\n +h=h.top;if(c<i&&this.map.baseLayer.wrapDateLine)var j=this.map.getMaxExtent().getWidth(),k=Math.ceil((i-c)/j),c=c+j*k;c=(c-i)/(f*a);d=(h-d)/(f*g);f=Math.floor(c);i=Math.floor(d);0<=i&&i<e&&(e=this.grid[i][f])&&(b={tile:e,i:Math.floor((c-f)*a),j:Math.floor((d-i)*g)})}return b},queueTileDraw:function(a){a=a.object;~OpenLayers.Util.indexOf(this.tileQueue,a)||this.tileQueue.push(a);this.tileQueueId||(this.tileQueueId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.drawTileFromQueue,this),null,\n +this.div));return!1},drawTileFromQueue:function(){0===this.tileQueue.length?this.clearTileQueue():this.tileQueue.shift().draw(!0)},clearTileQueue:function(){OpenLayers.Animation.stop(this.tileQueueId);this.tileQueueId=null;this.tileQueue=[]},destroyTile:function(a){this.removeTileMonitoringHooks(a);a.destroy()},getServerResolution:function(a){a=a||this.map.getResolution();if(this.serverResolutions&&-1===OpenLayers.Util.indexOf(this.serverResolutions,a)){var b,c;for(b=this.serverResolutions.length-\n +1;0<=b;b--)if(c=this.serverResolutions[b],c>a){a=c;break}if(-1===b)throw"no appropriate resolution in serverResolutions";}return a},getServerZoom:function(){var a=this.getServerResolution();return this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,a):this.map.getZoomForResolution(a)+(this.zoomOffset||0)},transformDiv:function(a){this.div.style.width=100*a+"%";this.div.style.height=100*a+"%";var b=this.map.getSize(),c=parseInt(this.map.layerContainerDiv.style.left,10),d=(parseInt(this.map.layerContainerDiv.style.top,\n +10)-b.h/2)*(a-1);this.div.style.left=(c-b.w/2)*(a-1)+"%";this.div.style.top=d+"%"},getResolutionScale:function(){return parseInt(this.div.style.width,10)/100},applyBackBuffer:function(a){null!==this.backBufferTimerId&&this.removeBackBuffer();var b=this.backBuffer;if(!b){b=this.createBackBuffer();if(!b)return;this.div.insertBefore(b,this.div.firstChild);this.backBuffer=b;var c=this.grid[0][0].bounds;this.backBufferLonLat={lon:c.left,lat:c.top};this.backBufferResolution=this.gridResolution}var c=b.style,\n +d=this.backBufferResolution/a;c.width=100*d+"%";c.height=100*d+"%";a=this.getViewPortPxFromLonLat(this.backBufferLonLat,a);c=parseInt(this.map.layerContainerDiv.style.left,10);d=parseInt(this.map.layerContainerDiv.style.top,10);b.style.left=Math.round(a.x-c)+"%";b.style.top=Math.round(a.y-d)+"%"},createBackBuffer:function(){var a;if(0<this.grid.length){a=document.createElement("div");a.id=this.div.id+"_bb";a.className="olBackBuffer";a.style.position="absolute";a.style.width="100%";a.style.height=\n +"100%";for(var b=0,c=this.grid.length;b<c;b++)for(var d=0,e=this.grid[b].length;d<e;d++){var f=this.grid[b][d].createBackBuffer();f&&(f.style.top=b*this.tileSize.h+"%",f.style.left=d*this.tileSize.w+"%",a.appendChild(f))}}return a},removeBackBuffer:function(){this.backBuffer&&(this.div.removeChild(this.backBuffer),this.backBufferResolution=this.backBuffer=null,null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null))},moveByPx:function(){this.singleTile||\n +this.moveGriddedTiles()},setTileSize:function(a){this.singleTile&&(a=this.map.getSize(),a.h=parseInt(a.h*this.ratio),a.w=parseInt(a.w*this.ratio));OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getTilesBounds:function(){var a=null,b=this.grid.length;if(b)var a=this.grid[b-1][0].bounds,b=this.grid[0].length*a.getWidth(),c=this.grid.length*a.getHeight(),a=new OpenLayers.Bounds(a.left,a.bottom,a.left+b,a.bottom+c);return a},initSingleTile:function(a){this.clearTileQueue();var b=\n +a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio,b=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2),c=this.map.getLayerPxFromLonLat({lon:b.left,lat:b.top});this.grid.length||(this.grid[0]=[]);(a=this.grid[0][0])?a.moveTo(b,c):(a=this.addTile(b,c),this.addTileMonitoringHooks(a),a.draw(),this.grid[0][0]=a);this.removeExcessTiles(1,1);this.gridResolution=this.getServerResolution()},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=\n +a.left-b.lon,f=Math.floor(e/d)-this.buffer,e=-(e/d-f)*this.tileSize.w,f=b.lon+f*d,a=a.top-(b.lat+c),g=Math.ceil(a/c)+this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:f,tileoffsetlat:b.lat+g*c,tileoffsetx:e,tileoffsety:-(g-a/c)*this.tileSize.h}},getTileOrigin:function(){var a=this.tileOrigin;if(!a)var a=this.getMaxExtent(),b={tl:["left","top"],tr:["right","top"],bl:["left","bottom"],br:["right","bottom"]}[this.tileOriginCorner],a=new OpenLayers.LonLat(a[b[0]],a[b[1]]);return a},initGriddedTiles:function(a){this.clearTileQueue();\n +var b=this.map.getSize(),c=Math.ceil(b.h/this.tileSize.h)+Math.max(1,2*this.buffer),b=Math.ceil(b.w/this.tileSize.w)+Math.max(1,2*this.buffer),d=this.getTileOrigin(),e=this.getServerResolution(),d=this.calculateGridLayout(a,d,e),e=Math.round(d.tileoffsetx),f=Math.round(d.tileoffsety),g=d.tileoffsetlon,h=d.tileoffsetlat,i=d.tilelon,j=d.tilelat,k=e,l=g,m=0,n=parseInt(this.map.layerContainerDiv.style.left),o=parseInt(this.map.layerContainerDiv.style.top),d=[],p=this.map.getCenter();do{var q=this.grid[m++];\n +q||(q=[],this.grid.push(q));var g=l,e=k,r=0;do{var s=new OpenLayers.Bounds(g,h,g+i,h+j),t=e,t=t-n,u=f,u=u-o,u=new OpenLayers.Pixel(t,u);(t=q[r++])?t.moveTo(s,u,!1):(t=this.addTile(s,u),this.addTileMonitoringHooks(t),q.push(t));s=s.getCenterLonLat();d.push({tile:t,distance:Math.pow(s.lon-p.lon,2)+Math.pow(s.lat-p.lat,2)});g+=i;e+=this.tileSize.w}while(g<=a.right+i*this.buffer||r<b);h-=j;f+=this.tileSize.h}while(h>=a.bottom-j*this.buffer||m<c);this.removeExcessTiles(m,r);this.gridResolution=this.getServerResolution();\n +d.sort(function(a,b){return a.distance-b.distance});a=0;for(c=d.length;a<c;++a)d[a].tile.draw()},getMaxExtent:function(){return this.maxExtent},addTile:function(a,b){var c=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);c.events.register("beforedraw",this,this.queueTileDraw);return c},addTileMonitoringHooks:function(a){a.onLoadStart=function(){!1===this.loading&&(this.loading=!0,this.events.triggerEvent("loadstart"));this.events.triggerEvent("tileloadstart",{tile:a});this.numLoadingTiles++};\n +a.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded",{tile:a});0===this.tileQueue.length&&0===this.numLoadingTiles&&(this.loading=!1,this.events.triggerEvent("loadend"),this.backBuffer&&(this.backBufferTimerId=window.setTimeout(OpenLayers.Function.bind(this.removeBackBuffer,this),this.removeBackBufferDelay)))};a.onLoadError=function(){this.events.triggerEvent("tileerror",{tile:a})};a.events.on({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,\n +scope:this})},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},moveGriddedTiles:function(a){if(!a&&!OpenLayers.Animation.isNative)null!=this.moveTimerId&&window.clearTimeout(this.moveTimerId),this.moveTimerId=window.setTimeout(this.deferMoveGriddedTiles,this.tileLoadingDelay);else for(var a=this.buffer||1,b=this.getResolutionScale();;){var c=this.grid[0][0].position.x*b+parseInt(this.div.style.left,\n +10)+parseInt(this.map.layerContainerDiv.style.left),d=this.grid[0][0].position.y*b+parseInt(this.div.style.top,10)+parseInt(this.map.layerContainerDiv.style.top),e=this.tileSize.w*b,f=this.tileSize.h*b;if(c>-e*(a-1))this.shiftColumn(!0);else if(c<-e*a)this.shiftColumn(!1);else if(d>-f*(a-1))this.shiftRow(!0);else if(d<-f*a)this.shiftRow(!1);else break}},shiftRow:function(a){for(var b=this.grid,c=b[a?0:this.grid.length-1],d=this.getServerResolution(),e=a?-this.tileSize.h:this.tileSize.h,d=d*-e,f=a?\n +b.pop():b.shift(),g=0,h=c.length;g<h;g++){var i=c[g],j=i.bounds.clone(),i=i.position.clone();j.bottom+=d;j.top+=d;i.y+=e;f[g].moveTo(j,i)}a?b.unshift(f):b.push(f)},shiftColumn:function(a){for(var b=a?-this.tileSize.w:this.tileSize.w,c=this.getServerResolution()*b,d=0,e=this.grid.length;d<e;d++){var f=this.grid[d],g=f[a?0:f.length-1],h=g.bounds.clone(),g=g.position.clone();h.left+=c;h.right+=c;g.x+=b;var i=a?this.grid[d].pop():this.grid[d].shift();i.moveTo(h,g);a?f.unshift(i):f.push(i)}},removeExcessTiles:function(a,\n +b){for(var c,d;this.grid.length>a;){var e=this.grid.pop();c=0;for(d=e.length;c<d;c++){var f=e[c];this.destroyTile(f)}}c=0;for(d=this.grid.length;c<d;c++)for(;this.grid[c].length>b;)e=this.grid[c],f=e.pop(),this.destroyTile(f)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w,c=c*this.tileSize.h,e=this.getLonLatFromViewPortPx(a),a=b.left+d*Math.floor((e.lon-b.left)/d),b=b.bottom+\n +c*Math.floor((e.lat-b.bottom)/c);return new OpenLayers.Bounds(a,b,a+d,b+c)},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:"antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency".split(" "),request:null,response:null,initialize:function(a){this.request=new OpenLayers.Format.ArcXML.Request;this.response=new OpenLayers.Format.ArcXML.Response;if(a)if("feature"==a.requesttype){this.request.get_image=null;var b=this.request.get_feature.query;this.addCoordSys(b.featurecoordsys,a.featureCoordSys);\n +this.addCoordSys(b.filtercoordsys,a.filterCoordSys);a.polygon?(b.isspatial=!0,b.spatialfilter.polygon=a.polygon):a.envelope&&(b.isspatial=!0,b.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0},this.parseEnvelope(b.spatialfilter.envelope,a.envelope))}else"image"==a.requesttype?(this.request.get_feature=null,b=this.request.get_image.properties,this.parseEnvelope(b.envelope,a.envelope),this.addLayers(b.layerlist,a.layers),this.addImageSize(b.imagesize,a.tileSize),this.addCoordSys(b.featurecoordsys,\n +a.featureCoordSys),this.addCoordSys(b.filtercoordsys,a.filterCoordSys)):this.request=null;OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},parseEnvelope:function(a,b){b&&4==b.length&&(a.minx=b[0],a.miny=b[1],a.maxx=b[2],a.maxy=b[3])},addLayers:function(a,b){for(var c=0,d=b.length;c<d;c++)a.push(b[c])},addImageSize:function(a,b){null!==b&&(a.width=b.w,a.height=b.h,a.printwidth=b.w,a.printheight=b.h)},addCoordSys:function(a,b){"string"==typeof b?(a.id=parseInt(b),a.string=b):"object"==typeof b&&\n +null!==b.proj&&(a.id=b.proj.srsProjNumber,a.string=b.proj.srsCode)},iserror:function(a){var b=null;a?(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]),a=a.documentElement.getElementsByTagName("ERROR"),b=null!==a&&0<a.length):b=""!==this.response.error;return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null;a&&a.documentElement&&(b="ARCXML"==a.documentElement.nodeName?a.documentElement:a.documentElement.getElementsByTagName("ARCXML")[0]);\n +if(!b||"parsererror"===b.firstChild.nodeName){var c,d;try{c=a.firstChild.nodeValue,d=a.firstChild.childNodes[1].firstChild.nodeValue}catch(e){}throw{message:"Error parsing the ArcXML request",error:c,source:d};}return this.parseResponse(b)},write:function(a){a||(a=this.request);var b=this.createElementNS("","ARCXML");b.setAttribute("version","1.1");var c=this.createElementNS("","REQUEST");if(null!=a.get_image){var d=this.createElementNS("","GET_IMAGE");c.appendChild(d);var e=this.createElementNS("",\n +"PROPERTIES");d.appendChild(e);a=a.get_image.properties;null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),e.appendChild(d),0===a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id));null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),e.appendChild(d),0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id));null!=a.envelope&&(d=this.createElementNS("",\n +"ENVELOPE"),e.appendChild(d),d.setAttribute("minx",a.envelope.minx),d.setAttribute("miny",a.envelope.miny),d.setAttribute("maxx",a.envelope.maxx),d.setAttribute("maxy",a.envelope.maxy));d=this.createElementNS("","IMAGESIZE");e.appendChild(d);d.setAttribute("height",a.imagesize.height);d.setAttribute("width",a.imagesize.width);if(a.imagesize.height!=a.imagesize.printheight||a.imagesize.width!=a.imagesize.printwidth)d.setAttribute("printheight",a.imagesize.printheight),d.setArrtibute("printwidth",a.imagesize.printwidth);\n +null!=a.background&&(d=this.createElementNS("","BACKGROUND"),e.appendChild(d),d.setAttribute("color",a.background.color.r+","+a.background.color.g+","+a.background.color.b),null!==a.background.transcolor&&d.setAttribute("transcolor",a.background.transcolor.r+","+a.background.transcolor.g+","+a.background.transcolor.b));if(null!=a.layerlist&&0<a.layerlist.length){d=this.createElementNS("","LAYERLIST");e.appendChild(d);for(e=0;e<a.layerlist.length;e++){var f=this.createElementNS("","LAYERDEF");d.appendChild(f);\n +f.setAttribute("id",a.layerlist[e].id);f.setAttribute("visible",a.layerlist[e].visible);if("object"==typeof a.layerlist[e].query){var g=a.layerlist[e].query;if(0>g.where.length)continue;var h=null,h="boolean"==typeof g.spatialfilter&&g.spatialfilter?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY");h.setAttribute("where",g.where);"number"==typeof g.accuracy&&0<g.accuracy&&h.setAttribute("accuracy",g.accuracy);"number"==typeof g.featurelimit&&2E3>g.featurelimit&&h.setAttribute("featurelimit",\n +g.featurelimit);"string"==typeof g.subfields&&"#ALL#"!=g.subfields&&h.setAttribute("subfields",g.subfields);"string"==typeof g.joinexpression&&0<g.joinexpression.length&&h.setAttribute("joinexpression",g.joinexpression);"string"==typeof g.jointables&&0<g.jointables.length&&h.setAttribute("jointables",g.jointables);f.appendChild(h)}"object"==typeof a.layerlist[e].renderer&&this.addRenderer(f,a.layerlist[e].renderer)}}}else if(null!=a.get_feature&&(d=this.createElementNS("","GET_FEATURES"),d.setAttribute("outputmode",\n +"newxml"),d.setAttribute("checkesc","true"),a.get_feature.geometry?d.setAttribute("geometry",a.get_feature.geometry):d.setAttribute("geometry","false"),a.get_feature.compact&&d.setAttribute("compact",a.get_feature.compact),"number"==a.get_feature.featurelimit&&d.setAttribute("featurelimit",a.get_feature.featurelimit),d.setAttribute("globalenvelope","true"),c.appendChild(d),null!=a.get_feature.layer&&0<a.get_feature.layer.length&&(e=this.createElementNS("","LAYER"),e.setAttribute("id",a.get_feature.layer),\n +d.appendChild(e)),a=a.get_feature.query,null!=a))e=null,e=a.isspatial?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY"),d.appendChild(e),"number"==typeof a.accuracy&&e.setAttribute("accuracy",a.accuracy),null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),0==a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id),e.appendChild(d)),null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),\n +0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id),e.appendChild(d)),0<a.buffer&&(d=this.createElementNS("","BUFFER"),d.setAttribute("distance",a.buffer),e.appendChild(d)),a.isspatial&&(d=this.createElementNS("","SPATIALFILTER"),d.setAttribute("relation",a.spatialfilter.relation),e.appendChild(d),a.spatialfilter.envelope?(f=this.createElementNS("","ENVELOPE"),f.setAttribute("minx",a.spatialfilter.envelope.minx),f.setAttribute("miny",a.spatialfilter.envelope.miny),\n +f.setAttribute("maxx",a.spatialfilter.envelope.maxx),f.setAttribute("maxy",a.spatialfilter.envelope.maxy),d.appendChild(f)):"object"==typeof a.spatialfilter.polygon&&d.appendChild(this.writePolygonGeometry(a.spatialfilter.polygon))),null!=a.where&&0<a.where.length&&e.setAttribute("where",a.where);b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},addGroupRenderer:function(a,b){var c=this.createElementNS("","GROUPRENDERER");a.appendChild(c);for(var d=0;d<b.length;d++)this.addRenderer(c,\n +b[d])},addRenderer:function(a,b){if(OpenLayers.Util.isArray(b))this.addGroupRenderer(a,b);else{var c=this.createElementNS("",b.type.toUpperCase()+"RENDERER");a.appendChild(c);"VALUEMAPRENDERER"==c.tagName?this.addValueMapRenderer(c,b):"VALUEMAPLABELRENDERER"==c.tagName?this.addValueMapLabelRenderer(c,b):"SIMPLELABELRENDERER"==c.tagName?this.addSimpleLabelRenderer(c,b):"SCALEDEPENDENTRENDERER"==c.tagName&&this.addScaleDependentRenderer(c,b)}},addScaleDependentRenderer:function(a,b){("string"==typeof b.lower||\n +"number"==typeof b.lower)&&a.setAttribute("lower",b.lower);("string"==typeof b.upper||"number"==typeof b.upper)&&a.setAttribute("upper",b.upper);this.addRenderer(a,b.renderer)},addValueMapLabelRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);a.setAttribute("labelfield",b.labelfield);if("object"==typeof b.exacts)for(var c=0,d=b.exacts.length;c<d;c++){var e=b.exacts[c],f=this.createElementNS("","EXACT");"string"==typeof e.value&&f.setAttribute("value",e.value);"string"==typeof e.label&&\n +f.setAttribute("label",e.label);"string"==typeof e.method&&f.setAttribute("method",e.method);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"text"==e.symbol.type&&(g=this.createElementNS("","TEXTSYMBOL"));if(null!=g){for(var h=this.fontStyleKeys,i=0,j=h.length;i<j;i++){var k=h[i];e.symbol[k]&&g.setAttribute(k,e.symbol[k])}f.appendChild(g)}}}},addValueMapRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);if("object"==typeof b.ranges)for(var c=0,d=b.ranges.length;c<d;c++){var e=\n +b.ranges[c],f=this.createElementNS("","RANGE");f.setAttribute("lower",e.lower);f.setAttribute("upper",e.upper);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"simplepolygon"==e.symbol.type&&(g=this.createElementNS("","SIMPLEPOLYGONSYMBOL"));null!=g&&("string"==typeof e.symbol.boundarycolor&&g.setAttribute("boundarycolor",e.symbol.boundarycolor),"string"==typeof e.symbol.fillcolor&&g.setAttribute("fillcolor",e.symbol.fillcolor),"number"==typeof e.symbol.filltransparency&&g.setAttribute("filltransparency",\n +e.symbol.filltransparency),f.appendChild(g))}}else if("object"==typeof b.exacts){c=0;for(d=b.exacts.length;c<d;c++)e=b.exacts[c],f=this.createElementNS("","EXACT"),"string"==typeof e.value&&f.setAttribute("value",e.value),"string"==typeof e.label&&f.setAttribute("label",e.label),"string"==typeof e.method&&f.setAttribute("method",e.method),a.appendChild(f),"object"==typeof e.symbol&&(g=null,"simplemarker"==e.symbol.type&&(g=this.createElementNS("","SIMPLEMARKERSYMBOL")),null!=g&&("string"==typeof e.symbol.antialiasing&&\n +g.setAttribute("antialiasing",e.symbol.antialiasing),"string"==typeof e.symbol.color&&g.setAttribute("color",e.symbol.color),"string"==typeof e.symbol.outline&&g.setAttribute("outline",e.symbol.outline),"string"==typeof e.symbol.overlap&&g.setAttribute("overlap",e.symbol.overlap),"string"==typeof e.symbol.shadow&&g.setAttribute("shadow",e.symbol.shadow),"number"==typeof e.symbol.transparency&&g.setAttribute("transparency",e.symbol.transparency),"string"==typeof e.symbol.usecentroid&&g.setAttribute("usecentroid",\n +e.symbol.usecentroid),"number"==typeof e.symbol.width&&g.setAttribute("width",e.symbol.width),f.appendChild(g)))}},addSimpleLabelRenderer:function(a,b){a.setAttribute("field",b.field);for(var c="featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles".split(" "),d=0,e=c.length;d<e;d++){var f=c[d];b[f]&&a.setAttribute(f,b[f])}if("text"==b.symbol.type){var g=b.symbol,h=this.createElementNS("","TEXTSYMBOL");a.appendChild(h);c=this.fontStyleKeys;d=0;\n +for(e=c.length;d<e;d++)f=c[d],g[f]&&h.setAttribute(f,b[f])}},writePolygonGeometry:function(a){if(!(a instanceof OpenLayers.Geometry.Polygon))throw{message:"Cannot write polygon geometry to ArcXML with an "+a.CLASS_NAME+" object.",geometry:a};for(var b=this.createElementNS("","POLYGON"),c=0,d=a.components.length;c<d;c++){for(var e=a.components[c],f=this.createElementNS("","RING"),g=0,h=e.components.length;g<h;g++){var i=e.components[g],j=this.createElementNS("","POINT");j.setAttribute("x",i.x);j.setAttribute("y",\n +i.y);f.appendChild(j)}b.appendChild(f)}return b},parseResponse:function(a){"string"==typeof a&&(a=(new OpenLayers.Format.XML).read(a));var b=new OpenLayers.Format.ArcXML.Response,c=a.getElementsByTagName("ERROR");if(null!=c&&0<c.length)b.error=this.getChildValue(c,"Unknown error.");else{c=a.getElementsByTagName("RESPONSE");if(null==c||0==c.length)return b.error="No RESPONSE tag found in ArcXML response.",b;var d=c[0].firstChild.nodeName;"#text"==d&&(d=c[0].firstChild.nextSibling.nodeName);if("IMAGE"==\n +d)c=a.getElementsByTagName("ENVELOPE"),a=a.getElementsByTagName("OUTPUT"),null==c||0==c.length?b.error="No ENVELOPE tag found in ArcXML response.":null==a||0==a.length?b.error="No OUTPUT tag found in ArcXML response.":(c=this.parseAttributes(c[0]),d=this.parseAttributes(a[0]),b.image="string"==typeof d.type?{envelope:c,output:{type:d.type,data:this.getChildValue(a[0])}}:{envelope:c,output:d});else if("FEATURES"==d){if(a=c[0].getElementsByTagName("FEATURES"),c=a[0].getElementsByTagName("FEATURECOUNT"),\n +b.features.featurecount=c[0].getAttribute("count"),0<b.features.featurecount){c=a[0].getElementsByTagName("ENVELOPE");b.features.envelope=this.parseAttributes(c[0],"number");a=a[0].getElementsByTagName("FEATURE");for(c=0;c<a.length;c++){for(var d=new OpenLayers.Feature.Vector,e=a[c].getElementsByTagName("FIELD"),f=0;f<e.length;f++){var g=e[f].getAttribute("name"),h=e[f].getAttribute("value");d.attributes[g]=h}e=a[c].getElementsByTagName("POLYGON");if(0<e.length){e=e[0].getElementsByTagName("RING");\n +f=[];for(g=0;g<e.length;g++){h=[];h.push(this.parsePointGeometry(e[g]));for(var i=e[g].getElementsByTagName("HOLE"),j=0;j<i.length;j++)h.push(this.parsePointGeometry(i[j]));f.push(new OpenLayers.Geometry.Polygon(h))}d.geometry=1==f.length?f[0]:new OpenLayers.Geometry.MultiPolygon(f)}b.features.feature.push(d)}}}else b.error="Unidentified response type."}return b},parseAttributes:function(a,b){for(var c={},d=0;d<a.attributes.length;d++)c[a.attributes[d].nodeName]="number"==b?parseFloat(a.attributes[d].nodeValue):\n +a.attributes[d].nodeValue;return c},parsePointGeometry:function(a){var b=[],c=a.getElementsByTagName("COORDS");if(0<c.length){a=this.getChildValue(c[0]);a=a.split(/;/);for(c=0;c<a.length;c++){var d=a[c].split(/ /);b.push(new OpenLayers.Geometry.Point(d[0],d[1]))}}else if(a=a.getElementsByTagName("POINT"),0<a.length)for(c=0;c<a.length;c++)b.push(new OpenLayers.Geometry.Point(parseFloat(a[c].getAttribute("x")),parseFloat(a[c].getAttribute("y"))));return new OpenLayers.Geometry.LinearRing(b)},CLASS_NAME:"OpenLayers.Format.ArcXML"});\n +OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{get_image:{properties:{background:null,draw:!0,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:!1},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",\n +legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:!1,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]})},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});\n +OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{image:{envelope:null,output:""},features:{featurecount:0,envelope:null,feature:[]},error:""})},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});OpenLayers.ProxyHost="";\n +OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\\/\\/([^:]*:?[^@]*@)?([^:\\/\\?]*):?([^\\/\\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==e.hostname,d=d[4],\n +e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||(b?a="function"==typeof b?b(a):b+encodeURIComponent(a):OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:a}));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost}),a=OpenLayers.Util.applyDefaults(a,b),b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]="XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,\n +e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==\n +d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);\n +if(b.status&&(200>b.status||300<=b.status))this.events.triggerEvent("failure",a),f&&f(b)},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?\n +a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}};OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:""},featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:!0,name:"ArcIMS",isBaseLayer:!0,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:!0,async:!0,name:"ArcIMS"},initialize:function(a,b,c){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:c.serviceName},\n +this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(c,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,this.params,c]);if(this.transparent&&(this.isBaseLayer||(this.isBaseLayer=!1),"image/jpeg"==this.format))this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png";null===this.options.layers&&(this.options.layers=[])},getURL:function(a){var b="",a=this.adjustBounds(a),a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",\n +envelope:a.toArray(),tileSize:this.tileSize})),a=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:a.write(),async:!1});if(null!=a){b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;b=this.getUrlOrImage((new OpenLayers.Format.ArcXML).read(b).image.output)}return b},getURLasync:function(a,b,c){a=this.adjustBounds(a);a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:a.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),\n +async:!0,data:a.write(),callback:function(a){var e=a.responseXML;if(!e||!e.documentElement)e=a.responseText;a=(new OpenLayers.Format.ArcXML).read(e);b.call(c,this.getUrlOrImage(a.image.output))},scope:this})},getUrlOrImage:function(a){var b="";a.url?b=a.url:a.data&&(b="data:image/"+a.type+";base64,"+a.data);return b},setLayerQuery:function(a,b){for(var c=0;c<this.options.layers.length;c++)if(a==this.options.layers[c].id){this.options.layers[c].query=b;return}this.options.layers.push({id:a,visible:!0,\n +query:b})},getFeatureInfo:function(a,b,c){var d=c.buffer||1,e=c.callback||function(){},f=c.scope||window,g={};OpenLayers.Util.extend(g,this.options);g.requesttype="feature";a instanceof OpenLayers.LonLat?(g.polygon=null,g.envelope=[a.lon-d,a.lat-d,a.lon+d,a.lat+d]):a instanceof OpenLayers.Geometry.Polygon&&(g.envelope=null,g.polygon=a);var h=new OpenLayers.Format.ArcXML(g);OpenLayers.Util.extend(h.request.get_feature,c);h.request.get_feature.layer=b.id;"number"==typeof b.query.accuracy?h.request.get_feature.query.accuracy=\n +b.query.accuracy:(a=this.map.getCenter(),c=this.map.getViewPortPxFromLonLat(a),c.x++,c=this.map.getLonLatFromPixel(c),h.request.get_feature.query.accuracy=c.lon-a.lon);h.request.get_feature.query.where=b.query.where;h.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({CustomService:"Query"}),data:h.write(),callback:function(a){a=h.parseResponse(a.responseText);h.iserror()?e.call(f,null):e.call(f,a.features)}})},clone:function(a){null==\n +a&&(a=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("xml:lang"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)},AllowedValues:function(a,b){b.allowedValues={};this.readChildNodes(a,b.allowedValues)},AnyValue:function(a,b){b.anyValue=\n +!0},DataType:function(a,b){b.dataType=this.getChildValue(a)},Range:function(a,b){b.range={};this.readChildNodes(a,b.range)},MinimumValue:function(a,b){b.minValue=this.getChildValue(a)},MaximumValue:function(a,b){b.maxValue=this.getChildValue(a)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},SupportedCRS:function(a,b){b.supportedCRS=this.getChildValue(a)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Util.applyDefaults({Range:function(a){var b=this.createElementNSPlus("ows:Range",\n +{attributes:{"ows:rangeClosure":a.closure}});this.writeNode("ows:MinimumValue",a.minValue,b);this.writeNode("ows:MaximumValue",a.maxValue,b);return b},MinimumValue:function(a){return this.createElementNSPlus("ows:MinimumValue",{value:a})},MaximumValue:function(a){return this.createElementNSPlus("ows:MaximumValue",{value:a})},Value:function(a){return this.createElementNSPlus("ows:Value",{value:a})}},OpenLayers.Format.OWSCommon.v1.prototype.writers.ows)},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WCSGetCoverage=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.1.2",schemaLocation:"http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",write:function(a){a=this.writeNode("wcs:GetCoverage",\n +a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wcs:{GetCoverage:function(a){var b=this.createElementNSPlus("wcs:GetCoverage",{attributes:{version:a.version||this.VERSION,service:"WCS"}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("wcs:DomainSubset",a.domainSubset,b);this.writeNode("wcs:Output",a.output,b);return b},DomainSubset:function(a){var b=this.createElementNSPlus("wcs:DomainSubset",\n +{});this.writeNode("ows:BoundingBox",a.boundingBox,b);a.temporalSubset&&this.writeNode("wcs:TemporalSubset",a.temporalSubset,b);return b},TemporalSubset:function(a){for(var b=this.createElementNSPlus("wcs:TemporalSubset",{}),c=0,d=a.timePeriods.length;c<d;++c)this.writeNode("wcs:TimePeriod",a.timePeriods[c],b);return b},TimePeriod:function(a){var b=this.createElementNSPlus("wcs:TimePeriod",{});this.writeNode("wcs:BeginPosition",a.begin,b);this.writeNode("wcs:EndPosition",a.end,b);a.resolution&&this.writeNode("wcs:TimeResolution",\n +a.resolution,b);return b},BeginPosition:function(a){return this.createElementNSPlus("wcs:BeginPosition",{value:a})},EndPosition:function(a){return this.createElementNSPlus("wcs:EndPosition",{value:a})},TimeResolution:function(a){return this.createElementNSPlus("wcs:TimeResolution",{value:a})},Output:function(a){var b=this.createElementNSPlus("wcs:Output",{attributes:{format:a.format,store:a.store}});a.gridCRS&&this.writeNode("wcs:GridCRS",a.gridCRS,b);return b},GridCRS:function(a){var b=this.createElementNSPlus("wcs:GridCRS",\n +{});this.writeNode("wcs:GridBaseCRS",a.baseCRS,b);a.type&&this.writeNode("wcs:GridType",a.type,b);a.origin&&this.writeNode("wcs:GridOrigin",a.origin,b);this.writeNode("wcs:GridOffsets",a.offsets,b);a.CS&&this.writeNode("wcs:GridCS",a.CS,b);return b},GridBaseCRS:function(a){return this.createElementNSPlus("wcs:GridBaseCRS",{value:a})},GridOrigin:function(a){return this.createElementNSPlus("wcs:GridOrigin",{value:a})},GridType:function(a){return this.createElementNSPlus("wcs:GridType",{value:a})},GridOffsets:function(a){return this.createElementNSPlus("wcs:GridOffsets",\n +{value:a})},GridCS:function(a){return this.createElementNSPlus("wcs:GridCS",{value:a})}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WCSGetCoverage"});OpenLayers.Format.WPSExecute=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",gml:"http://www.opengis.net/gml",wps:"http://www.opengis.net/wps/1.0.0",wfs:"http://www.opengis.net/wfs",ogc:"http://www.opengis.net/ogc",wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",\n +schemaLocationAttr:function(){},write:function(a){var b;window.ActiveXObject?this.xmldom=b=new ActiveXObject("Microsoft.XMLDOM"):b=document.implementation.createDocument("","",null);a=this.writeNode("wps:Execute",a,b);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wps:{Execute:function(a){var b=this.createElementNSPlus("wps:Execute",{attributes:{version:this.VERSION,service:"WPS"}});this.writeNode("ows:Identifier",\n +a.identifier,b);this.writeNode("wps:DataInputs",a.dataInputs,b);this.writeNode("wps:ResponseForm",a.responseForm,b);return b},ResponseForm:function(a){var b=this.createElementNSPlus("wps:ResponseForm",{});a.rawDataOutput&&this.writeNode("wps:RawDataOutput",a.rawDataOutput,b);a.responseDocument&&this.writeNode("wps:ResponseDocument",a.responseDocument,b);return b},ResponseDocument:function(a){var b=this.createElementNSPlus("wps:ResponseDocument",{attributes:{storeExecuteResponse:a.storeExecuteResponse,\n +lineage:a.lineage,status:a.status}});a.output&&this.writeNode("wps:Output",a.output,b);return b},Output:function(a){var b=this.createElementNSPlus("wps:Output",{attributes:{asReference:a.asReference}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("ows:Title",a.title,b);this.writeNode("ows:Abstract",a["abstract"],b);return b},RawDataOutput:function(a){var b=this.createElementNSPlus("wps:RawDataOutput",{attributes:{mimeType:a.mimeType}});this.writeNode("ows:Identifier",a.identifier,\n +b);return b},DataInputs:function(a){for(var b=this.createElementNSPlus("wps:DataInputs",{}),c=0,d=a.length;c<d;++c)this.writeNode("wps:Input",a[c],b);return b},Input:function(a){var b=this.createElementNSPlus("wps:Input",{});this.writeNode("ows:Identifier",a.identifier,b);a.title&&this.writeNode("ows:Title",a.title,b);a.data&&this.writeNode("wps:Data",a.data,b);a.reference&&this.writeNode("wps:Reference",a.reference,b);return b},Data:function(a){var b=this.createElementNSPlus("wps:Data",{});a.literalData?\n +this.writeNode("wps:LiteralData",a.literalData,b):a.complexData&&this.writeNode("wps:ComplexData",a.complexData,b);return b},LiteralData:function(a){return this.createElementNSPlus("wps:LiteralData",{attributes:{uom:a.uom},value:a.value})},ComplexData:function(a){var b=this.createElementNSPlus("wps:ComplexData",{attributes:{mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}}),c=a.value;"string"===typeof c?b.appendChild(this.getXMLDoc().createCDATASection(a.value)):b.appendChild(c);return b},\n +Reference:function(a){var b=this.createElementNSPlus("wps:Reference",{attributes:{mimeType:a.mimeType,"xlink:href":a.href,method:a.method,encoding:a.encoding,schema:a.schema}});a.body&&this.writeNode("wps:Body",a.body,b);return b},Body:function(a){var b=this.createElementNSPlus("wps:Body",{});a.wcs?this.writeNode("wcs:GetCoverage",a.wcs,b):a.wfs?(this.featureType=a.wfs.featureType,this.version=a.wfs.version,this.writeNode("wfs:GetFeature",a.wfs,b)):this.writeNode("wps:Execute",a,b);return b}},wcs:OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,\n +wfs:OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WPSExecute"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},\n +setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",\n +c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);\n +OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();\n +break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,zoomWorldIcon:!1,panIcons:!0,forceFixedZoomLevel:!1,mouseDragStart:null,deltaY:null,zoomStart:null,destroy:function(){this._removeZoomBar();this.map.events.un({changebaselayer:this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart},setMap:function(a){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,\n +arguments);this.map.events.register("changebaselayer",this,this.redraw)},redraw:function(){null!=this.div&&(this.removeButtons(),this._removeZoomBar());this.draw()},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position.clone();this.buttons=[];var b={w:18,h:18};if(this.panIcons){var c=new OpenLayers.Pixel(a.x+b.w/2,a.y),d=b.w;this.zoomWorldIcon&&(c=new OpenLayers.Pixel(a.x+b.w,a.y));this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft",\n +"west-mini.png",a,b);this.zoomWorldIcon&&(this._addButton("zoomworld","zoom-world-mini.png",a.add(b.w,0),b),d*=2);this._addButton("panright","east-mini.png",a.add(d,0),b);this._addButton("pandown","south-mini.png",c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);c=this._addZoomBar(c.add(0,4*b.h+5));this._addButton("zoomout","zoom-minus-mini.png",c,b)}else this._addButton("zoomin","zoom-plus-mini.png",a,b),c=this._addZoomBar(a.add(0,b.h)),this._addButton("zoomout",\n +"zoom-minus-mini.png",c,b),this.zoomWorldIcon&&(c=c.add(0,b.h+3),this._addButton("zoomworld","zoom-world-mini.png",c,b));return this.div},_addZoomBar:function(a){var b=OpenLayers.Util.getImageLocation("slider.png"),c=this.id+"_"+this.map.id,d=this.map.getNumZoomLevels()-1-this.map.getZoom(),d=OpenLayers.Util.createAlphaImageDiv(c,a.add(-1,d*this.zoomStopHeight),{w:20,h:9},b,"absolute");d.style.cursor="move";this.slider=d;this.sliderEvents=new OpenLayers.Events(this,d,null,!0,{includeXY:!0});this.sliderEvents.on({touchstart:this.zoomBarDown,\n +touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});var e={w:this.zoomStopWidth,h:this.zoomStopHeight*this.map.getNumZoomLevels()},b=OpenLayers.Util.getImageLocation("zoombar.png"),c=null;OpenLayers.Util.alphaHack()?(c=this.id+"_"+this.map.id,c=OpenLayers.Util.createAlphaImageDiv(c,a,{w:e.w,h:this.zoomStopHeight},b,"absolute",null,"crop"),c.style.height=e.h+"px"):c=OpenLayers.Util.createDiv("OpenLayers_Control_PanZoomBar_Zoombar"+\n +this.map.id,a,e,b);c.style.cursor="pointer";c.className="olButton";this.zoombarDiv=c;this.div.appendChild(c);this.startTop=parseInt(c.style.top);this.div.appendChild(d);this.map.events.register("zoomend",this,this.moveZoomBar);return a=a.add(0,this.zoomStopHeight*this.map.getNumZoomLevels())},_removeZoomBar:function(){this.sliderEvents.un({touchstart:this.zoomBarDown,touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});this.sliderEvents.destroy();\n +this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar)},onButtonClick:function(a){OpenLayers.Control.PanZoom.prototype.onButtonClick.apply(this,arguments);if(a.buttonElement===this.zoombarDiv){var b=a.buttonXY.y/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom)b=Math.floor(b);b=this.map.getNumZoomLevels()-1-b;b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-\n +1);this.map.zoomTo(b)}},passEventToSlider:function(a){this.sliderEvents.handleBrowserEvent(a)},zoomBarDown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.map.events.on({touchmove:this.passEventToSlider,mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this}),this.mouseDragStart=a.xy.clone(),this.zoomStart=a.xy.clone(),this.div.style.cursor="move",this.zoombarDiv.offsets=null,OpenLayers.Event.stop(a)},zoomBarDrag:function(a){if(null!=this.mouseDragStart){var b=\n +this.mouseDragStart.y-a.xy.y,c=OpenLayers.Util.pagePosition(this.zoombarDiv);0<a.clientY-c[1]&&a.clientY-c[1]<parseInt(this.zoombarDiv.style.height)-2&&(this.slider.style.top=parseInt(this.slider.style.top)-b+"px",this.mouseDragStart=a.xy.clone());this.deltaY=this.zoomStart.y-a.xy.y;OpenLayers.Event.stop(a)}},zoomBarUp:function(a){if((OpenLayers.Event.isLeftClick(a)||"touchend"===a.type)&&this.mouseDragStart){this.div.style.cursor="";this.map.events.un({touchmove:this.passEventToSlider,mouseup:this.passEventToSlider,\n +mousemove:this.passEventToSlider,scope:this});var b=this.map.zoom;!this.forceFixedZoomLevel&&this.map.fractionalZoom?(b+=this.deltaY/this.zoomStopHeight,b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-1)):(b+=this.deltaY/this.zoomStopHeight,b=Math.max(Math.round(b),0));this.map.zoomTo(b);this.zoomStart=this.mouseDragStart=null;this.deltaY=0;OpenLayers.Event.stop(a)}},moveZoomBar:function(){this.slider.style.top=(this.map.getNumZoomLevels()-1-this.map.getZoom())*this.zoomStopHeight+this.startTop+\n +1+"px"},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",errorProperty:"service",CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wfs:"http://www.opengis.net/wfs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wfs:{WFS_Capabilities:function(a,b){this.readChildNodes(a,b)},\n +FeatureTypeList:function(a,b){b.featureTypeList={featureTypes:[]};this.readChildNodes(a,b.featureTypeList)},FeatureType:function(a,b){var c={};this.readChildNodes(a,c);b.featureTypes.push(c)},Name:function(a,b){var c=this.getChildValue(a);c&&(c=c.split(":"),b.name=c.pop(),0<c.length&&(b.featureNS=this.lookupNamespaceURI(a,c[0])))},Title:function(a,b){var c=this.getChildValue(a);c&&(b.title=c)},Abstract:function(a,b){var c=this.getChildValue(a);c&&(b["abstract"]=c)}}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},readers:{wfs:OpenLayers.Util.applyDefaults({DefaultSRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs),ows:OpenLayers.Format.OWSCommon.v1.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!0,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(a,b,c,d,e){this.url=b;this.maxExtent=this.extent=c;this.size=d;OpenLayers.Layer.prototype.initialize.apply(this,[a,e]);this.aspectRatio=this.extent.getHeight()/this.size.h/(this.extent.getWidth()/this.size.w)},destroy:function(){this.tile&&(this.removeTileMonitoringHooks(this.tile),this.tile.destroy(),this.tile=null);OpenLayers.Layer.prototype.destroy.apply(this,\n +arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions()));return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setMap:function(a){null==this.options.maxResolution&&(this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w);OpenLayers.Layer.prototype.setMap.apply(this,arguments)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=null==this.tile;if(b||d){this.setTileSize();\n +var e=this.map.getLayerPxFromLonLat({lon:this.extent.left,lat:this.extent.top});d?(this.tile=new OpenLayers.Tile.Image(this,e,this.extent,null,this.tileSize),this.addTileMonitoringHooks(this.tile)):(this.tile.size=this.tileSize.clone(),this.tile.position=e.clone());this.tile.draw()}},setTileSize:function(){var a=this.extent.getWidth()/this.map.getResolution(),b=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(a,b)},addTileMonitoringHooks:function(a){a.onLoadStart=\n +function(){this.events.triggerEvent("loadstart")};a.events.register("loadstart",this,a.onLoadStart);a.onLoadEnd=function(){this.events.triggerEvent("loadend")};a.events.register("loadend",this,a.onLoadEnd);a.events.register("unload",this,a.onLoadEnd)},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,scope:this})},setUrl:function(a){this.url=a;this.tile.draw()},getURL:function(){return this.url},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return!this.active?this.active=!0:!1},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{events:null,auto:!1,timer:null,initialize:function(a){OpenLayers.Strategy.prototype.initialize.apply(this,[a]);this.events=new OpenLayers.Events(this)},activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a&&this.auto)if("number"===typeof this.auto)this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),1E3*this.auto);else this.layer.events.on({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,\n +scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.auto&&("number"===typeof this.auto?window.clearInterval(this.timer):this.layer.events.un({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,scope:this}));return a},triggerSave:function(a){var b=a.feature;(b.state===OpenLayers.State.INSERT||b.state===OpenLayers.State.UPDATE||b.state===OpenLayers.State.DELETE)&&this.save([a.feature])},save:function(a){a||(a=this.layer.features);\n +this.events.triggerEvent("start",{features:a});var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b)){for(var d=a.length,e=Array(d),f,g,h=0;h<d;++h)f=a[h],g=f.clone(),g.fid=f.fid,g.state=f.state,f.url&&(g.url=f.url),g._original=f,g.geometry.transform(c,b),e[h]=g;a=e}this.layer.protocol.commit(a,{callback:this.onCommit,scope:this})},onCommit:function(a){var b={response:a};if(a.success()){for(var c=a.reqFeatures,d,e=[],f=a.insertIds||[],g=0,h=0,i=c.length;h<i;++h)if(d=c[h],\n +d=d._original||d,a=d.state)a==OpenLayers.State.DELETE?e.push(d):a==OpenLayers.State.INSERT&&(d.fid=f[g],++g),d.state=null;0<e.length&&this.layer.destroyFeatures(e);this.events.triggerEvent("success",b)}else this.events.triggerEvent("fail",b)},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{defaultDesc:"No description available",extractWaypoints:!0,extractTracks:!0,extractRoutes:!0,extractAttributes:!0,namespaces:{gpx:"http://www.topografix.com/GPX/1/1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",creator:"OpenLayers",initialize:function(a){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,\n +[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=[];if(this.extractTracks)for(var c=a.getElementsByTagName("trk"),d=0,e=c.length;d<e;d++){var f={};this.extractAttributes&&(f=this.parseAttributes(c[d]));for(var g=this.getElementsByTagNameNS(c[d],c[d].namespaceURI,"trkseg"),h=0,i=g.length;h<i;h++){var j=this.extractSegment(g[h],"trkpt");b.push(new OpenLayers.Feature.Vector(j,f))}}if(this.extractRoutes){e=a.getElementsByTagName("rte");c=0;for(d=\n +e.length;c<d;c++)f={},this.extractAttributes&&(f=this.parseAttributes(e[c])),g=this.extractSegment(e[c],"rtept"),b.push(new OpenLayers.Feature.Vector(g,f))}if(this.extractWaypoints){a=a.getElementsByTagName("wpt");c=0;for(e=a.length;c<e;c++)f={},this.extractAttributes&&(f=this.parseAttributes(a[c])),d=new OpenLayers.Geometry.Point(a[c].getAttribute("lon"),a[c].getAttribute("lat")),b.push(new OpenLayers.Feature.Vector(d,f))}if(this.internalProjection&&this.externalProjection){f=0;for(a=b.length;f<\n +a;f++)b[f].geometry.transform(this.externalProjection,this.internalProjection)}return b},extractSegment:function(a,b){for(var c=this.getElementsByTagNameNS(a,a.namespaceURI,b),d=[],e=0,f=c.length;e<f;e++)d.push(new OpenLayers.Geometry.Point(c[e].getAttribute("lon"),c[e].getAttribute("lat")));return new OpenLayers.Geometry.LineString(d)},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d;a;){if(1==a.nodeType&&a.firstChild&&(c=a.firstChild,3==c.nodeType||4==c.nodeType))d=a.prefix?a.nodeName.split(":")[1]:\n +a.nodeName,"trkseg"!=d&&"rtept"!=d&&(b[d]=c.nodeValue);a=a.nextSibling}return b},write:function(a,b){var a=OpenLayers.Util.isArray(a)?a:[a],c=this.createElementNS(this.namespaces.gpx,"gpx");c.setAttribute("version","1.1");c.setAttribute("creator",this.creator);this.setAttributes(c,{"xsi:schemaLocation":this.schemaLocation});b&&"object"==typeof b&&c.appendChild(this.buildMetadataNode(b));for(var d=0,e=a.length;d<e;d++)c.appendChild(this.buildFeatureNode(a[d]));return OpenLayers.Format.XML.prototype.write.apply(this,\n +[c])},buildMetadataNode:function(a){for(var b=["name","desc","author"],c=this.createElementNSPlus("gpx:metadata"),d=0;d<b.length;d++){var e=b[d];if(a[e]){var f=this.createElementNSPlus("gpx:"+e);f.appendChild(this.createTextNode(a[e]));c.appendChild(f)}}return c},buildFeatureNode:function(a){var b=a.geometry,b=b.clone();this.internalProjection&&this.externalProjection&&b.transform(this.internalProjection,this.externalProjection);if("OpenLayers.Geometry.Point"==b.CLASS_NAME){var c=this.buildWptNode(b);\n +this.appendAttributesNode(c,a);return c}c=this.createElementNSPlus("gpx:trk");this.appendAttributesNode(c,a);for(var a=this.buildTrkSegNode(b),a=OpenLayers.Util.isArray(a)?a:[a],b=0,d=a.length;b<d;b++)c.appendChild(a[b]);return c},buildTrkSegNode:function(a){var b,c,d,e;if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){b=this.createElementNSPlus("gpx:trkseg");c=0;for(d=a.components.length;c<d;c++)e=a.components[c],b.appendChild(this.buildTrkPtNode(e));\n +return b}b=[];c=0;for(d=a.components.length;c<d;c++)b.push(this.buildTrkSegNode(a.components[c]));return b},buildTrkPtNode:function(a){var b=this.createElementNSPlus("gpx:trkpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},buildWptNode:function(a){var b=this.createElementNSPlus("gpx:wpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},appendAttributesNode:function(a,b){var c=this.createElementNSPlus("gpx:name");c.appendChild(this.createTextNode(b.attributes.name||\n +b.id));a.appendChild(c);c=this.createElementNSPlus("gpx:desc");c.appendChild(this.createTextNode(b.attributes.description||this.defaultDesc));a.appendChild(c)},CLASS_NAME:"OpenLayers.Format.GPX"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);if("1.1.1"==c||"1.1.0"==c)c="1.1";return c},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSDescribeLayer.v1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(a){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=a.documentElement.childNodes,b=[],c,d,e=0;e<a.length;++e)if(c=a[e],d=c.nodeName,"LayerDescription"==d){d=c.getAttribute("name");var f="",g="",h="";c.getAttribute("owsType")?(f=c.getAttribute("owsType"),g=c.getAttribute("owsURL")):\n +""!=c.getAttribute("wfs")?(f="WFS",g=c.getAttribute("wfs")):""!=c.getAttribute("wcs")&&(f="WCS",g=c.getAttribute("wcs"));c=c.getElementsByTagName("Query");0<c.length&&((h=c[0].getAttribute("typeName"))||(h=c[0].getAttribute("typename")));b.push({layerName:d,owsType:f,owsURL:g,typeName:h})}return b},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,sphericalMercator:!1,zoomOffset:0,serverResolutions:null,initialize:function(a,b,c){if(c&&c.sphericalMercator||this.sphericalMercator)c=OpenLayers.Util.extend({projection:"EPSG:900913",numZoomLevels:19},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a||this.name,b||this.url,{},c])},clone:function(a){null==a&&(a=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getURL:function(a){var a=this.getXYZ(a),b=this.url;OpenLayers.Util.i + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +sArray(b)&&(b=this.selectUrl(""+a.x+a.y+a.z,b));return OpenLayers.String.format(b,a)},getXYZ:function(a){var b=this.getServerResolution(),c=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w)),a=Math.round((this.maxExtent.top-a.top)/(b*this.tileSize.h)),b=this.getServerZoom();if(this.wrapDateLine)var d=Math.pow(2,b),c=(c%d+d)%d;return{x:c,y:a,z:b}},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,\n +arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",url:["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png","http://b.tile.openstreetmap.org/${z}/${x}/${y}.png","http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"],attribution:"Data CC-By-SA by <a href=\'http://openstreetmap.org/\'>OpenStreetMap</a>",sphericalMercator:!0,wrapDateLine:!0,tileOptions:null,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},\n +this.options&&this.options.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth(),\n +a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,\n +d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/\n +2)/c)*c}},drawGeometry:function(){},drawText:function(){},removeText:function(){},clear:function(){},getFeatureIdFromEvent:function(){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(){},moveRoot:function(){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);\n +!1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};\n +OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},\n +setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,\n +b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==\n +d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,\n +b,c){var d=new Image;b.graphicTitle&&(d.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f),i=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),k=b[0],b=b[1];if(!isNaN(k)&&!isNaN(b)){var k=k+g|0,b=b+h|0,l=this.canvas;l.globalAlpha=i;var m=\n +OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);l.drawImage(d,k*m,b*m,e*m,f*m);if(this.hitDetection){this.setHitContextStyle("fill",c);this.hitContext.fillRect(k,b,e,f)}}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");\n +if(h.length&&!(2>h.length)&&(a=this.getLocalXY(a),e=a[0],g=a[1],!isNaN(e)&&!isNaN(g))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();\n +this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",\n +b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],\n +e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===\n +a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);var a="000000"+a.toString(16),b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);\n +"fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=\n +this.getLocalXY(a),a=d[0],d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",\n +c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,\n +a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();var d=this.getLocalXY(b[0]),f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){var a=a.components,d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<\n +d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");\n +this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];\n +null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];null==h&&(h=-0.5);\n +g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var i=c[0]+h*this.canvas.mozMeasureText(e[g]),j=c[1]+g*d;this.canvas.translate(i,j);this.canvas.mozDrawText(e[g]);this.canvas.translate(-i,-j)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,\n +0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers.Feature.Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];\n +this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=\n +a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:!1,interestingTagsExclude:null,areaTags:null,initialize:function(a){for(var b={interestingTagsExclude:"source source_ref source:ref history attribution created_by".split(" "),areaTags:"area building leisure tourism ruins historic landuse military natural sport".split(" ")},b=OpenLayers.Util.extend(b,a),c={},a=0;a<b.interestingTagsExclude.length;a++)c[b.interestingTagsExclude[a]]=!0;b.interestingTagsExclude=c;c={};for(a=0;a<b.areaTags.length;a++)c[b.areaTags[a]]=\n +!0;b.areaTags=c;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[b])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var b=this.getNodes(a),c=this.getWays(a),a=Array(c.length),d=0;d<c.length;d++){for(var e=Array(c[d].nodes.length),f=this.isWayArea(c[d])?1:0,g=0;g<c[d].nodes.length;g++){var h=b[c[d].nodes[g]],i=new OpenLayers.Geometry.Point(h.lon,h.lat);i.osm_id=parseInt(c[d].nodes[g]);\n +e[g]=i;h.used=!0}h=null;h=f?new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(e)):new OpenLayers.Geometry.LineString(e);this.internalProjection&&this.externalProjection&&h.transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(h,c[d].tags);e.osm_id=parseInt(c[d].id);e.fid="way."+e.osm_id;a[d]=e}for(var j in b){h=b[j];if(!h.used||this.checkTags){c=null;if(this.checkTags){c=this.getTags(h.node,!0);if(h.used&&!c[1])continue;c=c[0]}else c=this.getTags(h.node);\n +e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(h.lon,h.lat),c);this.internalProjection&&this.externalProjection&&e.geometry.transform(this.externalProjection,this.internalProjection);e.osm_id=parseInt(j);e.fid="node."+e.osm_id;a.push(e)}h.node=null}return a},getNodes:function(a){for(var a=a.getElementsByTagName("node"),b={},c=0;c<a.length;c++){var d=a[c],e=d.getAttribute("id");b[e]={lat:d.getAttribute("lat"),lon:d.getAttribute("lon"),node:d}}return b},getWays:function(a){for(var a=\n +a.getElementsByTagName("way"),b=[],c=0;c<a.length;c++){var d=a[c],e={id:d.getAttribute("id")};e.tags=this.getTags(d);d=d.getElementsByTagName("nd");e.nodes=Array(d.length);for(var f=0;f<d.length;f++)e.nodes[f]=d[f].getAttribute("ref");b.push(e)}return b},getTags:function(a,b){for(var c=a.getElementsByTagName("tag"),d={},e=!1,f=0;f<c.length;f++){var g=c[f].getAttribute("k");d[g]=c[f].getAttribute("v");b&&(this.interestingTagsExclude[g]||(e=!0))}return b?[d,e]:d},isWayArea:function(a){var b=!1,c=!1;\n +a.nodes[0]==a.nodes[a.nodes.length-1]&&(b=!0);if(this.checkTags)for(var d in a.tags)if(this.areaTags[d]){c=!0;break}return b&&(this.checkTags?c:!0)},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.osm_id=1;this.created_nodes={};var b=this.createElementNS(null,"osm");b.setAttribute("version","0.5");b.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var c=a.length-1;0<=c;c--)for(var d=this.createFeatureNodes(a[c]),e=0;e<d.length;e++)b.appendChild(d[e]);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[b])},createFeatureNodes:function(a){var b=[],c=a.geometry.CLASS_NAME,c=c.substring(c.lastIndexOf(".")+1),c=c.toLowerCase();(c=this.createXML[c])&&(b=c.apply(this,[a]));return b},createXML:{point:function(a){var b=null,c=a.geometry?a.geometry:a;this.internalProjection&&this.externalProjection&&(c=c.clone(),c.transform(this.internalProjection,this.externalProjection));var d=!1;a.osm_id?(b=a.osm_id,this.created_nodes[b]&&(d=!0)):(b=-this.osm_id,this.osm_id++);var e=d?this.created_nodes[b]:this.createElementNS(null,\n +"node");this.created_nodes[b]=e;e.setAttribute("id",b);e.setAttribute("lon",c.x);e.setAttribute("lat",c.y);a.attributes&&this.serializeTags(a,e);this.setState(a,e);return d?[]:[e]},linestring:function(a){var b,c=[],d=a.geometry;a.osm_id?b=a.osm_id:(b=-this.osm_id,this.osm_id++);var e=this.createElementNS(null,"way");e.setAttribute("id",b);for(b=0;b<d.components.length;b++){var f=this.createXML.point.apply(this,[d.components[b]]);if(f.length){var f=f[0],g=f.getAttribute("id");c.push(f)}else g=d.components[b].osm_id,\n +f=this.created_nodes[g];this.setState(a,f);f=this.createElementNS(null,"nd");f.setAttribute("ref",g);e.appendChild(f)}this.serializeTags(a,e);c.push(e);return c},polygon:function(a){var b=OpenLayers.Util.extend({area:"yes"},a.attributes),b=new OpenLayers.Feature.Vector(a.geometry.components[0],b);b.osm_id=a.osm_id;return this.createXML.linestring.apply(this,[b])}},serializeTags:function(a,b){for(var c in a.attributes){var d=this.createElementNS(null,"tag");d.setAttribute("k",c);d.setAttribute("v",\n +a.attributes[c]);b.appendChild(d)}},setState:function(a,b){if(a.state){var c=null;switch(a.state){case OpenLayers.State.UPDATE:case OpenLayers.State.DELETE:c="delete"}c&&b.setAttribute("action",c)}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:0))==\n +this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=!1;return!0},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,\n +this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,touch:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},\n +dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.stop(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):(this.started=\n +!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;if(this.started&&!this.timeoutId&&(a.xy.x!=this.last.x||a.xy.y!=this.last.y))!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=\n +document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy;return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(){},move:function(){},\n +up:function(){},out:function(){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this}));return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},\n +touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(){return this.start==\n +this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=this.touch=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,\n +"olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,touch:!1,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=\n +b},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this}));return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.stop(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?\n +!this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==\n +b;if((this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer)this.feature=null;this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=null);this.feature?("touchstart"===b&&OpenLayers.Event.stop(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):(!d||e)&&this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&\n +(d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",[this.lastFeature]);return c},triggerCallback:function(a,b,c){(b=this.EVENTMAP[a][b])&&("click"==a&&this.up&&this.down?Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c):this.callback(b,c))},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),\n +this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.touch=!1,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){("removelayer"==a.type||"order"==a.property)&&this.moveLayerToTop()},\n +moveLayerToTop:function(){this.layer.setZIndex(Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1)},moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(){},onDrag:function(){},onComplete:function(){},onEnter:function(){},onLeave:function(){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,\n +up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&(!this.over&&this.overFeature(a))&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=\n +!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*\n +(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},\n +cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=\n +a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,\n +b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);(!this.renderer||!this.renderer.supported())&&this.assignRenderer();if(!this.renderer||\n +!this.renderer.supported())this.renderer=null,this.displayError();this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),\n +this.protocol=null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));for(var a=OpenLayers.Layer.prototype.clone.apply(this,[a]),b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&\n +this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,\n +arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(){this.drawn=!1;if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,\n +arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+parseInt(this.map.layerContainerDiv.style.left,10),e=-Math.round(e),d=d+parseInt(this.map.layerContainerDiv.style.top,10),d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=\n +d+"px";d=this.renderer.setExtent(this.map.getExtent().scale(this.ratio),b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d){this.drawn=!0;f=0;for(d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)}},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);\n +var b=this.div.style.display;b!=this.renderer.root.style.display&&(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+\n +this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);\n +OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,\n +e)&&OpenLayers.Util.removeItem(this.selectedFeatures,e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){var a=!a||!a.silent,b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();\n +this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){!b&&a.state===OpenLayers.State.DELETE&&(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,\n +b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=\n +null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(){},preFeatureInsert:function(){},getDataExtent:function(){var a=null,b=this.features;\n +if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);\n +this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,\n +b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=\n +{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=\n +new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&\n +(this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){for(var b=this.layers||[this.layer],c,d,e=0;e<b.length;++e){c=b[e];for(var f=c.selectedFeatures.length-1;0<=f;--f)d=c.selectedFeatures[f],(!a||a.except!=d)&&this.unselect(d)}},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,a)?this.toggleSelect()?\n +this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=a.layer;this.hover&&(this.highlightOnly?\n +this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&(a._prevHighlighter=a._lastHighlighter,\n +a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=this.onBeforeSelect.call(this.scope,\n +a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",{feature:a});this.onUnselect.call(this.scope,\n +a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=d.features[f];h.getVisibility()&&(null==\n +this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();this.deactivate();this.layers&&\n +(this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,observeElement:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this)},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments)},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,\n +arguments)){this.observeElement=this.observeElement||document;for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.observe(this.observeElement,this.KEY_EVENTS[a],this.eventListener);return!0}return!1},deactivate:function(){var a=!1;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.stopObserving(this.observeElement,this.KEY_EVENTS[a],this.eventListener);a=!0}return a},handleKeyEvent:function(a){this.checkModifiers(a)&&\n +this.callback(a.type,[a])},CLASS_NAME:"OpenLayers.Handler.Keyboard"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,clickout:!0,toggle:!0,standalone:!1,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,handlers:null,deleteCodes:null,virtualStyle:null,vertexRenderIntent:null,mode:null,createVertices:!0,modified:!1,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(a,b){b=b||{};this.layer=\n +a;this.vertices=[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer(null,b.vertexRenderIntent));this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[b]);OpenLayers.Util.isArray(this.deleteCodes)||(this.deleteCodes=[this.deleteCodes]);var c=this,d={geometryTypes:this.geometryTypes,clickout:this.clickout,\n +toggle:this.toggle,onBeforeSelect:this.beforeSelectFeature,onSelect:this.selectFeature,onUnselect:this.unselectFeature,scope:this};!1===this.standalone&&(this.selectControl=new OpenLayers.Control.SelectFeature(a,d));this.dragControl=new OpenLayers.Control.DragFeature(a,{geometryTypes:["OpenLayers.Geometry.Point"],onStart:function(a,b){c.dragStart.apply(c,[a,b])},onDrag:function(a,b){c.dragVertex.apply(c,[a,b])},onComplete:function(a){c.dragComplete.apply(c,[a])},featureCallbacks:{over:function(a){(c.standalone!==\n +true||a._sketch||c.feature===a)&&c.dragControl.overFeature.apply(c.dragControl,[a])}}});this.handlers={keyboard:new OpenLayers.Handler.Keyboard(this,{keydown:this.handleKeypress})}},destroy:function(){this.layer=null;this.standalone||this.selectControl.destroy();this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return(this.standalone||this.selectControl.activate())&&this.handlers.keyboard.activate()&&OpenLayers.Control.prototype.activate.apply(this,\n +arguments)},deactivate:function(){var a=!1;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices,{silent:!0});this.layer.removeFeatures(this.virtualVertices,{silent:!0});this.vertices=[];this.dragControl.deactivate();var b=(a=this.feature)&&a.geometry&&a.layer;!1===this.standalone?(b&&this.selectControl.unselect.apply(this.selectControl,[a]),this.selectControl.deactivate()):b&&this.unselectFeature(a);this.handlers.keyboard.deactivate();a=!0}return a},\n +beforeSelectFeature:function(a){return this.layer.events.triggerEvent("beforefeaturemodified",{feature:a})},selectFeature:function(a){if(!this.standalone||!1!==this.beforeSelectFeature(a))this.feature=a,this.modified=!1,this.resetVertices(),this.dragControl.activate(),this.onModificationStart(this.feature);var b=a.modified;if(a.geometry&&(!b||!b.geometry))this._originalGeometry=a.geometry.clone()},unselectFeature:function(a){this.layer.removeFeatures(this.vertices,{silent:!0});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,\n +{silent:!0});this.virtualVertices=[];this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),delete this.dragHandle);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),delete this.radiusHandle);this.feature=null;this.dragControl.deactivate();this.onModificationEnd(a);this.layer.events.triggerEvent("afterfeaturemodified",{feature:a,modified:this.modified});this.modified=!1},dragStart:function(a,b){if(a!=this.feature&&(!a.geometry.parent&&a!=this.dragHandle&&\n +a!=this.radiusHandle)&&(!1===this.standalone&&this.feature&&this.selectControl.clickFeature.apply(this.selectControl,[this.feature]),null==this.geometryTypes||-1!=OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)))this.standalone||this.selectControl.clickFeature.apply(this.selectControl,[a]),this.dragControl.overFeature.apply(this.dragControl,[a]),this.dragControl.lastPixel=b,this.dragControl.handlers.drag.started=!0,this.dragControl.handlers.drag.start=b,this.dragControl.handlers.drag.last=\n +b},dragVertex:function(a,b){this.modified=!0;"OpenLayers.Geometry.Point"==this.feature.geometry.CLASS_NAME?(this.feature!=a&&(this.feature=a),this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b})):(a._index?(a.geometry.parent.addComponent(a.geometry,a._index),delete a._index,OpenLayers.Util.removeItem(this.virtualVertices,a),this.vertices.push(a)):a==this.dragHandle?(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[],this.radiusHandle&&\n +(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null)):a!==this.radiusHandle&&this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b}),0<this.virtualVertices.length&&(this.layer.destroyFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent));this.layer.drawFeature(a)},dragComplete:function(){this.resetVertices();this.setFeatureState();\n +this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&this.feature.state!=OpenLayers.State.DELETE&&(this.feature.state=OpenLayers.State.UPDATE,this.modified&&this._originalGeometry)){var a=this.feature;a.modified=OpenLayers.Util.extend(a.modified,{geometry:this._originalGeometry});delete this._originalGeometry}},resetVertices:function(){this.dragControl.feature&&this.dragControl.outFeature(this.dragControl.feature);\n +0<this.vertices.length&&(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[]);0<this.virtualVertices.length&&(this.layer.removeFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]);this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),this.dragHandle=null);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null);this.feature&&"OpenLayers.Geometry.Point"!=this.feature.geometry.CLASS_NAME&&(this.mode&\n +OpenLayers.Control.ModifyFeature.DRAG&&this.collectDragHandle(),this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE)&&this.collectRadiusHandle(),this.mode&OpenLayers.Control.ModifyFeature.RESHAPE&&(this.mode&OpenLayers.Control.ModifyFeature.RESIZE||this.collectVertices()))},handleKeypress:function(a){var b=a.keyCode;if(this.feature&&-1!=OpenLayers.Util.indexOf(this.deleteCodes,b)&&(b=this.dragControl.feature)&&-1!=OpenLayers.Util.indexOf(this.vertices,b)&&!this.dragControl.handlers.drag.dragging&&\n +b.geometry.parent)b.geometry.parent.removeComponent(b.geometry),this.layer.events.triggerEvent("vertexremoved",{vertex:b.geometry,feature:this.feature,pixel:a.xy}),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent),this.modified=!0,this.resetVertices(),this.setFeatureState(),this.onModification(this.feature),this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},collectVertices:function(){function a(c){var d,e,f;if("OpenLayers.Geometry.Point"==\n +c.CLASS_NAME)e=new OpenLayers.Feature.Vector(c),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e);else{f=c.components.length;"OpenLayers.Geometry.LinearRing"==c.CLASS_NAME&&(f-=1);for(d=0;d<f;++d)e=c.components[d],"OpenLayers.Geometry.Point"==e.CLASS_NAME?(e=new OpenLayers.Feature.Vector(e),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e)):a(e);if(b.createVertices&&"OpenLayers.Geometry.MultiPoint"!=c.CLASS_NAME){d=0;for(f=c.components.length;d<f-1;++d){e=c.components[d];\n +var g=c.components[d+1];"OpenLayers.Geometry.Point"==e.CLASS_NAME&&"OpenLayers.Geometry.Point"==g.CLASS_NAME&&(e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point((e.x+g.x)/2,(e.y+g.y)/2),null,b.virtualStyle),e.geometry.parent=c,e._index=d+1,e._sketch=!0,b.virtualVertices.push(e))}}}}this.vertices=[];this.virtualVertices=[];var b=this;a.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:!0});this.layer.addFeatures(this.vertices,{silent:!0})},collectDragHandle:function(){var a=\n +this.feature.geometry,b=a.getBounds().getCenterLonLat(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),c=new OpenLayers.Feature.Vector(b);b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);a.move(b,c)};c._sketch=!0;this.dragHandle=c;this.dragHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.dragHandle],{silent:!0})},collectRadiusHandle:function(){var a=this.feature.geometry,b=a.getBounds(),c=b.getCenterLonLat(),d=new OpenLayers.Geometry.Point(c.lon,c.lat),\n +b=new OpenLayers.Geometry.Point(b.right,b.bottom),c=new OpenLayers.Feature.Vector(b),e=this.mode&OpenLayers.Control.ModifyFeature.RESIZE,f=this.mode&OpenLayers.Control.ModifyFeature.RESHAPE,g=this.mode&OpenLayers.Control.ModifyFeature.ROTATE;b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);var j=this.x-d.x,k=this.y-d.y,l=j-b,m=k-c;if(g){var n=Math.atan2(m,l),n=Math.atan2(k,j)-n,n=n*(180/Math.PI);a.rotate(n,d)}if(e){var o;f?(k/=m,o=j/l/k):(l=Math.sqrt(l*l+m*m),k=Math.sqrt(j*\n +j+k*k)/l);a.resize(k,d,o)}};c._sketch=!0;this.radiusHandle=c;this.radiusHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.radiusHandle],{silent:!0})},setMap:function(a){this.standalone||this.selectControl.setMap(a);this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;\n +OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Layer.Bing=OpenLayers.Class(OpenLayers.Layer.XYZ,{key:null,serverResolutions:[156543.03390625,78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677,0.14929107084870338,0.07464553542435169],attributionTemplate:\'<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>\',\n +metadata:null,type:"Road",culture:"en-US",metadataParams:null,tileOptions:null,initialize:function(a){a=OpenLayers.Util.applyDefaults({sphericalMercator:!0},a);OpenLayers.Layer.XYZ.prototype.initialize.apply(this,[a.name||"Bing "+(a.type||this.type),null,a]);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options.tileOptions);this.loadMetadata()},loadMetadata:function(){this._callbackId="_callback_"+this.id.replace(/\\./g,"_");window[this._callbackId]=OpenLayers.Function.bind(OpenLayers.Layer.Bing.processMetadata,\n +this);var a=OpenLayers.Util.applyDefaults({key:this.key,jsonp:this._callbackId,include:"ImageryProviders"},this.metadataParams),a="http://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.type+"?"+OpenLayers.Util.getParameterString(a),b=document.createElement("script");b.type="text/javascript";b.src=a;b.id=this._callbackId;document.getElementsByTagName("head")[0].appendChild(b)},initLayer:function(){var a=this.metadata.resourceSets[0].resources[0],b=a.imageUrl.replace("{quadkey}","${quadkey}"),\n +b=b.replace("{culture}",this.culture);this.url=[];for(var c=0;c<a.imageUrlSubdomains.length;++c)this.url.push(b.replace("{subdomain}",a.imageUrlSubdomains[c]));this.addOptions({maxResolution:Math.min(this.serverResolutions[a.zoomMin],this.maxResolution||Number.POSITIVE_INFINITY),numZoomLevels:Math.min(a.zoomMax+1-a.zoomMin,this.numZoomLevels)},!0)},getURL:function(a){if(this.url){for(var b=this.getXYZ(a),a=b.x,c=b.y,b=b.z,d=[],e=b;0<e;--e){var f="0",g=1<<e-1;0!=(a&g)&&f++;0!=(c&g)&&(f++,f++);d.push(f)}d=\n +d.join("");a=this.selectUrl(""+a+c+b,this.url);return OpenLayers.String.format(a,{quadkey:d})}},updateAttribution:function(){var a=this.metadata;if(a.resourceSets&&this.map&&this.map.center){var b=a.resourceSets[0].resources[0],c=this.map.getExtent().transform(this.map.getProjectionObject(),new OpenLayers.Projection("EPSG:4326")),b=b.imageryProviders,d=OpenLayers.Util.indexOf(this.serverResolutions,this.getServerResolution()),e="",f,g,h,i,j,k,l;g=0;for(h=b.length;g<h;++g){f=b[g];i=0;for(j=f.coverageAreas.length;i<\n +j;++i)l=f.coverageAreas[i],k=OpenLayers.Bounds.fromArray(l.bbox,!0),c.intersectsBounds(k)&&(d<=l.zoomMax&&d>=l.zoomMin)&&(e+=f.attribution+" ")}this.attribution=OpenLayers.String.format(this.attributionTemplate,{type:this.type.toLowerCase(),logo:a.brandLogoUri,copyrights:e});this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"attribution"})}},setMap:function(){OpenLayers.Layer.XYZ.prototype.setMap.apply(this,arguments);this.updateAttribution();this.map.events.register("moveend",\n +this,this.updateAttribution)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Bing(this.options));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},destroy:function(){this.map&&this.map.events.unregister("moveend",this,this.updateAttribution);OpenLayers.Layer.XYZ.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.Bing"});\n +OpenLayers.Layer.Bing.processMetadata=function(a){this.metadata=a;this.initLayer();a=document.getElementById(this._callbackId);a.parentNode.removeChild(a);window[this._callbackId]=void 0;delete this._callbackId};OpenLayers.Layer.PointGrid=OpenLayers.Class(OpenLayers.Layer.Vector,{dx:null,dy:null,ratio:1.5,maxFeatures:250,rotation:0,origin:null,gridBounds:null,initialize:function(a){a=a||{};OpenLayers.Layer.Vector.prototype.initialize.apply(this,[a.name,a])},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);a.events.register("moveend",this,this.onMoveEnd)},removeMap:function(a){a.events.unregister("moveend",this,this.onMoveEnd);OpenLayers.Layer.Vector.prototype.removeMap.apply(this,\n +arguments)},setRatio:function(a){this.ratio=a;this.updateGrid(!0)},setMaxFeatures:function(a){this.maxFeatures=a;this.updateGrid(!0)},setSpacing:function(a,b){this.dx=a;this.dy=b||a;this.updateGrid(!0)},setOrigin:function(a){this.origin=a;this.updateGrid(!0)},getOrigin:function(){this.origin||(this.origin=this.map.getExtent().getCenterLonLat());return this.origin},setRotation:function(a){this.rotation=a;this.updateGrid(!0)},onMoveEnd:function(){this.updateGrid()},getViewBounds:function(){var a=this.map.getExtent();\n +if(this.rotation){var b=this.getOrigin(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),a=a.toGeometry();a.rotate(-this.rotation,b);a=a.getBounds()}return a},updateGrid:function(a){if(a||this.invalidBounds()){var b=this.getViewBounds(),c=this.getOrigin(),a=new OpenLayers.Geometry.Point(c.lon,c.lat),d=b.getWidth(),e=b.getHeight(),f=d/e,g=Math.sqrt(this.dx*this.dy*this.maxFeatures/f),d=Math.min(d*this.ratio,g*f),e=Math.min(e*this.ratio,g),b=b.getCenterLonLat();this.gridBounds=new OpenLayers.Bounds(b.lon-\n +d/2,b.lat-e/2,b.lon+d/2,b.lat+e/2);for(var b=Math.floor(e/this.dy),d=Math.floor(d/this.dx),e=c.lon+this.dx*Math.ceil((this.gridBounds.left-c.lon)/this.dx),c=c.lat+this.dy*Math.ceil((this.gridBounds.bottom-c.lat)/this.dy),g=Array(b*d),h,i=0;i<d;++i)for(var f=e+i*this.dx,j=0;j<b;++j)h=c+j*this.dy,h=new OpenLayers.Geometry.Point(f,h),this.rotation&&h.rotate(this.rotation,a),g[i*b+j]=new OpenLayers.Feature.Vector(h);this.destroyFeatures(this.features,{silent:!0});this.addFeatures(g,{silent:!0})}},invalidBounds:function(){return!this.gridBounds||\n +!this.gridBounds.containsBounds(this.getViewBounds())},CLASS_NAME:"OpenLayers.Layer.PointGrid"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=!1,c=!1,d=!1,e=\n +OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"),b=f&&"auto"==f||"scroll"==f}catch(g){}if(!c)for(var d=0,h=this.map.layers.length;d<h;d++)if(e==this.map.layers[d].div||e==this.map.layers[d].pane){c=!0;break}d=e==this.map.div;e=e.parentNode}!b&&d&&(c&&((b=0,a||(a=window.event),a.wheelDelta?(b=a.wheelDelta/120,window.opera&&9.2>window.opera.version()&&(b=-b)):a.detail&&(b=-a.detail/\n +3),this.delta+=b,this.interval)?(window.clearTimeout(this._timeoutId),this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(a)},this),this.interval)):this.wheelZoom(a)),OpenLayers.Event.stop(a))}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(this.mousePosition&&(a.xy=t + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +his.mousePosition),a.xy||(a.xy=this.map.getPixelFromLonLat(this.map.getCenter())),0>b?this.callback("down",[a,this.cumulative?b:-1]):this.callback("up",[a,this.cumulative?b:1]))},mousemove:function(a){this.mousePosition=\n +a.xy},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",\n +b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(a){OpenLayers.Util.extend(this,a)},clone:function(){return new (eval(this.CLASS_NAME))(OpenLayers.Util.extend({},this))},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=\n +this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==\n +typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},\n +this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=\n +OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{profile:null,defaultVersion:"1.0.0",stringifyOutput:!0,namedLayersAsArray:!1,CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({outerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},innerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},Box:function(a,b){var c=\n +{};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,d.y,c.x,c.y))}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode(OpenLayers.Util.isArray(a)?"wfs:FeatureCollection":"gml:featureMember",a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);\n +return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[a],b);return b},coordinates:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+","+d.y:d.y+","+d.x,void 0!=d.z&&(c[e]+=","+d.z);return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:1==b?c[0]:c.join(" ")})},LineString:function(a){var b=\n +this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",a.components,b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",a.components[0],b);for(var c=1;c<a.components.length;++c)this.writeNode("innerBoundaryIs",a.components[c],b);return b},outerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",a,b);return b},innerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:innerBoundaryIs");\n +this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",a.components,b);return b},Box:function(a){var b=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:a.left,y:a.bottom},{x:a.right,y:a.top}],b);this.srsName&&b.setAttribute("srsName",this.srsName);return b}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},\n +CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,\n +b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escape");c.value2regex(d,e,f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,\n +feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",\n +{attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Box",a.value,b);a.projection&&c.setAttribute("srsName",a.projection);return b}},OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature},\n +writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Box",a.value);a.projection&&d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:!1,schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v2.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({WFS_TransactionResponse:function(a,\n +b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},InsertResult:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])},TransactionResult:function(a,b){this.readChildNodes(a,b)},Status:function(a,b){this.readChildNodes(a,b)},SUCCESS:function(a,b){b.success=!0}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,feature:OpenLayers.Format.GML.v2.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.readers.ogc},\n +writers:{wfs:OpenLayers.Util.applyDefaults({Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType}});a.srsNameInQuery&&a.srsName&&c.setAttribute("srsName",a.srsName);a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<\n +d;b++)this.writeNode("ogc:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(this.setFilterProperty(a.filter),this.writeNode("ogc:Filter",a.filter,c));return c}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,\n +0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){var a=a.id,b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;\n +null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});\n +OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){var b=a.getZIndex(b),d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};\n +OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);\n +this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(b&&(b.zIndexing||b.yOrdering))this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering)},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&\n +this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth(),a=a.scale(1/f),f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(){},drawGeometry:function(a,\n +b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));if(!1==e&&(b=document.getElementById(a.id)))b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b);\n +d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);\n +this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,\n +b,c,null)},drawGeometryNode:function(a,b,c){var c=c||a._style,d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;\n +case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(){},drawPoint:function(){},drawLineString:function(){},drawLinearRing:function(){},drawPolygon:function(){},drawRectangle:function(){},drawCircle:function(){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},\n +getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else if((c=OpenLayers.Util.getElement(a.id))&&c.parentNode)if(c.geometry&&\n +(c.geometry.destroy(),c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic)(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c)},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(){},createNode:function(){},moveRoot:function(a){var b=this.root;\n +a.root.parentNode==this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){var a=a||window.location.href,b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&\n +"OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}if(b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon))this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),\n +this.setCenter()},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);\n +"B"==d?this.map.setBaseLayer(c):("T"==d||"F"==d)&&c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null!==a&&"object"==typeof a&&!OpenLayers.Util.isElement(a)?(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=OpenLayers.Util.getElement(this.element))):(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),\n +this.base=b||document.location.href)},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=\n +this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);!this.element&&!this.anchor&&(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,\n +changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base;-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b+=a+OpenLayers.Util.getParameterString(this.createParams());this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){var a=a||this.map.getCenter(),d=OpenLayers.Util.getParameters(this.base);if(a){d.zoom=b||this.map.getZoom();b=a.lat;a=a.lon;this.displayProjection&&(b=\n +OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y);d.lat=Math.round(1E5*b)/1E5;d.lon=Math.round(1E5*a)/1E5;c=c||this.map.layers;d.layers="";a=0;for(b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",layername:null,type:null,isBaseLayer:!0,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(a,b,c){var d=[];d.push(a,b,{},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,d)},clone:function(a){null==a&&(a=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.getServerResolution(),\n +c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((a.bottom-this.tileOrigin.lat)/(b*this.tileSize.h)),c=this.serviceVersion+"/"+this.layername+"/"+this.getServerZoom()+"/"+c+"/"+a+"."+this.type,a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({refresh:this.load,scope:this});if(!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return!0}return!1},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,\n +scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart");b.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,b.map.getProjectionObject()),filter:b.filter},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a,b){var c=this.layer;c.destroyFeatures();var d=b.features;if(d&&0<d.length){if(!a.equals(c.projection))for(var e,f=0,g=d.length;f<g;++f)(e=d[f].geometry)&&e.transform(c.projection,a);c.addFeatures(d)}c.events.triggerEvent("loadend")},\n +CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Control.Zoom=OpenLayers.Class(OpenLayers.Control,{zoomInText:"+",zoomInId:"olZoomInLink",zoomOutText:"-",zoomOutId:"olZoomOutLink",draw:function(){var a=OpenLayers.Control.prototype.draw.apply(this),b=this.getOrCreateLinks(a),c=b.zoomIn,b=b.zoomOut,d=this.map.events;b.parentNode!==a&&(d=this.events,d.attachToElement(b.parentNode));d.register("buttonclick",this,this.onZoomClick);this.zoomInLink=c;this.zoomOutLink=b;return a},getOrCreateLinks:function(a){var b=document.getElementById(this.zoomInId),\n +c=document.getElementById(this.zoomOutId);b||(b=document.createElement("a"),b.href="#zoomIn",b.appendChild(document.createTextNode(this.zoomInText)),b.className="olControlZoomIn",a.appendChild(b));OpenLayers.Element.addClass(b,"olButton");c||(c=document.createElement("a"),c.href="#zoomOut",c.appendChild(document.createTextNode(this.zoomOutText)),c.className="olControlZoomOut",a.appendChild(c));OpenLayers.Element.addClass(c,"olButton");return{zoomIn:b,zoomOut:c}},onZoomClick:function(a){a=a.buttonElement;\n +a===this.zoomInLink?this.map.zoomIn():a===this.zoomOutLink&&this.map.zoomOut()},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onZoomClick);delete this.zoomInLink;delete this.zoomOutLink;OpenLayers.Control.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Control.Zoom"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,styleFrom:null,addNodes:function(a,b){if(2>a.length)throw Error("At least two point features have to be added to create a line from");for(var c=Array(a.length-1),d,e,f,g=0,h=a.length;g<h;g++){d=a[g];if(f=d.geometry){if("OpenLayers.Geometry.Point"!=f.CLASS_NAME)throw new TypeError("Only features with point geometries are supported.");}else f=d.lonlat,f=new OpenLayers.Geometry.Point(f.lon,f.lat);if(0<g){d=null!=this.dataFrom?\n +a[g+this.dataFrom].data||a[g+this.dataFrom].attributes:null;var i=null!=this.styleFrom?a[g+this.styleFrom].style:null;e=new OpenLayers.Geometry.LineString([e,f]);c[g-1]=new OpenLayers.Feature.Vector(e,d,i)}e=f}this.addFeatures(c,b)},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.SOURCE_NODE=-1;OpenLayers.Layer.PointTrack.TARGET_NODE=0;OpenLayers.Layer.PointTrack.dataFrom={SOURCE_NODE:-1,TARGET_NODE:0};OpenLayers.Protocol.WFS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.WFS.DEFAULTS),b=OpenLayers.Protocol.WFS["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported WFS version: "+a.version;return new b(a)};\n +OpenLayers.Protocol.WFS.fromWMSLayer=function(a,b){var c,d;c=a.params.LAYERS;c=(OpenLayers.Util.isArray(c)?c[0]:c).split(":");1<c.length&&(d=c[0]);c=c.pop();d={url:a.url,featureType:c,featurePrefix:d,srsName:a.projection&&a.projection.getCode()||a.map&&a.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(b,d))};OpenLayers.Protocol.WFS.DEFAULTS={version:"1.0.0"};OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,markers:null,drawn:!1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[]},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var a=0,b=this.markers.length;a<b;a++)this.markers[a].setOpacity(this.opacity)}},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,\n +arguments);if(b||!this.drawn){for(var d=0,e=this.markers.length;d<e;d++)this.drawMarker(this.markers[d]);this.drawn=!0}},addMarker:function(a){this.markers.push(a);1>this.opacity&&a.setOpacity(this.opacity);this.map&&this.map.getExtent()&&(a.map=this.map,this.drawMarker(a))},removeMarker:function(a){this.markers&&this.markers.length&&(OpenLayers.Util.removeItem(this.markers,a),a.erase())},clearMarkers:function(){if(null!=this.markers)for(;0<this.markers.length;)this.removeMarker(this.markers[0])},\n +drawMarker:function(a){var b=this.map.getLayerPxFromLonLat(a.lonlat);null==b?a.display(!1):a.isDrawn()?a.icon&&a.icon.moveTo(b):this.div.appendChild(a.draw(b))},getDataExtent:function(){var a=null;if(this.markers&&0<this.markers.length)for(var a=new OpenLayers.Bounds,b=0,c=this.markers.length;b<c;b++)a.extend(this.markers[b].lonlat);return a},CLASS_NAME:"OpenLayers.Layer.Markers"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,direction:null,type:OpenLayers.Control.TYPE_BUTTON,initialize:function(a,b){this.direction=a;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[b])},trigger:function(){var a=OpenLayers.Function.bind(function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},this);switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-a("h"));\n +break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,a("h"));break;case OpenLayers.Control.Pan.WEST:this.map.pan(-a("w"),0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(a("w"),0)}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.Format.CSWGetDomain=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetDomain.DEFAULTS),b=OpenLayers.Format.CSWGetDomain["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSWGetDomain version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetDomain.DEFAULTS={version:"2.0.2"};OpenLayers.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==\n +a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{csw:{GetDomainResponse:function(a,b){this.readChildNodes(a,b)},DomainValues:function(a,b){OpenLayers.Util.isArray(b.DomainValues)||(b.DomainValues=[]);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;this.readChildNodes(a,d);b.DomainValues.push(d)},PropertyName:function(a,b){b.PropertyName=this.getChildValue(a)},ParameterName:function(a,b){b.ParameterName=this.getChildValue(a)},ListOfValues:function(a,\n +b){OpenLayers.Util.isArray(b.ListOfValues)||(b.ListOfValues=[]);this.readChildNodes(a,b.ListOfValues)},Value:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.push({Value:d})},ConceptualScheme:function(a,b){b.ConceptualScheme={};this.readChildNodes(a,b.ConceptualScheme)},Name:function(a,b){b.Name=this.getChildValue(a)},Document:function(a,b){b.Document=this.getChildValue(a)},Authority:function(a,b){b.Authority=this.getChildValue(a)},\n +RangeOfValues:function(a,b){b.RangeOfValues={};this.readChildNodes(a,b.RangeOfValues)},MinValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MinValue=d},MaxValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MaxValue=d}}},write:function(a){a=this.writeNode("csw:GetDomain",a);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{csw:{GetDomain:function(a){var b=\n +this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});if(a.PropertyName||this.PropertyName)this.writeNode("csw:PropertyName",a.PropertyName||this.PropertyName,b);else if(a.ParameterName||this.ParameterName)this.writeNode("csw:ParameterName",a.ParameterName||this.ParameterName,b);this.readChildNodes(b,a);return b},PropertyName:function(a){return this.createElementNSPlus("csw:PropertyName",{value:a})},ParameterName:function(a){return this.createElementNSPlus("csw:ParameterName",\n +{value:a})}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{read:function(a){return(new OpenLayers.Format.ArcXML).read(a).features.feature}});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{DEFAULTS:{tolerance:10,node:!0,edge:!0,vertex:!0},greedy:!0,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.layer&&this.setLayer(this.options.layer);a=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(a,this.DEFAULTS);this.setTargets(this.options.targets);\n +0===this.targets.length&&this.layer&&this.addTargetLayer(this.layer);this.geoToleranceCache={}},setLayer:function(a){this.active?(this.deactivate(),this.layer=a,this.activate()):this.layer=a},setTargets:function(a){this.targets=[];if(a&&a.length)for(var b,c=0,d=a.length;c<d;++c)b=a[c],b instanceof OpenLayers.Layer.Vector?this.addTargetLayer(b):this.addTarget(b)},addTargetLayer:function(a){this.addTarget({layer:a})},addTarget:function(a){a=OpenLayers.Util.applyDefaults(a,this.defaults);a.nodeTolerance=\n +a.nodeTolerance||a.tolerance;a.vertexTolerance=a.vertexTolerance||a.tolerance;a.edgeTolerance=a.edgeTolerance||a.tolerance;this.targets.push(a)},removeTargetLayer:function(a){for(var b,c=this.targets.length-1;0<=c;--c)b=this.targets[c],b.layer===a&&this.removeTarget(b)},removeTarget:function(a){return OpenLayers.Util.removeItem(this.targets,a)},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a&&this.layer&&this.layer.events)this.layer.events.on({sketchstarted:this.onSketchModified,\n +sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.layer&&this.layer.events&&this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});this.point=this.feature=null;return a},onSketchModified:function(a){this.feature=a.feature;this.considerSnapping(a.vertex,a.vertex)},onVertexModified:function(a){this.feature=\n +a.feature;var b=this.layer.map.getLonLatFromViewPortPx(a.pixel);this.considerSnapping(a.vertex,new OpenLayers.Geometry.Point(b.lon,b.lat))},considerSnapping:function(a,b){for(var c={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null},d=!1,e,f,g=0,h=this.targets.length;g<h;++g)if(f=this.targets[g],e=this.testTarget(f,b))if(this.greedy){c=e;c.target=f;d=!0;break}else if(e.rank<c.rank||e.rank===c.rank&&e.dist<c.dist)c=e,c.target=f,d=!0;d&&(!1!==this.events.triggerEvent("beforesnap",\n +{point:a,x:c.x,y:c.y,distance:c.dist,layer:c.target.layer,snapType:this.precedence[c.rank]})?(a.x=c.x,a.y=c.y,this.point=a,this.events.triggerEvent("snap",{point:a,snapType:this.precedence[c.rank],layer:c.target.layer,distance:c.dist})):d=!1);this.point&&!d&&(a.x=b.x,a.y=b.y,this.point=null,this.events.triggerEvent("unsnap",{point:a}))},testTarget:function(a,b){var c=this.layer.map.getResolution();if("minResolution"in a&&c<a.minResolution||"maxResolution"in a&&c>=a.maxResolution)return null;for(var c=\n +{node:this.getGeoTolerance(a.nodeTolerance,c),vertex:this.getGeoTolerance(a.vertexTolerance,c),edge:this.getGeoTolerance(a.edgeTolerance,c)},d=Math.max(c.node,c.vertex,c.edge),e={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY},f=!1,g=a.layer.features,h,i,j,k,l,m,n=this.precedence.length,o=new OpenLayers.LonLat(b.x,b.y),p=0,q=g.length;p<q;++p)if(h=g[p],h!==this.feature&&(!h._sketch&&h.state!==OpenLayers.State.DELETE&&(!a.filter||a.filter.evaluate(h)))&&h.atPoint(o,d,d))for(var r=0,s=Math.min(e.rank+\n +1,n);r<s;++r)if(i=this.precedence[r],a[i])if("edge"===i){if(j=h.geometry.distanceTo(b,{details:!0}),l=j.distance,l<=c[i]&&l<e.dist){e={rank:r,dist:l,x:j.x0,y:j.y0};f=!0;break}}else{j=h.geometry.getVertices("node"===i);m=!1;for(var t=0,u=j.length;t<u;++t)if(k=j[t],l=k.distanceTo(b),l<=c[i]&&(r<e.rank||r===e.rank&&l<e.dist))e={rank:r,dist:l,x:k.x,y:k.y},m=f=!0;if(m)break}return f?e:null},getGeoTolerance:function(a,b){b!==this.resolution&&(this.resolution=b,this.geoToleranceCache={});var c=this.geoToleranceCache[a];\n +void 0===c&&(c=a*b,this.geoToleranceCache[a]=c);return c},destroy:function(){this.active&&this.deactivate();delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Date={toISOString:function(){if("toISOString"in Date.prototype)return function(a){return a.toISOString()};var a=function(a,c){for(var d=a+"";d.length<c;)d="0"+d;return d};return function(b){return isNaN(b.getTime())?"Invalid Date":b.getUTCFullYear()+"-"+a(b.getUTCMonth()+1,2)+"-"+a(b.getUTCDate(),2)+"T"+a(b.getUTCHours(),2)+":"+a(b.getUTCMinutes(),2)+":"+a(b.getUTCSeconds(),2)+"."+a(b.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(/^(?:(\\d{4})(?:-(\\d{2})(?:-(\\d{2}))?)?)?(?:(?:T(\\d{1,2}):(\\d{2}):(\\d{2}(?:\\.\\d+)?)(Z|(?:[+-]\\d{1,2}(?::(\\d{2}))?)))|Z)?$/))&&\n +(a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,b=new Date(b.getTime()+-1E3*(60*60*c+60*a)))}}else b=new Date("invalid");return b}};(function(){function a(){this._object=f&&!i?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&(f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\\/]+\\/[^\\+]+\\+xml/))&&\n +(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(i){}try{a.statusText=a._object.statusText}catch(r){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,i=h&&window.navigator.userAgent.match(/MSIE 7.0/);\n +b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,i,m,n){delete this._headers;arguments.length<3&&(i=true);this._async=i;var o=\n +this,p=this.readyState,q;if(h&&i){q=function(){if(p!=b.DONE){e(o);o.abort()}};window.attachEvent("onunload",q)}b.onopen&&b.onopen.apply(this,arguments);arguments.length>4?this._object.open(a,f,i,m,n):arguments.length>3?this._object.open(a,f,i,m):this._object.open(a,f,i);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||i){o.readyState=o._object.readyState;d(o);if(o._aborted)o.readyState=b.UNSENT;else{if(o.readyState==b.DONE){delete o._data;e(o);h&&i&&window.detachEvent("onunload",\n +q)}p!=o.readyState&&c(o);p=o.readyState}}}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);if(a&&a.nodeType){a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml;this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml")}this._data=a;a:{this._object.send(this._data);if(g&&!this._async){this.readyState=b.OPENED;for(d(this);this.readyState<b.DONE;){this.readyState++;c(this);if(this._aborted)break a}}}};\n +b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);if(this.readyState>b.UNSENT)this._aborted=true;this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){if(!this._headers)this._headers={};this._headers[a]=b;return this._object.setRequestHeader(a,\n +b)};b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)break;e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},\n +initEvent:function(){}};a.type=="readystatechange"&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]==a.type&&!c[2]&&(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],\n +b[4]);delete a.__func});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=\n +{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g,kmlColor:/(\\w{2})(\\w{2})(\\w{2})(\\w{2})/,kmlIconPalette:/root:\\/\\/icons\\/palette-(\\d+)(\\.\\w+)/,straightBracket:/\\$\\[(.*?)\\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&\n +(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,\n +b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=\n +null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=\n +d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var i=32*h,j=this.getElementsByTagNameNS(e,"*","Icon")[0];if(j){var k=this.parseProperty(j,"*","href");if(k){var l=this.parseProperty(j,"*","w"),m=this.parseProperty(j,\n +"*","h");OpenLayers.String.startsWith(k,"http://maps.google.com/mapfiles/kml")&&(!l&&!m)&&(m=l=64,h/=2);l=l||m;m=m||l;l&&(d=parseInt(l)*h);m&&(i=parseInt(m)*h);if(m=k.match(this.regExes.kmlIconPalette))l=m[1],m=m[2],k=this.parseProperty(j,"*","x"),j=this.parseProperty(j,"*","y"),k="http://maps.google.com/mapfiles/kml/pal"+l+"/icon"+(8*(j?7-j/32:7)+(k?k/32:0))+m;b.graphicOpacity=1;b.externalGraphic=k}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])k=parseFloat(e.getAttribute("x")),j=parseFloat(e.getAttribute("y")),\n +l=e.getAttribute("xunits"),"pixels"==l?b.graphicXOffset=-k*h:"insetPixels"==l?b.graphicXOffset=-d+k*h:"fraction"==l&&(b.graphicXOffset=-d*k),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-i+j*h+1:"insetPixels"==e?b.graphicYOffset=-(j*h)+1:"fraction"==e&&(b.graphicYOffset=-i*(1-j)+1);b.graphicWidth=d;b.graphicHeight=i;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,\n +"*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);if((a=a.getAttribute("id"))&&b)b.id=a;return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var i=f[g],j=this.parseProperty(i,"*","key");(i=this.parseProperty(i,"*","styleUrl"))&&"normal"==j&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||\n +"")+i])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&(g.attributes&&g.attributes.styleUrl)&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];if(h&&(h=this.parseStyle(h)))g.style=OpenLayers.Util.extend(g.style,h)}if(this.extractTracks){if((f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length)g={features:[],feature:g},\n +this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)}else c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<\n +f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,\n +i,e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;i=c.points[e];h.geometry=i;"z"in i&&(h.attributes.altitude=i.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes){i=0;for(var j=this.trackAttributes.length;i<j;++i)h.attributes[d]=c.attributes[this.trackAttributes[i]][e]}h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(i=c.angles[e],h.attributes.heading=\n +parseFloat(i[0]),h.attributes.tilt=parseFloat(i[1]),h.attributes.roll=parseFloat(i[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],\n +c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||\n +a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),a=[];if(0<b.length)var c=b[0].firstChild.nodeValue,\n +c=c.replace(this.regExes.removeSpace,""),a=c.split(",");b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,i=0;i<e;++i)if(g=\n +d[i].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[i]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[i];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing"),b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=\n +b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=this.parseGeometry[(a.prefix?a.nodeName.split(":")[1]:a.nodeName).toLowerCase()])&&c.push(b.apply(this,[a]));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));for(var d,e,f,a=a.childNodes,c=0,g=\n +a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");\n +var h={},i=e.getElementsByTagName("value");i.length&&(h.value=this.getChildValue(i[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d,a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=\n +null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&\n +(b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name");b.appendChild(this.createTextNode(a.style&&a.style.label?a.style.label:a.attributes.name||a.id));var c=this.createElementNS(this.kmlns,"description");c.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));var d=this.createElementNS(this.kmlns,"Placemark");null!=\n +a.fid&&d.setAttribute("id",a.fid);d.appendChild(b);d.appendChild(c);b=this.buildGeometryNode(a.geometry);d.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&d.appendChild(a);return d},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){return this.buildGeometry.collection.apply(this,\n +[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.kmlns,"Polygon"),a=a.components,c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",\n +c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.kmlns,"coordinates"),\n +c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),c;for(c in a)if(a[c]&&"name"!=c&&"description"!=\n +c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?null:b},\n +CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,\n +keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;\n +this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=\n +null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=\n +this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);!this.disableFirefoxOverflowHack&&"firefox"==OpenLayers.BROWSER_NAME&&(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;\n +a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);!this.autoSize&&!this.size&&this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=\n +a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),\n +c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class=\'"+this.contentDisplayClass+"\'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,\n +null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=\n +a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&(null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML)&&(this.contentDiv.innerHTML=\n +this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),\n +OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){var a=a.clone(),b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-\n +d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-\n +this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;if(!a&&(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,\n +"padding-top")),this.div.parentNode==document.body))document.body.removeChild(this.div),this.div.style.display="";return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,\n +"touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);\n +b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,th + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +is.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},\n +scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";\n +OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},\n +moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);a=this.calculateNewPx(a);OpenLayers.Popup.prototype.moveTo.apply(this,Array(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);this.lonlat&&this.map&&this.moveTo(this.map.getLayerPxFromLonLat(this.lonlat))},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);\n +return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){var a=a.offset(this.anchor.offset),b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});/*\n + Apache 2 \n +\n + Contains portions of Rico <http://openrico.org/>\n +\n + Copyright 2005 Sabre Airline Solutions \n +\n + Licensed under the Apache License, Version 2.0 (the "License"); you\n + may not use this file except in compliance with the License. You\n + may obtain a copy of the License at\n +\n + http://www.apache.org/licenses/LICENSE-2.0 \n +\n + Unless required by applicable law or agreed to in writing, software\n + distributed under the License is distributed on an "AS IS" BASIS,\n + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n + implied. See the License for the specific language governing\n + permissions and limitations under the License. \n +*/\n +OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};\n +OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(a,b,c){this.rgb={r:a,g:b,b:c}},setRed:function(a){this.rgb.r=a},setGreen:function(a){this.rgb.g=a},setBlue:function(a){this.rgb.b=a},setHue:function(a){var b=this.asHSB();b.h=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setSaturation:function(a){var b=this.asHSB();b.s=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setBrightness:function(a){var b=this.asHSB();b.b=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},\n +darken:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.max(b.b-a,0))},brighten:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.min(b.b+a,1))},blend:function(a){this.rgb.r=Math.floor((this.rgb.r+a.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+a.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+a.rgb.b)/2)},isBright:function(){this.asHSB();return 0.5<this.asHSB().b},isDark:function(){return!this.isBright()},asRGB:function(){return"rgb("+\n +this.rgb.r+","+this.rgb.g+","+this.rgb.b+")"},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart()},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b)},toString:function(){return this.asHex()}});\n +OpenLayers.Rico.Color.createFromHex=function(a){if(4==a.length)for(var b=a,a="#",c=1;4>c;c++)a+=b.charAt(c)+b.charAt(c);0==a.indexOf("#")&&(a=a.substring(1));b=a.substring(0,2);c=a.substring(2,4);a=a.substring(4,6);return new OpenLayers.Rico.Color(parseInt(b,16),parseInt(c,16),parseInt(a,16))};\n +OpenLayers.Rico.Color.createColorFromBackground=function(a){var b=OpenLayers.Element.getStyle(OpenLayers.Util.getElement(a),"backgroundColor");return"transparent"==b&&a.parentNode?OpenLayers.Rico.Color.createColorFromBackground(a.parentNode):null==b?new OpenLayers.Rico.Color(255,255,255):0==b.indexOf("rgb(")?(a=b.substring(4,b.length-1).split(","),new OpenLayers.Rico.Color(parseInt(a[0]),parseInt(a[1]),parseInt(a[2]))):0==b.indexOf("#")?OpenLayers.Rico.Color.createFromHex(b):new OpenLayers.Rico.Color(255,\n +255,255)};\n +OpenLayers.Rico.Color.HSBtoRGB=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=parseInt(255*c+0.5);else{var a=6*(a-Math.floor(a)),g=a-Math.floor(a),h=c*(1-b),i=c*(1-b*g),b=c*(1-b*(1-g));switch(parseInt(a)){case 0:d=255*c+0.5;e=255*b+0.5;f=255*h+0.5;break;case 1:d=255*i+0.5;e=255*c+0.5;f=255*h+0.5;break;case 2:d=255*h+0.5;e=255*c+0.5;f=255*b+0.5;break;case 3:d=255*h+0.5;e=255*i+0.5;f=255*c+0.5;break;case 4:d=255*b+0.5;e=255*h+0.5;f=255*c+0.5;break;case 5:d=255*c+0.5,e=255*h+0.5,f=255*i+0.5}}return{r:parseInt(d),g:parseInt(e),\n +b:parseInt(f)}};OpenLayers.Rico.Color.RGBtoHSB=function(a,b,c){var d,e=a>b?a:b;c>e&&(e=c);var f=a<b?a:b;c<f&&(f=c);d=0!=e?(e-f)/e:0;if(0==d)a=0;else{var g=(e-a)/(e-f),h=(e-b)/(e-f),c=(e-c)/(e-f),a=(a==e?c-h:b==e?2+g-c:4+h-g)/6;0>a&&(a+=1)}return{h:a,s:d,b:e/255}};OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};\n +OpenLayers.Rico.Corner={round:function(a,b){a=OpenLayers.Util.getElement(a);this._setOptions(b);var c=this.options.color;"fromElement"==this.options.color&&(c=this._background(a));var d=this.options.bgColor;"fromParent"==this.options.bgColor&&(d=this._background(a.offsetParent));this._roundCornersImpl(a,c,d)},changeColor:function(a,b){a.style.backgroundColor=b;for(var c=a.parentNode.getElementsByTagName("span"),d=0;d<c.length;d++)c[d].style.backgroundColor=b},changeOpacity:function(a,b){var c="alpha(opacity="+\n +100*b+")";a.style.opacity=b;a.style.filter=c;for(var d=a.parentNode.getElementsByTagName("span"),e=0;e<d.length;e++)d[e].style.opacity=b,d[e].style.filter=c},reRound:function(a,b){var c=a.parentNode.childNodes[2];a.parentNode.removeChild(a.parentNode.childNodes[0]);a.parentNode.removeChild(c);this.round(a.parentNode,b)},_roundCornersImpl:function(a,b,c){this.options.border&&this._renderBorder(a,c);this._isTopRounded()&&this._roundTopCorners(a,b,c);this._isBottomRounded()&&this._roundBottomCorners(a,\n +b,c)},_renderBorder:function(a,b){var c="1px solid "+this._borderColor(b);a.innerHTML="<div "+("style=\'border-left: "+c+";"+("border-right: "+c)+"\'")+">"+a.innerHTML+"</div>"},_roundTopCorners:function(a,b,c){for(var d=this._createCorner(c),e=0;e<this.options.numSlices;e++)d.appendChild(this._createCornerSlice(b,c,e,"top"));a.style.paddingTop=0;a.insertBefore(d,a.firstChild)},_roundBottomCorners:function(a,b,c){for(var d=this._createCorner(c),e=this.options.numSlices-1;0<=e;e--)d.appendChild(this._createCornerSlice(b,\n +c,e,"bottom"));a.style.paddingBottom=0;a.appendChild(d)},_createCorner:function(a){var b=document.createElement("div");b.style.backgroundColor=this._isTransparent()?"transparent":a;return b},_createCornerSlice:function(a,b,c,d){var e=document.createElement("span"),f=e.style;f.backgroundColor=a;f.display="block";f.height="1px";f.overflow="hidden";f.fontSize="1px";a=this._borderColor(a,b);this.options.border&&0==c?(f.borderTopStyle="solid",f.borderTopWidth="1px",f.borderLeftWidth="0px",f.borderRightWidth=\n +"0px",f.borderBottomWidth="0px",f.height="0px",f.borderColor=a):a&&(f.borderColor=a,f.borderStyle="solid",f.borderWidth="0px 1px");!this.options.compact&&c==this.options.numSlices-1&&(f.height="2px");this._setMargin(e,c,d);this._setBorder(e,c,d);return e},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:!0,border:!1,compact:!1};OpenLayers.Util.extend(this.options,a||{});this.options.numSlices=this.options.compact?2:4;this._isTransparent()&&(this.options.blend=\n +!1)},_whichSideTop:function(){return this._hasString(this.options.corners,"all","top")||0<=this.options.corners.indexOf("tl")&&0<=this.options.corners.indexOf("tr")?"":0<=this.options.corners.indexOf("tl")?"left":0<=this.options.corners.indexOf("tr")?"right":""},_whichSideBottom:function(){return this._hasString(this.options.corners,"all","bottom")||0<=this.options.corners.indexOf("bl")&&0<=this.options.corners.indexOf("br")?"":0<=this.options.corners.indexOf("bl")?"left":0<=this.options.corners.indexOf("br")?\n +"right":""},_borderColor:function(a,b){return"transparent"==a?b:this.options.border?this.options.border:this.options.blend?this._blend(b,a):""},_setMargin:function(a,b,c){b=this._marginSize(b);c="top"==c?this._whichSideTop():this._whichSideBottom();"left"==c?(a.style.marginLeft=b+"px",a.style.marginRight="0px"):"right"==c?(a.style.marginRight=b+"px",a.style.marginLeft="0px"):(a.style.marginLeft=b+"px",a.style.marginRight=b+"px")},_setBorder:function(a,b,c){b=this._borderSize(b);c="top"==c?this._whichSideTop():\n +this._whichSideBottom();"left"==c?(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth="0px"):"right"==c?(a.style.borderRightWidth=b+"px",a.style.borderLeftWidth="0px"):(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px");!1!=this.options.border&&(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px")},_marginSize:function(a){if(this._isTransparent())return 0;var b=[5,3,2,1],c=[3,2,1,0],d=[2,1],e=[1,0];return this.options.compact&&this.options.blend?e[a]:this.options.compact?\n +d[a]:this.options.blend?c[a]:b[a]},_borderSize:function(a){var b=[5,3,2,1],c=[2,1,1,1],d=[1,0],e=[0,2,0,0];return this.options.compact&&(this.options.blend||this._isTransparent())?1:this.options.compact?d[a]:this.options.blend?c[a]:this.options.border?e[a]:this._isTransparent()?b[a]:0},_hasString:function(a){for(var b=1;b<arguments.length;b++)if(0<=a.indexOf(arguments[b]))return!0;return!1},_blend:function(a,b){var c=OpenLayers.Rico.Color.createFromHex(a);c.blend(OpenLayers.Rico.Color.createFromHex(b));\n +return c},_background:function(a){try{return OpenLayers.Rico.Color.createColorFromBackground(a).asHex()}catch(b){return"#ffffff"}},_isTransparent:function(){return"transparent"==this.options.color},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr")},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br")},_hasSingleTextChild:function(a){return 1==a.childNodes.length&&3==a.childNodes[0].nodeType}};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Console.warn("AnchoredBubble is deprecated");this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments)},draw:function(a){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();\n +this.setOpacity();return this.div},updateRelativePosition:function(){this.setRicoCorners()},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners()},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=a);null!=this.div&&null!=this.contentDiv&&(this.div.style.background="transparent",OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor))},setOpacity:function(a){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,\n +a);null!=this.div&&null!=this.groupDiv&&OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity)},setBorder:function(){this.border=0},setRicoCorners:function(){var a={corners:this.getCornersToRound(this.relativePosition),color:this.backgroundColor,bgColor:"transparent",blend:!1};this.rounded?(OpenLayers.Rico.Corner.reRound(this.groupDiv,a),this.setBackgroundColor(),this.setOpacity()):(OpenLayers.Rico.Corner.round(this.div,a),this.rounded=!0)},getCornersToRound:function(){var a=["tl","tr",\n +"bl","br"],b=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(a,b);return a.join(" ")},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,readOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,\n +srsName:this.srsName,schema:this.schema},this.formatOptions)));!a.geometryName&&1<parseFloat(this.format.version)&&this.setGeometryName(null)},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),\n +c=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",a)]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},setFeatureType:function(a){this.featureType=a;this.format.featureType=a},setGeometryName:function(a){this.geometryName=a;this.format.geometryName=a},handleRead:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);if(b.callback){var c=\n +a.priv;200<=c.status&&300>c.status?(c=this.parseResponse(c,b.readOptions))&&!1!==c.success?(b.readOptions&&"object"==b.readOptions.output?OpenLayers.Util.extend(a,c):a.features=c,a.code=OpenLayers.Protocol.Response.SUCCESS):(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseResponse:function(a,b){var c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;if(!c||0>=c.length)return null;c=null!==this.readFormat?this.readFormat.read(c):\n +this.format.read(c,b);if(!this.featureNS){var d=this.readFormat||this.format;this.featureNS=d.featureNS;d.autoConfig=!1;this.geometryName||this.setGeometryName(d.geometryName)}return c},commit:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:a});c.priv=OpenLayers.Request.POST({url:b.url,headers:b.headers,data:this.format.write(a,b),callback:this.createCallback(this.handleCommit,c,b)});\n +return c},handleCommit:function(a,b){if(b.callback){var c=a.priv,d=c.responseXML;if(!d||!d.documentElement)d=c.responseText;c=this.format.read(d)||{};a.insertIds=c.insertIds||[];c.success?a.code=OpenLayers.Protocol.Response.SUCCESS:(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c);b.callback.call(b.scope,a)}},filterDelete:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);new OpenLayers.Protocol.Response({requestType:"commit"});var c=this.format.createElementNSPlus("wfs:Transaction",\n +{attributes:{service:"WFS",version:this.version}}),d=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(b.featureNS?this.featurePrefix+":":"")+b.featureType}});b.featureNS&&d.setAttribute("xmlns:"+this.featurePrefix,b.featureNS);var e=this.format.writeNode("ogc:Filter",a);d.appendChild(e);c.appendChild(d);c=OpenLayers.Format.XML.prototype.write.apply(this.format,[c]);return OpenLayers.Request.POST({url:this.url,callback:b.callback||function(){},data:c})},abort:function(a){a&&a.priv.abort()},\n +CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});OpenLayers.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:!1,citeCompliant:!1,mouseDown:!1,stoppedDown:null,lastDown:null,lastUp:null,persist:!1,stopDown:!1,stopUp:!1,layerOptions:null,pixelTolerance:5,touch:!1,lastTouchPx:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,\n +arguments))return!1;var a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);return!0},createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();\n +this.layer.addFeatures([this.point],{silent:!0})},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments))return!1;this.cancel();null!=this.layer.map&&(this.destroyFeature(!0),this.layer.destroy(!1));this.layer=null;this.touch=!1;return!0},destroyFeature:function(a){this.layer&&(a||!this.persist)&&this.layer.destroyFeatures();this.point=null},destroyPersistedFeature:function(){var a=this.layer;a&&1<a.features.length&&this.layer.features[0].destroy()},finalize:function(a){this.mouseDown=\n +!1;this.lastTouchPx=this.lastUp=this.lastDown=null;this.callback(a?"cancel":"done",[this.geometryClone()]);this.destroyFeature(a)},cancel:function(){this.finalize(!0)},click:function(a){OpenLayers.Event.stop(a);return!1},dblclick:function(a){OpenLayers.Event.stop(a);return!1},modifyFeature:function(a){this.point||this.createFeature(a);a=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=a.lon;this.point.geometry.y=a.lat;this.callback("modify",[this.point.geometry,this.point,!1]);this.point.geometry.clearBounds();\n +this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},getGeometry:function(){var a=this.point&&this.point.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPoint([a]));return a},geometryClone:function(){var a=this.getGeometry();return a&&a.clone()},mousedown:function(a){return this.down(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,\n +scope:this}));this.lastTouchPx=a.xy;return this.down(a)},mousemove:function(a){return this.move(a)},touchmove:function(a){this.lastTouchPx=a.xy;return this.move(a)},mouseup:function(a){return this.up(a)},touchend:function(a){a.xy=this.lastTouchPx;return this.up(a)},down:function(a){this.mouseDown=!0;this.lastDown=a.xy;this.touch||this.modifyFeature(a.xy);this.stoppedDown=this.stopDown;return!this.stopDown},move:function(a){!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy);\n +return!0},up:function(a){this.mouseDown=!1;this.stoppedDown=this.stopDown;return this.checkModifiers(a)&&(!this.lastUp||!this.lastUp.equals(a.xy))&&this.lastDown&&this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)?(this.touch&&this.modifyFeature(a.xy),this.persist&&this.destroyPersistedFeature(),this.lastUp=a.xy,this.finalize(),!this.stopUp):!0},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.stoppedDown=this.stopDown,this.mouseDown=!1)},passesTolerance:function(a,\n +b,c){var d=!0;null!=c&&a&&b&&a.distanceTo(b)>c&&(d=!1);return d},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,maxVertices:null,doubleTouchTolerance:20,freehand:!1,freehandToggle:"shiftKey",timerId:null,redoStack:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);\n +this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:!0})},destroyFeature:function(a){OpenLayers.Handler.Point.prototype.destroyFeature.call(this,a);this.line=null},destroyPersistedFeature:function(){var a=this.layer;a&&2<a.features.length&&this.layer.features[0].destroy()},removePoint:function(){this.point&&this.layer.removeFeatures([this.point])},addPoint:function(a){this.layer.removeFeatures([this.point]);a=this.layer.getLonLatFromViewPortPx(a);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.lon,\n +a.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.layer.addFeatures([this.point]);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();delete this.redoStack},insertXY:function(a,b){this.line.geometry.addComponent(new OpenLayers.Geometry.Point(a,b),this.getCurrentPointIndex());this.drawFeature();delete this.redoStack},insertDeltaXY:function(a,b){var c=this.line.geometry.components[this.getCurrentPointIndex()-\n +1];c&&(!isNaN(c.x)&&!isNaN(c.y))&&this.insertXY(c.x+a,c.y+b)},insertDirectionLength:function(a,b){var a=a*(Math.PI/180),c=b*Math.cos(a),d=b*Math.sin(a);this.insertDeltaXY(c,d)},insertDeflectionLength:function(a,b){var c=this.getCurrentPointIndex()-1;if(0<c){var d=this.line.geometry.components[c],c=this.line.geometry.components[c-1];this.insertDirectionLength(180*Math.atan2(d.y-c.y,d.x-c.x)/Math.PI+a,b)}},getCurrentPointIndex:function(){return this.line.geometry.components.length-1},undo:function(){var a=\n +this.line.geometry,b=a.components,c=this.getCurrentPointIndex()-1,b=b[c];if(a=a.removeComponent(b))this.redoStack||(this.redoStack=[]),this.redoStack.push(b),this.drawFeature();return a},redo:function(){var a=this.redoStack&&this.redoStack.pop();a&&(this.line.geometry.addComponent(a,this.getCurrentPointIndex()),this.drawFeature());return!!a},freehandMode:function(a){return this.freehandToggle&&a[this.freehandToggle]?!this.freehand:this.freehand},modifyFeature:function(a,b){this.line||this.createFeature(a);\n +var c=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=c.lon;this.point.geometry.y=c.lat;this.callback("modify",[this.point.geometry,this.getSketch(),b]);this.point.geometry.clearBounds();this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.line},getGeometry:function(){var a=this.line&&this.line.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiLineString([a]));return a},\n +touchstart:function(a){if(this.timerId&&this.passesTolerance(this.lastTouchPx,a.xy,this.doubleTouchTolerance))return this.finishGeometry(),window.clearTimeout(this.timerId),this.timerId=null,!1;this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);this.timerId=window.setTimeout(OpenLayers.Function.bind(function(){this.timerId=null},this),300);return OpenLayers.Handler.Point.prototype.touchstart.call(this,a)},down:function(a){var b=this.stopDown;this.freehandMode(a)&&(b=!0,this.touch&&\n +(this.modifyFeature(a.xy,!!this.lastUp),OpenLayers.Event.stop(a)));!this.touch&&(!this.lastDown||!this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance))&&this.modifyFeature(a.xy,!!this.lastUp);this.mouseDown=!0;this.lastDown=a.xy;this.stoppedDown=b;return!b},move:function(a){if(this.stoppedDown&&this.freehandMode(a))return this.persist&&this.destroyPersistedFeature(),this.maxVertices&&this.line&&this.line.geometry.components.length===this.maxVertices?(this.removePoint(),this.finalize()):this.addPoint(a.xy),\n +!1;!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy,!!this.lastUp);return!0},up:function(a){if(this.mouseDown&&(!this.lastUp||!this.lastUp.equals(a.xy)))this.stoppedDown&&this.freehandMode(a)?(this.persist&&this.destroyPersistedFeature(),this.removePoint(),this.finalize()):this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)&&(this.touch&&this.modifyFeature(a.xy),null==this.lastUp&&this.persist&&this.destroyPersistedFeature(),this.addPoint(a.xy),this.lastUp=a.xy,this.line.geometry.components.length===\n +this.maxVertices+1&&this.finishGeometry());this.stoppedDown=this.stopDown;this.mouseDown=!1;return!this.stopUp},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-1]);this.removePoint();this.finalize()},dblclick:function(a){this.freehandMode(a)||this.finishGeometry();return!1},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Spherical=OpenLayers.Spherical||{};OpenLayers.Spherical.DEFAULT_RADIUS=6378137;OpenLayers.Spherical.computeDistanceBetween=function(a,b,c){var c=c||OpenLayers.Spherical.DEFAULT_RADIUS,d=Math.sin(Math.PI*(b.lon-a.lon)/360),e=Math.sin(Math.PI*(b.lat-a.lat)/360),a=e*e+d*d*Math.cos(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180);return 2*c*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))};\n +OpenLayers.Spherical.computeHeading=function(a,b){var c=Math.sin(Math.PI*(a.lon-b.lon)/180)*Math.cos(Math.PI*b.lat/180),d=Math.cos(Math.PI*a.lat/180)*Math.sin(Math.PI*b.lat/180)-Math.sin(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180)*Math.cos(Math.PI*(a.lon-b.lon)/180);return 180*Math.atan2(c,d)/Math.PI};OpenLayers.Control.CacheWrite=OpenLayers.Class(OpenLayers.Control,{layers:null,imageFormat:"image/png",quotaRegEx:/quota/i,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.on({tileloadstart:this.makeSameOrigin,tileloaded:this.cache,scope:this})},removeLayer:function(a){a.layer.events.un({tileloadstart:this.makeSameOrigin,\n +tileloaded:this.cache,scope:this})},makeSameOrigin:function(a){if(this.active&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&!a.crossOriginKeyword&&"data:"!==a.url.substr(0,5))){var b=OpenLayers.Request.makeSameOrigin(a.url,OpenLayers.ProxyHost);OpenLayers.Control.CacheWrite.urlMap[b]=a.url;a.url=b}},cache:function(a){if(this.active&&window.localStorage&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&"data:"!==a.url.substr(0,5)))try{var b=a.getCanvasContext();if(b){var c=OpenLayers.Control.CacheWrite.urlMap;\n +window.localStorage.setItem("olCache_"+(c[a.url]||a.url),b.canvas.toDataURL(this.imageFormat));delete c[a.url]}}catch(d){(b=d.name||d.message)&&this.quotaRegEx.test(b)?this.events.triggerEvent("cachefull",{tile:a}):OpenLayers.Console.error(d.toString())}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,\n +arguments)},CLASS_NAME:"OpenLayers.Control.CacheWrite"});OpenLayers.Control.CacheWrite.clearCache=function(){if(window.localStorage){var a,b;for(a=window.localStorage.length-1;0<=a;--a)b=window.localStorage.key(a),"olCache_"===b.substr(0,8)&&window.localStorage.removeItem(b)}};OpenLayers.Control.CacheWrite.urlMap={};OpenLayers.Format.Context=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{layerOptions:null,layerParams:null,read:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this,arguments);if(b&&b.map)if(this.context=c,b.map instanceof OpenLayers.Map)c=this.mergeContextToMap(c,b.map);else{var d=b.map;if(OpenLayers.Util.isElement(d)||"string"==typeof d)d={div:d};c=this.contextToMap(c,d)}return c},getLayerFromContext:function(a){var b,c,d={queryable:a.queryable,visibility:a.visibility,\n +maxExtent:a.maxExtent,metadata:OpenLayers.Util.applyDefaults(a.metadata,{styles:a.styles,formats:a.formats,"abstract":a["abstract"],dataURL:a.dataURL}),numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.tileSize?new OpenLayers.Size(a.tileSize.width,a.tileSize.height):void 0,minScale:a.minScale||a.maxScaleDenominator,maxScale:a.maxScale||a.minScaleDenominator,srs:a.srs,dimensions:a.dimensions,\n +metadataURL:a.metadataURL};this.layerOptions&&OpenLayers.Util.applyDefaults(d,this.layerOptions);var e={layers:a.name,transparent:a.transparent,version:a.version};if(a.formats&&0<a.formats.length){e.format=a.formats[0].value;b=0;for(c=a.formats.length;b<c;b++){var f=a.formats[b];if(!0==f.current){e.format=f.value;break}}}if(a.styles&&0<a.styles.length){b=0;for(c=a.styles.length;b<c;b++)if(f=a.styles[b],!0==f.current){f.href?e.sld=f.href:f.body?e.sld_body=f.body:e.styles=f.name;break}}this.layerParams&&\n +OpenLayers.Util.applyDefaults(e,this.layerParams);b=null;c=a.service;c==OpenLayers.Format.Context.serviceTypes.WFS?(d.strategies=[new OpenLayers.Strategy.BBOX],d.protocol=new OpenLayers.Protocol.WFS({url:a.url,featurePrefix:a.name.split(":")[0],featureType:a.name.split(":").pop()}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.KML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.KML}),\n +b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.GML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.GML}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):a.features?(b=new OpenLayers.Layer.Vector(a.title||a.name,d),b.addFeatures(a.features)):!0!==a.categoryLayer&&(b=new OpenLayers.Layer.WMS(a.title||a.name,a.url,e,d));return b},getLayersFromContext:function(a){for(var b=[],c=\n +0,d=a.length;c<d;c++){var e=this.getLayerFromContext(a[c]);null!==e&&b.push(e)}return b},contextToMap:function(a,b){b=OpenLayers.Util.applyDefaults({maxExtent:a.maxExtent,projection:a.projection,units:a.units},b);b.maxExtent&&(b.maxResolution=b.maxExtent.getWidth()/OpenLayers.Map.TILE_WIDTH);b.metadata={contactInformation:a.contactInformation,"abstract":a["abstract"],keywords:a.keywords,logo:a.logo,descriptionURL:a.descriptionURL};var c=new OpenLayers.Map(b);c.addLayers(this.getLayersFromContext(a.layersContext));\n +c.setCenter(a.bounds.getCenterLonLat(),c.getZoomForExtent(a.bounds,!0));return c},mergeContextToMap:function(a,b){b.addLayers(this.getLayersFromContext(a.layersContext));return b},write:function(a,b){a=this.toContext(a);return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this,arguments)},CLASS_NAME:"OpenLayers.Format.Context"});\n +OpenLayers.Format.Context.serviceTypes={WMS:"urn:ogc:serviceType:WMS",WFS:"urn:ogc:serviceType:WFS",WCS:"urn:ogc:serviceType:WCS",GML:"urn:ogc:serviceType:GML",SLD:"urn:ogc:serviceType:SLD",FES:"urn:ogc:serviceType:FES",KML:"urn:ogc:serviceType:KML"};OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",layerToContext:function(a){var b=this.getParser(),c={queryable:a.queryable,visibility:a.visibility,name:a.params.LAYERS,title:a.name,"abstract":a.metadata["abstract"],dataURL:a.metadata.dataURL,metadataURL:a.metadataURL,server:{version:a.params.VERSION,url:a.url},maxExtent:a.maxExtent,transparent:a.params.TRANSPARENT,numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:1==a.opacity?void 0:\n +a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.singleTile||!a.tileSize?void 0:{width:a.tileSize.w,height:a.tileSize.h},minScale:a.options.resolutions||a.options.scales||a.options.maxResolution||a.options.minScale?a.minScale:void 0,maxScale:a.options.resolutions||a.options.scales||a.options.minResolution||a.options.maxScale?a.maxScale:void 0,formats:[],styles:[],srs:a.srs,dimensions:a.dimensions};a.metadata.servertitle&&(c.server.title=a.metadata.servertitle);\n +if(a.metadata.formats&&0<a.metadata.formats.length)for(var d=0,e=a.metadata.formats.length;d<e;d++){var f=a.metadata.formats[d];c.formats.push({value:f.value,current:f.value==a.params.FORMAT})}else c.formats.push({value:a.params.FORMAT,current:!0});if(a.metadata.styles&&0<a.metadata.styles.length){d=0;for(e=a.metadata.styles.length;d<e;d++)b=a.metadata.styles[d],b.current=b.href==a.params.SLD||b.body==a.params.SLD_BODY||b.name==a.params.STYLES?!0:!1,c.styles.push(b)}else c.styles.push({href:a.params.SLD,\n +body:a.params.SLD_BODY,name:a.params.STYLES||b.defaultStyleName,title:b.defaultStyleTitle,current:!0});return c},toContext:function(a){var b={},c=a.layers;if("OpenLayers.Map"==a.CLASS_NAME){var d=a.metadata||{};b.size=a.getSize();b.bounds=a.getExtent();b.projection=a.projection;b.title=a.title;b.keywords=d.keywords;b["abstract"]=d["abstract"];b.logo=d.logo;b.descriptionURL=d.descriptionURL;b.contactInformation=d.contactInformation;b.maxExtent=a.maxExtent}else OpenLayers.Util.applyDefaults(b,a),void 0!=\n +b.layers&&delete b.layers;void 0==b.layersContext&&(b.layersContext=[]);if(void 0!=c&&OpenLayers.Util.isArray(c)){a=0;for(d=c.length;a<d;a++){var e=c[a];e instanceof OpenLayers.Layer.WMS&&b.layersContext.push(this.layerToContext(e))}}return b},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(a){var b=null;if(null==a)b=this.namespaces[this.defaultPrefix];else for(b in this.namespaces)if(this.namespaces[b]==a)break;return b},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",\n +defaultStyleTitle:"Default",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a=a.documentElement;this.rootPrefix=a.prefix;var b={version:a.getAttribute("version")};this.runChildNodes(b,a);return b},runChildNodes:function(a,b){for(var c=b.childNodes,d,e,f,g=0,h=c.length;g<h;++g)d=c[g],1==d.nodeType&&(e=this.getNamespacePrefix(d.namespaceURI),f=d.nodeName.split(":").pop(),\n +(e=this["read_"+e+"_"+f])&&e.apply(this,[a,d]))},read_wmc_General:function(a,b){this.runChildNodes(a,b)},read_wmc_BoundingBox:function(a,b){a.projection=b.getAttribute("SRS");a.bounds=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"))},read_wmc_LayerList:function(a,b){a.layersContext=[];this.runChildNodes(a,b)},read_wmc_Layer:function(a,b){var c={visibility:"1"!=b.getAttribute("hidden"),queryable:"1"==b.getAttribute("queryable"),formats:[],\n +styles:[],metadata:{}};this.runChildNodes(c,b);a.layersContext.push(c)},read_wmc_Extension:function(a,b){this.runChildNodes(a,b)},read_ol_units:function(a,b){a.units=this.getChildValue(b)},read_ol_maxExtent:function(a,b){var c=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"));a.maxExtent=c},read_ol_transparent:function(a,b){a.transparent=this.getChildValue(b)},read_ol_numZoomLevels:function(a,b){a.numZoomLevels=parseInt(this.getChildValue(b))},\n +read_ol_opacity:function(a,b){a.opacity=parseFloat(this.getChildValue(b))},read_ol_singleTile:function(a,b){a.singleTile="true"==this.getChildValue(b)},read_ol_tileSize:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height")};a.tileSize=c},read_ol_isBaseLayer:function(a,b){a.isBaseLayer="true"==this.getChildValue(b)},read_ol_displayInLayerSwitcher:function(a,b){a.displayInLayerSwitcher="true"==this.getChildValue(b)},read_wmc_Server:function(a,b){a.version=b.getAttribute("version");\n +a.url=this.getOnlineResource_href(b);a.metadata.servertitle=b.getAttribute("title")},read_wmc_FormatList:function(a,b){this.runChildNodes(a,b)},read_wmc_Format:function(a,b){var c={value:this.getChildValue(b)};"1"==b.getAttribute("current")&&(c.current=!0);a.formats.push(c)},read_wmc_StyleList:function(a,b){this.runChildNodes(a,b)},read_wmc_Style:function(a,b){var c={};this.runChildNodes(c,b);"1"==b.getAttribute("current")&&(c.current=!0);a.styles.push(c)},read_wmc_SLD:function(a,b){this.runChildNodes(a,\n +b)},read_sld_StyledLayerDescriptor:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_sld_FeatureTypeStyle:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_wmc_OnlineResource:function(a,b){a.href=this.getAttributeNS(b,this.namespaces.xlink,"href")},read_wmc_Name:function(a,b){var c=this.getChildValue(b);c&&(a.name=c)},read_wmc_Title:function(a,b){var c=this.getChildValue(b);c&&(a.title=c)},read_wmc_MetadataURL:function(a,\n +b){a.metadataURL=this.getOnlineResource_href(b)},read_wmc_KeywordList:function(a,b){a.keywords=[];this.runChildNodes(a.keywords,b)},read_wmc_Keyword:function(a,b){a.push(this.getChildValue(b))},read_wmc_Abstract:function(a,b){var c=this.getChildValue(b);c&&(a["abstract"]=c)},read_wmc_LogoURL:function(a,b){a.logo={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),href:this.getOnlineResource_href(b)}},read_wmc_DescriptionURL:function(a,b){a.descriptionURL=\n +this.getOnlineResource_href(b)},read_wmc_ContactInformation:function(a,b){var c={};this.runChildNodes(c,b);a.contactInformation=c},read_wmc_ContactPersonPrimary:function(a,b){var c={};this.runChildNodes(c,b);a.personPrimary=c},read_wmc_ContactPerson:function(a,b){var c=this.getChildValue(b);c&&(a.person=c)},read_wmc_ContactOrganization:function(a,b){var c=this.getChildValue(b);c&&(a.organization=c)},read_wmc_ContactPosition:function(a,b){var c=this.getChildValue(b);c&&(a.position=c)},read_wmc_ContactAddress:function(a,\n +b){var c={};this.runChildNodes(c,b);a.contactAddress=c},read_wmc_AddressType:function(a,b){var c=this.getChildValue(b);c&&(a.type=c)},read_wmc_Address:function(a,b){var c=this.getChildValue(b);c&&(a.address=c)},read_wmc_City:function(a,b){var c=this.getChildValue(b);c&&(a.city=c)},read_wmc_StateOrProvince:function(a,b){var c=this.getChildValue(b);c&&(a.stateOrProvince=c)},read_wmc_PostCode:function(a,b){var c=this.getChildValue(b);c&&(a.postcode=c)},read_wmc_Country:function(a,b){var c=this.getChildValue(b);\n +c&&(a.country=c)},read_wmc_ContactVoiceTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.phone=c)},read_wmc_ContactFacsimileTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.fax=c)},read_wmc_ContactElectronicMailAddress:function(a,b){var c=this.getChildValue(b);c&&(a.email=c)},read_wmc_DataURL:function(a,b){a.dataURL=this.getOnlineResource_href(b)},read_wmc_LegendURL:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),\n +href:this.getOnlineResource_href(b)};a.legend=c},read_wmc_DimensionList:function(a,b){a.dimensions={};this.runChildNodes(a.dimensions,b)},read_wmc_Dimension:function(a,b){var c={name:b.getAttribute("name").toLowerCase(),units:b.getAttribute("units")||"",unitSymbol:b.getAttribute("unitSymbol")||"",userValue:b.getAttribute("userValue")||"",nearestValue:"1"===b.getAttribute("nearestValue"),multipleValues:"1"===b.getAttribute("multipleValues"),current:"1"===b.getAttribute("current"),"default":b.getAttribute("default")||\n +""},d=this.getChildValue(b);c.values=d.split(",");a[c.name]=c},write:function(a,b){var c=this.createElementDefaultNS("ViewContext");this.setAttributes(c,{version:this.VERSION,id:b&&"string"==typeof b.id?b.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);c.appendChild(this.write_wmc_General(a));c.appendChild(this.write_wmc_LayerList(a));return OpenLayers.Format.XML.prototype.write.apply(this,[c])},createElementDefaultNS:function(a,\n +b,c){a=this.createElementNS(this.namespaces[this.defaultPrefix],a);b&&a.appendChild(this.createTextNode(b));c&&this.setAttributes(a,c);return a},setAttributes:function(a,b){var c,d;for(d in b)c=b[d].toString(),c.match(/[A-Z]/)?this.setAttributeNS(a,null,d,c):a.setAttribute(d,c)},write_wmc_General:function(a){var b=this.createElementDefaultNS("General");a.size&&b.appendChild(this.createElementDefaultNS("Window",null,{width:a.size.w,height:a.size.h}));var c=a.bounds;b.appendChild(this.createElementDefaultNS("BoundingBox",\n +null,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),maxy:c.top.toPrecision(18),SRS:a.projection}));b.appendChild(this.createElementDefaultNS("Title",a.title));a.keywords&&b.appendChild(this.write_wmc_KeywordList(a.keywords));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.logo&&b.appendChild(this.write_wmc_URLType("LogoURL",a.logo.href,a.logo));a.descriptionURL&&b.appendChild(this.write_wmc_URLType("DescriptionURL",a.descriptionURL));\n +a.contactInformation&&b.appendChild(this.write_wmc_ContactInformation(a.contactInformation));b.appendChild(this.write_ol_MapExtension(a));return b},write_wmc_KeywordList:function(a){for(var b=this.createElementDefaultNS("KeywordList"),c=0,d=a.length;c<d;c++)b.appendChild(this.createElementDefaultNS("Keyword",a[c]));return b},write_wmc_ContactInformation:function(a){var b=this.createElementDefaultNS("ContactInformation");a.personPrimary&&b.appendChild(this.write_wmc_ContactPersonPrimary(a.personPrimary));\n +a.position&&b.appendChild(this.createElementDefaultNS("ContactPosition",a.position));a.contactAddress&&b.appendChild(this.write_wmc_ContactAddress(a.contactAddress));a.phone&&b.appendChild(this.createElementDefaultNS("ContactVoiceTelephone",a.phone));a.fax&&b.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone",a.fax));a.email&&b.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress",a.email));return b},write_wmc_ContactPersonPrimary:function(a){var b=this.createElementDefaultNS("ContactPersonPrimary");\n +a.person&&b.appendChild(this.createElementDefaultNS("ContactPerson",a.person));a.organization&&b.appendChild(this.createElementDefaultNS("ContactOrganization",a.organization));return b},write_wmc_ContactAddress:function(a){var b=this.createElementDefaultNS("ContactAddress");a.type&&b.appendChild(this.createElementDefaultNS("AddressType",a.type));a.address&&b.appendChild(this.createElementDefaultNS("Address",a.address));a.city&&b.appendChild(this.createElementDefaultNS("City",a.city));a.stateOrProvince&&\n +b.appendChild(this.createElementDefaultNS("StateOrProvince",a.stateOrProvince));a.postcode&&b.appendChild(this.createElementDefaultNS("PostCode",a.postcode));a.country&&b.appendChild(this.createElementDefaultNS("Country",a.country));return b},write_ol_MapExtension:function(a){var b=this.createElementDefaultNS("Extension");if(a=a.maxExtent){var c=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(c,{minx:a.left.toPrecision(18),miny:a.bottom.toPrecision(18),maxx:a.right.toPrecision(18),\n +maxy:a.top.toPrecision(18)});b.appendChild(c)}return b},write_wmc_LayerList:function(a){for(var b=this.createElementDefaultNS("LayerList"),c=0,d=a.layersContext.length;c<d;++c)b.appendChild(this.write_wmc_Layer(a.layersContext[c]));return b},write_wmc_Layer:function(a){var b=this.createElementDefaultNS("Layer",null,{queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1"});b.appendChild(this.write_wmc_Server(a));b.appendChild(this.createElementDefaultNS("Name",a.name));b.appendChild(this.createElementDefaultNS("Title",\n +a.title));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.dataURL&&b.appendChild(this.write_wmc_URLType("DataURL",a.dataURL));a.metadataURL&&b.appendChild(this.write_wmc_URLType("MetadataURL",a.metadataURL));return b},write_wmc_LayerExtension:function(a){var b=this.createElementDefaultNS("Extension"),c=a.maxExtent,d=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(d,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),\n +maxy:c.top.toPrecision(18)});b.appendChild(d);a.tileSize&&!a.singleTile&&(c=this.createElementNS(this.namespaces.ol,"ol:tileSize"),this.setAttributes(c,a.tileSize),b.appendChild(c));for(var c="transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile".split(" "),e=0,f=c.length;e<f;++e)(d=this.createOLPropertyNode(a,c[e]))&&b.appendChild(d);return b},createOLPropertyNode:function(a,b){var c=null;null!=a[b]&&(c=this.createElementNS(this.namespaces.ol,"ol:"+b),c.appendChild(this.createTextNode(a[b].toString())));\n +return c},write_wmc_Server:function(a){var a=a.server,b=this.createElementDefaultNS("Server"),c={service:"OGC:WMS",version:a.version};a.title&&(c.title=a.title);this.setAttributes(b,c);b.appendChild(this.write_wmc_OnlineResource(a.url));return b},write_wmc_URLType:function(a,b,c){a=this.createElementDefaultNS(a);a.appendChild(this.write_wmc_OnlineResource(b));if(c)for(var b=["width","height","format"],d=0;d<b.length;d++)b[d]in c&&a.setAttribute(b[d],c[b[d]]);return a},write_wmc_DimensionList:function(a){var b=\n +this.createElementDefaultNS("DimensionList"),c;for(c in a.dimensions){var d={},e=a.dimensions[c],f;for(f in e)d[f]="boolean"==typeof e[f]?Number(e[f]):e[f];e="";d.values&&(e=d.values.join(","),delete d.values);b.appendChild(this.createElementDefaultNS("Dimension",e,d))}return b},write_wmc_FormatList:function(a){for(var b=this.createElementDefaultNS("FormatList"),c=0,d=a.formats.length;c<d;c++){var e=a.formats[c];b.appendChild(this.createElementDefaultNS("Format",e.value,e.current&&!0==e.current?{current:"1"}:\n +null))}return b},write_wmc_StyleList:function(a){var b=this.createElementDefaultNS("StyleList");if((a=a.styles)&&OpenLayers.Util.isArray(a))for(var c,d=0,e=a.length;d<e;d++){var f=a[d],g=this.createElementDefaultNS("Style",null,f.current&&!0==f.current?{current:"1"}:null);f.href?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",\n +f.legend.href,f.legend)),f=this.write_wmc_OnlineResource(f.href),c.appendChild(f),g.appendChild(c)):f.body?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)),f=OpenLayers.Format.XML.prototype.read.apply(this,[f.body]).documentElement,c.ownerDocument&&c.ownerDocument.importNode&&(f=c.ownerDocument.importNode(f,\n +!0)),c.appendChild(f),g.appendChild(c)):(g.appendChild(this.createElementDefaultNS("Name",f.name)),g.appendChild(this.createElementDefaultNS("Title",f.title)),f["abstract"]&&g.appendChild(this.createElementDefaultNS("Abstract",f["abstract"])),f.legend&&g.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)));b.appendChild(g)}return b},write_wmc_OnlineResource:function(a){var b=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(b,this.namespaces.xlink,"xlink:type",\n +"simple");this.setAttributeNS(b,this.namespaces.xlink,"xlink:href",a);return b},getOnlineResource_href:function(a){var b={},a=a.getElementsByTagName("OnlineResource");0<a.length&&this.read_wmc_OnlineResource(b,a[0]);return b.href},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,slideRatio:null,initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);a={slideFactor:this.slideFactor,slideRatio:this.slideRatio};this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,a)])},\n +CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,\n +addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Kinetic=OpenLayers.Class({threshold:0,deceleration:0.0035,nbPoints:100,delay:200,points:void 0,timerId:void 0,initialize:function(a){OpenLayers.Util.extend(this,a)},begin:function(){OpenLayers.Animation.stop(this.timerId);this.timerId=void 0;this.points=[]},update:function(a){this.points.unshift({xy:a,tick:(new Date).getTime()});this.points.length>this.nbPoints&&this.points.pop()},end:function(a){for(var b,c=(new Date).getTime(),d=0,e=this.points.length,f;d<e;d++){f=this.points[d];if(c-\n +f.tick>this.delay)break;b=f}if(b&&(d=(new Date).getTime()-b.tick,c=Math.sqrt(Math.pow(a.x-b.xy.x,2)+Math.pow(a.y-b.xy.y,2)),d=c/d,!(0==d||d<this.threshold)))return c=Math.asin((a.y-b.xy.y)/c),b.xy.x<=a.x&&(c=Math.PI-c),{speed:d,theta:c}},move:function(a,b){var c=a.speed,d=Math.cos(a.theta),e=-Math.sin(a.theta),f=(new Date).getTime(),g=0,h=0;this.timerId=OpenLayers.Animation.start(OpenLayers.Function.bind(function(){if(null!=this.timerId){var a=(new Date).getTime()-f,j=-this.deceleration*Math.pow(a,\n +2)/2+c*a,k=j*d,j=j*e,l,m;l=!1;0>=-this.deceleration*a+c&&(OpenLayers.Animation.stop(this.timerId),this.timerId=null,l=!0);a=k-g;m=j-h;g=k;h=j;b(a,m,l)}},this))},CLASS_NAME:"OpenLayers.Kinetic"});OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:!0,initialize:function(a,b,c){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[a,c]);this.location=b;this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadRSS:function(){this.loaded||(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,\n +success:this.parseData,scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadRSS()},parseData:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=OpenLayers.Format.XML.prototype.read(a.responseText);if(this.useFeedTitle){a=null;try{a=b.getElementsByTagNameNS("*","title")[0].firstChild.nodeValue}catch(c){a=b.getElementsByTagName("title")[0].firstChild.nodeValue}a&&this.setName(a)}a={};OpenLayers.Util.extend(a,\n +this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(a.externalProjection=this.projection,a.internalProjection=this.map.getProjectionObject());for(var b=(new OpenLayers.Format.GeoRSS(a)).read(b),a=0,d=b.length;a<d;a++){var e={},f=b[a];if(f.geometry){var g=f.attributes.title?f.attributes.title:"Untitled",h=f.attributes.description?f.attributes.description:"No description.",i=f.attributes.link?f.attributes.link:"",f=f.geometry.getBounds().getCenterLonLat();e.icon=\n +null==this.icon?OpenLayers.Marker.defaultIcon():this.icon.clone();e.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(g||h){e.title=g;e.description=h;var j=\'<div class="olLayerGeoRSSClose">[x]</div>\',j=j+\'<div class="olLayerGeoRSSTitle">\';i&&(j+=\'<a class="link" href="\'+i+\'" target="_blank">\');j+=g;i&&(j+="</a>");j+="</div>";j+=\'<div style="" class="olLayerGeoRSSDescription">\';j+=h;j+="</div>";e.popupContentHTML=j}f=new OpenLayers.Feature(this,f,e);this.features.push(f);\n +e=f.createMarker();e.events.register("click",f,this.markerClick);this.addMarker(e)}}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||(b=this.createPopup(),OpenLayers.Event.observe(b.div,"click",OpenLayers.Function.bind(function(){for(var a=0,b=this.layer.map.popups.length;a<b;a++)this.layer.map.removePopup(this.layer.map.popups[a])},\n +this)),this.layer.map.addPopup(b));OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:!1,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,\n +graphicName:"square"},read:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c={namedLayers:!0===b.namedLayersAsArray?[]:{}};this.readChildNodes(a,c);return c},readers:OpenLayers.Util.applyDefaults({sld:{StyledLayerDescriptor:function(a,b){b.version=a.getAttribute("version");this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b.description=this.getChildValue(a)},NamedLayer:function(a,b){var c=\n +{userStyles:[],namedStyles:[]};this.readChildNodes(a,c);for(var d=0,e=c.userStyles.length;d<e;++d)c.userStyles[d].layerName=c.name;OpenLayers.Util.isArray(b.namedLayers)?b.namedLayers.push(c):b.namedLayers[c.name]=c},NamedStyle:function(a,b){b.namedStyles.push(this.getChildName(a.firstChild))},UserStyle:function(a,b){var c={defaultsPerSymbolizer:!0,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(a,c);this.multipleSymbolizers?(delete c.defaultsPerSymbolizer,c=new OpenLayers.Style2(c)):c=new OpenLayers.Style(this.defaultSymbolizer,\n +c);b.userStyles.push(c)},IsDefault:function(a,b){"1"==this.getChildValue(a)&&(b.isDefault=!0)},FeatureTypeStyle:function(a,b){++this.featureTypeCounter;var c={rules:this.multipleSymbolizers?b.rules:[]};this.readChildNodes(a,c);this.multipleSymbolizers||(b.rules=c.rules)},Rule:function(a,b){var c;this.multipleSymbolizers&&(c={symbolizers:[]});c=new OpenLayers.Rule(c);this.readChildNodes(a,c);b.rules.push(c)},ElseFilter:function(a,b){b.elseFilter=!0},MinScaleDenominator:function(a,b){b.minScaleDenominator=\n +parseFloat(this.getChildValue(a))},MaxScaleDenominator:function(a,b){b.maxScaleDenominator=parseFloat(this.getChildValue(a))},TextSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Text(c))):b.symbolizer.Text=OpenLayers.Util.applyDefaults(c,b.symbolizer.Text)},LabelPlacement:function(a,b){this.readChildNodes(a,b)},PointPlacement:function(a,b){var c={};this.readChildNodes(a,c);c.labelRotation=\n +c.rotation;delete c.rotation;var d,e=b.labelAnchorPointX,f=b.labelAnchorPointY;e<=1/3?d="l":e>1/3&&e<2/3?d="c":e>=2/3&&(d="r");f<=1/3?d+="b":f>1/3&&f<2/3?d+="m":f>=2/3&&(d+="t");c.labelAlign=d;OpenLayers.Util.applyDefaults(b,c)},AnchorPoint:function(a,b){this.readChildNodes(a,b)},AnchorPointX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointX=c)},AnchorPointY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointY=c)},Displacement:function(a,\n +b){this.readChildNodes(a,b)},DisplacementX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelXOffset=c)},DisplacementY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelYOffset=c)},LinePlacement:function(a,b){this.readChildNodes(a,b)},PerpendicularOffset:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelPerpendicularOffset=c)},Label:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.label=c)},Font:function(a,b){this.readChildNodes(a,\n +b)},Halo:function(a,b){var c={};this.readChildNodes(a,c);b.haloRadius=c.haloRadius;b.haloColor=c.fillColor;b.haloOpacity=c.fillOpacity},Radius:function(a,b){var c=this.readers.ogc._expression.call(this,a);null!=c&&(b.haloRadius=c)},RasterSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Raster(c))):b.symbolizer.Raster=OpenLayers.Util.applyDefaults(c,b.symbolizer.Raster)},Geometry:function(a,\n +b){b.geometry={};this.readChildNodes(a,b.geometry)},ColorMap:function(a,b){b.colorMap=[];this.readChildNodes(a,b.colorMap)},ColorMapEntry:function(a,b){var c=a.getAttribute("quantity"),d=a.getAttribute("opacity");b.push({color:a.getAttribute("color"),quantity:null!==c?parseFloat(c):void 0,label:a.getAttribute("label")||void 0,opacity:null!==d?parseFloat(d):void 0})},LineSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Line(c))):\n +b.symbolizer.Line=OpenLayers.Util.applyDefaults(c,b.symbolizer.Line)},PolygonSymbolizer:function(a,b){var c={fill:!1,stroke:!1};this.multipleSymbolizers||(c=b.symbolizer.Polygon||c);this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Polygon(c))):b.symbolizer.Polygon=c},PointSymbolizer:function(a,b){var c={fill:!1,stroke:!1,graphic:!1};this.multipleSymbolizers||(c=b.symbolizer.Point||c);this.readChildNodes(a,c);this.multipleSymbolizers?\n +(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Point(c))):b.symbolizer.Point=c},Stroke:function(a,b){b.stroke=!0;this.readChildNodes(a,b)},Fill:function(a,b){b.fill=!0;this.readChildNodes(a,b)},CssParameter:function(a,b){var c=a.getAttribute("name"),d=this.cssMap[c];b.label&&("fill"===c?d="fontColor":"fill-opacity"===c&&(d="fontOpacity"));d&&(c=this.readers.ogc._expression.call(this,a))&&(b[d]=c)},Graphic:function(a,b){b.graphic=!0;var c={};this.readChildNodes(a,c);\n +for(var d="stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat".split(" "),e,f,g=0,h=d.length;g<h;++g)e=d[g],f=c[e],void 0!=f&&(b[e]=f);void 0!=c.opacity&&(b.graphicOpacity=c.opacity);void 0!=c.size&&(isNaN(c.size/2)?b.graphicWidth=c.size:b.pointRadius=c.size/2);void 0!=c.href&&(b.externalGraphic=c.href);void 0!=c.rotation&&(b.rotation=c.rotation)},ExternalGraphic:function(a,b){this.readChildNodes(a,b)},Mark:function(a,b){this.readChildNodes(a,\n +b)},WellKnownName:function(a,b){b.graphicName=this.getChildValue(a)},Opacity:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.opacity=c)},Size:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.size=c)},Rotation:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.rotation=c)},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},Format:function(a,b){b.graphicFormat=this.getChildValue(a)}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),\n +cssMap:{stroke:"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle",fill:"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(a){var b=null,c;for(c in this.cssMap)if(this.cssMap[c]==a){b=c;break}return b},getGraphicFormat:function(a){var b,c;for(c in this.graphicFormats)if(this.graphicFormats[c].test(a)){b=\n +c;break}return b||this.defaultGraphicFormat},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\\.jpe?g$/i,"image/gif":/\\.gif$/i,"image/png":/\\.png$/i},write:function(a){return this.writers.sld.StyledLayerDescriptor.apply(this,[a])},writers:OpenLayers.Util.applyDefaults({sld:{_OGCExpression:function(a,b){var c=this.createElementNSPlus(a),d="string"==typeof b?b.split("${"):[b];c.appendChild(this.createTextNode(d[0]));for(var e,f,g=1,h=d.length;g<h;g++)e=d[g],f=e.indexOf("}"),0<f?(this.writeNode("ogc:PropertyName",\n +{property:e.substring(0,f)},c),c.appendChild(this.createTextNode(e.substring(++f)))):c.appendChild(this.createTextNode("${"+e));return c},StyledLayerDescriptor:function(a){var b=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});b.setAttribute("xmlns:ogc",this.namespaces.ogc);b.setAttribute("xmlns:gml",this.namespaces.gml);a.name&&this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&\n +this.writeNode("Abstract",a.description,b);if(OpenLayers.Util.isArray(a.namedLayers))for(var c=0,d=a.namedLayers.length;c<d;++c)this.writeNode("NamedLayer",a.namedLayers[c],b);else for(c in a.namedLayers)this.writeNode("NamedLayer",a.namedLayers[c],b);return b},Name:function(a){return this.createElementNSPlus("sld:Name",{value:a})},Title:function(a){return this.createElementNSPlus("sld:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("sld:Abstract",{value:a})},NamedLayer:function(a){var b=\n +this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",a.name,b);if(a.namedStyles)for(var c=0,d=a.namedStyles.length;c<d;++c)this.writeNode("NamedStyle",a.namedStyles[c],b);if(a.userStyles){c=0;for(d=a.userStyles.length;c<d;++c)this.writeNode("UserStyle",a.userStyles[c],b)}return b},NamedStyle:function(a){var b=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",a,b);return b},UserStyle:function(a){var b=this.createElementNSPlus("sld:UserStyle");a.name&&this.writeNode("Name",\n +a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.isDefault&&this.writeNode("IsDefault",a.isDefault,b);if(this.multipleSymbolizers&&a.rules){for(var c={"0":[]},d=[0],e,f,g,h,i,j=0,k=a.rules.length;j<k;++j)if(e=a.rules[j],e.symbolizers){f={};for(var l=0,m=e.symbolizers.length;l<m;++l)g=e.symbolizers[l],h=g.zIndex,h in f||(i=e.clone(),i.symbolizers=[],f[h]=i),f[h].symbolizers.push(g.clone());for(h in f)h in c||(d.push(h),c[h]=[]),c[h].push(f[h])}else c[0].push(e.clone());\n +d.sort();j=0;for(k=d.length;j<k;++j)e=c[d[j]],0<e.length&&(i=a.clone(),i.rules=c[d[j]],this.writeNode("FeatureTypeStyle",i,b))}else this.writeNode("FeatureTypeStyle",a,b);return b},IsDefault:function(a){return this.createElementNSPlus("sld:IsDefault",{value:a?"1":"0"})},FeatureTypeStyle:function(a){for(var b=this.createElementNSPlus("sld:FeatureTypeStyle"),c=0,d=a.rules.length;c<d;++c)this.writeNode("Rule",a.rules[c],b);return b},Rule:function(a){var b=this.createElementNSPlus("sld:Rule");a.name&&\n +this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.elseFilter?this.writeNode("ElseFilter",null,b):a.filter&&this.writeNode("ogc:Filter",a.filter,b);void 0!=a.minScaleDenominator&&this.writeNode("MinScaleDenominator",a.minScaleDenominator,b);void 0!=a.maxScaleDenominator&&this.writeNode("MaxScaleDenominator",a.maxScaleDenominator,b);var c,d;if(this.multipleSymbolizers&&a.symbolizers)for(var e=0,f=a.symbolizers.length;e<\n +f;++e)d=a.symbolizers[e],c=d.CLASS_NAME.split(".").pop(),this.writeNode(c+"Symbolizer",d,b);else for(var f=OpenLayers.Style.SYMBOLIZER_PREFIXES,e=0,g=f.length;e<g;++e)c=f[e],(d=a.symbolizer[c])&&this.writeNode(c+"Symbolizer",d,b);return b},ElseFilter:function(){return this.createElementNSPlus("sld:ElseFilter")},MinScaleDenominator:function(a){retu + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="9" aka="AAAAAAAAAAk="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +rn this.createElementNSPlus("sld:MinScaleDenominator",{value:a})},MaxScaleDenominator:function(a){return this.createElementNSPlus("sld:MaxScaleDenominator",\n +{value:a})},LineSymbolizer:function(a){var b=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",a,b);return b},Stroke:function(a){var b=this.createElementNSPlus("sld:Stroke");void 0!=a.strokeColor&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeColor"},b);void 0!=a.strokeOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeOpacity"},b);void 0!=a.strokeWidth&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeWidth"},b);void 0!=a.strokeDashstyle&&"solid"!==\n +a.strokeDashstyle&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeDashstyle"},b);void 0!=a.strokeLinecap&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeLinecap"},b);return b},CssParameter:function(a){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(a.key)},value:a.symbolizer[a.key]})},TextSymbolizer:function(a){var b=this.createElementNSPlus("sld:TextSymbolizer");null!=a.label&&this.writeNode("Label",a.label,b);(null!=a.fontFamily||null!=a.fontSize||\n +null!=a.fontWeight||null!=a.fontStyle)&&this.writeNode("Font",a,b);(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation||null!=a.labelPerpendicularOffset)&&this.writeNode("LabelPlacement",a,b);(null!=a.haloRadius||null!=a.haloColor||null!=a.haloOpacity)&&this.writeNode("Halo",a,b);(null!=a.fontColor||null!=a.fontOpacity)&&this.writeNode("Fill",{fillColor:a.fontColor,fillOpacity:a.fontOpacity},b);return b},LabelPlacement:function(a){var b=\n +this.createElementNSPlus("sld:LabelPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation)&&null==a.labelPerpendicularOffset&&this.writeNode("PointPlacement",a,b);null!=a.labelPerpendicularOffset&&this.writeNode("LinePlacement",a,b);return b},LinePlacement:function(a){var b=this.createElementNSPlus("sld:LinePlacement");this.writeNode("PerpendicularOffset",a.labelPerpendicularOffset,b);return b},PerpendicularOffset:function(a){return this.createElementNSPlus("sld:PerpendicularOffset",\n +{value:a})},PointPlacement:function(a){var b=this.createElementNSPlus("sld:PointPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign)&&this.writeNode("AnchorPoint",a,b);(null!=a.labelXOffset||null!=a.labelYOffset)&&this.writeNode("Displacement",a,b);null!=a.labelRotation&&this.writeNode("Rotation",a.labelRotation,b);return b},AnchorPoint:function(a){var b=this.createElementNSPlus("sld:AnchorPoint"),c=a.labelAnchorPointX,d=a.labelAnchorPointY;null!=c&&this.writeNode("AnchorPointX",\n +c,b);null!=d&&this.writeNode("AnchorPointY",d,b);if(null==c&&null==d){var e=a.labelAlign.substr(0,1),a=a.labelAlign.substr(1,1);"l"===e?c=0:"c"===e?c=0.5:"r"===e&&(c=1);"b"===a?d=0:"m"===a?d=0.5:"t"===a&&(d=1);this.writeNode("AnchorPointX",c,b);this.writeNode("AnchorPointY",d,b)}return b},AnchorPointX:function(a){return this.createElementNSPlus("sld:AnchorPointX",{value:a})},AnchorPointY:function(a){return this.createElementNSPlus("sld:AnchorPointY",{value:a})},Displacement:function(a){var b=this.createElementNSPlus("sld:Displacement");\n +null!=a.labelXOffset&&this.writeNode("DisplacementX",a.labelXOffset,b);null!=a.labelYOffset&&this.writeNode("DisplacementY",a.labelYOffset,b);return b},DisplacementX:function(a){return this.createElementNSPlus("sld:DisplacementX",{value:a})},DisplacementY:function(a){return this.createElementNSPlus("sld:DisplacementY",{value:a})},Font:function(a){var b=this.createElementNSPlus("sld:Font");a.fontFamily&&this.writeNode("CssParameter",{symbolizer:a,key:"fontFamily"},b);a.fontSize&&this.writeNode("CssParameter",\n +{symbolizer:a,key:"fontSize"},b);a.fontWeight&&this.writeNode("CssParameter",{symbolizer:a,key:"fontWeight"},b);a.fontStyle&&this.writeNode("CssParameter",{symbolizer:a,key:"fontStyle"},b);return b},Label:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Label",a)},Halo:function(a){var b=this.createElementNSPlus("sld:Halo");a.haloRadius&&this.writeNode("Radius",a.haloRadius,b);(a.haloColor||a.haloOpacity)&&this.writeNode("Fill",{fillColor:a.haloColor,fillOpacity:a.haloOpacity},b);\n +return b},Radius:function(a){return this.createElementNSPlus("sld:Radius",{value:a})},RasterSymbolizer:function(a){var b=this.createElementNSPlus("sld:RasterSymbolizer");a.geometry&&this.writeNode("Geometry",a.geometry,b);a.opacity&&this.writeNode("Opacity",a.opacity,b);a.colorMap&&this.writeNode("ColorMap",a.colorMap,b);return b},Geometry:function(a){var b=this.createElementNSPlus("sld:Geometry");a.property&&this.writeNode("ogc:PropertyName",a,b);return b},ColorMap:function(a){for(var b=this.createElementNSPlus("sld:ColorMap"),\n +c=0,d=a.length;c<d;++c)this.writeNode("ColorMapEntry",a[c],b);return b},ColorMapEntry:function(a){var b=this.createElementNSPlus("sld:ColorMapEntry");b.setAttribute("color",a.color);void 0!==a.opacity&&b.setAttribute("opacity",parseFloat(a.opacity));void 0!==a.quantity&&b.setAttribute("quantity",parseFloat(a.quantity));void 0!==a.label&&b.setAttribute("label",a.label);return b},PolygonSymbolizer:function(a){var b=this.createElementNSPlus("sld:PolygonSymbolizer");!1!==a.fill&&this.writeNode("Fill",\n +a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},Fill:function(a){var b=this.createElementNSPlus("sld:Fill");a.fillColor&&this.writeNode("CssParameter",{symbolizer:a,key:"fillColor"},b);null!=a.fillOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"fillOpacity"},b);return b},PointSymbolizer:function(a){var b=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",a,b);return b},Graphic:function(a){var b=this.createElementNSPlus("sld:Graphic");void 0!=a.externalGraphic?\n +this.writeNode("ExternalGraphic",a,b):this.writeNode("Mark",a,b);void 0!=a.graphicOpacity&&this.writeNode("Opacity",a.graphicOpacity,b);void 0!=a.pointRadius?this.writeNode("Size",2*a.pointRadius,b):void 0!=a.graphicWidth&&this.writeNode("Size",a.graphicWidth,b);void 0!=a.rotation&&this.writeNode("Rotation",a.rotation,b);return b},ExternalGraphic:function(a){var b=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",a.externalGraphic,b);this.writeNode("Format",a.graphicFormat||\n +this.getGraphicFormat(a.externalGraphic),b);return b},Mark:function(a){var b=this.createElementNSPlus("sld:Mark");a.graphicName&&this.writeNode("WellKnownName",a.graphicName,b);!1!==a.fill&&this.writeNode("Fill",a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},WellKnownName:function(a){return this.createElementNSPlus("sld:WellKnownName",{value:a})},Opacity:function(a){return this.createElementNSPlus("sld:Opacity",{value:a})},Size:function(a){return this.writers.sld._OGCExpression.call(this,\n +"sld:Size",a)},Rotation:function(a){return this.createElementNSPlus("sld:Rotation",{value:a})},OnlineResource:function(a){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":a}})},Format:function(a){return this.createElementNSPlus("sld:Format",{value:a})}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"},isBaseLayer:!0,encodeBBOX:!1,noMagic:!1,yx:{},initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);1.3<=parseFloat(c.VERSION)&&!c.EXCEPTIONS&&(c.EXCEPTIONS="INIMAGE");e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));\n +if(!this.noMagic&&this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"image/jpeg"==this.params.FORMAT&&(this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},reverseAxisOrder:function(){var a=this.projection.getCode();return 1.3<=parseFloat(this.params.VERSION)&&\n +!(!this.yx[a]&&!OpenLayers.Projection.defaults[a].yx)},getURL:function(a){var a=this.adjustBounds(a),b=this.getImageSize(),c={},d=this.reverseAxisOrder();c.BBOX=this.encodeBBOX?a.toBBOX(null,d):a.toArray(d);c.WIDTH=b.w;c.HEIGHT=b.h;return this.getFullRequestString(c)},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},getFullRequestString:function(a,b){var c=this.map.getProjectionObject(),c=this.projection&&this.projection.equals(c)?\n +this.projection.getCode():c.getCode(),c="none"==c?null:c;1.3<=parseFloat(this.params.VERSION)?this.params.CRS=c:this.params.SRS=c;"boolean"==typeof this.params.TRANSPARENT&&(a.TRANSPARENT=this.params.TRANSPARENT?"TRUE":"FALSE");return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_sld_MinScaleDenominator:function(a,b){var c=parseFloat(this.getChildValue(b));0<c&&(a.maxScale=c)},read_sld_MaxScaleDenominator:function(a,b){a.minScale=parseFloat(this.getChildValue(b))},read_wmc_SRS:function(a,b){"srs"in\n +a||(a.srs={});a.srs[this.getChildValue(b)]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[a]);if(a.maxScale){var c=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");c.appendChild(this.createTextNode(a.maxScale.toPrecision(16)));b.appendChild(c)}a.minScale&&(c=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator"),c.appendChild(this.createTextNode(a.minScale.toPrecision(16))),b.appendChild(c));if(a.srs)for(var d in a.srs)b.appendChild(this.createElementDefaultNS("SRS",\n +d));b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a));return b},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.XLS=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",stringifyOutput:!0,CLASS_NAME:"OpenLayers.Format.XLS"});OpenLayers.Format.XLS.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xls:"http://www.opengis.net/xls",gml:"http://www.opengis.net/gml",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},xy:!0,defaultPrefix:"xls",schemaLocation:null,read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{xls:{XLS:function(a,b){b.version=a.getAttribute("version");\n +this.readChildNodes(a,b)},Response:function(a,b){this.readChildNodes(a,b)},GeocodeResponse:function(a,b){b.responseLists=[];this.readChildNodes(a,b)},GeocodeResponseList:function(a,b){var c={features:[],numberOfGeocodedAddresses:parseInt(a.getAttribute("numberOfGeocodedAddresses"))};b.responseLists.push(c);this.readChildNodes(a,c)},GeocodedAddress:function(a,b){var c=new OpenLayers.Feature.Vector;b.features.push(c);this.readChildNodes(a,c);c.geometry=c.components[0]},GeocodeMatchCode:function(a,b){b.attributes.matchCode=\n +{accuracy:parseFloat(a.getAttribute("accuracy")),matchType:a.getAttribute("matchType")}},Address:function(a,b){var c={countryCode:a.getAttribute("countryCode"),addressee:a.getAttribute("addressee"),street:[],place:[]};b.attributes.address=c;this.readChildNodes(a,c)},freeFormAddress:function(a,b){b.freeFormAddress=this.getChildValue(a)},StreetAddress:function(a,b){this.readChildNodes(a,b)},Building:function(a,b){b.building={number:a.getAttribute("number"),subdivision:a.getAttribute("subdivision"),\n +buildingName:a.getAttribute("buildingName")}},Street:function(a,b){b.street.push(this.getChildValue(a))},Place:function(a,b){b.place[a.getAttribute("type")]=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)}},gml:OpenLayers.Format.GML.v3.prototype.readers.gml},write:function(a){return this.writers.xls.XLS.apply(this,[a])},writers:{xls:{XLS:function(a){var b=this.createElementNSPlus("xls:XLS",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});\n +this.writeNode("RequestHeader",a.header,b);this.writeNode("Request",a,b);return b},RequestHeader:function(){return this.createElementNSPlus("xls:RequestHeader")},Request:function(a){var b=this.createElementNSPlus("xls:Request",{attributes:{methodName:"GeocodeRequest",requestID:a.requestID||"",version:this.VERSION}});this.writeNode("GeocodeRequest",a.addresses,b);return b},GeocodeRequest:function(a){for(var b=this.createElementNSPlus("xls:GeocodeRequest"),c=0,d=a.length;c<d;c++)this.writeNode("Address",\n +a[c],b);return b},Address:function(a){var b=this.createElementNSPlus("xls:Address",{attributes:{countryCode:a.countryCode}});a.freeFormAddress?this.writeNode("freeFormAddress",a.freeFormAddress,b):(a.street&&this.writeNode("StreetAddress",a,b),a.municipality&&this.writeNode("Municipality",a.municipality,b),a.countrySubdivision&&this.writeNode("CountrySubdivision",a.countrySubdivision,b),a.postalCode&&this.writeNode("PostalCode",a.postalCode,b));return b},freeFormAddress:function(a){return this.createElementNSPlus("freeFormAddress",\n +{value:a})},StreetAddress:function(a){var b=this.createElementNSPlus("xls:StreetAddress");a.building&&this.writeNode(b,"Building",a.building);a=a.street;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=0,d=a.length;c<d;c++)this.writeNode("Street",a[c],b);return b},Building:function(a){return this.createElementNSPlus("xls:Building",{attributes:{number:a.number,subdivision:a.subdivision,buildingName:a.buildingName}})},Street:function(a){return this.createElementNSPlus("xls:Street",{value:a})},Municipality:function(a){return this.createElementNSPlus("xls:Place",\n +{attributes:{type:"Municipality"},value:a})},CountrySubdivision:function(a){return this.createElementNSPlus("xls:Place",{attributes:{type:"CountrySubdivision"},value:a})},PostalCode:function(a){return this.createElementNSPlus("xls:PostalCode",{value:a})}}},CLASS_NAME:"OpenLayers.Format.XLS.v1"});OpenLayers.Format.XLS.v1_1_0=OpenLayers.Class(OpenLayers.Format.XLS.v1,{VERSION:"1.1",schemaLocation:"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",CLASS_NAME:"OpenLayers.Format.XLS.v1_1_0"});OpenLayers.Format.XLS.v1_1=OpenLayers.Format.XLS.v1_1_0;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",\n +"1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,\n +"viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);\n +this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,\n +b,c){var b=b||a._style,c=c||a._options,d=parseFloat(a.getAttributeNS(null,"r")),e=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&d){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicTitle&&(a.setAttributeNS(null,"title",b.graphicTitle),d=a.getElementsByTagName("title"),0<d.length?d[0].firstChild.textContent=b.graphicTitle:(d=this.nodeFactory(null,"title"),d.textContent=b.graphicTitle,a.appendChild(d)));b.graphicWidth&&\n +b.graphicHeight&&a.setAttributeNS(null,"preserveAspectRatio","none");var d=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,d=d?d:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),i=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*d))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",d);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,\n +"href",b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+i);a.onclick=OpenLayers.Renderer.SVG.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var d=3*b.pointRadius,g=2*d,j=this.importSymbol(b.graphicName);f=this.getPosition(a);e=3*this.symbolMetrics[j.id][0]/g;h=a.parentNode;i=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(j.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",j.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,\n +"width",g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-d);a.setAttributeNS(null,"y",f.y-d);i?h.insertBefore(a,i):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);d=b.rotation;if((void 0!==d||void 0!==a._rotation)&&f)a._rotation=d,d|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+d+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[j.id],a.firstChild.setAttributeNS(null,"transform","rotate("+d+" "+f[1]+" "+f[2]+")"))}c.isFilled?(a.setAttributeNS(null,\n +"fill",b.fillColor),a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*e),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,e))):a.setAttributeNS(null,"stroke",\n +"none");b.pointerEvents&&a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\\s+/g,\n +",")}},createNode:function(a,b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,\n +b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left,b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?\n +(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,i=b.components.length;h<i;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,\n +"x",d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,\n +f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,\n +"font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=\n +b.label.split("\\n"),i=h.length;f.childNodes.length>i;)f.removeChild(f.lastChild);for(var j=0;j<i;j++){var k=this.nodeFactory(a+d+"_tspan_"+j,"tspan");!0===b.labelSelect&&(k._featureId=a,k._geometry=c,k._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&k.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");k.setAttribute("x",e);if(0==j){var l=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==l&&(l=-0.5);k.setAttribute("dy",l*(i-1)+"em")}else k.setAttribute("dy",\n +"1em");k.textContent=""===h[j]?" ":h[j];k.parentNode||f.appendChild(k)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),\n +d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,i;if(h<-d||h>d)i=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*i;if(c<-e||c>e)i=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*i;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left,a=this.top-a.y/b;return this.inValidRange(c,a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,\n +"cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");var a=this.nodeFactory(b,"symbol"),e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),f=[],g,h,i=0;i<d.length;i+=2)g=d[i],h=d[i+1],c.left=Math.min(c.left,\n +g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);b||(b=a.target,\n +b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){a.preventDefault&&a.preventDefault()};OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);"0.3.0"===c&&(c=this.defaultVersion);return c},toContext:function(a){var b={};"OpenLayers.Map"==a.CLASS_NAME&&(b.bounds=a.getExtent(),b.maxExtent=a.maxExtent,b.projection=a.projection,b.size=a.getSize(),b.layers=a.layers);return b},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",\n +defaultPrefix:"owc",extractAttributes:!0,xy:!0,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:"vector",geometryName:"geometry",nestingLayerLookup:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this)},setNestingPath:function(a){if(a.layersContext)for(var b=0,c=a.layersContext.length;b<c;b++){var d=\n +a.layersContext[b],e=[],f=a.title||"";a.metadata&&a.metadata.nestingPath&&(e=a.metadata.nestingPath.slice());""!=f&&e.push(f);d.metadata.nestingPath=e;d.layersContext&&this.setNestingPath(d)}},decomposeNestingPath:function(a){var b=[];if(OpenLayers.Util.isArray(a)){for(a=a.slice();0<a.length;)b.push(a.slice()),a.pop();b.reverse()}return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,\n +b);this.setNestingPath({layersContext:b.layersContext});a=[];this.processLayer(a,b);delete b.layersContext;b.layersContext=a;return b},processLayer:function(a,b){if(b.layersContext)for(var c=0,d=b.layersContext.length;c<d;c++){var e=b.layersContext[c];a.push(e);e.layersContext&&this.processLayer(a,e)}},write:function(a,b){this.nestingLayerLookup={};b=b||{};OpenLayers.Util.applyDefaults(b,a);var c=this.writeNode("OWSContext",b);this.nestingLayerLookup=null;this.setAttributeNS(c,this.namespaces.xsi,\n +"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},readers:{kml:{Document:function(a,b){b.features=(new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:!0})).read(a)}},owc:{OWSContext:function(a,b){this.readChildNodes(a,b)},General:function(a,b){this.readChildNodes(a,b)},ResourceList:function(a,b){this.readChildNodes(a,b)},Layer:function(a,b){var c={metadata:{},visibility:"1"!=a.getAttribute("hidden"),queryable:"1"==a.getAttribute("queryable"),\n +opacity:null!=a.getAttribute("opacity")?parseFloat(a.getAttribute("opacity")):null,name:a.getAttribute("name"),categoryLayer:null==a.getAttribute("name"),formats:[],styles:[]};b.layersContext||(b.layersContext=[]);b.layersContext.push(c);this.readChildNodes(a,c)},InlineGeometry:function(a,b){b.features=[];var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember"),d;1<=c.length&&(d=c[0]);d&&d.firstChild&&(c=d.firstChild.nextSibling?d.firstChild.nextSibling:d.firstChild,this.setNamespace("feature",\n +c.namespaceURI),this.featureType=c.localName||c.nodeName.split(":").pop(),this.readChildNodes(a,b))},Server:function(a,b){if(!b.service&&!b.version||b.service!=OpenLayers.Format.Context.serviceTypes.WMS)b.service=a.getAttribute("service"),b.version=a.getAttribute("version"),this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a);this.readChildNodes(a,b)},Title:function(a,b){b.title=this.getChildValue(a);this.readChildNodes(a,b)},StyleList:function(a,b){this.readChildNodes(a,b.styles)},\n +Style:function(a,b){var c={};b.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={};b.legend=c;this.readChildNodes(a,c)},OnlineResource:function(a,b){b.url=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)}},ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,gml:OpenLayers.Format.GML.v2.prototype.readers.gml,sld:OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{owc:{OWSContext:function(a){var b=\n +this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:a.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",a,b);this.writeNode("ResourceList",a,b);return b},General:function(a){var b=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",a,b);this.writeNode("ows:Title",a.title||"OpenLayers OWSContext",b);return b},ResourceList:function(a){for(var b=this.createElementNSPlus("ResourceList"),c=0,d=a.layers.length;c<d;c++){var e=\n +a.layers[c],f=this.decomposeNestingPath(e.metadata.nestingPath);this.writeNode("_Layer",{layer:e,subPaths:f},b)}return b},Server:function(a){var b=this.createElementNSPlus("Server",{attributes:{version:a.version,service:a.service}});this.writeNode("OnlineResource",a,b);return b},OnlineResource:function(a){return this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":a.url}})},InlineGeometry:function(a){var b=this.createElementNSPlus("InlineGeometry");this.writeNode("gml:boundedBy",a.getDataExtent(),\n +b);for(var c=0,d=a.features.length;c<d;c++)this.writeNode("gml:featureMember",a.features[c],b);return b},StyleList:function(a){for(var b=this.createElementNSPlus("StyleList"),c=0,d=a.length;c<d;c++)this.writeNode("Style",a[c],b);return b},Style:function(a){var b=this.createElementNSPlus("Style");this.writeNode("Name",a,b);this.writeNode("Title",a,b);a.legend&&this.writeNode("LegendURL",a,b);return b},Name:function(a){return this.createElementNSPlus("Name",{value:a.name})},Title:function(a){return this.createElementNSPlus("Title",\n +{value:a.title})},LegendURL:function(a){var b=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",a.legend,b);return b},_WMS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.params.LAYERS,queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1",opacity:a.hasOwnProperty("opacity")?a.opacity:null}});this.writeNode("ows:Title",a.name,b);this.writeNode("ows:OutputFormat",a.params.FORMAT,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,\n +version:a.params.VERSION,url:a.url},b);a.metadata.styles&&0<a.metadata.styles.length&&this.writeNode("StyleList",a.metadata.styles,b);return b},_Layer:function(a){var b,c,d;b=a.layer;c=a.subPaths;d=null;0<c.length?(b=c[0].join("/"),c=b.lastIndexOf("/"),d=this.nestingLayerLookup[b],c=0<c?b.substring(c+1,b.length):b,d||(d=this.createElementNSPlus("Layer"),this.writeNode("ows:Title",c,d),this.nestingLayerLookup[b]=d),a.subPaths.shift(),this.writeNode("_Layer",a,d)):(b instanceof OpenLayers.Layer.WMS?\n +d=this.writeNode("_WMS",b):b instanceof OpenLayers.Layer.Vector&&(b.protocol instanceof OpenLayers.Protocol.WFS.v1?d=this.writeNode("_WFS",b):b.protocol instanceof OpenLayers.Protocol.HTTP?b.protocol.format instanceof OpenLayers.Format.GML?(b.protocol.format.version="2.1.2",d=this.writeNode("_GML",b)):b.protocol.format instanceof OpenLayers.Format.KML&&(b.protocol.format.version="2.2",d=this.writeNode("_KML",b)):(this.setNamespace("feature",this.featureNS),d=this.writeNode("_InlineGeometry",b))),\n +b.options.maxScale&&this.writeNode("sld:MinScaleDenominator",b.options.maxScale,d),b.options.minScale&&this.writeNode("sld:MaxScaleDenominator",b.options.minScale,d),this.nestingLayerLookup[b.name]=d);return d},_WFS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.protocol.featurePrefix+":"+a.protocol.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:a.protocol.version,\n +url:a.protocol.url},b);return b},_InlineGeometry:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("InlineGeometry",a,b);return b},_GML:function(a){var b=this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:a.protocol.url,version:a.protocol.format.version},b);return b},_KML:function(a){var b=\n +this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:a.protocol.format.version,url:a.protocol.url},b);return b}},gml:OpenLayers.Util.applyDefaults({boundedBy:function(a){var b=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",a,b);return b}},OpenLayers.Format.GML.v2.prototype.writers.gml),ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,sld:OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,\n +feature:OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:!1,draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.eTop||(this.eTop=document.createElement("div"),this.eTop.className=this.displayClass+"Top",this.div.appendChild(this.eTop),this.eTop.style.visibility=""==this.topOutUnits||""==this.topInUnits?"hidden":"visible",this.eBottom=document.createElement("div"),\n +this.eBottom.className=this.displayClass+"Bottom",this.div.appendChild(this.eBottom),this.eBottom.style.visibility=""==this.bottomOutUnits||""==this.bottomInUnits?"hidden":"visible");this.map.events.register("moveend",this,this.update);this.update();return this.div},getBarLen:function(a){var b=parseInt(Math.log(a)/Math.log(10)),b=Math.pow(10,b),a=parseInt(a/b);return(5<a?5:2<a?2:1)*b},update:function(){var a=this.map.getResolution();if(a){var b=this.map.getUnits(),c=OpenLayers.INCHES_PER_UNIT,d=this.maxWidth*\n +a*c[b],e=1;!0===this.geodesic&&(e=(this.map.getGeodesicPixelSize().w||1.0E-6)*this.maxWidth/(d/c.km),d*=e);var f,g;1E5<d?(f=this.topOutUnits,g=this.bottomOutUnits):(f=this.topInUnits,g=this.bottomInUnits);var h=d/c[f],i=d/c[g],d=this.getBarLen(h),j=this.getBarLen(i),h=d/c[b]*c[f],i=j/c[b]*c[g],b=h/a/e,a=i/a/e;"visible"==this.eBottom.style.visibility&&(this.eBottom.style.width=Math.round(a)+"px",this.eBottom.innerHTML=j+" "+g);"visible"==this.eTop.style.visibility&&(this.eTop.style.width=Math.round(b)+\n +"px",this.eTop.innerHTML=d+" "+f)}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(a,b,c,d){this.url=a;this.size=b||{w:20,h:20};this.offset=c||{x:-(this.size.w/2),y:-(this.size.h/2)};this.calculateOffset=d;a=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(a)},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null},clone:function(){return new OpenLayers.Icon(this.url,\n +this.size,this.offset,this.calculateOffset)},setSize:function(a){null!=a&&(this.size=a);this.draw()},setUrl:function(a){null!=a&&(this.url=a);this.draw()},draw:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(a);return this.imageDiv},erase:function(){null!=this.imageDiv&&null!=this.imageDiv.parentNode&&OpenLayers.Element.remove(this.imageDiv)},setOpacity:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,\n +null,null,null,a)},moveTo:function(a){null!=a&&(this.px=a);null!=this.imageDiv&&(null==this.px?this.display(!1):(this.calculateOffset&&(this.offset=this.calculateOffset(this.size)),OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,{x:this.px.x+this.offset.x,y:this.px.y+this.offset.y})))},display:function(a){this.imageDiv.style.display=a?"":"none"},isDrawn:function(){return this.imageDiv&&this.imageDiv.parentNode&&11!=this.imageDiv.parentNode.nodeType},CLASS_NAME:"OpenLayers.Icon"});OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(a,b){this.lonlat=a;var c=b?b:OpenLayers.Marker.defaultIcon();null==this.icon?this.icon=c:(this.icon.url=c.url,this.icon.size=c.size,this.icon.offset=c.offset,this.icon.calculateOffset=c.calculateOffset);this.events=new OpenLayers.Events(this,this.icon.imageDiv)},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;null!=this.icon&&(this.icon.destroy(),this.icon=null)},\n +draw:function(a){return this.icon.draw(a)},erase:function(){null!=this.icon&&this.icon.erase()},moveTo:function(a){null!=a&&null!=this.icon&&this.icon.moveTo(a);this.lonlat=this.map.getLonLatFromLayerPx(a)},isDrawn:function(){return this.icon&&this.icon.isDrawn()},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsLonLat(this.lonlat));return a},inflate:function(a){this.icon&&this.icon.setSize({w:this.icon.size.w*a,h:this.icon.size.h*a})},setOpacity:function(a){this.icon.setOpacity(a)},\n +setUrl:function(a){this.icon.setUrl(a)},display:function(a){this.icon.display(a)},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){return new OpenLayers.Icon(OpenLayers.Util.getImageLocation("marker.png"),{w:21,h:25},{x:-10.5,y:-25})};OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,format:"image/png",serverResolutions:null,initialize:function(a,b,c,d){this.layername=c;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,{},d]);this.extension=this.format.split("/")[1].toLowerCase();this.extension="jpg"==this.extension?"jpeg":this.extension},clone:function(a){null==a&&(a=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getURL:function(a){function b(a,b){for(var a=""+a,c=[],d=0;d<b;++d)c.push("0");return c.join("").substring(0,b-a.length)+a}var c=this.getServerResolution(),d=this.maxExtent,e=this.tileSize,f=Math.round((a.left-d.left)/(c*e.w)),a=Math.round((a.bottom-d.bottom)/(c*e.h)),c=null!=this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,c):this.map.getZoom(),f=[this.layername,b(c,2),b(parseInt(f/1E6),3),b(parseInt(f/1E3)%1E3,3),b(parseInt(f)%1E3,3),b(parseInt(a/1E6),3),b(parseInt(a/\n +1E3)%1E3,3),b(parseInt(a)%1E3,3)+"."+this.extension].join("/"),c=this.url;OpenLayers.Util.isArray(c)&&(c=this.selectUrl(f,c));c="/"==c.charAt(c.length-1)?c:c+"/";return c+f},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,DEFAULT_PARAMS:{i:"jpeg",map:""},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b);return this.getFullRequestString({t:-Math.round(a.top/b),l:d,s:c})},calculateGridLayout:function(a,\n +b,c){var b=c*this.tileSize.w,c=c*this.tileSize.h,d=a.left,e=Math.floor(d/b)-this.buffer,d=-(d/b-e)*this.tileSize.w,e=e*b,a=a.top,f=Math.ceil(a/c)+this.buffer;return{tilelon:b,tilelat:c,tileoffsetlon:e,tileoffsetlat:f*c,tileoffsetx:d,tileoffsety:-(f-a/c+1)*this.tileSize.h}},clone:function(a){null==a&&(a=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=\n +[];return a},getTileBounds:function(a){var b=this.getResolution(),c=b*this.tileSize.w,b=b*this.tileSize.h,d=this.getLonLatFromViewPortPx(a),a=c*Math.floor(d.lon/c),d=b*Math.floor(d.lat/b);return new OpenLayers.Bounds(a,d,a+c,d+b)},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,preserveAspectRatio:!1,rotate:!0,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,irregular:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.rotationHandleSymbolizer||(this.rotationHandleSymbolizer={stroke:!1,pointRadius:10,fillOpacity:0,\n +cursor:"pointer"});this.createBox();this.createControl()},activate:function(){var a=!1;OpenLayers.Control.prototype.activate.apply(this,arguments)&&(this.dragControl.activate(),this.layer.addFeatures([this.box]),this.rotate&&this.layer.addFeatures(this.rotationHandles),this.layer.addFeatures(this.handles),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Control.prototype.deactivate.apply(this,arguments)&&(this.layer.removeFeatures(this.handles),this.rotate&&this.layer.removeFeatures(this.rotationHandles),\n +this.layer.removeFeatures([this.box]),this.dragControl.deactivate(),a=!0);return a},setMap:function(a){this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setFeature:function(a,b){var b=OpenLayers.Util.applyDefaults(b,{rotation:0,scale:1,ratio:1}),c=this.rotation,d=this.center;OpenLayers.Util.extend(this,b);if(!1!==this.events.triggerEvent("beforesetfeature",{feature:a})){this.feature=a;this.activate();this._setfeature=!0;var e=this.feature.geometry.getBounds();this.box.move(e.getCenterLonLat());\n +this.box.geometry.rotate(-c,d);this._angle=0;this.rotation?(c=a.geometry.clone(),c.rotate(-this.rotation,this.center),c=new OpenLayers.Feature.Vector(c.getBounds().toGeometry()),c.geometry.rotate(this.rotation,this.center),this.box.geometry.rotate(this.rotation,this.center),this.box.move(c.geometry.getBounds().getCenterLonLat()),c=c.geometry.components[0].components[0].getBounds().getCenterLonLat()):c=new OpenLayers.LonLat(e.left,e.bottom);this.handles[0].move(c);delete this._setfeature;this.events.triggerEvent("setfeature",\n +{feature:a})}},unsetFeature:function(){this.active?this.deactivate():(this.feature=null,this.rotation=0,this.ratio=this.scale=1)},createBox:function(){var a=this;this.center=new OpenLayers.Geometry.Point(0,0);this.box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,\n +1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,"string"==typeof this.renderIntent?null:this.renderIntent);this.box.geometry.move=function(b,c){a._moving=!0;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);a.center.move(b,c);delete a._moving};for(var b=function(a,b){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(a,b);this._handle.geometry.move(a,b)},c=function(a,b,c){OpenLayers.Geometry.Point.prototype.resize.apply(this,\n +arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(a,b,c);this._handle.geometry.resize(a,b,c)},d=function(a,b){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(a,b);this._handle.geometry.rotate(a,b)},e=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,g=!(!a._setfeature&&a.preserveAspectRatio)&&!(f&&f.shiftKey),\n +h=new OpenLayers.Geometry.Point(d,e),f=a.center;this.rotate(-a.rotation,f);h.rotate(-a.rotation,f);var i=this.x-f.x,j=this.y-f.y,k=i-(this.x-h.x),l=j-(this.y-h.y);a.irregular&&!a._setfeature&&(i-=(this.x-h.x)/2,j-=(this.y-h.y)/2);this.x=d;this.y=e;h=1;g?(j=1.0E-5>Math.abs(l)?1:j/l,h=(1.0E-5>Math.abs(k)?1:i/k)/j):(k=Math.sqrt(k*k+l*l),j=Math.sqrt(i*i+j*j)/k);a._moving=!0;a.box.geometry.rotate(-a.rotation,f);delete a._moving;a.box.geometry.resize(j,f,h);a.box.geometry.rotate(a.rotation,f);a.transformFeature({scale:j,\n +ratio:h});a.irregular&&!a._setfeature&&(i=f.clone(),i.x+=1.0E-5>Math.abs(d-f.x)?0:this.x-d,i.y+=1.0E-5>Math.abs(e-f.y)?0:this.y-e,a.box.geometry.move(this.x-d,this.y-e),a.transformFeature({center:i}))}},f=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,f=f&&f.shiftKey?45:1,g=a.center,h=this.x-g.x,i=this.y-g.y;this.x=d;this.y=e;d=Math.atan2(i-c,h-b);d=Math.atan2(i,h)-d;d*=180/Math.PI;a._angle=(a._angle+\n +d)%360;d=a.rotation%f;if(Math.abs(a._angle)>=f||0!==d)d=Math.round(a._angle/f)*f-d,a._angle=0,a.box.geometry.rotate(d,g),a.transformFeature({rotation:d})}},g=Array(8),h=Array(4),i,j,k,l="sw s se e ne n nw w".split(" "),m=0;8>m;++m)i=this.box.geometry.components[m],j=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-resize"},"string"==typeof this.renderIntent?null:this.renderIntent),0==m%2&&(k=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-rotate"},"string"==typeof this.rotationHandleSymbolizer?\n +null:this.rotationHandleSymbolizer),k.geometry.move=f,i._rotationHandle=k,h[m/2]=k),i.move=b,i.resize=c,i.rotate=d,j.geometry.move=e,i._handle=j,g[m]=j;this.rotationHandles=h;this.handles=g},createControl:function(){var a=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:!0,moveFeature:function(b){this.feature===a.feature&&(this.feature=a.box);OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments)},onDrag:function(b){b===a.box&&a.transformFeature({center:a.center})},\n +onStart:function(b){var c=!a.geometryTypes||-1!==OpenLayers.Util.indexOf(a.geometryTypes,b.geometry.CLASS_NAME),d=OpenLayers.Util.indexOf(a.handles,b),d=d+OpenLayers.Util.indexOf(a.rotationHandles,b);b!==a.feature&&(b!==a.box&&-2==d&&c)&&a.setFeature(b)},onComplete:function(){a.events.triggerEvent("transformcomplete",{feature:a.feature})}})},drawHandles:function(){for(var a=this.layer,b=0;8>b;++b)this.rotate&&0===b%2&&a.drawFeature(this.rotationHandles[b/2],this.rotationHandleSymbolizer),a.drawFeature(this.handles[b],\n +this.renderIntent)},transformFeature:function(a){if(!this._setfeature){this.scale*=a.scale||1;this.ratio*=a.ratio||1;var b=this.rotation;this.rotation=(this.rotation+(a.rotation||0))%360;if(!1!==this.events.triggerEvent("beforetransform",a)){var c=this.feature,d=c.geometry,e=this.center;d.rotate(-b,e);a.scale||a.ratio?d.resize(a.scale,e,a.ratio):a.center&&c.move(a.center.getBounds().getCenterLonLat());d.rotate(this.rotation,e);this.layer.drawFeature(c);c.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",\n +a)}}this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles()},destroy:function(){for(var a,b=0;8>b;++b)a=this.box.geometry.components[b],a._handle.destroy(),a._handle=null,a._rotationHandle&&a._rotationHandle.destroy(),a._rotationHandle=null;this.rotationHandles=this.rotationHandleSymbolizer=this.handles=this.feature=this.center=null;this.box.destroy();this.layer=this.box=null;this.dragControl.destroy();this.dragControl=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},\n +CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=\n +null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,\n +c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x),a=Math.max(c.x,\n +a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?\n +(this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,\n +"border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b;if(this.out){b=Math.abs(a.right-a.left);var c=Math.abs(a.top-a.bottom);b=Math.min(this.map.size.h/c,this.map.size.w/b);var c=this.map.getExtent(),d=this.map.getLonLatFromPixel(a.getCenterPixel()),a=d.lon-\n +c.getWidth()/2*b,e=d.lon+c.getWidth()/2*b,f=d.lat-c.getHeight()/2*b;b=d.lat+c.getHeight()/2*b;b=new OpenLayers.Bounds(a,f,e,b)}else b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),c=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,c.lon,c.lat);c=this.map.getZoom();this.map.zoomToExtent(b);c==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(c+(this.out?-1:1))}else this.out?this.map.setCenter(this.map.getLonLatFromPixel(a),this.map.getZoom()-1):this.map.setCenter(this.map.getLonLatFromPixel(a),\n +this.map.getZoom()+1)},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:1,documentDrag:!1,kinetic:null,enableKinetic:!1,kineticInterval:10,draw:function(){if(this.enableKinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},{interval:this.interval,\n +documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,f){c.map.pan(a,b,{dragging:!f,\n +animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,touch:!1,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.touch||(this.unregisterMouseListeners(),this.touch=!0);this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,\n +a.lastTouches=this.last.touches,this.handleSingle(a),this.down=null);return!0},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this})},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&(this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a))&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=\n +this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},\n +dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.stop(a),this.handleDouble(a)),(!this.last.touches||2!==this.last.touches.length)&&this.clearTimer()):(this.first=this.getEventInfo(a),this.queuePotentialClick(this.single?\n +OpenLayers.Util.extend({},a):null)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length)for(var a=0,c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=\n +!1;break}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,2))},passesDblclickTolerance:function(){var a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=\n +null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.clientX,clientY:d.clientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,this.touch=!1,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;\n +this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();\n +this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,\n +documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},this.mouseWheelOptions);OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&\n +this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom+1)},defaultDblRightClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom-1)},wheelChange:function(a,b){var c=this.map.getZoom(),d=this.map.getZoom()+Math.round(b),d=Math.max(d,0),d=Math.min(d,this.map.getNumZoomLevels());if(d!==c){var e=this.map.getSize(),c=e.w/2-a.xy.x,e=a.xy.y-e.h/2,f=this.map.baseLayer.getResolutionForZoom(d),g=this.map.getLonLatFromPixel(a.xy);\n +this.map.setCenter(new OpenLayers.LonLat(g.lon+c*f,g.lat+e*f),d)}},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},\n +CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,multi:!1,featureAdded:function(){},handlerOptions:null,initialize:function(a,b,c){OpenLayers.Control.prototype.initialize.apply(this,[c]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(a,b){this.layer.events.triggerEvent("sketchmodified",{vertex:a,feature:b})},create:function(a,b){this.layer.events.triggerEvent("sketchstarted",{vertex:a,feature:b})}},this.callbacks);this.layer=\n +a;this.handlerOptions=this.handlerOptions||{};this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{renderers:a.renderers,rendererOptions:a.rendererOptions});"multi"in this.handlerOptions||(this.handlerOptions.multi=this.multi);if(a=this.layer.styleMap&&this.layer.styleMap.styles.temporary)this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":a})});this.handler=new b(this,\n +this.callbacks,this.handlerOptions)},drawFeature:function(a){a=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",{feature:a})&&(a.state=OpenLayers.State.INSERT,this.layer.addFeatures([a]),this.featureAdded(a),this.events.triggerEvent("featureadded",{feature:a}))},insertXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertXY(a,b)},insertDeltaXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeltaXY(a,b)},insertDirectionLength:function(a,\n +b){this.handler&&this.handler.line&&this.handler.insertDirectionLength(a,b)},insertDeflectionLength:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeflectionLength(a,b)},undo:function(){return this.handler.undo&&this.handler.undo()},redo:function(){return this.handler.redo&&this.handler.redo()},finishSketch:function(){this.handler.finishGeometry()},cancel:function(){this.handler.cancel()},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{holeModifier:null,drawingHole:!1,polygon:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,\n +this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:!0})},addPoint:function(a){if(!this.drawingHole&&this.holeModifier&&this.evt&&this.evt[this.holeModifier])for(var b=this.point.geometry,c=this.control.layer.features,d,e=c.length-1;0<=e;--e)if(d=c[e].geometry,(d instanceof OpenLayers.Geometry.Polygon||d instanceof OpenLayers.Geometry.MultiPolygon)&&d.intersects(b)){b=c[e];this.control.layer.removeFeatures([b],{silent:!0});this.control.layer.events.registerPriority("sketchcomplete",\n +this,this.finalizeInteriorRing);this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology);b.geometry.addComponent(this.line.geometry);this.polygon=b;this.drawingHole=!0;break}OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments)},getCurrentPointIndex:function(){return this.line.geometry.components.length-2},enforceTopology:function(a){var a=a.vertex,b=this.line.geometry.components;this.polygon.geometry.intersects(a)||(b=b[b.length-3],a.x=b.x,a.y=b.y)},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-\n +2]);this.removePoint();this.finalize()},finalizeInteriorRing:function(){var a=this.line.geometry,b=0!==a.getArea();if(b){for(var c=this.polygon.geometry.component + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAo=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="10" aka="AAAAAAAAAAo="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +s,d=c.length-2;0<=d;--d)if(a.intersects(c[d])){b=!1;break}if(b){d=c.length-2;a:for(;0<d;--d)for(var e=c[d].components,f=0,g=e.length;f<g;++f)if(a.containsPoint(e[f])){b=!1;break a}}}b?this.polygon.state!==OpenLayers.State.INSERT&&(this.polygon.state=OpenLayers.State.UPDATE):this.polygon.geometry.removeComponent(a);this.restoreFeature();return!1},\n +cancel:function(){this.drawingHole&&(this.polygon.geometry.removeComponent(this.line.geometry),this.restoreFeature(!0));return OpenLayers.Handler.Path.prototype.cancel.apply(this,arguments)},restoreFeature:function(a){this.control.layer.events.unregister("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.unregister("sketchmodified",this,this.enforceTopology);this.layer.removeFeatures([this.polygon],{silent:!0});this.control.layer.addFeatures([this.polygon],{silent:!0});this.drawingHole=\n +!1;a||this.control.layer.events.triggerEvent("sketchcomplete",{feature:this.polygon})},destroyFeature:function(a){OpenLayers.Handler.Path.prototype.destroyFeature.call(this,a);this.polygon=null},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.polygon},getGeometry:function(){var a=this.polygon&&this.polygon.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPolygon([a]));return a},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{citeCompliant:!1,initialize:function(a,b){OpenLayers.Control.Panel.prototype.initialize.apply(this,[b]);this.addControls([new OpenLayers.Control.Navigation]);this.addControls([new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Point,{displayClass:"olControlDrawFeaturePoint",handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Path,{displayClass:"olControlDrawFeaturePath",\n +handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Polygon,{displayClass:"olControlDrawFeaturePolygon",handlerOptions:{citeCompliant:this.citeCompliant}})])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,\n +scope:this});return a},update:function(a){var b=this.getMapBounds();if(null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b)))this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a)},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));\n +return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){this.response&&!(a&&!0===a.noAbort)&&\n +(this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,\n +filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if((a=a.features)&&0<a.length){var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b))for(var d,e=0,f=a.length;e<f;++e)(d=a[e].geometry)&&d.transform(b,c);this.layer.addFeatures(a)}this.response=null;this.layer.events.triggerEvent("loadend")},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:!0,lzd:null,zoomLevels:null,initialize:function(a,b,c,d,e,f){this.lzd=c;this.zoomLevels=d;c=[];c.push(a,b,e,f);OpenLayers.Layer.Grid.prototype.initialize.apply(this,c);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getZoom:function(){var a=this.map.getZoom();this.map.getMaxExtent();return a-=Math.log(this.maxResolution/(this.lzd/512))/Math.log(2)},getURL:function(a){var a=\n +this.adjustBounds(a),b=this.getZoom(),c=this.map.getMaxExtent(),d=this.lzd/Math.pow(2,this.getZoom()),e=Math.floor((a.left-c.left)/d),a=Math.floor((a.bottom-c.bottom)/d);return this.map.getResolution()<=this.lzd/512&&this.getZoom()<=this.zoomLevels?this.getFullRequestString({L:b,X:e,Y:a}):OpenLayers.Util.getImageLocation("blank.gif")},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Protocol.CSW=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.CSW.DEFAULTS),b=OpenLayers.Protocol.CSW["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported CSW version: "+a.version;return new b(a)};OpenLayers.Protocol.CSW.DEFAULTS={version:"2.0.2"};OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":!0},createLayer:function(a,b){var c,d={layer:!0,matrixSet:!0},e;for(e in d)if(!(e in b))throw Error("Missing property \'"+e+"\' in layer configuration.");d=a.contents;e=d.tileMatrixSets[b.matrixSet];for(var f,g=0,h=d.layers.length;g<h;++g)if(d.layers[g].identifier===b.layer){f=d.layers[g];break}if(f&&e){for(var i,g=0,h=f.styles.length;g<h&&!(i=f.styles[g],i.isDefault);++g);\n +c=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(b,{url:"REST"===b.requestEncoding&&f.resourceUrl?f.resourceUrl.tile.template:a.operationsMetadata.GetTile.dcp.http.get[0].url,name:f.title,style:i.identifier,matrixIds:e.matrixIds,tileFullExtent:e.bounds}))}return c},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Layer.Google.v3={DEFAULTS:{sphericalMercator:!0,projection:"EPSG:900913"},animationEnabled:!0,loadMapObject:function(){this.type||(this.type=google.maps.MapTypeId.ROADMAP);var a,b=OpenLayers.Layer.Google.cache[this.map.id];b?(a=b.mapObject,++b.count):(b=this.map.viewPortDiv,a=document.createElement("div"),a.id=this.map.id+"_GMapContainer",a.style.position="absolute",a.style.width="100%",a.style.height="100%",b.appendChild(a),b=this.map.getCenter(),a=new google.maps.Map(a,{center:b?new google.maps.LatLng(b.lat,\n +b.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||0,mapTypeId:this.type,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}),b={mapObject:a,count:1},OpenLayers.Layer.Google.cache[this.map.id]=b,this.repositionListener=google.maps.event.addListenerOnce(a,"center_changed",OpenLayers.Function.bind(this.repositionMapElements,this)));this.mapObject=a;this.setGMapVisibility(this.visibility)},repositionMapElements:function(){google.maps.event.trigger(this.mapObject,\n +"resize");var a=this.mapObject.getDiv().firstChild;if(!a||3>a.childNodes.length)return this.repositionTimer=window.setTimeout(OpenLayers.Function.bind(this.repositionMapElements,this),250),!1;for(var b=OpenLayers.Layer.Google.cache[this.map.id],c=this.map.viewPortDiv,d=a.children.length-1;0<=d;--d){if(1000001==a.children[d].style.zIndex){var e=a.children[d];c.appendChild(e);e.style.zIndex="1100";e.style.bottom="";e.className="olLayerGoogleCopyright olLayerGoogleV3";e.style.display="";b.termsOfUse=\n +e}1E6==a.children[d].style.zIndex&&(e=a.children[d],c.appendChild(e),e.style.zIndex="1100",e.style.bottom="",e.className="olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint",e.style.display="",b.poweredBy=e);10000002==a.children[d].style.zIndex&&c.appendChild(a.children[d])}this.setGMapVisibility(this.visibility)},onMapResize:function(){if(this.visibility)google.maps.event.trigger(this.mapObject,"resize");else{var a=OpenLayers.Layer.Google.cache[this.map.id];if(!a.resized){var b=this;google.maps.event.addListenerOnce(this.mapObject,\n +"tilesloaded",function(){google.maps.event.trigger(b.mapObject,"resize");b.moveTo(b.map.getCenter(),b.map.getZoom());delete a.resized})}a.resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];if(b){for(var c=this.type,d=this.map.layers,e,f=d.length-1;0<=f;--f)if(e=d[f],e instanceof OpenLayers.Layer.Google&&!0===e.visibility&&!0===e.inRange){c=e.type;a=!0;break}d=this.mapObject.getDiv();!0===a?(this.mapObject.setMapTypeId(c),d.style.left="",b.termsOfUse&&b.termsOfUse.style&&\n +(b.termsOfUse.style.left="",b.termsOfUse.style.display="",b.poweredBy.style.display=""),b.displayed=this.id):(delete b.displayed,d.style.left="-9999px",b.termsOfUse&&b.termsOfUse.style&&(b.termsOfUse.style.display="none",b.termsOfUse.style.left="-9999px",b.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getDiv()},getMapObjectBoundsFromOLBounds:function(a){var b=null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,\n +a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new google.maps.LatLngBounds(new google.maps.LatLng(b.lat,b.lon),new google.maps.LatLng(a.lat,a.lon)));return b},getMapObjectLonLatFromMapObjectPixel:function(a){var b=this.map.getSize(),c=this.getLongitudeFromMapObjectLonLat(this.mapObject.center),d=this.getLatitudeFromMapObjectLonLat(this.mapObject.center),e=this.map.getResolution(),a=new OpenLayers.LonLat(c+(a.x-b.w/2)*e,d-(a.y-b.h/2)*e);\n +this.wrapDateLine&&(a=a.wrapDateLine(this.maxExtent));return this.getMapObjectLonLatFromLonLat(a.lon,a.lat)},getMapObjectPixelFromMapObjectLonLat:function(a){var b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),c=this.map.getResolution(),d=this.map.getExtent();return this.getMapObjectPixelFromXY(1/c*(b-d.left),1/c*(d.top-a))},setMapObjectCenter:function(a,b){if(!1===this.animationEnabled&&b!=this.mapObject.zoom){var c=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,\n +"idle",function(){c.style.visibility=""});c.style.visibility="hidden"}this.mapObject.setOptions({center:a,zoom:b})},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new google.maps.LatLng(c.lat,c.lon)):c=new google.maps.LatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new google.maps.Point(a,b)},destroy:function(){this.repositionListener&&\n +google.maps.event.removeListener(this.repositionListener);this.repositionTimer&&window.clearTimeout(this.repositionTimer);OpenLayers.Layer.Google.prototype.destroy.apply(this,arguments)}};OpenLayers.Format.WPSDescribeProcess=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{wps:"http://www.opengis.net/wps/1.0.0",ows:"http://www.opengis.net/ows/1.1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",defaultPrefix:"wps",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,\n +[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wps:{ProcessDescriptions:function(a,b){b.processDescriptions={};this.readChildNodes(a,b.processDescriptions)},ProcessDescription:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion"),statusSupported:"true"===a.getAttribute("statusSupported"),storeSupported:"true"===a.getAttribute("storeSupported")};this.readChildNodes(a,c);b[c.identifier]=c},DataInputs:function(a,\n +b){b.dataInputs=[];this.readChildNodes(a,b.dataInputs)},ProcessOutputs:function(a,b){b.processOutputs=[];this.readChildNodes(a,b.processOutputs)},Output:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},ComplexOutput:function(a,b){b.complexOutput={};this.readChildNodes(a,b.complexOutput)},Input:function(a,b){var c={maxOccurs:parseInt(a.getAttribute("maxOccurs")),minOccurs:parseInt(a.getAttribute("minOccurs"))};this.readChildNodes(a,c);b.push(c)},BoundingBoxData:function(a,b){b.boundingBoxData=\n +{};this.readChildNodes(a,b.boundingBoxData)},CRS:function(a,b){b.CRSs||(b.CRSs={});b.CRSs[this.getChildValue(a)]=!0},LiteralData:function(a,b){b.literalData={};this.readChildNodes(a,b.literalData)},ComplexData:function(a,b){b.complexData={};this.readChildNodes(a,b.complexData)},Default:function(a,b){b["default"]={};this.readChildNodes(a,b["default"])},Supported:function(a,b){b.supported={};this.readChildNodes(a,b.supported)},Format:function(a,b){var c={};this.readChildNodes(a,c);b.formats||(b.formats=\n +{});b.formats[c.mimeType]=!0},MimeType:function(a,b){b.mimeType=this.getChildValue(a)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSDescribeProcess"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",gmd:"http://www.isotc211.org/2005/gmd",geonet:"http://www.fao.org/geonetwork",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",\n +requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},\n +readers:{csw:{GetRecordsResponse:function(a,b){b.records=[];this.readChildNodes(a,b);var c=this.getAttributeNS(a,"","version");""!=c&&(b.version=c)},RequestId:function(a,b){b.RequestId=this.getChildValue(a)},SearchStatus:function(a,b){b.SearchStatus={};var c=this.getAttributeNS(a,"","timestamp");""!=c&&(b.SearchStatus.timestamp=c)},SearchResults:function(a,b){this.readChildNodes(a,b);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]="numberOfRecordsMatched"==c[e].name||"numberOfRecordsReturned"==\n +c[e].name||"nextRecord"==c[e].name?parseInt(c[e].nodeValue):c[e].nodeValue;b.SearchResults=d},SummaryRecord:function(a,b){var c={type:"SummaryRecord"};this.readChildNodes(a,c);b.records.push(c)},BriefRecord:function(a,b){var c={type:"BriefRecord"};this.readChildNodes(a,c);b.records.push(c)},DCMIRecord:function(a,b){var c={type:"DCMIRecord"};this.readChildNodes(a,c);b.records.push(c)},Record:function(a,b){var c={type:"Record"};this.readChildNodes(a,c);b.records.push(c)},"*":function(a,b){var c=a.localName||\n +a.nodeName.split(":").pop();b[c]=this.getChildValue(a)}},geonet:{info:function(a,b){var c={};this.readChildNodes(a,c);b.gninfo=c}},dc:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);for(var d={},e=a.attributes,f=0,g=e.length;f<g;++f)d[e[f].name]=e[f].nodeValue;d.value=this.getChildValue(a);""!=d.value&&b[c].push(d)}},dct:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);b[c].push(this.getChildValue(a))}},\n +ows:OpenLayers.Util.applyDefaults({BoundingBox:function(a,b){b.bounds&&(b.BoundingBox=[{crs:b.projection,value:[b.bounds.left,b.bounds.bottom,b.bounds.right,b.bounds.top]}],delete b.projection,delete b.bounds);OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows.BoundingBox.apply(this,arguments)}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows)},write:function(a){a=this.writeNode("csw:GetRecords",a);a.setAttribute("xmlns:gmd",this.namespaces.gmd);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[a])},writers:{csw:{GetRecords:function(a){a||(a={});var b=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:a.requestId||this.requestId,resultType:a.resultType||this.resultType,outputFormat:a.outputFormat||this.outputFormat,outputSchema:a.outputSchema||this.outputSchema,startPosition:a.startPosition||this.startPosition,maxRecords:a.maxRecords||this.maxRecords}});if(a.DistributedSearch||this.DistributedSearch)this.writeNode("csw:DistributedSearch",\n +a.DistributedSearch||this.DistributedSearch,b);var c=a.ResponseHandler||this.ResponseHandler;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ResponseHandler",c[d],b);this.writeNode("Query",a.Query||this.Query,b);return b},DistributedSearch:function(a){return this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:a.hopCount}})},ResponseHandler:function(a){return this.createElementNSPlus("csw:ResponseHandler",{value:a.value})},Query:function(a){a||\n +(a={});var b=this.createElementNSPlus("csw:Query",{attributes:{typeNames:a.typeNames||"csw:Record"}}),c=a.ElementName;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ElementName",c[d],b);else this.writeNode("csw:ElementSetName",a.ElementSetName||{value:"summary"},b);a.Constraint&&this.writeNode("csw:Constraint",a.Constraint,b);a.SortBy&&this.writeNode("ogc:SortBy",a.SortBy,b);return b},ElementName:function(a){return this.createElementNSPlus("csw:ElementName",\n +{value:a.value})},ElementSetName:function(a){return this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:a.typeNames},value:a.value})},Constraint:function(a){var b=this.createElementNSPlus("csw:Constraint",{attributes:{version:a.version}});if(a.Filter){var c=new OpenLayers.Format.Filter({version:a.version});b.appendChild(c.write(a.Filter))}else a.CqlText&&(a=this.createElementNSPlus("CqlText",{value:a.CqlText.value}),b.appendChild(a));return b}},ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},\n +CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(a,b,c){this.bounds=a;this.div=OpenLayers.Util.createDiv();this.div.style.overflow="hidden";this.events=new OpenLayers.Events(this,this.div);this.setBorder(b,c)},destroy:function(){this.div=this.bounds=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments)},setBorder:function(a,b){a||(a="red");b||(b=2);this.div.style.border=b+"px solid "+a},draw:function(a,b){OpenLayers.Util.modifyDOMElement(this.div,\n +null,a,b);return this.div},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsBounds(this.bounds,!0,!0));return a},display:function(a){this.div.style.display=a?"":"none"},CLASS_NAME:"OpenLayers.Marker.Box"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:!0,initialize:function(a){a=a||{};!1!==a.extractStyles&&(a.defaultStyle={externalGraphic:OpenLayers.Util.getImageLocation("marker.png"),graphicWidth:21,graphicHeight:25,graphicXOffset:-10.5,graphicYOffset:-12.5});OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){for(var a=a.split("\\n"),b,c=[],d=0;d<a.length-1;d++){var e=a[d].replace(/^\\s*/,"").replace(/\\s*$/,"");if("#"!=e.charAt(0))if(b){for(var e=\n +e.split("\\t"),f=new OpenLayers.Geometry.Point(0,0),g={},h=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null,i=!1,j=0;j<e.length;j++)if(e[j])if("point"==b[j])i=e[j].split(","),f.y=parseFloat(i[0]),f.x=parseFloat(i[1]),i=!0;else if("lat"==b[j])f.y=parseFloat(e[j]),i=!0;else if("lon"==b[j])f.x=parseFloat(e[j]),i=!0;else if("title"==b[j])g.title=e[j];else if("image"==b[j]||"icon"==b[j]&&h)h.externalGraphic=e[j];else if("iconSize"==b[j]&&h){var k=e[j].split(",");h.graphicWidth=\n +parseFloat(k[0]);h.graphicHeight=parseFloat(k[1])}else"iconOffset"==b[j]&&h?(k=e[j].split(","),h.graphicXOffset=parseFloat(k[0]),h.graphicYOffset=parseFloat(k[1])):"description"==b[j]?g.description=e[j]:"overflow"==b[j]?g.overflow=e[j]:g[b[j]]=e[j];i&&(this.internalProjection&&this.externalProjection&&f.transform(this.externalProjection,this.internalProjection),e=new OpenLayers.Feature.Vector(f,g,h),c.push(e))}else b=e.split("\\t")}return c},CLASS_NAME:"OpenLayers.Format.Text"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(a,b){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadText:function(){!this.loaded&&null!=this.location&&(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,\n +success:this.parseData,failure:function(){this.events.triggerEvent("loadend")},scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadText()},parseData:function(a){var a=a.responseText,b={};OpenLayers.Util.extend(b,this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(b.externalProjection=this.projection,b.internalProjection=this.map.getProjectionObject());for(var a=\n +(new OpenLayers.Format.Text(b)).read(a),b=0,c=a.length;b<c;b++){var d={},e=a[b],f,g,h;f=new OpenLayers.LonLat(e.geometry.x,e.geometry.y);e.style.graphicWidth&&e.style.graphicHeight&&(g=new OpenLayers.Size(e.style.graphicWidth,e.style.graphicHeight));void 0!==e.style.graphicXOffset&&void 0!==e.style.graphicYOffset&&(h=new OpenLayers.Pixel(e.style.graphicXOffset,e.style.graphicYOffset));null!=e.style.externalGraphic?d.icon=new OpenLayers.Icon(e.style.externalGraphic,g,h):(d.icon=OpenLayers.Marker.defaultIcon(),\n +null!=g&&d.icon.setSize(g));null!=e.attributes.title&&null!=e.attributes.description&&(d.popupContentHTML="<h2>"+e.attributes.title+"</h2><p>"+e.attributes.description+"</p>");d.overflow=e.attributes.overflow||"auto";d=new OpenLayers.Feature(this,f,d);this.features.push(d);f=d.createMarker();null!=e.attributes.title&&null!=e.attributes.description&&f.events.register("click",d,this.markerClick);this.addMarker(f)}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;\n +this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||this.layer.map.addPopup(this.createPopup());OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:"shiftKey",layerOptions:null,persist:!1,irregular:!1,citeCompliant:!1,angle:null,fixedRadius:!1,feature:null,layer:null,origin:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.Drag.prototype.initialize.apply(this,[a,b,c]);this.options=c?c:{}},setOptions:function(a){OpenLayers.Util.extend(this.options,\n +a);OpenLayers.Util.extend(this,a)},activate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.activate.apply(this,arguments)&&(a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions),this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a),this.map.addLayer(this.layer),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)&&(this.dragging&&this.cancel(),\n +null!=this.layer.map&&(this.layer.destroy(!1),this.feature&&this.feature.destroy()),this.feature=this.layer=null,a=!0);return a},down:function(a){this.fixedRadius=!!this.radius;a=this.layer.getLonLatFromViewPortPx(a.xy);this.origin=new OpenLayers.Geometry.Point(a.lon,a.lat);if(!this.fixedRadius||this.irregular)this.radius=this.map.getResolution();this.persist&&this.clear();this.feature=new OpenLayers.Feature.Vector;this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],\n +{silent:!0});this.layer.drawFeature(this.feature,this.style)},move:function(a){var b=this.layer.getLonLatFromViewPortPx(a.xy),b=new OpenLayers.Geometry.Point(b.lon,b.lat);this.irregular?(a=Math.sqrt(2)*Math.abs(b.y-this.origin.y)/2,this.radius=Math.max(this.map.getResolution()/2,a)):this.fixedRadius?this.origin=b:(this.calculateAngle(b,a),this.radius=Math.max(this.map.getResolution()/2,b.distanceTo(this.origin)));this.modifyGeometry();this.irregular&&(a=b.x-this.origin.x,b=b.y-this.origin.y,this.feature.geometry.resize(1,\n +this.origin,0==b?a/(this.radius*Math.sqrt(2)):a/b),this.feature.geometry.move(a/2,b/2));this.layer.drawFeature(this.feature,this.style)},up:function(a){this.finalize();this.start==this.last&&this.callback("done",[a.xy])},out:function(){this.finalize()},createGeometry:function(){this.angle=Math.PI*(1/this.sides-0.5);this.snapAngle&&(this.angle+=this.snapAngle*(Math.PI/180));this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle)},modifyGeometry:function(){var a,\n +b,c=this.feature.geometry.components[0];c.components.length!=this.sides+1&&(this.createGeometry(),c=this.feature.geometry.components[0]);for(var d=0;d<this.sides;++d)b=c.components[d],a=this.angle+2*d*Math.PI/this.sides,b.x=this.origin.x+this.radius*Math.cos(a),b.y=this.origin.y+this.radius*Math.sin(a),b.clearBounds()},calculateAngle:function(a,b){var c=Math.atan2(a.y-this.origin.y,a.x-this.origin.x);if(this.snapAngle&&this.snapToggle&&!b[this.snapToggle]){var d=Math.PI/180*this.snapAngle;this.angle=\n +Math.round(c/d)*d}else this.angle=c},cancel:function(){this.callback("cancel",null);this.finalize()},finalize:function(){this.origin=null;this.radius=this.options.radius},clear:function(){this.layer&&(this.layer.renderer.clear(),this.layer.destroyFeatures())},callback:function(a){this.callbacks[a]&&this.callbacks[a].apply(this.control,[this.feature.geometry.clone()]);!this.persist&&("done"==a||"cancel"==a)&&this.clear()},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{clearOnDeactivate:!1,layers:null,callbacks:null,selectionSymbolizer:{Polygon:{fillColor:"#FF0000",stroke:!1},Line:{strokeColor:"#FF0000",strokeWidth:2},Point:{graphicName:"square",fillColor:"#FF0000",pointRadius:5}},layerOptions:null,handlerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},\n +this.callbacks);this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:!1,tileOptions:{maxGetUrlLength:2048}});this.sketchStyle&&(this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})}));this.handler=new a(this,this.callbacks,this.handlerOptions)},destroy:function(){for(var a in this.layerCache)delete this.layerCache[a];\n +for(a in this.wfsCache)delete this.wfsCache[a];OpenLayers.Control.prototype.destroy.apply(this,arguments)},coupleLayerVisiblity:function(a){this.setVisibility(a.object.getVisibility())},createSelectionLayer:function(a){var b;if(this.layerCache[a.id])b=this.layerCache[a.id];else{b=new OpenLayers.Layer.WMS(a.name,a.url,a.params,OpenLayers.Util.applyDefaults(this.layerOptions,a.getOptions()));this.layerCache[a.id]=b;if(!1===this.layerOptions.displayInLayerSwitcher)a.events.on({visibilitychanged:this.coupleLayerVisiblity,\n +scope:b});this.map.addLayer(b)}return b},createSLD:function(a,b,c){for(var d={version:"1.0.0",namedLayers:{}},e=(""+a.params.LAYERS).split(","),f=0,g=e.length;f<g;f++){var h=e[f];d.namedLayers[h]={name:h,userStyles:[]};var i=this.selectionSymbolizer,j=c[f];0<=j.type.indexOf("Polygon")?i={Polygon:this.selectionSymbolizer.Polygon}:0<=j.type.indexOf("LineString")?i={Line:this.selectionSymbolizer.Line}:0<=j.type.indexOf("Point")&&(i={Point:this.selectionSymbolizer.Point});d.namedLayers[h].userStyles.push({name:"default",\n +rules:[new OpenLayers.Rule({symbolizer:i,filter:b[f],maxScaleDenominator:a.options.minScale})]})}return(new OpenLayers.Format.SLD({srsName:this.map.getProjection()})).write(d)},parseDescribeLayer:function(a){var b=new OpenLayers.Format.WMSDescribeLayer,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;for(var a=b.read(c),b=[],c=null,d=0,e=a.length;d<e;d++)"WFS"==a[d].owsType&&(b.push(a[d].typeName),c=a[d].owsURL);OpenLayers.Request.GET({url:c,params:{SERVICE:"WFS",TYPENAME:b.toString(),REQUEST:"DescribeFeatureType",\n +VERSION:"1.0.0"},callback:function(a){var b=new OpenLayers.Format.WFSDescribeFeatureType,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;this.control.wfsCache[this.layer.id]=b.read(c);this.control._queue&&this.control.applySelection()},scope:this})},getGeometryAttributes:function(a){for(var b=[],a=this.wfsCache[a.id],c=0,d=a.featureTypes.length;c<d;c++)for(var e=a.featureTypes[c].properties,f=0,g=e.length;f<g;f++){var h=e[f],i=h.type;(0<=i.indexOf("LineString")||0<=i.indexOf("GeometryAssociationType")||\n +0<=i.indexOf("GeometryPropertyType")||0<=i.indexOf("Point")||0<=i.indexOf("Polygon"))&&b.push(h)}return b},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];d&&!this.wfsCache[d.id]&&OpenLayers.Request.GET({url:d.url,params:{SERVICE:"WMS",VERSION:d.params.VERSION,LAYERS:d.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:d,control:this}})}return a},deactivate:function(){var a=\n +OpenLayers.Control.prototype.deactivate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];if(d&&!0===this.clearOnDeactivate){var e=this.layerCache,f=e[d.id];f&&(d.events.un({visibilitychanged:this.coupleLayerVisiblity,scope:f}),f.destroy(),delete e[d.id])}}return a},setLayers:function(a){this.active?(this.deactivate(),this.layers=a,this.activate()):this.layers=a},createFilter:function(a,b){var c=null;this.handler instanceof OpenLayers.Handler.RegularPolygon?c=!0===this.handler.irregular?\n +new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:a.name,value:b.getBounds()}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Polygon?c=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Path?c=0<=a.type.indexOf("Point")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,\n +property:a.name,distance:0.01*this.map.getExtent().getWidth(),distanceUnits:this.map.getUnits(),value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Click&&(c=0<=a.type.indexOf("Polygon")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:a.name,distance:0.01*this.map.getExtent().getWidth(),\n +distanceUnits:this.map.getUnits(),value:b}));return c},select:function(a){this._queue=function(){for(var b=0,c=this.layers.length;b<c;b++){for(var d=this.layers[b],e=this.getGeometryAttributes(d),f=[],g=0,h=e.length;g<h;g++){var i=e[g];if(null!==i){if(!(a instanceof OpenLayers.Geometry)){var j=this.map.getLonLatFromPixel(a.xy);a=new OpenLayers.Geometry.Point(j.lon,j.lat)}i=this.createFilter(i,a);null!==i&&f.push(i)}}g=this.createSelectionLayer(d);e=this.createSLD(d,f,e);this.events.triggerEvent("selected",\n +{layer:d,filters:f});g.mergeNewParams({SLD_BODY:e});delete this._queue}};this.applySelection()},applySelection:function(){for(var a=!0,b=0,c=this.layers.length;b<c;b++)if(!this.wfsCache[this.layers[b].id]){a=!1;break}a&&this._queue.call(this)},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.element=OpenLayers.Util.getElement(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.element=document.createElement("div"),this.div.appendChild(this.element));this.map.events.register("moveend",this,this.updateScale);this.updateScale();return this.div},updateScale:function(){var a;\n +if(!0===this.geodesic){if(!this.map.getUnits())return;a=OpenLayers.INCHES_PER_UNIT;a=(this.map.getGeodesicPixelSize().w||1.0E-6)*a.km*OpenLayers.DOTS_PER_INCH}else a=this.map.getScale();a&&(a=9500<=a&&95E4>=a?Math.round(a/1E3)+"K":95E4<=a?Math.round(a/1E6)+"M":Math.round(a),this.element.innerHTML=OpenLayers.i18n("Scale = 1 : ${scaleDenom}",{scaleDenom:a}))},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,useHttpTile:!1,singleTile:!1,useOverlay:!1,useAsyncOverlay:!0,TILE_PARAMS:{operation:"GETTILEIMAGE",version:"1.2.0"},SINGLE_TILE_PARAMS:{operation:"GETMAPIMAGE",format:"PNG",locale:"en",clip:"1",version:"1.0.0"},OVERLAY_PARAMS:{operation:"GETDYNAMICMAPOVERLAYIMAGE",format:"PNG",locale:"en",clip:"1",version:"2.0.0"},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:"png",querystring:null},defaultSize:new OpenLayers.Size(300,\n +300),tileOriginCorner:"tl",initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.transparent&&!0!=this.transparent;d&&null!=d.useOverlay&&(this.useOverlay=d.useOverlay);this.singleTile?this.useOverlay?(OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS),this.useAsyncOverlay||(this.params.version="1.0.0")):OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS):(this.useHttpTile?\n +OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS):OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS),this.setTileSize(this.defaultSize))},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var b;b=a.getCenterLonLat();var c=this.map.getSize();this.singleTile?(a={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:c.h*this.ratio,setdisplaywidth:c.w*\n +this.ratio,setviewcenterx:b.lon,setviewcentery:b.lat,setviewscale:this.map.getScale()},this.useOverlay&&!this.useAsyncOverlay&&(b={},b=OpenLayers.Util.extend(b,a),b.operation="GETVISIBLEMAPEXTENT",b.version="1.0.0",b.session=this.params.session,b.mapName=this.params.mapName,b.format="text/xml",b=this.getFullRequestString(b),OpenLayers.Request.GET({url:b,async:!1})),b=this.getFullRequestString(a)):(c=this.map.getResolution(),b=Math.floor((a.left-this.maxExtent.left)/c),b=Math.round(b/this.tileSize.w),\n +a=Math.floor((this.maxExtent.top-a.top)/c),a=Math.round(a/this.tileSize.h),b=this.useHttpTile?this.getImageFilePath({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}):this.getFullRequestString({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}));return b},getFullRequestString:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d=c,e=OpenLayers.Util.extend({},this.params),e=OpenLayers.Util.extend(e,a),\n +f=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),g;for(g in e)g.toUpperCase()in f&&delete e[g];e=OpenLayers.Util.getParameterString(e);e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},getImageFilePath:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d="",e="";0>a.tilerow&&(d="-");d=0==a.tilerow?d+"0":d+Math.floor(Math.abs(a.tilerow/this.params.tileRowsPerFolder))*\n +this.params.tileRowsPerFolder;0>a.tilecol&&(e="-");e=0==a.tilecol?e+"0":e+Math.floor(Math.abs(a.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;d="/S"+Math.floor(a.scaleindex)+"/"+this.params.basemaplayergroupname+"/R"+d+"/C"+e+"/"+a.tilerow%this.params.tileRowsPerFolder+"_"+a.tilecol%this.params.tileColumnsPerFolder+"."+this.params.format;this.params.querystring&&(d+="?"+this.params.querystring);return c+d},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=\n +c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{handlerOptions:null,callbacks:null,displaySystem:"metric",geodesic:!1,displaySystemUnits:{geographic:["dd"],english:["mi","ft","in"],metric:["km","m"]},partialDelay:300,delayedTrigger:null,persist:!1,immediate:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);var c={done:this.measureComplete,point:this.measurePartial};this.immediate&&(c.modify=this.measureImmediate);this.callbacks=OpenLayers.Util.extend(c,\n +this.callbacks);this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new a(this,this.callbacks,this.handlerOptions)},deactivate:function(){this.cancelDelay();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},cancel:function(){this.cancelDelay();this.handler.cancel()},setImmediate:function(a){(this.immediate=a)?this.callbacks.modify=this.measureImmediate:delete this.callbacks.modify},updateHandler:function(a,b){var c=this.active;c&&\n +this.deactivate();this.handler=new a(this,this.callbacks,b);c&&this.activate()},measureComplete:function(a){this.cancelDelay();this.measure(a,"measure")},measurePartial:function(a,b){this.cancelDelay();b=b.clone();this.handler.freehandMode(this.handler.evt)?this.measure(b,"measurepartial"):this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.delayedTrigger=null;this.measure(b,"measurepartial")},this),this.partialDelay)},measureImmediate:function(a,b,c){c&&!this.handler.freehandMode(this.handler.evt)&&\n +(this.cancelDelay(),this.measure(b.geometry,"measurepartial"))},cancelDelay:function(){null!==this.delayedTrigger&&(window.clearTimeout(this.delayedTrigger),this.delayedTrigger=null)},measure:function(a,b){var c,d;-1<a.CLASS_NAME.indexOf("LineString")?(c=this.getBestLength(a),d=1):(c=this.getBestArea(a),d=2);this.events.triggerEvent(b,{measure:c[0],units:c[1],order:d,geometry:a})},getBestArea:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getArea(a,\n +c),1<d);++e);return[d,c]},getArea:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicArea(this.map.getProjectionObject()),d="m"):(c=a.getArea(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=Math.pow(OpenLayers.INCHES_PER_UNIT[d]/e,2));return c},getBestLength:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getLength(a,c),1<d);++e);return[d,c]},getLength:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicLength(this.map.getProjectionObject()),\n +d="m"):(c=a.getLength(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=OpenLayers.INCHES_PER_UNIT[d]/e);return c},CLASS_NAME:"OpenLayers.Control.Measure"});OpenLayers.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_wmc_SRS:function(a,b){var c=this.getChildValue(b);"object"!=typeof a.projections&&(a.projections={});for(var c=c.split(/ +/),d=0,e=c.length;d<e;d++)a.projections[c[d]]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,\n +[a]);if(a.srs){var c=[],d;for(d in a.srs)c.push(d);b.appendChild(this.createElementDefaultNS("SRS",c.join(" ")))}b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a))},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=\n +1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,\n +arguments)},setBackgroundColor:function(){},setBorder:function(){},setOpacity:function(){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=\n +OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+\n +"_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,i=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,j=isNaN(c.size.h)?this.size.h-(f+\n +h):c.size.h;d.div.style.width=(0>i?0:i)+"px";d.div.style.height=(0>j?0:j)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,\n +50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",\n +"auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,\n +0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,\n +21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,\n +0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");\n +OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Tile.Image.IFrame={useIFrame:null,draw:function(){if(OpenLayers.Tile.Image.prototype.shouldDraw.call(this)){var a=this.layer.getURL(this.bounds),b=this.useIFrame;this.useIFrame=null!==this.maxGetUrlLength&&!this.layer.async&&a.length>this.maxGetUrlLength;a=b&&!this.useIFrame;b=!b&&this.useIFrame;if(a||b)this.imgDiv&&this.imgDiv.parentNode===this.frame&&this.frame.removeChild(this.imgDiv),this.imgDiv=null,a?(this.blankImageUrl=this._blankImageUrl,this.frame.removeChild(this.frame.firstChild)):\n +(this._blankImageUrl=this.blankImageUrl,this.blankImageUrl="about:blank")}return OpenLayers.Tile.Image.prototype.draw.apply(this,arguments)},getImage:function(){if(!0===this.useIFrame){if(!this.frame.childNodes.length){var a=document.createElement("div"),b=a.style;b.position="absolute";b.width="100%";b.height="100%";b.zIndex=1;b.backgroundImage="url("+this._blankImageUrl+")";this.frame.appendChild(a)}a=this.id+"_iFrame";9>parseFloat(navigator.appVersion.split("MSIE")[1])?(b=document.createElement(\'<iframe name="\'+\n +a+\'">\'),b.style.backgroundColor="#FFFFFF",b.style.filter="chroma(color=#FFFFFF)"):(b=document.createElement("iframe"),b.style.backgroundColor="transparent",b.name=a);b.scrolling="no";b.marginWidth="0px";b.marginHeight="0px";b.frameBorder="0";b.style.position="absolute";b.style.width="100%";b.style.height="100%";1>this.layer.opacity&&OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,this.layer.opacity);this.frame.appendChild(b);return this.imgDiv=b}return OpenLayers.Tile.Image.prototype.getImage.apply(this,\n +arguments)},createRequestForm:function(){var a=document.createElement("form");a.method="POST";var b=this.layer.params._OLSALT,b=(b?b+"_":"")+this.bounds.toBBOX();a.action=OpenLayers.Util.urlAppend(this.layer.url,b);a.target=this.id+"_iFrame";this.layer.getImageSize();var b=OpenLayers.Util.getParameters(this.url),c,d;for(d in b)c=document.createElement("input"),c.type="hidden",c.name=d,c.value=b[d],a.appendChild(c);return a},setImgSrc:function(a){if(!0===this.useIFrame)if(a){var b=this.createRequestForm();\n +this.frame.appendChild(b);b.submit();this.frame.removeChild(b)}else this.imgDiv.parentNode===this.frame&&(this.frame.removeChild(this.imgDiv),this.imgDiv=null);else OpenLayers.Tile.Image.prototype.setImgSrc.apply(this,arguments)},onImageLoad:function(){OpenLayers.Tile.Image.prototype.onImageLoad.apply(this,arguments);!0===this.useIFrame&&(this.imgDiv.style.opacity=1,this.frame.style.opacity=this.layer.opacity)},createBackBuffer:function(){var a;!1===this.useIFrame&&(a=OpenLayers.Tile.Image.prototype.createBackBuffer.call(this));\n +return a}};OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,\n +[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{gml:OpenLayers.Util.applyDefaults({name:function(a,b){b.name=this.getChildValue(a)},TimePeriod:function(a,b){b.timePeriod={};this.readChildNodes(a,b.timePeriod)},beginPosition:function(a,b){b.beginPosition=this.getChildValue(a)},endPosition:function(a,b){b.endPosition=this.getChildValue(a)}},OpenLayers.Format.GML.v3.prototype.readers.gml),sos:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,\n +b){b.contents={};this.readChildNodes(a,b.contents)},ObservationOfferingList:function(a,b){b.offeringList={};this.readChildNodes(a,b.offeringList)},ObservationOffering:function(a,b){var c=this.getAttributeNS(a,this.namespaces.gml,"id");b[c]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(a,b[c])},time:function(a,b){b.time={};this.readChildNodes(a,b.time)},procedure:function(a,b){b.procedures.push(this.getAttributeNS(a,\n +this.namespaces.xlink,"href"))},observedProperty:function(a,b){b.observedProperties.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},featureOfInterest:function(a,b){b.featureOfInterestIds.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},responseFormat:function(a,b){b.responseFormats.push(this.getChildValue(a))},resultModel:function(a,b){b.resultModels.push(this.getChildValue(a))},responseMode:function(a,b){b.responseModes.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},\n +CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;OpenLayers.Event.isMultiTouch(a)?(this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown):(this.started=!1,this.last=this.start=null);OpenLayers.Event.stop(a);return b},touchmove:function(a){if(this.started&&OpenLayers.Event.isMultiTouch(a)){this.pinching=\n +!0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}return!0},touchend:function(a){this.started&&(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null);return!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=\n +!1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0],a=a[1];return Math.sqrt(Math.pow(b.clientX-a.clientX,2)+Math.pow(b.clientY-a.clientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.Navigation,new OpenLayers.Control.ZoomBox])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.NavToolbar"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:!1,interval:0,timer:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(!0===this.layer.visibility&&this.start(),this.layer.events.on({visibilitychanged:this.reset,scope:this}));return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.stop();return a},reset:function(){!0===this.layer.visibility?this.start():this.stop()},start:function(){this.interval&&("number"===\n +typeof this.interval&&0<this.interval)&&(this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval))},refresh:function(){this.layer&&(this.layer.refresh&&"function"==typeof this.layer.refresh)&&this.layer.refresh({force:this.force})},stop:function(){null!==this.timer&&(window.clearInterval(this.timer),this.timer=null)},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:!0,initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"jpg"==this.params.FORMAT&&\n +(this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.projection.getCode().split(":"),b=b[b.length-1],c=this.getImageSize(),a={BBOX:a.toBBOX(),SIZE:c.w+","+c.h,F:"image",BBOXSR:b,IMAGESR:b};if(this.layerDefs){var b=[],d;for(d in this.layerDefs)this.layerDefs.hasOwnProperty(d)&&\n +this.layerDefs[d]&&(b.push(d),b.push(":"),b.push(this.layerDefs[d]),b.push(";"));0<b.length&&(a.LAYERDEFS=b.join(""))}return this.getFullRequestString(a)},setLayerFilter:function(a,b){this.layerDefs||(this.layerDefs={});b?this.layerDefs[a]=b:delete this.layerDefs[a]},clearLayerFilter:function(a){a?delete this.layerDefs[a]:delete this.layerDefs},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(a){this.regExes={typeStr:/^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,spaces:/\\s+/,parenComma:/\\)\\s*,\\s*\\(/,doubleParenComma:/\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,trimParens:/^\\s*\\(?(.*?)\\)?\\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){var b,c,a=a.replace(/[\\n\\r]/g," ");if(c=this.regExes.typeStr.exec(a))if(a=c[1].toLowerCase(),c=c[2],this.parse[a]&&(b=this.parse[a].apply(this,[c])),this.internalProjection&&this.externalProjection)if(b&&\n +"OpenLayers.Feature.Vector"==b.CLASS_NAME)b.geometry.transform(this.externalProjection,this.internalProjection);else if(b&&"geometrycollection"!=a&&"object"==typeof b){a=0;for(c=b.length;a<c;a++)b[a].geometry.transform(this.externalProjection,this.internalProjection)}return b},write:function(a){var b,c;a.constructor==Array?c=!0:(a=[a],c=!1);var d=[];c&&d.push("GEOMETRYCOLLECTION(");for(var e=0,f=a.length;e<f;++e)c&&0<e&&d.push(","),b=a[e].geometry,d.push(this.extractGeometry(b));c&&d.push(")");return d.join("")},\n +extractGeometry:function(a){var b=a.CLASS_NAME.split(".")[2].toLowerCase();if(!this.extract[b])return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return("collection"==b?"GEOMETRYCOLLECTION":b.toUpperCase())+"("+this.extract[b].apply(this,[a])+")"},extract:{point:function(a){return a.x+" "+a.y},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.point.apply(this,[a.components[c]])+\n +")");return b.join(",")},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b.join(",")},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},multipolygon:function(a){for(var b=\n +[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.polygon.apply(this,[a.components[c]])+")");return b.join(",")},collection:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extractGeometry.apply(this,[a.components[c]]));return b.join(",")}},parse:{point:function(a){a=OpenLayers.String.trim(a).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[0],a[1]))},multipoint:function(a){for(var b=OpenLayers.String.trim(a).split(","),\n +c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.point.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(c))},linestring:function(a){for(var a=OpenLayers.String.trim(a).split(","),b=[],c=0,d=a.length;c<d;++c)b.push(this.parse.point.apply(this,[a[c]]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(b))},multilinestring:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.parenComma),\n +c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.linestring.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(c))},polygon:function(a){for(var b,a=OpenLayers.String.trim(a).split(this.regExes.parenComma),c=[],d=0,e=a.length;d<e;++d)b=a[d].replace(this.regExes.trimParens,"$1"),b=this.parse.linestring.apply(this,[b]).geometry,b=new OpenLayers.Geometry.LinearRing(b.components),c.push(b);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(c))},\n +multipolygon:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.doubleParenComma),c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.polygon.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(c))},geometrycollection:function(a){for(var a=a.replace(/,\\s*([A-Za-z])/g,"|$1"),a=OpenLayers.String.trim(a).split("|"),b=[],c=0,d=a.length;c<d;++c)b.push(OpenLayers.Format.WKT.prototype.read.apply(this,[a[c]]));\n +return b}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:!1,px:null,timerId:null,mousemove:function(a){this.passesTolerance(a.xy)&&(this.clearTimer(),this.callback("move",[a]),this.px=a.xy,a=OpenLayers.Util.extend({},a),this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay));return!this.stopMove},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.clearTimer(),this.callback("move",[a]));return!0},\n +passesTolerance:function(a){var b=!0;this.pixelTolerance&&this.px&&Math.sqrt(Math.pow(this.px.x-a.x,2)+Math.pow(this.px.y-a.y,2))<this.pixelTolerance&&(b=!1);return b},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null)},delayedCall:function(a){this.callback("pause",[a])},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:!1,click:!0,single:!0,clickout:!0,toggle:!1,clickTolerance:5,hover:!1,box:!1,maxFeatures:10,features:null,hoverFeature:null,handlerOptions:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,initialize:function(a){a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.features={};this.handlers=\n +{};this.click&&(this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{}));this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"})));this.hover&&(this.handlers.hover=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{delay:250,pixelTolerance:2})))},\n +activate:function(){if(!this.active)for(var a in this.handlers)this.handlers[a].activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){if(this.active)for(var a in this.handlers)this.handlers[a].deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},selectClick:function(a){var b=this.pixelToBounds(a.xy);this.setModifiers(a);this.request(b,{single:this.single})},selectBox:function(a){var b;if(a instanceof OpenLayers.Bounds)b=\n +this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);else{if(this.click)return;b=this.pixelToBounds(a)}this.setModifiers(this.handlers.box.dragHandler.evt);this.request(b)},selectHover:function(a){this.request(this.pixelToBounds(a.xy),{single:!0,hover:!0})},cancelHover:function(){this.hoverResponse&&(this.protocol.abort(this.hoverResponse),this.hoverResponse=null,OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +"olCursorWait"))},request:function(a,b){var b=b||{},c=new OpenLayers.Filter.Spatial({type:this.filterType,value:a});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");c=this.protocol.read({maxFeatures:!0==b.single?this.maxFeatures:void 0,filter:c,callback:function(c){c.success()&&(c.features.length?!0==b.single?this.selectBestFeature(c.features,a.getCenterLonLat(),b):this.select(c.features):b.hover?this.hoverSelect():(this.events.triggerEvent("clickout"),this.clickout&&this.unselectAll()));\n +OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},scope:this});!0==b.hover&&(this.hoverResponse=c)},selectBestFeature:function(a,b,c){c= + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAs=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="11" aka="AAAAAAAAAAs="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +c||{};if(a.length){for(var b=new OpenLayers.Geometry.Point(b.lon,b.lat),d,e,f,g=Number.MAX_VALUE,h=0;h<a.length&&!(d=a[h],d.geometry&&(f=b.distanceTo(d.geometry,{edge:!1}),f<g&&(g=f,e=d,0==g)));++h);!0==c.hover?this.hoverSelect(e):this.select(e||a)}},setModifiers:function(a){this.modifiers={multiple:this.multiple||this.multipleKey&&a[this.multipleKey],\n +toggle:this.toggle||this.toggleKey&&a[this.toggleKey]}},select:function(a){!this.modifiers.multiple&&!this.modifiers.toggle&&this.unselectAll();OpenLayers.Util.isArray(a)||(a=[a]);var b=this.events.triggerEvent("beforefeaturesselected",{features:a});if(!1!==b){for(var c=[],d,e=0,f=a.length;e<f;++e)d=a[e],this.features[d.fid||d.id]?this.modifiers.toggle&&this.unselect(this.features[d.fid||d.id]):(b=this.events.triggerEvent("beforefeatureselected",{feature:d}),!1!==b&&(this.features[d.fid||d.id]=d,\n +c.push(d),this.events.triggerEvent("featureselected",{feature:d})));this.events.triggerEvent("featuresselected",{features:c})}},hoverSelect:function(a){var b=a?a.fid||a.id:null,c=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;c&&c!=b&&(this.events.triggerEvent("outfeature",{feature:this.hoverFeature}),this.hoverFeature=null);b&&b!=c&&(this.events.triggerEvent("hoverfeature",{feature:a}),this.hoverFeature=a)},unselect:function(a){delete this.features[a.fid||a.id];this.events.triggerEvent("featureunselected",\n +{feature:a})},unselectAll:function(){for(var a in this.features)this.unselect(this.features[a])},setMap:function(a){for(var b in this.handlers)this.handlers[b].setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},pixelToBounds:function(a){var b=a.add(-this.clickTolerance/2,this.clickTolerance/2),a=a.add(this.clickTolerance/2,-this.clickTolerance/2),b=this.map.getLonLatFromPixel(b),a=this.map.getLonLatFromPixel(a);return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\\\%");a=a.replace(/\\\\\\\\\\.(\\*)?/g,function(a,b){return b?a:"\\\\\\\\_"});a=a.replace(/\\\\\\\\\\.\\*/g,"\\\\\\\\%");a=a.replace(/(\\\\)?\\.(\\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\\\)?\\.\\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\\\\./g,".");return a=a.replace(/(\\\\)?\\\\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=\n +"lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){var d=d||{},e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&\n +d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+\n +c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND){e=0;for(f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d)}else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,element:null,prefix:"",separator:", ",suffix:"",numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.events.register("mousemove",this,this.redraw),this.map.events.register("mouseout",this,this.reset),\n +this.redraw(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.map.events.unregister("mousemove",this,this.redraw),this.map.events.unregister("mouseout",this,this.reset),this.element.innerHTML="",!0):!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.div.left="",this.div.top="",this.element=this.div);return this.div},redraw:function(a){var b;if(null==a)this.reset();else if(null==this.lastXy||Math.abs(a.xy.x-\n +this.lastXy.x)>this.granularity||Math.abs(a.xy.y-this.lastXy.y)>this.granularity)this.lastXy=a.xy;else if(b=this.map.getLonLatFromPixel(a.xy))this.displayProjection&&b.transform(this.map.getProjectionObject(),this.displayProjection),this.lastXy=a.xy,a=this.formatOutput(b),a!=this.element.innerHTML&&(this.element.innerHTML=a)},reset:function(){null!=this.emptyString&&(this.element.innerHTML=this.emptyString)},formatOutput:function(a){var b=parseInt(this.numDigits);return this.prefix+a.lon.toFixed(b)+\n +this.separator+a.lat.toFixed(b)+this.suffix},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Geolocate=OpenLayers.Class(OpenLayers.Control,{geolocation:navigator.geolocation,bind:!0,watch:!1,geolocationOptions:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return!this.geolocation?(this.events.triggerEvent("locationuncapable"),!1):OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.watch?this.watchId=this.geolocation.watchPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,\n +this),this.geolocationOptions):this.getCurrentLocation(),!0):!1},deactivate:function(){this.active&&null!==this.watchId&&this.geolocation.clearWatch(this.watchId);return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},geolocate:function(a){var b=(new OpenLayers.LonLat(a.coords.longitude,a.coords.latitude)).transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());this.bind&&this.map.setCenter(b);this.events.triggerEvent("locationupdated",{position:a,point:new OpenLayers.Geometry.Point(b.lon,\n +b.lat)})},getCurrentLocation:function(){if(!this.active||this.watch)return!1;this.geolocation.getCurrentPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);return!0},failure:function(a){this.events.triggerEvent("locationfailed",{error:a})},CLASS_NAME:"OpenLayers.Control.Geolocate"});OpenLayers.Tile.UTFGrid=OpenLayers.Class(OpenLayers.Tile,{url:null,utfgridResolution:2,json:null,format:null,destroy:function(){this.clear();OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(a)if(this.isLoading?(this.abortLoading(),this.events.triggerEvent("reload")):(this.isLoading=!0,this.events.triggerEvent("loadstart")),this.url=this.layer.getURL(this.bounds),this.layer.useJSONP){var b=new OpenLayers.Protocol.Script({url:this.url,\n +callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");this.json=a.data},scope:this});b.read();this.request=b}else this.request=OpenLayers.Request.GET({url:this.url,callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");a.status===200&&this.parseData(a.responseText)},scope:this});else this.unload();return a},abortLoading:function(){this.request&&(this.request.abort(),delete this.request);this.isLoading=!1},getFeatureInfo:function(a,b){var c=null;if(this.json){var d=\n +this.getFeatureId(a,b);null!==d&&(c={id:d,data:this.json.data[d]})}return c},getFeatureId:function(a,b){var c=null;if(this.json){var d=this.utfgridResolution,d=this.indexFromCharCode(this.json.grid[Math.floor(b/d)].charCodeAt(Math.floor(a/d))),e=this.json.keys;!isNaN(d)&&d in e&&(c=e[d])}return c},indexFromCharCode:function(a){93<=a&&a--;35<=a&&a--;return a-32},parseData:function(a){this.format||(this.format=new OpenLayers.Format.JSON);this.json=this.format.read(a)},clear:function(){this.json=null},\n +CLASS_NAME:"OpenLayers.Tile.UTFGrid"});OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:!0,clearOnDeactivate:!1,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.registry=OpenLayers.Util.extend({moveend:this.getState},this.registry);a={trigger:OpenLayers.Function.bind(this.previousTrigger,\n +this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(a,this.previousOptions);this.previous=new OpenLayers.Control.Button(a);a={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(a,this.nextOptions);this.next=new OpenLayers.Control.Button(a);this.clear()},onPreviousChange:function(a){a&&!this.previous.active?this.previous.activate():!a&&this.previous.active&&this.previous.deactivate()},\n +onNextChange:function(a){a&&!this.next.active?this.next.activate():!a&&this.next.active&&this.next.deactivate()},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var a in this)this[a]=null},setMap:function(a){this.map=a;this.next.setMap(a);this.previous.setMap(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw()},previousTrigger:function(){var a=this.previousStack.shift(),\n +b=this.previousStack.shift();void 0!=b?(this.nextStack.unshift(a),this.previousStack.unshift(b),this.restoring=!0,this.restore(b),this.restoring=!1,this.onNextChange(this.nextStack[0],this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1)):this.previousStack.unshift(a);return b},nextTrigger:function(){var a=this.nextStack.shift();void 0!=a&&(this.previousStack.unshift(a),this.restoring=!0,this.restore(a),this.restoring=!1,this.onNextChange(this.nextStack[0],\n +this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1));return a},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate()},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units}},restore:function(a){var b,c;if(this.map.getProjectionObject()==\n +a.projection)c=this.map.getZoomForResolution(a.resolution),b=a.center;else{b=a.center.clone();b.transform(a.projection,this.map.getProjectionObject());c=a.units;var d=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;c=this.map.getZoomForResolution((c&&d?OpenLayers.INCHES_PER_UNIT[c]/OpenLayers.INCHES_PER_UNIT[d]:1)*a.resolution)}this.map.setCenter(b,c)},setListeners:function(){this.listeners={};for(var a in this.registry)this.listeners[a]=OpenLayers.Function.bind(function(){if(!this.restoring){this.previousStack.unshift(this.registry[a].apply(this,\n +arguments));if(1<this.previousStack.length)this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);this.previousStack.length>this.limit+1&&this.previousStack.pop();0<this.nextStack.length&&(this.nextStack=[],this.onNextChange(null,0))}return!0},this)},activate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.activate.apply(this)){null==this.listeners&&this.setListeners();for(var b in this.listeners)this.map.events.register(b,this,this.listeners[b]);a=!0;0==this.previousStack.length&&\n +this.initStack()}return a},initStack:function(){this.map.getCenter()&&this.listeners.moveend()},deactivate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.deactivate.apply(this)){for(var b in this.listeners)this.map.events.unregister(b,this,this.listeners[b]);this.clearOnDeactivate&&this.clear();a=!0}return a},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=\n +function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});\n +b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c=new OpenLayers.Protocol.Response({reqFeatures:a,\n +requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,\n +d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);\n +return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=\n +a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;o.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);n=n&&a.success();f++;f>=m&&b.callback&&(o.code=n?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[o]))}var b=OpenLayers.Util.applyDefaults(b,this.options),e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,i,j=[],k=0,l=a.length;k<l;++k)if(h=\n +a[k],i=g[h.state])i.push(h),j.push(h);var m=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,n=!0,o=new OpenLayers.Protocol.Response({reqFeatures:j});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(k=h.length-1;0<=k;--k)e.push(this.update(h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];\n +for(k=h.length-1;0<=k;--k)e.push(this["delete"](h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:!1,resolution:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,\n +scope:this}));return a},cacheFeatures:function(a){var b=!0;this.clustering||(this.clearCache(),this.features=a.features,this.cluster(),b=!1);return b},clearCache:function(){this.features=null},cluster:function(a){if((!a||a.zoomChanged)&&this.features)if(a=this.layer.map.getResolution(),a!=this.resolution||!this.clustersExist()){this.resolution=a;for(var a=[],b,c,d,e=0;e<this.features.length;++e)if(b=this.features[e],b.geometry){c=!1;for(var f=a.length-1;0<=f;--f)if(d=a[f],this.shouldCluster(d,b)){this.addToCluster(d,\n +b);c=!0;break}c||a.push(this.createCluster(this.features[e]))}this.layer.removeAllFeatures();if(0<a.length){if(1<this.threshold){b=a.slice();a=[];e=0;for(d=b.length;e<d;++e)c=b[e],c.attributes.count<this.threshold?Array.prototype.push.apply(a,c.cluster):a.push(c)}this.clustering=!0;this.layer.addFeatures(a);this.clustering=!1}this.clusters=a}},clustersExist:function(){var a=!1;if(this.clusters&&0<this.clusters.length&&this.clusters.length==this.layer.features.length)for(var a=!0,b=0;b<this.clusters.length;++b)if(this.clusters[b]!=\n +this.layer.features[b]){a=!1;break}return a},shouldCluster:function(a,b){var c=a.geometry.getBounds().getCenterLonLat(),d=b.geometry.getBounds().getCenterLonLat();return Math.sqrt(Math.pow(c.lon-d.lon,2)+Math.pow(c.lat-d.lat,2))/this.resolution<=this.distance},addToCluster:function(a,b){a.cluster.push(b);a.attributes.count+=1},createCluster:function(a){var b=a.geometry.getBounds().getCenterLonLat(),b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.lon,b.lat),{count:1});b.cluster=[a];\n +return b},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);a&&(this.cache=[],this.layer.events.on({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this}));return a},deactivate:function(){this.cache=null;this.layer&&this.layer.events&&this.layer.events.un({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this});\n +return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments)},handleAdd:function(a){if(!this.caching&&this.filter){var b=a.features;a.features=[];for(var c,d=0,e=b.length;d<e;++d)c=b[d],this.filter.evaluate(c)?a.features.push(c):this.cache.push(c)}},handleRemove:function(){this.caching||(this.cache=[])},setFilter:function(a){this.filter=a;a=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});0<this.cache.length&&(this.caching=!0,this.layer.removeFeatures(this.cache.slice()),\n +this.caching=!1);0<a.length&&(a={features:a},this.handleAdd(a),0<a.features.length&&(this.caching=!0,this.layer.addFeatures(a.features),this.caching=!1))},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Protocol.SOS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.SOS.DEFAULTS),b=OpenLayers.Protocol.SOS["v"+a.version.replace(/\\./g,"_")];if(!b)throw"Unsupported SOS version: "+a.version;return new b(a)};OpenLayers.Protocol.SOS.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},readers:{xsd:{schema:function(a,b){var c=[],d={};this.readChildNodes(a,{complexTypes:c,customTypes:d});for(var e=a.attributes,f,g,h=0,i=e.length;h<i;++h)f=e[h],g=f.name,0==g.indexOf("xmlns")?this.setNamespace(g.split(":")[1]||"",f.value):b[g]=f.value;b.featureTypes=c;b.targetPrefix=this.namespaceAlias[b.targetNamespace];h=0;for(i=c.length;h<i;++h)e=c[h],f=d[e.typeName],\n +d[e.typeName]&&(e.typeName=f.name)},complexType:function(a,b){var c={typeName:a.getAttribute("name")};this.readChildNodes(a,c);b.complexTypes.push(c)},complexContent:function(a,b){this.readChildNodes(a,b)},extension:function(a,b){this.readChildNodes(a,b)},sequence:function(a,b){var c={elements:[]};this.readChildNodes(a,c);b.properties=c.elements},element:function(a,b){if(b.elements){for(var c={},d=a.attributes,e,f=0,g=d.length;f<g;++f)e=d[f],c[e.name]=e.value;d=c.type;d||(d={},this.readChildNodes(a,\n +d),c.restriction=d,c.type=d.base);c.localType=(d.base||d).split(":").pop();b.elements.push(c)}b.complexTypes&&(d=a.getAttribute("type"),c=d.split(":").pop(),b.customTypes[c]={name:a.getAttribute("name"),type:d})},simpleType:function(a,b){this.readChildNodes(a,b)},restriction:function(a,b){b.base=a.getAttribute("base");this.readRestriction(a,b)}}},readRestriction:function(a,b){for(var c=a.childNodes,d,e,f=0,g=c.length;f<g;++f)d=c[f],1==d.nodeType&&(e=d.nodeName.split(":").pop(),d=d.getAttribute("value"),\n +b[e]?("string"==typeof b[e]&&(b[e]=[b[e]]),b[e].push(d)):b[e]=d)},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:!1,createGeometryFromItem:function(a){var b=this.getElementsByTagNameNS(a,this.georssns,"point"),c=this.getElementsByTagNameNS(a,this.geons,"lat"),d=this.getElementsByTagNameNS(a,\n +this.geons,"long"),e=this.getElementsByTagNameNS(a,this.georssns,"line"),f=this.getElementsByTagNameNS(a,this.georssns,"polygon"),g=this.getElementsByTagNameNS(a,this.georssns,"where"),a=this.getElementsByTagNameNS(a,this.georssns,"box");if(0<b.length||0<c.length&&0<d.length){0<b.length?(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\\s+/),2!=c.length&&(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\\s*,\\s*/))):c=[parseFloat(c[0].firstChild.nodeValue),parseFloat(d[0].firstChild.nodeValue)];\n +var h=new OpenLayers.Geometry.Point(c[1],c[0])}else if(0<e.length){c=OpenLayers.String.trim(this.getChildValue(e[0])).split(/\\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.LineString(d)}else if(0<f.length){c=OpenLayers.String.trim(this.getChildValue(f[0])).split(/\\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])}else 0<\n +g.length?(this.gmlParser||(this.gmlParser=new OpenLayers.Format.GML({xy:this.xy})),h=this.gmlParser.parseFeature(g[0]).geometry):0<a.length&&(c=OpenLayers.String.trim(a[0].firstChild.nodeValue).split(/\\s+/),d=[],3<c.length&&(b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b)),h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]));\n +h&&(this.internalProjection&&this.externalProjection)&&h.transform(this.externalProjection,this.internalProjection);return h},createFeatureFromItem:function(a){var b=this.createGeometryFromItem(a),c=this._getChildValue(a,"*","title",this.featureTitle),d=this._getChildValue(a,"*","description",this._getChildValue(a,"*","content",this._getChildValue(a,"*","summary",this.featureDescription))),e=this._getChildValue(a,"*","link");if(!e)try{e=this.getElementsByTagNameNS(a,"*","link")[0].getAttribute("href")}catch(f){e=\n +null}a=this._getChildValue(a,"*","id",null);b=new OpenLayers.Feature.Vector(b,{title:c,description:d,link:e});b.fid=a;return b},_getChildValue:function(a,b,c,d){return(a=this.getElementsByTagNameNS(a,b,c))&&a[0]&&a[0].firstChild&&a[0].firstChild.nodeValue?this.getChildValue(a[0]):void 0==d?"":d},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null,b=this.getElementsByTagNameNS(a,"*","item");0==b.length&&(b=this.getElementsByTagNameNS(a,"*","entry"));\n +for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=this.createFeatureFromItem(b[d]);return c},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNS(this.rssns,"rss");for(var c=0,d=a.length;c<d;c++)b.appendChild(this.createFeatureXML(a[c]))}else b=this.createFeatureXML(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.rssns,"item"),d=this.createElementNS(this.rssns,"title");\n +d.appendChild(this.createTextNode(a.attributes.title?a.attributes.title:""));var e=this.createElementNS(this.rssns,"description");e.appendChild(this.createTextNode(a.attributes.description?a.attributes.description:""));c.appendChild(d);c.appendChild(e);a.attributes.link&&(d=this.createElementNS(this.rssns,"link"),d.appendChild(this.createTextNode(a.attributes.link)),c.appendChild(d));for(var f in a.attributes)"link"==f||("title"==f||"description"==f)||(d=this.createTextNode(a.attributes[f]),e=f,-1!=\n +f.search(":")&&(e=f.split(":")[1]),e=this.createElementNS(this.featureNS,"feature:"+e),e.appendChild(d),c.appendChild(e));c.appendChild(b);return c},buildGeometryNode:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b;if("OpenLayers.Geometry.Polygon"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:polygon"),b.appendChild(this.buildCoordinatesNode(a.components[0]));else if("OpenLayers.Geometry.LineString"==\n +a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:line"),b.appendChild(this.buildCoordinatesNode(a));else if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:point"),b.appendChild(this.buildCoordinatesNode(a));else throw"Couldn\'t parse "+a.CLASS_NAME;return b},buildCoordinatesNode:function(a){var b=null;a.components&&(b=a.components);if(b){for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=b[d].y+" "+b[d].x;b=c.join(" ")}else b=a.y+" "+a.x;return this.createTextNode(b)},\n +CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.WPSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.WPSCapabilities"});OpenLayers.Format.WPSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wps:"http://www.opengis.net/wps/1.0.0",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);\n +var b={};this.readNode(a,b);return b},readers:{wps:{Capabilities:function(a,b){this.readChildNodes(a,b)},ProcessOfferings:function(a,b){b.processOfferings={};this.readChildNodes(a,b.processOfferings)},Process:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion")};this.readChildNodes(a,c);b[c.identifier]=c},Languages:function(a,b){b.languages=[];this.readChildNodes(a,b.languages)},Default:function(a,b){var c={isDefault:!0};this.readChildNodes(a,c);b.push(c)},\n +Supported:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSCapabilities.v1_0_0"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerCenter:null,pinchOrigin:null,currentCenter:null,autoActivate:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},activate:function(){var a=OpenLayers.Control.prototype.activate.apply(this,arguments);a&&(this.map.events.on({moveend:this.updateContainerCenter,\n +scope:this}),this.updateContainerCenter());return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.apply(this,arguments);this.map&&this.map.events&&this.map.events.un({moveend:this.updateContainerCenter,scope:this});return a},updateContainerCenter:function(){var a=this.map.layerContainerDiv;this.containerCenter={x:parseInt(a.style.left,10)+50,y:parseInt(a.style.top,10)+50}},pinchStart:function(a){this.currentCenter=this.pinchOrigin=a.xy},pinchMove:function(a,b){var c=b.scale,\n +d=this.containerCenter,e=this.pinchOrigin,f=a.xy,g=Math.round(f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(f.y-e.y+(c-1)*(d.y-e.y));this.applyTransform("translate("+g+"px, "+d+"px) scale("+c+")");this.currentCenter=f},applyTransform:function(a){var b=this.map.layerContainerDiv.style;b["-webkit-transform"]=a;b["-moz-transform"]=a},pinchDone:function(a,b,c){this.applyTransform("");a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var b=\n +this.map.getResolutionForZoom(a),c=this.map.getLonLatFromPixel(this.pinchOrigin),d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Control.TouchNavigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,clickHandlerOptions:null,documentDrag:!1,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;this.pinchZoom&&(this.pinchZoom.destroy(),delete this.pinchZoom);OpenLayers.Control.prototype.destroy.apply(this,\n +arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.dragPan.activate(),this.handlers.click.activate(),this.pinchZoom.activate(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.dragPan.deactivate(),this.handlers.click.deactivate(),this.pinchZoom.deactivate(),!0):!1},draw:function(){var a={click:this.defaultClick,dblclick:this.defaultDblClick},b=OpenLayers.Util.extend({"double":!0,stopDouble:!0,\n +pixelTolerance:2},this.clickHandlerOptions);this.handlers.click=new OpenLayers.Handler.Click(this,a,b);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.dragPan.draw();this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),\n +this.map.zoom+1)},CLASS_NAME:"OpenLayers.Control.TouchNavigation"});OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy();delete this.rules},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}return new OpenLayers.Style2(a)},\n +CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(a,b){OpenLayers.Format.GML.prototype.initialize.apply(this,[a]);this.layer=b;this.layer.featureNS&&(this.featureNS=this.layer.featureNS);this.layer.options.geometry_column&&(this.geometryName=this.layer.options.geometry_column);this.layer.options.typename&&(this.featureName=this.layer.options.typename)},write:function(a){var b=this.createElementNS(this.wfsns,\n +"wfs:Transaction");b.setAttribute("version","1.0.0");b.setAttribute("service","WFS");for(var c=0;c<a.length;c++)switch(a[c].state){case OpenLayers.State.INSERT:b.appendChild(this.insert(a[c]));break;case OpenLayers.State.UPDATE:b.appendChild(this.update(a[c]));break;case OpenLayers.State.DELETE:b.appendChild(this.remove(a[c]))}return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,"feature:"+\n +this.geometryName);c.appendChild(b);b=this.createElementNS(this.featureNS,"feature:"+this.featureName);b.appendChild(c);for(var d in a.attributes){var c=this.createTextNode(a.attributes[d]),e=d;-1!=d.search(":")&&(e=d.split(":")[1]);e=this.createElementNS(this.featureNS,"feature:"+e);e.appendChild(c);b.appendChild(e)}return b},insert:function(a){var b=this.createElementNS(this.wfsns,"wfs:Insert");b.appendChild(this.createFeatureXML(a));return b},update:function(a){a.fid||OpenLayers.Console.userError(OpenLayers.i18n("noFID"));\n +var b=this.createElementNS(this.wfsns,"wfs:Update");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),e=this.createTextNode(this.geometryName);d.appendChild(e);c.appendChild(d);d=this.createElementNS(this.wfsns,"wfs:Value");e=this.buildGeometryNode(a.geometry);a.layer&&e.setAttribute("srsName",a.layer.projection.getCode());\n +d.appendChild(e);c.appendChild(d);b.appendChild(c);for(var f in a.attributes)c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),d.appendChild(this.createTextNode(f)),c.appendChild(d),d=this.createElementNS(this.wfsns,"wfs:Value"),d.appendChild(this.createTextNode(a.attributes[f])),c.appendChild(d),b.appendChild(c);c=this.createElementNS(this.ogcns,"ogc:Filter");f=this.createElementNS(this.ogcns,"ogc:FeatureId");f.setAttribute("fid",a.fid);c.appendChild(f);\n +b.appendChild(c);return b},remove:function(a){if(!a.fid)return OpenLayers.Console.userError(OpenLayers.i18n("noFID")),!1;var b=this.createElementNS(this.wfsns,"wfs:Delete");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.ogcns,"ogc:Filter"),d=this.createElementNS(this.ogcns,"ogc:FeatureId");d.setAttribute("fid",a.fid);c.appendChild(d);b.appendChild(c);return b},destroy:function(){this.layer=\n +null},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Format.SLD.v1_0_0_GeoServer=OpenLayers.Class(OpenLayers.Format.SLD.v1_0_0,{version:"1.0.0",profile:"GeoServer",readers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.priority=c)},VendorOption:function(a,b){b.vendorOptions||(b.vendorOptions={});b.vendorOptions[a.getAttribute("name")]=this.getChildValue(a)}},OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.readers),\n +writers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Priority",a)},VendorOption:function(a){return this.createElementNSPlus("sld:VendorOption",{attributes:{name:a.name},value:a.value})},TextSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.TextSymbolizer.apply(this,arguments);!1!==a.graphic&&(a.externalGraphic||a.graphicName)&&this.writeNode("Graphic",a,b);"priority"in a&&\n +this.writeNode("Priority",a.priority,b);return this.addVendorOptions(b,a)},PointSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PointSymbolizer.apply(this,arguments),a)},LineSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.LineSymbolizer.apply(this,arguments),a)},PolygonSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PolygonSymbolizer.apply(this,\n +arguments),a)}},OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.writers),addVendorOptions:function(a,b){if(b.vendorOptions)for(var c in b.vendorOptions)this.writeNode("VendorOption",{name:c,value:b.vendorOptions[c]},a);return a},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0_GeoServer"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{drawMarker:function(a){var b=this.map.getLayerPxFromLonLat({lon:a.bounds.left,lat:a.bounds.top}),c=this.map.getLayerPxFromLonLat({lon:a.bounds.right,lat:a.bounds.bottom});null==c||null==b?a.display(!1):(b=a.draw(b,{w:Math.max(1,c.x-b.x),h:Math.max(1,c.y-b.y)}),a.drawn||(this.div.appendChild(b),a.drawn=!0))},removeMarker:function(a){OpenLayers.Util.removeItem(this.markers,a);null!=a.div&&a.div.parentNode==this.div&&this.div.removeChild(a.div)},\n +CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{readers:{wfs:OpenLayers.Util.applyDefaults({Service:function(a,b){b.service={};this.readChildNodes(a,b.service)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},OnlineResource:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.onlineResource=\n +c)},Keywords:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.keywords=c.split(", "))},Capability:function(a,b){b.capability={};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetFeature:function(a,b){b.getfeature={href:{},formats:[]};this.readChildNodes(a,b.getfeature)},ResultFormat:function(a,b){for(var c=a.childNodes,d,e=0;e<c.length;e++)d=c[e],1==d.nodeType&&b.formats.push(d.nodeName)},DCPType:function(a,b){this.readChildNodes(a,\n +b)},HTTP:function(a,b){this.readChildNodes(a,b.href)},Get:function(a,b){b.get=a.getAttribute("onlineResource")},Post:function(a,b){b.post=a.getAttribute("onlineResource")},SRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs)},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",profile:null,CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a;a&&9==a.nodeType&&(a=a.documentElement);var c={};this.readNode(a,c);void 0===c.service&&(a=new OpenLayers.Format.OGCExceptionReport,c.error=a.read(b));return c},readers:{wms:{Service:function(a,\n +b){b.service={};this.readChildNodes(a,b.service)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},BoundingBox:function(a){var b={};b.bbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))];a={x:parseFloat(a.getAttribute("resx")),y:parseFloat(a.getAttribute("resy"))};if(!isNaN(a.x)||!isNaN(a.y))b.res=\n +a;return b},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},ContactInformation:function(a,b){b.contactInformation={};this.readChildNodes(a,b.contactInformation)},ContactPersonPrimary:function(a,b){b.personPrimary={};this.readChildNodes(a,b.personPrimary)},ContactPerson:function(a,b){b.person=this.getChildValue(a)},ContactOrganization:function(a,b){b.organization=this.getChildValue(a)},ContactPosition:function(a,b){b.position=this.getChildValue(a)},ContactAddress:function(a,\n +b){b.contactAddress={};this.readChildNodes(a,b.contactAddress)},AddressType:function(a,b){b.type=this.getChildValue(a)},Address:function(a,b){b.address=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},StateOrProvince:function(a,b){b.stateOrProvince=this.getChildValue(a)},PostCode:function(a,b){b.postcode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ContactVoiceTelephone:function(a,b){b.phone=this.getChildValue(a)},ContactFacsimileTelephone:function(a,\n +b){b.fax=this.getChildValue(a)},ContactElectronicMailAddress:function(a,b){b.email=this.getChildValue(a)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},Capability:function(a,b){b.capability={nestedLayers:[],layers:[]};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetCapabilities:function(a,\n +b){b.getcapabilities={formats:[]};this.readChildNodes(a,b.getcapabilities)},Format:function(a,b){OpenLayers.Util.isArray(b.formats)?b.formats.push(this.getChildValue(a)):b.format=this.getChildValue(a)},DCPType:function(a,b){this.readChildNodes(a,b)},HTTP:function(a,b){this.readChildNodes(a,b)},Get:function(a,b){b.get={};this.readChildNodes(a,b.get);b.href||(b.href=b.get.href)},Post:function(a,b){b.post={};this.readChildNodes(a,b.post);b.href||(b.href=b.get.href)},GetMap:function(a,b){b.getmap={formats:[]};\n +this.readChildNodes(a,b.getmap)},GetFeatureInfo:function(a,b){b.getfeatureinfo={formats:[]};this.readChildNodes(a,b.getfeatureinfo)},Exception:function(a,b){b.exception={formats:[]};this.readChildNodes(a,b.exception)},Layer:function(a,b){var c,d;b.capability?(d=b.capability,c=b):d=b;var e=a.getAttributeNode("queryable"),f=e&&e.specified?a.getAttribute("queryable"):null,g=(e=a.getAttributeNode("cascaded"))&&e.specified?a.getAttribute("cascaded"):null,e=(e=a.getAttributeNode("opaque"))&&e.specified?\n +a.getAttribute("opaque"):null,h=a.getAttribute("noSubsets"),i=a.getAttribute("fixedWidth"),j=a.getAttribute("fixedHeight"),k=c||{},l=OpenLayers.Util.extend;c={nestedLayers:[],styles:c?[].concat(c.styles):[],srs:c?l({},k.srs):{},metadataURLs:[],bbox:c?l({},k.bbox):{},llbbox:k.llbbox,dimensions:c?l({},k.dimensions):{},authorityURLs:c?l({},k.authorityURLs):{},identifiers:{},keywords:[],queryable:f&&""!==f?"1"===f||"true"===f:k.queryable||!1,cascaded:null!==g?parseInt(g):k.cascaded||0,opaque:e?"1"===\n +e||"true"===e:k.opaque||!1,noSubsets:null!==h?"1"===h||"true"===h:k.noSubsets||!1,fixedWidth:null!=i?parseInt(i):k.fixedWidth||0,fixedHeight:null!=j?parseInt(j):k.fixedHeight||0,minScale:k.minScale,maxScale:k.maxScale,attribution:k.attribution};b.nestedLayers.push(c);c.capability=d;this.readChildNodes(a,c);delete c.capability;if(c.name&&(f=c.name.split(":"),g=d.request,e=g.getfeatureinfo,0<f.length&&(c.prefix=f[0]),d.layers.push(c),void 0===c.formats&&(c.formats=g.getmap.formats),void 0===c.infoFormats&&\n +e))c.infoFormats=e.formats},Attribution:function(a,b){b.attribution={};this.readChildNodes(a,b.attribution)},LogoURL:function(a,b){b.logo={width:a.getAttribute("width"),height:a.getAttribute("height")};this.readChildNodes(a,b.logo)},Style:function(a,b){var c={};b.styles.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={width:a.getAttribute("width"),height:a.getAttribute("height")};b.legend=c;this.readChildNodes(a,c)},MetadataURL:function(a,b){var c={type:a.getAttribute("type")};b.metadataURLs.push(c);\n +this.readChildNodes(a,c)},DataURL:function(a,b){b.dataURL={};this.readChildNodes(a,b.dataURL)},FeatureListURL:function(a,b){b.featureListURL={};this.readChildNodes(a,b.featureListURL)},AuthorityURL:function(a,b){var c=a.getAttribute("name"),d={};this.readChildNodes(a,d);b.authorityURLs[c]=d.href},Identifier:function(a,b){var c=a.getAttribute("authority");b.identifiers[c]=this.getChildValue(a)},KeywordList:function(a,b){this.readChildNodes(a,b)},SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}}},\n +CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMS_Capabilities:function(a,b){this.readChildNodes(a,b)},LayerLimit:function(a,b){b.layerLimit=parseInt(this.getChildValue(a))},MaxWidth:function(a,b){b.maxWidth=parseInt(this.getChildValue(a))},MaxHeight:function(a,b){b.maxHeight=parseInt(this.getChildValue(a))},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,\n +[a,b]);c.srs=a.getAttribute("CRS");b.bbox[c.srs]=c},CRS:function(a,b){this.readers.wms.SRS.apply(this,[a,b])},EX_GeographicBoundingBox:function(a,b){b.llbbox=[];this.readChildNodes(a,b.llbbox)},westBoundLongitude:function(a,b){b[0]=this.getChildValue(a)},eastBoundLongitude:function(a,b){b[2]=this.getChildValue(a)},southBoundLatitude:function(a,b){b[1]=this.getChildValue(a)},northBoundLatitude:function(a,b){b[3]=this.getChildValue(a)},MinScaleDenominator:function(a,b){b.maxScale=parseFloat(this.getChildValue(a)).toPrecision(16)},\n +MaxScaleDenominator:function(a,b){b.minScale=parseFloat(this.getChildValue(a)).toPrecision(16)},Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol"),nearestVal:"1"===a.getAttribute("nearestValue"),multipleVal:"1"===a.getAttribute("multipleValues"),"default":a.getAttribute("default")||"",current:"1"===a.getAttribute("current"),values:this.getChildValue(a).split(",")};b.dimensions[c.name]=c},Keyword:function(a,\n +b){var c={value:this.getChildValue(a),vocabulary:a.getAttribute("vocabulary")};b.keywords&&b.keywords.push(c)}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms),sld:{UserDefinedSymbolization:function(a,b){this.readers.wms.UserDefinedSymbolization.apply(this,[a,b]);b.userSymbols.inlineFeature=1==parseInt(a.getAttribute("InlineFeature"));b.userSymbols.remoteWCS=1==parseInt(a.getAttribute("RemoteWCS"))},DescribeLayer:function(a,b){this.readers.wms.DescribeLayer.apply(this,[a,b])},GetLegendGraphic:function(a,\n +b){this.readers.wms.GetLegendGraphic.apply(this,[a,b])}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{size:null,isBaseLayer:!0,standardTileSize:256,tileOriginCorner:"tl",numberOfTiers:0,tileCountUpToTier:null,tierSizeInTiles:null,tierImageSize:null,initialize:function(a,b,c,d){this.initializeZoomify(c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,c,{},d])},initializeZoomify:function(a){var a=a.clone(),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize));this.tierSizeInTiles=[b];\n +for(this.tierImageSize=[a];a.w>this.standardTileSize||a.h>this.standardTileSize;)a=new OpenLayers.Size(Math.floor(a.w/2),Math.floor(a.h/2)),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize)),this.tierSizeInTiles.push(b),this.tierImageSize.push(a);this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;this.tileCountUpToTier=[0];for(a=1;a<this.numberOfTiers;a++)this.tileCountUpToTier.push(this.tierSizeInTiles[a-\n +1].w*this.tierSizeInTiles[a-1].h+this.tileCountUpToTier[a-1])},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0;this.tierSizeInTiles.length=0;this.tierImageSize.length=0},clone:function(a){null==a&&(a=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/\n +(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),c="TileGroup"+Math.floor((c+a*this.tierSizeInTiles[b].w+this.tileCountUpToTier[b])/256)+"/"+b+"-"+c+"-"+a+".jpg",a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},getImageSize:function(){if(0<arguments.length){var a=this.adjustBounds(arguments[0]),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-\n +a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),d=this.standardTileSize,e=this.standardTileSize;c==this.tierSizeInTiles[b].w-1&&(d=this.tierImageSize[b].w%this.standardTileSize);a==this.tierSizeInTiles[b].h-1&&(e=this.tierImageSize[b].h%this.standardTileSize);return new OpenLayers.Size(d,e)}return this.tileSize},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.top)},calculateGridLayout:function(a,\n +b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.params.transparent&&!0!=this.params.transparent},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions()));\n +return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),a=[a.left,a.bottom,a.right,a.top],b=this.getImageSize();return this.getFullRequestString({mapext:a,imgext:a,map_size:[b.w,b.h],imgx:b.w/2,imgy:b.h/2,imgxy:[b.w,b.h]})},getFullRequestString:function(a,b){var c=null==b?this.url:b,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));\n +var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);d=c;e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,\n +arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},\n +setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=\n +"olv:shape"}return c},setStyle:function(a,b,c,d){var b=b||a._style,c=c||a._options,e=b.fillColor;if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;b.graphicTitle&&(a.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),i=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/\n +g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(i+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];if(c.isFilled){d||\n +(d=this.createNode("olv:fill",a.id+"_fill"));d.opacity=b.fillOpacity;if("OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",!b.graphicWidth||!b.graphicHeight))d.aspect="atmost";d.parentNode!=a&&a.appendChild(d)}else d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,i,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&\n +(a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];if(c.isStroked){if(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle)h.dashstyle=this.dashStyle(b)}else a.stroked=!1,h&&(h.on=!1);"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,\n +d){var d=d||a._style,e=d.rotation||0,f,g;if(!d.graphicWidth||!d.graphicHeight){var h=new Image;h.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==h.readyState||"interactive"==h.readyState)f=h.width/h.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);h.src=d.externalGraphic}else{g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var i=Math.round(d.graphicWidth||\n +g*f),j=Math.round(d.graphicHeight||g);a.style.width=i+"px";a.style.height=j+"px";var k=document.getElementById(a.id+"_image");k||(k=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(k));k.style.width=i+"px";k.style.height=j+"px";k.src=d.externalGraphic;k.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'\', sizingMethod=\'scale\')";k=e*Math.PI/180;e=Math.sin(k);k=Math.cos(k);e="progid:DXImageTransform.Microsoft.Matrix(M11="+k+",M12="+-e+",M21="+e+",M22="+k+",SizingMethod=\'auto expand\')\\n";\n +(k=d.graphicOpacity||d.fillOpacity)&&1!=k&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+k+")\\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);i=(new OpenLayers.Bounds(0,0,i,j)).toGeometry();i.rotate(d.rotation,e);i=i.getBounds();a.style.left=Math.round(parseInt(a.style.left)+i.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-i.bottom)+"px"}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&\n +(a.fillcolor=b);"none"==c&&a.strokecolor!=c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=\n +a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+\n +1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=\n +b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,i=0;i<e;i++)g=b.components[i],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[i]=" "+h+","+g+" l ";a.path="m"+f.join("")+(c?" x e":" e");return a},drawPolygon:function(a,b){this.setNodeDimension(a,\n +b);var c=this.getResolution(),d=[],e,f,g,h,i,j,k,l,m,n;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;j=i=null;k=0;for(l=g.length;k<l;k++)m=g[k],n=(m.x-this.featureDx)/c-this.offset.x|0,m=m.y/c-this.offset.y|0,n=" "+n+","+m,d.push(n),0==k&&d.push(" l"),h||(i?i!=n&&(j?j!=n&&(h=!0):j=n):i=n);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+\n +"px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&\n +(e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||\n +"cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},\n +importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");for(var a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;\n +0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Control.CacheRead=OpenLayers.Class(OpenLayers.Control,{fetchEvent:"tileloadstart",layers:null,autoActivate:!0,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.register(this.fetchEvent,this,this.fetch)},removeLayer:function(a){a.layer.events.unregister(this.fetchEvent,\n +this,this.fetch)},fetch:function(a){if(this.active&&window.localStorage&&a.tile instanceof OpenLayers.Tile.Image){var b=a.tile,c=b.url;!b.layer.crossOriginKeyword&&(OpenLayers.ProxyHost&&0===c.indexOf(OpenLayers.ProxyHost))&&(c=OpenLayers.Control.CacheWrite.urlMap[c]);if(c=window.localStorage.getItem("olCache_"+c))b.url=c,"tileerror"===a.type&&b.setImgSrc(c)}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&\n +this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.CacheRead"});OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:"_layer",featureIdentifier:"_feature",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},gmlFormat:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a.documentElement;if(b)var c=this["read_"+b.nodeName],a=c?c.call(this,b):(new OpenLayers.Format.GML(this.options?this.options:{})).read(a);return a},read_msGMLOutput:function(a){var b=\n +[];if(a=this.getSiblingNodesByTagCriteria(a,this.layerIdentifier))for(var c=0,d=a.length;c<d;++c){var e=a[c],f=e.nodeName;e.prefix&&(f=f.split(":")[1]);f=f.replace(this.layerIdentifier,"");if(e=this.getSiblingNodesByTagCriteria(e,this.featureIdentifier))for(var g=0;g<e.length;g++){var h=e[g],i=this.parseGeometry(h),h=this.parseAttributes(h),h=new OpenLayers.Feature.Vector(i.geometry,h,null);h.bounds=i.bounds;h.type=f;b.push(h)}}return b},read_FeatureInfoResponse:function(a){for(var b=[],a=this.getElementsByTagNameNS(a,\n +"*","FIELDS"),c=0,d=a.length;c<d;c++){var e=a[c],f={},g,h=e.attributes.length;if(0<h)for(g=0;g<h;g++){var i=e.attributes[g];f[i.nodeName]=i.nodeValue}else{e=e.childNodes;g=0;for(h=e.length;g<h;++g)i=e[g],3!=i.nodeType&&(f[i.getAttribute("name")]=i.getAttribute("value"))}b.push(new OpenLayers.Feature.Vector(null,f,null))}return b},getSiblingNodesByTagCriteria:function(a,b){var c=[],d,e,f,g;if(a&&a.hasChildNodes()){d=a.childNodes;f=d.length;for(var h=0;h<f;h++){for(g=d[h];g&&1!=g.nodeType;)g=g.nextSibling,\n +h++;e=g?g.nodeName:"";0<e.length&&-1<e.indexOf(b)?c.push(g):(e=this.getSiblingNodesByTagCriteria(g,b),0<e.length&&(0==c.length?c=e:c.push(e)))}}return c},parseAttributes:function(a){var b={};if(1==a.nodeType)for(var a=a.childNodes,c=a.length,d=0;d<c;++d){var e=a[d];if(1==e.nodeType){var f=e.childNodes,e=e.pr + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAw=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="12" aka="AAAAAAAAAAw="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +efix?e.nodeName.split(":")[1]:e.nodeName;if(0==f.length)b[e]=null;else if(1==f.length&&(f=f[0],3==f.nodeType||4==f.nodeType))f=f.nodeValue.replace(this.regExes.trimSpace,""),b[e]=f}}return b},\n +parseGeometry:function(a){this.gmlFormat||(this.gmlFormat=new OpenLayers.Format.GML);var a=this.gmlFormat.parseFeature(a),b,c=null;a&&(b=a.geometry&&a.geometry.clone(),c=a.bounds&&a.bounds.clone(),a.destroy());return{geometry:b,bounds:c}},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,requestEncoding:"KVP",drillDown:!1,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:!0,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,pending:0,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));\n +!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.request(a.xy,{})},getInfoForHover:function(a){this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(--this.pending,\n +0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0),this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)if(c=a[d],c instanceof OpenLayers.Layer.WMTS&&c.requestEncoding===this.requestEncoding&&(!this.queryVisible||c.getVisibility()))if(b.push(c),!this.drillDown||this.hover)break;return b},buildRequestOptions:function(a,b){var c=this.map.getLonLatFromPixel(b),d=\n +a.getURL(new OpenLayers.Bounds(c.lon,c.lat,c.lon,c.lat)),d=OpenLayers.Util.getParameters(d),c=a.getTileInfo(c);OpenLayers.Util.extend(d,{service:"WMTS",version:a.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:c.i,j:c.j});OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:OpenLayers.Util.isArray(a.url)?a.url[0]:a.url,params:OpenLayers.Util.upperCaseObject(d),callback:function(c){this.handleResponse(b,c,a)},scope:this}},request:function(a,b){var b=b||{},c=this.findLayers();\n +if(0<c.length){for(var d,e,f=0,g=c.length;f<g;f++)e=c[f],d=this.events.triggerEvent("beforegetfeatureinfo",{xy:a,layer:e}),!1!==d&&(++this.pending,d=this.buildRequestOptions(e,a),d=OpenLayers.Request.GET(d),!0===b.hover&&(this.hoverRequest=d));0<this.pending&&OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait")}},handleResponse:function(a,b,c){--this.pending;0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0);if(b.status&&(200>b.status||\n +300<=b.status))this.events.triggerEvent("exception",{xy:a,request:b,layer:c});else{var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;var e,f;try{e=this.format.read(d)}catch(g){f=!0,this.events.triggerEvent("exception",{xy:a,request:b,error:g,layer:c})}f||this.events.triggerEvent("getfeatureinfo",{text:b.responseText,features:e,request:b,xy:a,layer:c})}},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,scope:this}));return a},cacheFeatures:function(a){this.paging||(this.clearCache(),\n +this.features=a.features,this.pageNext(a))},clearCache:function(){if(this.features)for(var a=0;a<this.features.length;++a)this.features[a].destroy();this.num=this.features=null},pageCount:function(){return Math.ceil((this.features?this.features.length:0)/this.length)},pageNum:function(){return this.num},pageLength:function(a){a&&0<a&&(this.length=a);return this.length},pageNext:function(a){var b=!1;this.features&&(null===this.num&&(this.num=-1),b=this.page((this.num+1)*this.length,a));return b},pagePrevious:function(){var a=\n +!1;this.features&&(null===this.num&&(this.num=this.pageCount()),a=this.page((this.num-1)*this.length));return a},page:function(a,b){var c=!1;if(this.features&&0<=a&&a<this.features.length){var d=Math.floor(a/this.length);d!=this.num&&(this.paging=!0,c=this.features.slice(a,a+this.length),this.layer.removeFeatures(this.layer.features),this.num=d,b&&b.features?b.features=c:this.layer.addFeatures(c),this.paging=!1,c=!0)}return c},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Protocol.CSW.v2_0_2=OpenLayers.Class(OpenLayers.Protocol,{formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.CSWGetRecords.v2_0_2(OpenLayers.Util.extend({},this.formatOptions)))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,\n +this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format.write(a.params);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.data=this.parseData(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseData:function(a){var b=\n +a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.CSW.v2_0_2"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMT_MS_Capabilities:function(a,b){this.readChildNodes(a,b)},Keyword:function(a,b){b.keywords&&b.keywords.push(this.getChildValue(a))},DescribeLayer:function(a,b){b.describelayer={formats:[]};this.readChildNodes(a,b.describelayer)},GetLegendGraphic:function(a,b){b.getlegendgraphic={formats:[]};this.readChildNodes(a,b.getlegendgraphic)},GetStyles:function(a,b){b.getstyles=\n +{formats:[]};this.readChildNodes(a,b.getstyles)},PutStyles:function(a,b){b.putstyles={formats:[]};this.readChildNodes(a,b.putstyles)},UserDefinedSymbolization:function(a,b){var c={supportSLD:1==parseInt(a.getAttribute("SupportSLD")),userLayer:1==parseInt(a.getAttribute("UserLayer")),userStyle:1==parseInt(a.getAttribute("UserStyle")),remoteWFS:1==parseInt(a.getAttribute("RemoteWFS"))};b.userSymbols=c},LatLonBoundingBox:function(a,b){b.llbbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),\n +parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))]},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,[a,b]);c.srs=a.getAttribute("SRS");b.bbox[c.srs]=c},ScaleHint:function(a,b){var c=a.getAttribute("min"),d=a.getAttribute("max"),e=Math.pow(2,0.5),f=OpenLayers.INCHES_PER_UNIT.m;b.maxScale=parseFloat((c/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13));b.minScale=parseFloat((d/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13))},\n +Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol")};b.dimensions[c.name]=c},Extent:function(a,b){var c=a.getAttribute("name").toLowerCase();if(c in b.dimensions){c=b.dimensions[c];c.nearestVal="1"===a.getAttribute("nearestValue");c.multipleVal="1"===a.getAttribute("multipleValues");c.current="1"===a.getAttribute("current");c["default"]=a.getAttribute("default")||"";var d=this.getChildValue(a);c.values=d.split(",")}}},\n +OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:!0,visible:!0,numPoints:50,targetSize:200,layerName:null,labelled:!0,labelFormat:"dm",lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(a){a=a||{};a.layerName=a.layerName||OpenLayers.i18n("Graticule");OpenLayers.Control.prototype.initialize.apply(this,[a]);\n +this.labelSymbolizer.stroke=!1;this.labelSymbolizer.fill=!1;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}"},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);this.gratLayer&&(this.gratLayer.destroy(),this.gratLayer=null)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var a=new OpenLayers.Style({},\n +{rules:[new OpenLayers.Rule({symbolizer:{Point:this.labelSymbolizer,Line:this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({"default":a}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher})}return this.div},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.addLayer(this.gratLayer),this.map.events.register("moveend",this,this.update),this.update(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,\n +arguments)?(this.map.events.unregister("moveend",this,this.update),this.map.removeLayer(this.gratLayer),!0):!1},update:function(){var a=this.map.getExtent();if(a){this.gratLayer.destroyFeatures();var b=new OpenLayers.Projection("EPSG:4326"),c=this.map.getProjectionObject(),d=this.map.getResolution();c.proj&&"longlat"==c.proj.projName&&(this.numPoints=1);var e=this.map.getCenter(),f=new OpenLayers.Pixel(e.lon,e.lat);OpenLayers.Projection.transform(f,c,b);for(var e=this.targetSize*d,e=e*e,g,d=0;d<this.intervals.length;++d){g=\n +this.intervals[d];var h=g/2,i=f.offset({x:-h,y:-h}),h=f.offset({x:h,y:h});OpenLayers.Projection.transform(i,b,c);OpenLayers.Projection.transform(h,b,c);if((i.x-h.x)*(i.x-h.x)+(i.y-h.y)*(i.y-h.y)<=e)break}f.x=Math.floor(f.x/g)*g;f.y=Math.floor(f.y/g)*g;var d=0,e=[f.clone()],h=f.clone(),j;do h=h.offset({x:0,y:g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:0,y:-g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.push(h);\n +while(a.containsPixel(j)&&1E3>++d);d=0;i=[f.clone()];h=f.clone();do h=h.offset({x:-g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.push(h);while(a.containsPixel(j)&&1E3>++d);g=[];for(d=0;d<i.length;++d){j=i[d].x;for(var f=[],k=null,l=Math.min(e[0].y,90),h=Math.max(e[e.length-1].y,-90),m=(l-h)/this.numPoints,l=h,h=0;h<=this.numPoints;++h){var n=new OpenLayers.Geometry.Point(j,\n +l);n.transform(b,c);f.push(n);l+=m;n.y>=a.bottom&&!k&&(k=n)}this.labelled&&(k=new OpenLayers.Geometry.Point(k.x,a.bottom),j={value:j,label:this.labelled?OpenLayers.Util.getFormattedLonLat(j,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}for(h=0;h<e.length;++h)if(l=e[h].y,!(-90>l||90<l)){f=[];d=i[0].x;m=(i[i.length-1].x-d)/this.numPoints;\n +j=d;k=null;for(d=0;d<=this.numPoints;++d)n=new OpenLayers.Geometry.Point(j,l),n.transform(b,c),f.push(n),j+=m,n.x<a.right&&(k=n);this.labelled&&(k=new OpenLayers.Geometry.Point(a.right,k.y),j={value:l,label:this.labelled?OpenLayers.Util.getFormattedLonLat(l,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}this.gratLayer.addFeatures(g)}},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Layer.UTFGrid=OpenLayers.Class(OpenLayers.Layer.XYZ,{isBaseLayer:!1,projection:new OpenLayers.Projection("EPSG:900913"),useJSONP:!1,tileClass:OpenLayers.Tile.UTFGrid,initialize:function(a){OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,{},a]);this.tileOptions=OpenLayers.Util.extend({utfgridResolution:this.utfgridResolution},this.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.UTFGrid(this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,\n +[a])},getFeatureInfo:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureInfo(a.i,a.j));return b},getFeatureId:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureId(a.i,a.j));return b},CLASS_NAME:"OpenLayers.Layer.UTFGrid"});OpenLayers.Layer.ArcGISCache=OpenLayers.Class(OpenLayers.Layer.XYZ,{url:null,tileOrigin:null,tileSize:new OpenLayers.Size(256,256),useArcGISServer:!0,type:"png",useScales:!1,overrideDPI:!1,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.resolutions&&(this.serverResolutions=this.resolutions,this.maxExtent=this.getMaxExtentForResolution(this.resolutions[0]));if(this.layerInfo){var d=this.layerInfo,e=new OpenLayers.Bounds(d.fullExtent.xmin,d.fullExtent.ymin,\n +d.fullExtent.xmax,d.fullExtent.ymax);this.projection="EPSG:"+d.spatialReference.wkid;this.sphericalMercator=102100==d.spatialReference.wkid;this.units="esriFeet"==d.units?"ft":"m";if(d.tileInfo){this.tileSize=new OpenLayers.Size(d.tileInfo.width||d.tileInfo.cols,d.tileInfo.height||d.tileInfo.rows);this.tileOrigin=new OpenLayers.LonLat(d.tileInfo.origin.x,d.tileInfo.origin.y);var f=new OpenLayers.Geometry.Point(e.left,e.top),e=new OpenLayers.Geometry.Point(e.right,e.bottom);this.useScales?this.scales=\n +[]:this.resolutions=[];this.lods=[];for(var g in d.tileInfo.lods)if(d.tileInfo.lods.hasOwnProperty(g)){var h=d.tileInfo.lods[g];this.useScales?this.scales.push(h.scale):this.resolutions.push(h.resolution);var i=this.getContainingTileCoords(f,h.resolution);h.startTileCol=i.x;h.startTileRow=i.y;i=this.getContainingTileCoords(e,h.resolution);h.endTileCol=i.x;h.endTileRow=i.y;this.lods.push(h)}this.maxExtent=this.calculateMaxExtentWithLOD(this.lods[0]);this.serverResolutions=this.resolutions;this.overrideDPI&&\n +d.tileInfo.dpi&&(OpenLayers.DOTS_PER_INCH=d.tileInfo.dpi)}}},getContainingTileCoords:function(a,b){return new OpenLayers.Pixel(Math.max(Math.floor((a.x-this.tileOrigin.lon)/(this.tileSize.w*b)),0),Math.max(Math.floor((this.tileOrigin.lat-a.y)/(this.tileSize.h*b)),0))},calculateMaxExtentWithLOD:function(a){var b=this.tileOrigin.lon+a.startTileCol*this.tileSize.w*a.resolution,c=this.tileOrigin.lat-a.startTileRow*this.tileSize.h*a.resolution;return new OpenLayers.Bounds(b,c-(a.endTileRow-a.startTileRow+\n +1)*this.tileSize.h*a.resolution,b+(a.endTileCol-a.startTileCol+1)*this.tileSize.w*a.resolution,c)},calculateMaxExtentWithExtent:function(a,b){var c=new OpenLayers.Geometry.Point(a.left,a.top),d=new OpenLayers.Geometry.Point(a.right,a.bottom),c=this.getContainingTileCoords(c,b),d=this.getContainingTileCoords(d,b);return this.calculateMaxExtentWithLOD({resolution:b,startTileCol:c.x,startTileRow:c.y,endTileCol:d.x,endTileRow:d.y})},getUpperLeftTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.left,\n +this.maxExtent.top),a)},getLowerRightTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.right,this.maxExtent.bottom),a)},getMaxExtentForResolution:function(a){var b=this.getUpperLeftTileCoord(a),c=this.getLowerRightTileCoord(a),d=this.tileOrigin.lon+b.x*this.tileSize.w*a,e=this.tileOrigin.lat-b.y*this.tileSize.h*a;return new OpenLayers.Bounds(d,e-(c.y-b.y+1)*this.tileSize.h*a,d+(c.x-b.x+1)*this.tileSize.w*a,e)},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGISCache(this.name,\n +this.url,this.options));return OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},getMaxExtent:function(){return this.maxExtent=this.getMaxExtentForResolution(this.map.getResolution())},getTileOrigin:function(){var a=this.getMaxExtent();return new OpenLayers.LonLat(a.left,a.bottom)},getURL:function(a){var b=this.getResolution(),c=this.tileOrigin.lon+b*this.tileSize.w/2,d=this.tileOrigin.lat-b*this.tileSize.h/2,a=a.getCenterLonLat(),c=Math.round(Math.abs((a.lon-c)/(b*this.tileSize.w))),d=Math.round(Math.abs((d-\n +a.lat)/(b*this.tileSize.h))),a=this.map.getZoom();if(this.lods){if(b=this.lods[this.map.getZoom()],c<b.startTileCol||c>b.endTileCol||d<b.startTileRow||d>b.endTileRow)return null}else{var e=this.getUpperLeftTileCoord(b),b=this.getLowerRightTileCoord(b);if(c<e.x||c>=b.x||d<e.y||d>=b.y)return null}b=this.url;e=""+c+d+a;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(e,b));this.useArcGISServer?b+="/tile/${z}/${y}/${x}":(c="C"+this.zeroPad(c,8,16),d="R"+this.zeroPad(d,8,16),a="L"+this.zeroPad(a,2,16),b=\n +b+"/${z}/${y}/${x}."+this.type);b=OpenLayers.String.format(b,{x:c,y:d,z:a});return OpenLayers.Util.urlAppend(b,OpenLayers.Util.getParameterString(this.params))},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a},CLASS_NAME:"OpenLayers.Layer.ArcGISCache"});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,drillDown:!1,maxFeatures:10,clickCallback:"click",output:"features",layers:null,queryVisible:!1,url:null,layerUrls:null,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));\n +!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(a.xy,\n +{})},getInfoForHover:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d,e=a.length-1;0<=e;--e)if(c=a[e],c instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||c.getVisibility()))d=OpenLayers.Util.isArray(c.url)?c.url[0]:c.url,!1===this.drillDown&&!this.url&&(this.url=d),(!0===this.drillDown||\n +this.urlMatches(d))&&b.push(c);return b},urlMatches:function(a){var b=OpenLayers.Util.isEquivalentUrl(this.url,a);if(!b&&this.layerUrls)for(var c=0,d=this.layerUrls.length;c<d;++c)if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[c],a)){b=!0;break}return b},buildWMSOptions:function(a,b,c,d){for(var e=[],f=[],g=0,h=b.length;g<h;g++)null!=b[g].params.LAYERS&&(e=e.concat(b[g].params.LAYERS),f=f.concat(this.getStyleNames(b[g])));b=b[0];g=this.map.getProjection();(h=b.projection)&&h.equals(this.map.getProjectionObject())&&\n +(g=h.getCode());d=OpenLayers.Util.extend({service:"WMS",version:b.params.VERSION,request:"GetFeatureInfo",exceptions:b.params.EXCEPTIONS,bbox:this.map.getExtent().toBBOX(null,b.reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:d,info_format:b.params.INFO_FORMAT||this.infoFormat},1.3<=parseFloat(b.params.VERSION)?{crs:g,i:parseInt(c.x),j:parseInt(c.y)}:{srs:g,x:parseInt(c.x),y:parseInt(c.y)});0!=e.length&&(d=OpenLayers.Util.extend({layers:e,\n +query_layers:e,styles:f},d));OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:a,params:OpenLayers.Util.upperCaseObject(d),callback:function(b){this.handleResponse(c,b,a)},scope:this}},getStyleNames:function(a){return a.params.STYLES?a.params.STYLES:OpenLayers.Util.isArray(a.params.LAYERS)?Array(a.params.LAYERS.length):a.params.LAYERS.replace(/[^,]/g,"")},request:function(a,b){var c=this.findLayers();if(0==c.length)this.events.triggerEvent("nogetfeatureinfo"),OpenLayers.Element.removeClass(this.map.viewPortDiv,\n +"olCursorWait");else if(b=b||{},!1===this.drillDown){var c=this.buildWMSOptions(this.url,c,a,c[0].params.FORMAT),d=OpenLayers.Request.GET(c);!0===b.hover&&(this.hoverRequest=d)}else{this._numRequests=this._requestCount=0;this.features=[];for(var d={},e,f=0,g=c.length;f<g;f++){var h=c[f];e=OpenLayers.Util.isArray(h.url)?h.url[0]:h.url;e in d?d[e].push(h):(this._numRequests++,d[e]=[h])}for(e in d)c=d[e],c=this.buildWMSOptions(e,c,a,c[0].params.FORMAT),OpenLayers.Request.GET(c)}},triggerGetFeatureInfo:function(a,\n +b,c){this.events.triggerEvent("getfeatureinfo",{text:a.responseText,features:c,request:a,xy:b});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},handleResponse:function(a,b,c){var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;d=this.format.read(d);!1===this.drillDown?this.triggerGetFeatureInfo(b,a,d):(this._requestCount++,this._features="object"===this.output?(this._features||[]).concat({url:c,features:d}):(this._features||[]).concat(d),this._requestCount===this._numRequests&&\n +(this.triggerGetFeatureInfo(b,a,this._features.concat()),delete this._features,delete this._requestCount,delete this._numRequests))},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={features:[]};this.readNode(a,b);for(var a=[],c=0,d=b.features.length;c<d;c++){var e=b.features[c];this.internalProjection&&(this.externalProjection&&e.components[0])&&e.components[0].transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(e.components[0],e.attributes);a.push(e)}return a},readers:{sa:{SamplingPoint:function(a,b){if(!b.attributes){var c=\n +{attributes:{}};b.features.push(c);b=c}b.attributes.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},position:function(a,b){this.readChildNodes(a,b)}},gml:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,b){this.readChildNodes(a,b)},featureMember:function(a,b){var c={attributes:{}};b.features.push(c);this.readChildNodes(a,c)},name:function(a,b){b.attributes.name=this.getChildValue(a)},pos:function(a,b){this.externalProjection||(this.externalProjection=new OpenLayers.Projection(a.getAttribute("srsName")));\n +OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[a,b])}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{sos:{GetFeatureOfInterest:function(a){for(var b=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:"SOS","xsi:schemaLocation":this.schemaLocation}}),c=0,d=a.fois.length;c<d;c++)this.writeNode("FeatureOfInterestId",{foi:a.fois[c]},b);return b},FeatureOfInterestId:function(a){return this.createElementNSPlus("FeatureOfInterestId",{value:a.foi})}}},\n +CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",sa:"http://www.opengis.net/sampling/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\\s*|\\s*$/g,removeSpace:/\\s*/g,splitSpace:/\\s+/,trimComma:/\\s*,\\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",\n +defaultPrefix:"sos",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={measurements:[],observations:[]};this.readNode(a,b);return b},write:function(a){a=this.writeNode("sos:GetObservation",a);a.setAttribute("xmlns:om",this.namespaces.om);a.setAttribute("xmlns:ogc",this.namespaces.ogc);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,\n +[a])},readers:{om:{ObservationCollection:function(a,b){b.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},member:function(a,b){this.readChildNodes(a,b)},Measurement:function(a,b){var c={};b.measurements.push(c);this.readChildNodes(a,c)},Observation:function(a,b){var c={};b.observations.push(c);this.readChildNodes(a,c)},samplingTime:function(a,b){var c={};b.samplingTime=c;this.readChildNodes(a,c)},observedProperty:function(a,b){b.observedProperty=this.getAttributeNS(a,this.namespaces.xlink,\n +"href");this.readChildNodes(a,b)},procedure:function(a,b){b.procedure=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)},featureOfInterest:function(a,b){var c={features:[]};b.fois=[];b.fois.push(c);this.readChildNodes(a,c);for(var d=[],e=0,f=c.features.length;e<f;e++){var g=c.features[e];d.push(new OpenLayers.Feature.Vector(g.components[0],g.attributes))}c.features=d},result:function(a,b){var c={};b.result=c;""!==this.getChildValue(a)?(c.value=this.getChildValue(a),c.uom=\n +a.getAttribute("uom")):this.readChildNodes(a,c)}},sa:OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,gml:OpenLayers.Util.applyDefaults({TimeInstant:function(a,b){var c={};b.timeInstant=c;this.readChildNodes(a,c)},timePosition:function(a,b){b.timePosition=this.getChildValue(a)}},OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml)},writers:{sos:{GetObservation:function(a){var b=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:"SOS"}});this.writeNode("offering",\n +a,b);a.eventTime&&this.writeNode("eventTime",a,b);for(var c in a.procedures)this.writeNode("procedure",a.procedures[c],b);for(var d in a.observedProperties)this.writeNode("observedProperty",a.observedProperties[d],b);a.foi&&this.writeNode("featureOfInterest",a.foi,b);this.writeNode("responseFormat",a,b);a.resultModel&&this.writeNode("resultModel",a,b);a.responseMode&&this.writeNode("responseMode",a,b);return b},featureOfInterest:function(a){var b=this.createElementNSPlus("featureOfInterest");this.writeNode("ObjectID",\n +a.objectId,b);return b},ObjectID:function(a){return this.createElementNSPlus("ObjectID",{value:a})},responseFormat:function(a){return this.createElementNSPlus("responseFormat",{value:a.responseFormat})},procedure:function(a){return this.createElementNSPlus("procedure",{value:a})},offering:function(a){return this.createElementNSPlus("offering",{value:a.offering})},observedProperty:function(a){return this.createElementNSPlus("observedProperty",{value:a})},eventTime:function(a){var b=this.createElementNSPlus("eventTime");\n +"latest"===a.eventTime&&this.writeNode("ogc:TM_Equals",a,b);return b},resultModel:function(a){return this.createElementNSPlus("resultModel",{value:a.resultModel})},responseMode:function(a){return this.createElementNSPlus("responseMode",{value:a.responseMode})}},ogc:{TM_Equals:function(a){var b=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},b);"latest"===a.eventTime&&this.writeNode("gml:TimeInstant",{value:"latest"},b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",\n +{value:a.property})}},gml:{TimeInstant:function(a){var b=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",a,b);return b},timePosition:function(a){return this.createElementNSPlus("gml:timePosition",{value:a.value})}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Control.UTFGrid=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,layers:null,defaultHandlerOptions:{delay:300,pixelTolerance:4,stopMove:!1,single:!0,"double":!1,stopSingle:!1,stopDouble:!1},handlerMode:"click",setHandler:function(a){this.handlerMode=a;this.resetHandler()},resetHandler:function(){this.handler&&(this.handler.deactivate(),this.handler.destroy(),this.handler=null);"hover"==this.handlerMode?this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.reset},\n +this.handlerOptions):"click"==this.handlerMode?this.handler=new OpenLayers.Handler.Click(this,{click:this.handleEvent},this.handlerOptions):"move"==this.handlerMode&&(this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.handleEvent},this.handlerOptions));return this.handler?!0:!1},initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||this.defaultHandlerOptions;OpenLayers.Control.prototype.initialize.apply(this,[a]);this.resetHandler()},handleEvent:function(a){if(null==\n +a)this.reset();else{var b=this.map.getLonLatFromPixel(a.xy);if(b){var c=this.findLayers();if(0<c.length){for(var d={},e,f,g=0,h=c.length;g<h;g++)e=c[g],f=OpenLayers.Util.indexOf(this.map.layers,e),d[f]=e.getFeatureInfo(b);this.callback(d,b,a.xy)}}}},callback:function(){},reset:function(){this.callback(null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)c=a[d],c instanceof OpenLayers.Layer.UTFGrid&&b.push(c);return b},CLASS_NAME:"OpenLayers.Control.UTFGrid"});OpenLayers.Format.CQL=function(){function a(a){function b(){var a=e.pop();switch(a.type){case "LOGICAL":var c=b(),g=b();return new OpenLayers.Filter.Logical({filters:[g,c],type:f[a.text.toUpperCase()]});case "NOT":return c=b(),new OpenLayers.Filter.Logical({filters:[c],type:OpenLayers.Filter.Logical.NOT});case "BETWEEN":return e.pop(),g=b(),a=b(),c=b(),new OpenLayers.Filter.Comparison({property:c,lowerBoundary:a,upperBoundary:g,type:OpenLayers.Filter.Comparison.BETWEEN});case "COMPARISON":return g=\n +b(),c=b(),new OpenLayers.Filter.Comparison({property:c,value:g,type:d[a.text.toUpperCase()]});case "VALUE":return/^\'.*\'$/.test(a.text)?a.text.substr(1,a.text.length-2):Number(a.text);case "SPATIAL":switch(a.text.toUpperCase()){case "BBOX":var c=b(),a=b(),g=b(),h=b(),i=b();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:i,value:OpenLayers.Bounds.fromArray([h,g,a,c])});case "INTERSECTS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,\n +property:c,value:g});case "WITHIN":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.WITHIN,property:c,value:g});case "CONTAINS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.CONTAINS,property:c,value:g});case "DWITHIN":return a=b(),g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,value:g,property:c,distance:Number(a)})}case "GEOMETRY":return OpenLayers.Geometry.fromWKT(a.text);default:return a.text}}\n +for(var c=[],e=[];a.length;){var g=a.shift();switch(g.type){case "PROPERTY":case "GEOMETRY":case "VALUE":e.push(g);break;case "COMPARISON":case "BETWEEN":case "LOGICAL":for(var i=h[g.type];0<c.length&&h[c[c.length-1].type]<=i;)e.push(c.pop());c.push(g);break;case "SPATIAL":case "NOT":case "LPAREN":c.push(g);break;case "RPAREN":for(;0<c.length&&"LPAREN"!=c[c.length-1].type;)e.push(c.pop());c.pop();0<c.length&&"SPATIAL"==c[c.length-1].type&&e.push(c.pop());case "COMMA":case "END":break;default:throw Error("Unknown token type "+\n +g.type);}}for(;0<c.length;)e.push(c.pop());a=b();if(0<e.length){a="Remaining tokens after building AST: \\n";for(c=e.length-1;0<=c;c--)a+=e[c].type+": "+e[c].text+"\\n";throw Error(a);}return a}var b={PROPERTY:/^[_a-zA-Z]\\w*/,COMPARISON:/^(=|<>|<=|<|>=|>|LIKE)/i,COMMA:/^,/,LOGICAL:/^(AND|OR)/i,VALUE:/^(\'\\w+\'|\\d+(\\.\\d*)?|\\.\\d+)/,LPAREN:/^\\(/,RPAREN:/^\\)/,SPATIAL:/^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,NOT:/^NOT/i,BETWEEN:/^BETWEEN/i,GEOMETRY:function(a){var b=/^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(a);\n +if(b){var c=a.length,b=a.indexOf("(",b[0].length);if(-1<b)for(var d=1;b<c&&0<d;)switch(b++,a.charAt(b)){case "(":d++;break;case ")":d--}return[a.substr(0,b+1)]}},END:/^$/},c={LPAREN:["GEOMETRY","SPATIAL","PROPERTY","VALUE","LPAREN"],RPAREN:["NOT","LOGICAL","END","RPAREN"],PROPERTY:["COMPARISON","BETWEEN","COMMA"],BETWEEN:["VALUE"],COMPARISON:["VALUE"],COMMA:["GEOMETRY","VALUE","PROPERTY"],VALUE:["LOGICAL","COMMA","RPAREN","END"],SPATIAL:["LPAREN"],LOGICAL:["NOT","VALUE","SPATIAL","PROPERTY","LPAREN"],\n +NOT:["PROPERTY","LPAREN"],GEOMETRY:["COMMA","RPAREN"]},d={"=":OpenLayers.Filter.Comparison.EQUAL_TO,"<>":OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"<":OpenLayers.Filter.Comparison.LESS_THAN,"<=":OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,">":OpenLayers.Filter.Comparison.GREATER_THAN,">=":OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,LIKE:OpenLayers.Filter.Comparison.LIKE,BETWEEN:OpenLayers.Filter.Comparison.BETWEEN},e={},f={AND:OpenLayers.Filter.Logical.AND,OR:OpenLayers.Filter.Logical.OR},\n +g={},h={RPAREN:3,LOGICAL:2,COMPARISON:1},i;for(i in d)d.hasOwnProperty(i)&&(e[d[i]]=i);for(i in f)f.hasOwnProperty(i)&&(g[f[i]]=i);return OpenLayers.Class(OpenLayers.Format,{read:function(d){var e=d,d=[],f,g=["NOT","GEOMETRY","SPATIAL","PROPERTY","LPAREN"];do{a:{f=g;for(var h=void 0,g=void 0,i=f.length,h=0;h<i;h++){var g=f[h],p=b[g]instanceof RegExp?b[g].exec(e):(0,b[g])(e);if(p){f=p[0];e=e.substr(f.length).replace(/^\\s*/,"");f={type:g,text:f,remainder:e};break a}}d="ERROR: In parsing: ["+e+"], expected one of: ";\n +for(h=0;h<i;h++)g=f[h],d+="\\n "+g+": "+b[g];throw Error(d);}e=f.remainder;g=c[f.type];if("END"!=f.type&&!g)throw Error("No follows list for "+f.type);d.push(f)}while("END"!=f.type);d=a(d);this.keepData&&(this.data=d);return d},write:function(a){if(a instanceof OpenLayers.Geometry)return a.toString();switch(a.CLASS_NAME){case "OpenLayers.Filter.Spatial":switch(a.type){case OpenLayers.Filter.Spatial.BBOX:return"BBOX("+a.property+","+a.value.toBBOX()+")";case OpenLayers.Filter.Spatial.DWITHIN:return"DWITHIN("+\n +a.property+", "+this.write(a.value)+", "+a.distance+")";case OpenLayers.Filter.Spatial.WITHIN:return"WITHIN("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.INTERSECTS:return"INTERSECTS("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.CONTAINS:return"CONTAINS("+a.property+", "+this.write(a.value)+")";default:throw Error("Unknown spatial filter type: "+a.type);}case "OpenLayers.Filter.Logical":if(a.type==OpenLayers.Filter.Logical.NOT)return"NOT ("+this.write(a.filters[0])+\n +")";for(var b="(",c=!0,d=0;d<a.filters.length;d++)c?c=!1:b+=") "+g[a.type]+" (",b+=this.write(a.filters[d]);return b+")";case "OpenLayers.Filter.Comparison":return a.type==OpenLayers.Filter.Comparison.BETWEEN?a.property+" BETWEEN "+this.write(a.lowerBoundary)+" AND "+this.write(a.upperBoundary):a.property+" "+e[a.type]+" "+this.write(a.value);case void 0:if("string"===typeof a)return"\'"+a+"\'";if("number"===typeof a)return""+a;default:throw Error("Can\'t encode: "+a.CLASS_NAME+" "+a);}},CLASS_NAME:"OpenLayers.Format.CQL"})}();OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{layer:null,source:null,sourceOptions:null,tolerance:null,edge:!0,deferDelete:!1,mutual:!0,targetFilter:null,sourceFilter:null,handler:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.source&&this.setSource(this.options.source)},setSource:function(a){this.active?(this.deactivate(),this.handler&&(this.handler.destroy(),delete this.handler),this.source=a,this.activate()):this.source=\n +a},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)if(this.source){if(this.source.events)this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this})}else this.handler||(this.handler=new OpenLayers.Handler.Path(this,{done:function(a){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(a)})}},{layerOptions:this.sourceOptions})),this.handler.activate();return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);\n +a&&this.source&&this.source.events&&this.layer.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});return a},onSketchComplete:function(a){this.feature=null;return!this.considerSplit(a.feature)},afterFeatureModified:function(a){a.modified&&"function"===typeof a.feature.geometry.split&&(this.feature=a.feature,this.considerSplit(a.feature))},removeByGeometry:function(a,b){for(var c=0,d=a.length;c<d;++c)if(a[c].geometry===b){a.splice(c,1);break}},\n +isEligible:function(a){return a.geometry?a.state!==OpenLayers.State.DELETE&&"function"===typeof a.geometry.split&&this.feature!==a&&(!this.targetFilter||this.targetFilter.evaluate(a.attributes)):!1},considerSplit:function(a){var b=!1,c=!1;if(!this.sourceFilter||this.sourceFilter.evaluate(a.attributes)){for(var d=this.layer&&this.layer.features||[],e,f,g=[],h=[],i=this.layer===this.source&&this.mutual,j={edge:this.edge,tolerance:this.tolerance,mutual:i},k=[a.geometry],l,m,n,o=0,p=d.length;o<p;++o)if(l=\n +d[o],this.isEligible(l)){m=[l.geometry];for(var q=0;q<k.length;++q){n=k[q];for(var r=0;r<m.length;++r)if(e=m[r],n.getBounds().intersectsBounds(e.getBounds())&&(e=n.split(e,j)))if(f=this.events.triggerEvent("beforesplit",{source:a,target:l}),!1!==f&&(i&&(f=e[0],1<f.length&&(f.unshift(q,1),Array.prototype.splice.apply(k,f),q+=f.length-3),e=e[1]),1<e.length))e.unshift(r,1),Array.prototype.splice.apply(m,e),r+=e.length-3}m&&1<m.length&&(this.geomsToFeatures(l,m),this.events.triggerEvent("split",{original:l,\n +features:m}),Array.prototype.push.apply(g,m),h.push(l),c=!0)}k&&1<k.length&&(this.geomsToFeatures(a,k),this.events.triggerEvent("split",{original:a,features:k}),Array.prototype.push.apply(g,k),h.push(a),b=!0);if(b||c){if(this.deferDelete){d=[];o=0;for(p=h.length;o<p;++o)c=h[o],c.state===OpenLayers.State.INSERT?d.push(c):(c.state=OpenLayers.State.DELETE,this.layer.drawFeature(c));this.layer.destroyFeatures(d,{silent:!0});o=0;for(p=g.length;o<p;++o)g[o].state=OpenLayers.State.INSERT}else this.layer.destroyFeatures(h,\n +{silent:!0});this.layer.addFeatures(g,{silent:!0});this.events.triggerEvent("aftersplit",{source:a,features:g})}}return b},geomsToFeatures:function(a,b){var c=a.clone();delete c.geometry;for(var d,e=0,f=b.length;e<f;++e)d=c.clone(),d.geometry=b[e],d.state=OpenLayers.State.INSERT,b[e]=d},destroy:function(){this.active&&this.deactivate();OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Split"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,serverResolutions:null,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png",png:"png","image/jpeg":"jpg","image/jpg":"jpg",jpeg:"jpg",jpg:"jpg"},matrix:null,initialize:function(a){var b=\n +{url:!0,layer:!0,style:!0,matrixSet:!0},c;for(c in b)if(!(c in a))throw Error("Missing property \'"+c+"\' in layer configuration.");a.params=OpenLayers.Util.upperCaseObject(a.params);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,a.params,a]);this.formatSuffix||(this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop());if(this.matrixIds&&(a=this.matrixIds.length)&&"string"===typeof this.matrixIds[0]){b=this.matrixIds;this.matrixIds=Array(a);for(c=0;c<a;++c)this.matrixIds[c]=\n +{identifier:b[c]}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties()},updateMatrixProperties:function(){if(this.matrix=this.getMatrix())if(this.matrix.topLeftCorner&&(this.tileOrigin=this.matrix.topLeftCorner),this.matrix.tileWidth&&this.matrix.tileHeight&&(this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight)),this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top)),!this.tileFullExtent)this.tileFullExtent=\n +this.maxExtent},moveTo:function(a,b,c){(b||!this.matrix)&&this.updateMatrixProperties();return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMTS(this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getIdentifier:function(){return this.getServerZoom()},getMatrix:function(){var a;if(!this.matrixIds||0===this.matrixIds.length)a={identifier:this.getIdentifier()};else if("scaleDenominator"in this.matrixIds[0])for(var b=\n +OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.getServerResolution()/2.8E-4,c=Number.POSITIVE_INFINITY,d,e=0,f=this.matrixIds.length;e<f;++e)d=Math.abs(1-this.matrixIds[e].scaleDenominator/b),d<c&&(c=d,a=this.matrixIds[e]);else a=this.matrixIds[this.getIdentifier()];return a},getTileInfo:function(a){var b=this.getServerResolution(),c=(a.lon-this.tileOrigin.lon)/(b*this.tileSize.w),a=(this.tileOrigin.lat-a.lat)/(b*this.tileSize.h),b=Math.floor(c),d=Math.floor(a);return{col:b,\n +row:d,i:Math.floor((c-b)*this.tileSize.w),j:Math.floor((a-d)*this.tileSize.h)}},getURL:function(a){var a=this.adjustBounds(a),b="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(a)){var c=this.getTileInfo(a.getCenterLonLat()),a=this.dimensions;if("REST"===this.requestEncoding.toUpperCase())if(b=this.params,"string"===typeof this.url&&-1!==this.url.indexOf("{")){var d=this.url.replace(/\\{/g,"${"),c={style:this.style,Style:this.style,TileMatrixSet:this.matrixSet,TileMatrix:this.matrix.identifier,\n +TileRow:c.row,TileCol:c.col};if(a){var e,f;for(f=a.length-1;0<=f;--f)e=a[f],c[e]=b[e.toUpperCase()]}b=OpenLayers.String.format(d,c)}else{d=this.version+"/"+this.layer+"/"+this.style+"/";if(a)for(f=0;f<a.length;f++)b[a[f]]&&(d=d+b[a[f]]+"/");d=d+this.matrixSet+"/"+this.matrix.identifier+"/"+c.row+"/"+c.col+"."+this.formatSuffix;b=OpenLayers.Util.isArray(this.url)?this.selectUrl(d,this.url):this.url;b.match(/\\/$/)||(b+="/");b+=d}else"KVP"===this.requestEncoding.toUpperCase()&&(b={SERVICE:"WMTS",REQUEST:"GetTile",\n +VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:c.row,TILECOL:c.col,FORMAT:this.format},b=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[b]))}return b},mergeNewParams:function(a){if("KVP"===this.requestEncoding.toUpperCase())return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(a)])},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||\n +{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format,c=OpenLayers.Format.XML.prototype.write.apply(c,[c.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.features=this.parseFeatures(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;\n +b.callback.call(b.scope,a)}},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{jpeg:"jpg",gif:"gif",png:"png",png8:"png",png24:"png",dithered:"png"},DEFAULT_FORMAT:"jpeg",initialize:function(a,b,c,d){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||this.DEFAULT_FORMAT]},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b),a=\n +-Math.round(a.top/b),b=Math.floor(d/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w,e=Math.floor(a/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h,c=["/",this.params.map,"/",c,"/",this.params.g.replace(/\\s/g,"_"),"/def/t",e,"/l",b,"/t",a,"l",d,".",this.extension],d=this.url;OpenLayers.Util.isArray(d)&&(d=this.selectUrl(c.join(""),d));return d+c.join("")},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",initialize:function(a){OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this,arguments);this.outputFormat&&!this.readFormat&&("gml2"==this.outputFormat.toLowerCase()?this.readFormat=new OpenLayers.Format.GML.v2({featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName}):"json"==this.outputFormat.toLowerCase()&&(this.readFormat=new OpenLayers.Format.GeoJSON))},CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1_1,{version:"1.1.1",profile:"WMSC",readers:{wms:OpenLayers.Util.applyDefaults({VendorSpecificCapabilities:function(a,b){b.vendorSpecific={tileSets:[]};this.readChildNodes(a,b.vendorSpecific)},TileSet:function(a,b){var c={srs:{},bbox:{},resolutions:[]};this.readChildNodes(a,c);b.tileSets.push(c)},Resolutions:function(a,b){for(var c=this.getChildValue(a).split(" "),d=0,e=c.length;d<e;d++)""!=c[d]&&b.resolutions.push(parseFloat(c[d]))},\n +Width:function(a,b){b.width=parseInt(this.getChildValue(a))},Height:function(a,b){b.height=parseInt(this.getChildValue(a))},Layers:function(a,b){b.layers=this.getChildValue(a)},Styles:function(a,b){b.styles=this.getChildValue(a)}},OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){for(var c=this.getChildValue(a).split(/ +/),d=0,e=c.length;d<e;d++)b.srs[c[d]]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{roundedCorner:!1,roundedCornerColor:"darkblue",layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[];this.roundedCorner&&OpenLayers.Console.warn("roundedCorner option is deprecated")},destroy:function(){this.clearLayersArray("base");\n +this.clearLayersArray("data");this.map.events.un({buttonclick:this.onButtonClick,addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,scope:this});this.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,\n +scope:this});this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();this.outsideViewport||this.minimizeControl();this.redraw();return this.div},onButtonClick:function(a){a=a.buttonElement;a===this.minimizeDiv?this.minimizeControl():a===this.maximizeDiv?this.maximizeControl():a._layerSwitcher===\n +this.id&&(a["for"]&&(a=document.getElementById(a["for"])),a.disabled||("radio"==a.type?(a.checked=!0,this.map.setBaseLayer(this.map.getLayer(a._layer))):(a.checked=!a.checked,this.updateMap())))},clearLayersArray:function(a){this[a+"LayersDiv"].innerHTML="";this[a+"Layers"]=[]},checkRedraw:function(){var a=!1;if(!this.layerStates.length||this.map.layers.length!=this.layerStates.length)a=!0;else for(var b=0,c=this.layerStates.length;b<c;b++){var d=this.layerStates[b],e=this.map.layers[b];if(d.name!=\n +e.name||d.inRange!=e.inRange||d.id!=e.id||d.visibility!=e.visibility){a=!0;break}}return a},redraw:function(){if(!this.checkRedraw())return this.div;this.clearLayersArray("base");this.clearLayersArray("data");var a=!1,b=!1,c=this.map.layers.length;this.layerStates=Array(c);for(var d=0;d<c;d++){var e=this.map.layers[d];this.layerStates[d]={name:e.name,visibility:e.visibility,inRange:e.inRange,id:e.id}}var f=this.map.layers.slice();this.ascending||f.reverse();d=0;for(c=f.length;d<c;d++){var e=f[d],\n +g=e.isBaseLayer;if(e.displayInLayerSwitcher){g?b=!0:a=!0;var h=g?e==this.map.baseLayer:e.getVisibility(),i=document.createElement("input");i.id=this.id+"_input_"+e.name;i.name=g?this.id+"_baseLayers":e.name;i.type=g?"radio":"checkbox";i.value=e.name;i.checked=h;i.defaultChecked=h;i.className="olButton";i._layer=e.id;i._layerSwitcher=this.id;!g&&!e.inRange&&(i.disabled=!0);h=document.createElement("label");h["for"]=i.id;OpenLayers.Element.addClass(h,"labelSpan olButton");h._layer=e.id;h._layerSwitcher=\n +this.id;!g&&!e.inRange&&(h.style.color="gray");h.innerHTML=e.name;h.style.verticalAlign=g?"bottom":"baseline";var j=document.createElement("br");(g?this.baseLayers:this.dataLayers).push({layer:e,inputElem:i,labelSpan:h});e=g?this.baseLayersDiv:this.dataLayersDiv;e.appendChild(i);e.appendChild(h);e.appendChild(j)}}this.dataLbl.style.display=a?"":"none";this.baseLbl.style.display=b?"":"none";return this.div},updateMap:function(){for(var a=0,b=this.baseLayers.length;a<b;a++){var c=this.baseLayers[a];\n +c.inputElem.checked&&this.map.setBaseLayer(c.layer,!1)}a=0;for(b=this.dataLayers.length;a<b;a++)c=this.dataLayers[a],c.layer.setVisibility(c.inputElem.checked)},maximizeControl:function(a){this.div.style.width="";this.div.style.height="";this.showControls(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.div.style.width="0px";this.div.style.height="0px";this.showControls(!0);null!=a&&OpenLayers.Event.stop(a)},showControls:function(a){this.maximizeDiv.style.display=a?"":"none";\n +this.minimizeDiv.style.display=a?"none":"";this.layersDiv.style.display=a?"none":""},loadContents:function(){this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("Base Layer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");\n +this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("Overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,"dataLayersDiv");this.ascending?(this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv),this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv)):(this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv),\n +this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv));this.div.appendChild(this.layersDiv);this.roundedCorner&&(OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.roundedCornerColor,blend:!1}),OpenLayers.Rico.Corner.changeOpacity(this.layersDiv,0.75));var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,null,a,"absolute");\n +OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv olButton");this.maximizeDiv.style.display="none";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,null,a,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv olButton");this.minimizeDiv.style.display="none";this.div.appendChild(this.minimizeDiv)},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:!1,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));return this.parseFeatures(a)},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNSPlus("atom:feed");b.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));\n +for(var c=0,d=a.length;c<d;c++)b.appendChild(this.buildEntryNode(a[c]))}else b=this.buildEntryNode(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},buildContentNode:function(a){var b=this.createElementNSPlus("atom:content",{attributes:{type:a.type||null}});if(a.src)b.setAttribute("src",a.src);else if("text"==a.type||null==a.type)b.appendChild(this.createTextNode(a.value));else if("html"==a.type){if("string"!=typeof a.value)throw"HTML content must be in form of an escaped string";b.appendChild(this.createTextNode(a.value))}else"xhtml"==\n +a.type?b.appendChild(a.value):"xhtml"==a.type||a.type.match(/(\\+|\\/)xml$/)?b.appendChild(a.value):b.appendChild(this.createTextNode(a.value));return b},buildEntryNode:function(a){var b=a.attributes,c=b.atom||{},d=this.createElementNSPlus("atom:entry");if(c.authors)for(var e=OpenLayers.Util.isArray(c.authors)?c.authors:[c.authors],f=0,g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("author",e[f]));if(c.categories)for(var e=OpenLayers.Util.isArray(c.categories)?c.categories:[c.categories],\n +h,f=0,g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:h.term,scheme:h.scheme||null,label:h.label||null}}));c.content&&d.appendChild(this.buildContentNode(c.content));if(c.contributors){e=OpenLayers.Util.isArray(c.contributors)?c.contributors:[c.contributors];f=0;for(g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("contributor",e[f]))}a.fid&&d.appendChild(this.createElementNSPlus("atom:id",{value:a.fid}));if(c.links){e=OpenLayers.Util.isArray(c.links)?\n +c.links:[c.links];f=0;for(g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:h.href,rel:h.rel||null,type:h.type||null,hreflang:h.hreflang||null,title:h.title||null,length:h.length||null}}))}c.published&&d.appendChild(this.createElementNSPlus("atom:published",{value:c.published}));c.rights&&d.appendChild(this.createElementNSPlus("atom:rights",{value:c.rights}));if(c.summary||b.description)d.appendChild(this.createElementNSPlus("atom:summary",{value:c.summary||\n +b.description}));d.appendChild(this.createElementNSPlus("atom:title",{value:c.title||b.title||this.defaultEntryTitle}));c.updated&&d.appendChild(this.createElementNSPlus("atom:updated",{value:c.updated}));a.geometry&&(b=this.createElementNSPlus("georss:where"),b.appendChild(this.buildGeometryNode(a.geometry)),d.appendChild(b));return d},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,\n +externalProjection:this.externalProjection})},buildGeometryNode:function(a){this.gmlParser||this.initGmlParser();return this.gmlParser.writeNode("feature:_geometry",a).firstChild},buildPersonConstructNode:function(a,b){var c=["uri","email"],d=this.createElementNSPlus("atom:"+a);d.appendChild(this.createElementNSPlus("atom:name",{value:b.name}));for(var e=0,f=c.length;e<f;e++)b[c[e]]&&d.appendChild(this.createElementNSPlus("atom:"+c[e],{value:b[c[e]]}));return d},getFirstChildValue:function(a,b,c,\n +d){return(a=this.getElementsByTagNameNS(a,b,c))&&0<a.length?this.getChildValue(a[0],d):d},parseFeature:function(a){var b={},c=null,d=null,e=null,f=this.namespaces.atom;this.parsePersonConstructs(a,"author",b);d=this.getElementsByTagNameNS(a,f,"category");0<d.length&&(b.categories=[]);for(var g=0,h=d.length;g<h;g++){c={};c.term=d[g].getAttribute("term");if(e=d[g].getAttribute("scheme"))c.scheme=e;if(e=d[g].getAttribute("label"))c.label=e;b.categories.push(c)}d=this.getElementsByTagNameNS(a,f,"content");\n +if(0<d.length){c={};if(e=d[0].getAttribute("type"))c.type=e;(e=d[0].getAttribute("src"))?c.src=e:(c.value="text"==c.type||"html"==c.type||null==c.type?this.getFirstChildValue(a,f,"content",null):"xhtml"==c.type||c.type.match(/(\\+|\\/)xml$/)?this.getChildEl(d[0]):this.getFirstChildValue(a,f,"content",null),b.content=c)}this.parsePersonConstructs(a,"contributor",b);b.id=this.getFirstChildValue(a,f,"id",null);d=this.getElementsByTagNameNS(a,f,"link");0<d.length&&(b.links=Array(d.length));for(var i=["rel",\n +"type","hreflang","title","length"],g=0,h=d.length;g<h;g++){c={};c.href=d[g].getAttribute("href");for(var j=0,k=i.length;j<k;j++)(e=d[g].getAttribute(i[j]))&&(c[i[j]]=e);b.links[g]=c}if(c=this.getFirstChildValue(a,f,"published",null))b.published=c;if(c=this.getFirstChildValue(a,f,"rights",null))b.rights=c;if(c=this.getFirstChildValue(a,f,"summary",null))b.summary=c;b.title=this.getFirstChildValue(a,f,"title",null);b.updated=this.getFirstChildValue(a,f,"updated",null);c={title:b.title,description:b.summary,\n +atom:b};a=this.parseLocations(a)[0];a=new OpenLayers.Feature.Vector(a,c);a.fid=b.id;return a},parseFeatures:function(a){var b=[],c=this.getElementsByTagNameNS(a,this.namespaces.atom,"entry");0==c.length&&(c=[a]);for(var a=0,d=c.length;a<d;a++)b.push(this.parseFeature(c[a]));return b},parseLocations:function(a){var b=this.namespaces.georss,c={components:[]},d=this.getElementsByTagNameNS(a,b,"where");if(d&&0<d.length){this.gmlParser||this.initGmlParser();for(var e=0,f=d.length;e<f;e++)this.gmlParser.readChildNodes(d[e],\n +c)}c=c.components;if((d=this.getElementsByTagNameNS(a,b,"point"))&&0<d.length){e=0;for(f=d.length;e<f;e++){var g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\\s+/);2!=g.length&&(g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\\s*,\\s*/));c.push(new OpenLayers.Geometry.Point(g[1],g[0]))}}var h=this.getElementsByTagNameNS(a,b,"line");if(h&&0<h.length)for(var i,e=0,f=h.length;e<f;e++){d=OpenLayers.String.trim(h[e].firstChild.nodeValue).split(/\\s+/);i=[];for(var j=0,k=d.length;j<\n +k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.LineString(i))}if((a=this.getElementsByTagNameNS(a,b,"polygon"))&&0<a.length){e=0;for(f=a.length;e<f;e++){d=OpenLayers.String.trim(a[e].firstChild.nodeValue).split(/\\s+/);i=[];j=0;for(k=d.length;j<k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(c)]))}}if(this.internalProjection&&this.externalProjection){e=0;for(f=c.length;e<\n +f;e++)c[e]&&c[e].transform(this.externalProjection,this.internalProjection)}return c},parsePersonConstructs:function(a,b,c){for(var d=[],e=this.namespaces.atom,a=this.getElementsByTagNameNS(a,e,b),f=["uri","email"],g=0,h=a.length;g<h;g++){var i={};i.name=this.getFirstChildValue(a[g],e,"name",null);for(var j=0,k=f.length;j<k;j++){var l=this.getFirstChildValue(a[g],e,f[j],null);l&&(i[f[j]]=l)}d.push(i)}0<d.length&&(c[b+"s"]=d)},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,slideFactor:75,observeElement:null,draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{keydown:this.defaultKeyPress},{observeElement:this.observeElement||document})},defaultKeyPress:function(a){var b,c=!0;switch(a.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,\n +-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:b=this.map.getSize();this.map.pan(0,-0.75*b.h);break;case 34:b=this.map.getSize();this.map.pan(0,0.75*b.h);break;case 35:b=this.map.getSize();this.map.pan(0.75*b.w,0);break;case 36:b=this.map.getSize();this.map.pan(-0.75*b.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();break;default:c=!1}c&&OpenLayers.Event.stop(a)},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a;a=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(a,this.yx)},read:function(a){"string"==\n +typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);b.version=this.version;return b},readers:{wmts:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contents={};b.contents.layers=[];b.contents.tileMatrixSets={};this.readChildNodes(a,b.contents)},Layer:function(a,b){var c={styles:[],formats:[],dimensions:[],tileMatrixSetLinks:[],layers:[]};this.readChildNodes(a,c);b.layers.push(c)},Style:function(a,\n +b){var c={};c.isDefault="true"===a.getAttribute("isDefault");this.readChildNodes(a,c);b.styles.push(c)},Format:function(a,b){b.formats.push(this.getChildValue(a))},TileMatrixSetLink:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLinks.push(c)},TileMatrixSet:function(a,b){if(b.layers){var c={matrixIds:[]};this.readChildNodes(a,c);b.tileMatrixSets[c.identifier]=c}else b.tileMatrixSet=this.getChildValue(a)},TileMatrix:function(a,b){var c={supportedCRS:b.supportedCRS};this.readChildNodes(a,\n +c);b.matrixIds.push(c)},ScaleDenominator:function(a,b){b.scaleDenominator=parseFloat(this.getChildValue(a))},TopLeftCorner:function(a,b){var c=this.getChildValue(a).split(" "),d;b.supportedCRS&&(d=!!this.yx[b.supportedCRS.replace(/urn:ogc:def:crs:(\\w+):.+:(\\w+)$/,"urn:ogc:def:crs:$1::$2")]);b.topLeftCorner=d?new OpenLayers.LonLat(c[1],c[0]):new OpenLayers.LonLat(c[0],c[1])},TileWidth:function(a,b){b.tileWidth=parseInt(this.getChildValue(a))},TileHeight:function(a,b){b.tileHeight=parseInt(this.getChildValue(a))},\n +MatrixWidth:function(a,b){b.matrixWidth=parseInt(this.getChildValue(a))},MatrixHeight:function(a,b){b.matrixHeight=parseInt(this.getChildValue(a))},ResourceURL:function(a,b){b.resourceUrl=b.resourceUrl||{};b.resourceUrl[a.getAttribute("resourceType")]={format:a.getAttribute("format"),template:a.getAttribute("template")}},WSDL:function(a,b){b.wsdl={};b.wsdl.href=a.getAttribute("xlink:href")},ServiceMetadataURL:function(a,b){b.serviceMetadataUrl={};b.serviceMetadataUrl.href=a.getAttribute("xlink:href")},\n +LegendURL:function(a,b){b.legend={};b.legend.href=a.getAttribute("xlink:href");b.legend.format=a.getAttribute("format")},Dimension:function(a,b){var c={values:[]};this.readChildNodes(a,c);b.dimensions.push(c)},Default:function(a,b){b["default"]=this.getChildValue(a)},Value:function(a,b){b.values.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});\n + + +]]></string> </value> + </item> + <item> + <key> <string>next</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme.xml b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme.xml new file mode 100644 index 0000000000000000000000000000000000000000..7470998eaa8ecb9da2e48865f15f1911bd63f310 --- /dev/null +++ b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>theme</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>theme</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default.xml b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default.xml new file mode 100644 index 0000000000000000000000000000000000000000..a2cb14b5086b86839428869a123d32b2de3b6286 --- /dev/null +++ b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>default</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>default</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default/style.css.xml b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default/style.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..97fa5336d51d91546b18fddb8c798f9a414629e2 --- /dev/null +++ b/erp5_javascript_openlayers/PathTemplateItem/portal_skins/erp5_safeimage/openlayers/theme/default/style.css.xml @@ -0,0 +1,524 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts54195359.72</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>style.css</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/css</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string>div.olMap {\n + z-index: 0;\n + padding: 0 !important;\n + margin: 0 !important;\n + cursor: default;\n +}\n +\n +div.olMapViewport {\n + text-align: left;\n +}\n +\n +div.olLayerDiv {\n + -moz-user-select: none;\n + -khtml-user-select: none;\n +}\n +\n +.olLayerGoogleCopyright {\n + left: 2px;\n + bottom: 2px;\n +}\n +.olLayerGoogleV3.olLayerGoogleCopyright {\n + right: auto !important;\n +}\n +.olLayerGooglePoweredBy {\n + left: 2px;\n + bottom: 15px;\n +}\n +.olLayerGoogleV3.olLayerGooglePoweredBy {\n + bottom: 15px !important;\n +}\n +.olControlAttribution {\n + font-size: smaller;\n + right: 3px;\n + bottom: 4.5em;\n + position: absolute;\n + display: block;\n +}\n +.olControlScale {\n + right: 3px;\n + bottom: 3em;\n + display: block;\n + position: absolute;\n + font-size: smaller;\n +}\n +.olControlScaleLine {\n + display: block;\n + position: absolute;\n + left: 10px;\n + bottom: 15px;\n + font-size: xx-small;\n +}\n +.olControlScaleLineBottom {\n + border: solid 2px black;\n + border-bottom: none;\n + margin-top:-2px;\n + text-align: center;\n +}\n +.olControlScaleLineTop {\n + border: solid 2px black;\n + border-top: none;\n + text-align: center;\n +}\n +\n +.olControlPermalink {\n + right: 3px;\n + bottom: 1.5em;\n + display: block;\n + position: absolute;\n + font-size: smaller;\n +}\n +\n +div.olControlMousePosition {\n + bottom: 0;\n + right: 3px;\n + display: block;\n + position: absolute;\n + font-family: Arial;\n + font-size: smaller;\n +}\n +\n +.olControlOverviewMapContainer {\n + position: absolute;\n + bottom: 0;\n + right: 0;\n +}\n +\n +.olControlOverviewMapElement {\n + padding: 10px 18px 10px 10px;\n + background-color: #00008B;\n + -moz-border-radius: 1em 0 0 0;\n +}\n +\n +.olControlOverviewMapMinimizeButton,\n +.olControlOverviewMapMaximizeButton {\n + height: 18px;\n + width: 18px;\n + right: 0;\n + bottom: 80px;\n + cursor: pointer;\n +}\n +\n +.olControlOverviewMapExtentRectangle {\n + overflow: hidden;\n + background-image: url("img/blank.gif");\n + cursor: move;\n + border: 2px dotted red;\n +}\n +.olControlOverviewMapRectReplacement {\n + overflow: hidden;\n + cursor: move;\n + background-image: url("img/overview_replacement.gif");\n + background-repeat: no-repeat;\n + background-position: center;\n +}\n +\n +.olLayerGeoRSSDescription {\n + float:left;\n + width:100%;\n + overflow:auto;\n + font-size:1.0em;\n +}\n +.olLayerGeoRSSClose {\n + float:right;\n + color:gray;\n + font-size:1.2em;\n + margin-right:6px;\n + font-family:sans-serif;\n +}\n +.olLayerGeoRSSTitle {\n + float:left;font-size:1.2em;\n +}\n +\n +.olPopupContent {\n + padding:5px;\n + overflow: auto;\n +}\n +\n +.olControlNavigationHistory {\n + background-image: url("img/navigation_history.png");\n + background-repeat: no-repeat;\n + width: 24px;\n + height: 24px;\n +\n +}\n +.olControlNavigationHistoryPreviousItemActive {\n + background-position: 0 0;\n +}\n +.olControlNavigationHistoryPreviousItemInactive {\n + background-position: 0 -24px;\n +}\n +.olControlNavigationHistoryNextItemActive {\n + background-position: -24px 0;\n +}\n +.olControlNavigationHistoryNextItemInactive {\n + background-position: -24px -24px;\n +}\n +\n +div.olControlSaveFeaturesItemActive {\n + background-image: url(img/save_features_on.png);\n + background-repeat: no-repeat;\n + background-position: 0 1px;\n +}\n +div.olControlSaveFeaturesItemInactive {\n + background-image: url(img/save_features_off.png);\n + background-repeat: no-repeat;\n + background-position: 0 1px;\n +}\n +\n +.olHandlerBoxZoomBox {\n + border: 2px solid red;\n + position: absolute;\n + background-color: white;\n + opacity: 0.50;\n + font-size: 1px;\n + filter: alpha(opacity=50);\n +}\n +.olHandlerBoxSelectFeature {\n + border: 2px solid blue;\n + position: absolute;\n + background-color: white;\n + opacity: 0.50;\n + font-size: 1px;\n + filter: alpha(opacity=50);\n +}\n +\n +.olControlPanPanel {\n + top: 10px;\n + left: 5px;\n +}\n +\n +.olControlPanPanel div {\n + background-image: url(img/pan-panel.png);\n + height: 18px;\n + width: 18px;\n + cursor: pointer;\n + position: absolute;\n +}\n +\n +.olControlPanPanel .olControlPanNorthItemInactive {\n + top: 0;\n + left: 9px;\n + background-position: 0 0;\n +}\n +.olControlPanPanel .olControlPanSouthItemInactive {\n + top: 36px;\n + left: 9px;\n + background-position: 18px 0;\n +}\n +.olControlPanPanel .olControlPanWestItemInactive {\n + position: absolute;\n + top: 18px;\n + left: 0;\n + background-position: 0 18px;\n +}\n +.olControlPanPanel .olControlPanEastItemInactive {\n + top: 18px;\n + left: 18px;\n + background-position: 18px 18px;\n +}\n +\n +.olControlZoomPanel {\n + top: 71px;\n + left: 14px;\n +}\n +\n +.olControlZoomPanel div {\n + background-image: url(img/zoom-panel.png);\n + position: absolute;\n + height: 18px;\n + width: 18px;\n + cursor: pointer;\n +}\n +\n +.olControlZoomPanel .olControlZoomInItemInactive {\n + top: 0;\n + left: 0;\n + background-position: 0 0;\n +}\n +\n +.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {\n + top: 18px;\n + left: 0;\n + background-position: 0 -18px;\n +}\n +\n +.olControlZoomPanel .olControlZoomOutItemInactive {\n + top: 36px;\n + left: 0;\n + background-position: 0 18px;\n +}\n +\n +/*\n + * When a potential text is bigger than the image it move the image\n + * with some headers (closes #3154)\n + */\n +.olControlPanZoomBar div {\n + font-size: 1px;\n +}\n +\n +.olPopupCloseBox {\n + background: url("img/close.gif") no-repeat;\n + cursor: pointer;\n +}\n +\n +.olFramedCloudPopupContent {\n + padding: 5px;\n + overflow: auto;\n +}\n +\n +.olControlNoSelect {\n + -moz-user-select: none;\n + -khtml-user-select: none;\n +}\n +\n +.olImageLoadError {\n + background-color: pink;\n + opacity: 0.5;\n + filter: alpha(opacity=50); /* IE */\n +}\n +\n +/**\n + * Cursor styles\n + */\n +\n +.olCursorWait {\n + cursor: wait;\n +}\n +.olDragDown {\n + cursor: move;\n +}\n +.olDrawBox {\n + cursor: crosshair;\n +}\n +.olControlDragFeatureOver {\n + cursor: move;\n +}\n +.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown {\n + cursor: -moz-grabbing;\n +}\n +\n +/**\n + * Layer switcher\n + */\n +.olControlLayerSwitcher {\n + position: absolute;\n + top: 25px;\n + right: 0;\n + width: 20em;\n + font-family: sans-serif;\n + font-weight: bold;\n + margin-top: 3px;\n + margin-left: 3px;\n + margin-bottom: 3px;\n + font-size: smaller;\n + color: white;\n + background-color: transparent;\n +}\n +\n +.olControlLayerSwitcher .layersDiv {\n + padding-top: 5px;\n + padding-left: 10px;\n + padding-bottom: 5px;\n + padding-right: 10px;\n + background-color: darkblue;\n +}\n +\n +.olControlLayerSwitcher .layersDiv .baseLbl,\n +.olControlLayerSwitcher .layersDiv .dataLbl {\n + margin-top: 3px;\n + margin-left: 3px;\n + margin-bottom: 3px;\n +}\n +\n +.olControlLayerSwitcher .layersDiv .baseLayersDiv,\n +.olControlLayerSwitcher .layersDiv .dataLayersDiv {\n + padding-left: 10px;\n +}\n +\n +.olControlLayerSwitcher .maximizeDiv,\n +.olControlLayerSwitcher .minimizeDiv {\n + width: 18px;\n + height: 18px;\n + top: 5px;\n + right: 0;\n + cursor: pointer;\n +}\n +\n +.olBingAttribution {\n + color: #DDD;\n +}\n +.olBingAttribution.road {\n + color: #333;\n +}\n +\n +.olGoogleAttribution.hybrid, .olGoogleAttribution.satellite {\n + color: #EEE;\n +}\n +.olGoogleAttribution {\n + color: #333;\n +}\n +span.olGoogleAttribution a {\n + color: #77C;\n +}\n +span.olGoogleAttribution.hybrid a, span.olGoogleAttribution.satellite a {\n + color: #EEE;\n +}\n +\n +/**\n + * Editing and navigation icons.\n + * (using the editing_tool_bar.png sprint image)\n + */\n +.olControlNavToolbar ,\n +.olControlEditingToolbar {\n + margin: 5px 5px 0 0;\n +}\n +.olControlNavToolbar div,\n +.olControlEditingToolbar div {\n + background-image: url("img/editing_tool_bar.png");\n + background-repeat: no-repeat;\n + margin: 0 0 5px 5px;\n + width: 24px;\n + height: 22px;\n + cursor: pointer\n +}\n +/* positions */\n +.olControlEditingToolbar {\n + right: 0;\n + top: 0;\n +}\n +.olControlNavToolbar {\n + top: 295px;\n + left: 9px;\n +}\n +/* layouts */\n +.olControlEditingToolbar div {\n + float: right;\n +}\n +/* individual controls */\n +.olControlNavToolbar .olControlNavigationItemInactive,\n +.olControlEditingToolbar .olControlNavigationItemInactive {\n + background-position: -103px -1px;\n +}\n +.olControlNavToolbar .olControlNavigationItemActive ,\n +.olControlEditingToolbar .olControlNavigationItemActive {\n + background-position: -103px -24px;\n +}\n +.olControlNavToolbar .olControlZoomBoxItemInactive {\n + background-position: -128px -1px;\n +}\n +.olControlNavToolbar .olControlZoomBoxItemActive {\n + background-position: -128px -24px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePointItemInactive {\n + background-position: -77px -1px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePointItemActive {\n + background-position: -77px -24px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePathItemInactive {\n + background-position: -51px -1px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePathItemActive {\n + background-position: -51px -24px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive{\n + background-position: -26px -1px;\n +}\n +.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive {\n + background-position: -26px -24px;\n +}\n +\n +div.olControlZoom {\n + position: absolute;\n + top: 8px;\n + left: 8px;\n + background: rgba(255,255,255,0.4);\n + border-radius: 4px;\n + padding: 2px;\n +}\n +div.olControlZoom a {\n + display: block;\n + margin: 1px;\n + padding: 0;\n + color: white;\n + font-size: 18px;\n + font-family: \'Lucida Grande\', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;\n + font-weight: bold;\n + text-decoration: none;\n + text-align: center;\n + height: 22px;\n + width:22px;\n + line-height: 19px;\n + background: #130085; /* fallback for IE - IE6 requires background shorthand*/\n + background: rgba(0, 60, 136, 0.5);\n + filter: alpha(opacity=80);\n +}\n +div.olControlZoom a:hover {\n + background: #130085; /* fallback for IE */\n + background: rgba(0, 60, 136, 0.7);\n + filter: alpha(opacity=100);\n +}\n +@media only screen and (max-width: 600px) {\n + div.olControlZoom a:hover {\n + background: rgba(0, 60, 136, 0.5);\n + }\n +}\n +a.olControlZoomIn {\n + border-radius: 4px 4px 0 0;\n +}\n +a.olControlZoomOut {\n + border-radius: 0 0 4px 4px;\n +}\n +\n +\n +/**\n + * Animations\n + */\n +\n +.olLayerGrid .olTileImage {\n + -webkit-transition: opacity 0.2s linear;\n + -moz-transition: opacity 0.2s linear;\n + -o-transition: opacity 0.2s linear;\n + transition: opacity 0.2s linear;\n +}\n +</string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>9948</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>style.css</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/erp5_javascript_openlayers/bt/copyright_list b/erp5_javascript_openlayers/bt/copyright_list new file mode 100644 index 0000000000000000000000000000000000000000..f9342e8df2a0698ef2d21a0ce817c2a24f98f75e --- /dev/null +++ b/erp5_javascript_openlayers/bt/copyright_list @@ -0,0 +1 @@ +2012 (c) Nexedi SA \ No newline at end of file diff --git a/erp5_javascript_openlayers/bt/description b/erp5_javascript_openlayers/bt/description new file mode 100644 index 0000000000000000000000000000000000000000..da31d9b9088763d1d9c2c7c18ae5ab0cdfa5e063 --- /dev/null +++ b/erp5_javascript_openlayers/bt/description @@ -0,0 +1 @@ +This Business Template contains all the files needed to implement openlayers in safeimage \ No newline at end of file diff --git a/erp5_javascript_openlayers/bt/maintainer_list b/erp5_javascript_openlayers/bt/maintainer_list new file mode 100644 index 0000000000000000000000000000000000000000..d9f1748cc6fca1399ef3336e07498a6655a038a9 --- /dev/null +++ b/erp5_javascript_openlayers/bt/maintainer_list @@ -0,0 +1 @@ +Pere \ No newline at end of file diff --git a/erp5_javascript_openlayers/bt/revision b/erp5_javascript_openlayers/bt/revision new file mode 100644 index 0000000000000000000000000000000000000000..bf0d87ab1b2b0ec1a11a3973d2845b42413d9767 --- /dev/null +++ b/erp5_javascript_openlayers/bt/revision @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/erp5_javascript_openlayers/bt/template_format_version b/erp5_javascript_openlayers/bt/template_format_version new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/erp5_javascript_openlayers/bt/template_format_version @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/erp5_javascript_openlayers/bt/template_path_list b/erp5_javascript_openlayers/bt/template_path_list new file mode 100644 index 0000000000000000000000000000000000000000..fa8424b01695c96266d7f95c822876b25bc05fe7 --- /dev/null +++ b/erp5_javascript_openlayers/bt/template_path_list @@ -0,0 +1,2 @@ +portal_skins/erp5_safeimage/openlayers +portal_skins/erp5_safeimage/openlayers/** \ No newline at end of file diff --git a/erp5_javascript_openlayers/bt/title b/erp5_javascript_openlayers/bt/title new file mode 100644 index 0000000000000000000000000000000000000000..62f656afc5101be4c413c2509a56598873c3700c --- /dev/null +++ b/erp5_javascript_openlayers/bt/title @@ -0,0 +1 @@ +erp5_javascript_openlayers \ No newline at end of file diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py index e904fb66b92e98a2cd4148746f7823eb46337e75..dcf603434b0a4d135c7ae1532b8796701f5a7ba6 100644 --- a/product/CMFActivity/ActivityTool.py +++ b/product/CMFActivity/ActivityTool.py @@ -1297,17 +1297,45 @@ class ActivityTool (Folder, UniqueObject): return REQUEST.RESPONSE.redirect('%s/%s' % (self.absolute_url(), 'manageActivities')) + security.declareProtected( CMFCorePermissions.ManagePortal, 'manageRestart') + def manageRestart(self, message_uid_list, activity, REQUEST=None): + """ + Restart one or several messages + """ + if not(isinstance(message_uid_list, list)): + message_uid_list = [message_uid_list] + self.SQLBase_makeMessageListAvailable(table=activity_dict[activity].sql_table, + uid=message_uid_list) + if REQUEST is not None: + return REQUEST.RESPONSE.redirect('%s/%s' % ( + self.absolute_url(), 'view')) + security.declareProtected( CMFCorePermissions.ManagePortal, 'manageCancel' ) def manageCancel(self, object_path, method_id, REQUEST=None): """ Cancel all methods for object "object_path" """ + LOG('ActivityTool', WARNING, + '"manageCancel" method is deprecated, use "manageDelete" instead.') if type(object_path) is type(''): object_path = tuple(object_path.split('/')) self.flush(object_path,method_id=method_id,invoke=0) if REQUEST is not None: - return REQUEST.RESPONSE.redirect('%s/%s' % - (self.absolute_url(), 'manageActivities')) + return REQUEST.RESPONSE.redirect('%s/%s' % ( + self.absolute_url(), 'view')) + + security.declareProtected( CMFCorePermissions.ManagePortal, 'manageDelete' ) + def manageDelete(self, message_uid_list, activity, REQUEST=None): + """ + Delete one or several messages + """ + if not(isinstance(message_uid_list, list)): + message_uid_list = [message_uid_list] + self.SQLBase_delMessage(table=activity_dict[activity].sql_table, + uid=message_uid_list) + if REQUEST is not None: + return REQUEST.RESPONSE.redirect('%s/%s' % ( + self.absolute_url(), 'view')) security.declareProtected( CMFCorePermissions.ManagePortal, 'manageClearActivities' ) @@ -1374,6 +1402,19 @@ class ActivityTool (Folder, UniqueObject): '%s/manageActivitiesAdvanced?manage_tabs_message=%s' % ( self.absolute_url(), message)) + security.declarePublic('getMessageTempObjectList') + def getMessageTempObjectList(self, **kw): + """ + Get object list of messages waiting in queues + """ + message_list = self.getMessageList(**kw) + object_list = [] + for sql_message in message_list: + message = self.newContent(temp_object=1) + message.edit (**sql_message.__dict__) + object_list.append(message) + return object_list + security.declarePublic('getMessageList') def getMessageList(self, activity=None, **kw): """ @@ -1384,6 +1425,7 @@ class ActivityTool (Folder, UniqueObject): self.initialize() if activity: return activity_dict[activity].getMessageList(aq_inner(self), **kw) + message_list = [] for activity in activity_dict.itervalues(): try: diff --git a/product/CMFActivity/tests/testCMFActivity.py b/product/CMFActivity/tests/testCMFActivity.py index 2cfcaece9c163a7ef1698a7fc0d63d11604ab250..7e50e73b18660ee510b89400ca92775972a68772 100644 --- a/product/CMFActivity/tests/testCMFActivity.py +++ b/product/CMFActivity/tests/testCMFActivity.py @@ -3574,13 +3574,11 @@ class TestCMFActivity(ERP5TypeTestCase, LogInterceptor): c = [category_tool.newContent()] for i in xrange(5): c.append(c[i//2].newContent()) - transaction.commit() self.tic() def activate(i, priority=1, **kw): kw.setdefault('merge_parent', c[0].getPath()) c[i].activate(priority=priority, **kw).doSomething() def check(*expected): - transaction.commit() self.tic() self.assertEquals(tuple(invoked), expected) del invoked[:] @@ -3609,10 +3607,10 @@ class TestCMFActivity(ERP5TypeTestCase, LogInterceptor): merge_parent=c[(i-1)//2 or i].getPath(), priority=priority, **kw).doSomething() def invokeGroup(self, message_list): - invoked.append([c.index(m[0]) for m in message_list]) + invoked.append(sorted(c.index(m[0]) for m in message_list)) category_tool.__class__.invokeGroup = invokeGroup try: - activate(5, 0); activate(1, 1); check([5, 1]) + activate(5, 0); activate(1, 1); check([1, 5]) activate(4, 0); activate(1, 1); activate(2, 0); check([1, 2]) activate(1, 0); activate(5, 0); activate(3, 1); check([1, 5]) for p, i in enumerate((5, 3, 2, 1, 4)): @@ -3621,11 +3619,10 @@ class TestCMFActivity(ERP5TypeTestCase, LogInterceptor): for cost in 0.3, 0.1: activate(2, 0, group_method_cost=cost) activate(3, 1); activate(4, 2); activate(1, 3) - check([2, 1]) + check([1, 2]) finally: del category_tool.__class__.invokeGroup category_tool._delObject(c[0].getId()) - transaction.commit() self.tic() def test_suite(): diff --git a/product/CMFCategory/Category.py b/product/CMFCategory/Category.py index 8a0c5f47953f3d60b0f11d110bc3aa7ab9586b0c..1152b89e9e36cdb5b1fc24d3681d89991d7cad63 100644 --- a/product/CMFCategory/Category.py +++ b/product/CMFCategory/Category.py @@ -796,6 +796,13 @@ class BaseCategory(Category): security = ClassSecurityInfo() security.declareObjectProtected(Permissions.AccessContentsInformation) + # BBB: Required to start instance with old + # version of erp5_property_sheets BT. + related_locally_indexed = False + def isRelatedLocallyIndexed(self): + """Determines if related values should be indexed on target documents""" + return self.related_locally_indexed + def asSQLExpression(self, strict_membership=0, table='category', base_category=None): """ A Predicate can be rendered as an sql expression. This diff --git a/product/CMFCategory/CategoryTool.py b/product/CMFCategory/CategoryTool.py index 36d1cdaa127c45eb0c589a432ac0ac8dd0f55a9a..a695da561df876c5eb8ff3c2831461e44661fe5e 100644 --- a/product/CMFCategory/CategoryTool.py +++ b/product/CMFCategory/CategoryTool.py @@ -30,7 +30,8 @@ """\ ERP portal_categories tool. """ - +from collections import deque +from BTrees.OOBTree import OOTreeSet from OFS.Folder import Folder from Products.CMFCore.utils import UniqueObject from Products.ERP5Type.Globals import InitializeClass, DTMLFile @@ -40,9 +41,11 @@ from Acquisition import aq_base, aq_inner from Products.ERP5Type import Permissions from Products.ERP5Type.Base import Base from Products.ERP5Type.Cache import getReadOnlyTransactionCache +from Products.ERP5Type.TransactionalVariable import getTransactionalVariable from Products.CMFCategory import _dtmldir from Products.CMFCore.PortalFolder import ContentFilter from Products.CMFCategory.Renderer import Renderer +from Products.CMFCategory.Category import Category, BaseCategory from OFS.Traversable import NotFound import types @@ -55,6 +58,34 @@ _marker = object() class CategoryError( Exception ): pass + +class RelatedIndex(): # persistent.Persistent can be added + # without breaking compatibility + + def __repr__(self): + try: + contents = ', '.join('%s=%r' % (k, list(v)) + for (k, v) in self.__dict__.iteritems()) + except Exception: + contents = '...' + return '<%s(%s) at 0x%x>' % (self.__class__.__name__, contents, id(self)) + + def __nonzero__(self): + return any(self.__dict__.itervalues()) + + def add(self, base, relative_url): + try: + getattr(self, base).add(relative_url) + except AttributeError: + setattr(self, base, OOTreeSet((relative_url,))) + + def remove(self, base, relative_url): + try: + getattr(self, base).remove(relative_url) + except (AttributeError, KeyError): + pass + + class CategoryTool( UniqueObject, Folder, Base ): """ The CategoryTool object is the placeholder for all methods @@ -308,38 +339,34 @@ class CategoryTool( UniqueObject, Folder, Base ): such as site/group/a/b/c/b1/c1 where b and b1 are both children categories of a. - relative_url -- a single relative url of a list of - relative urls + relative_url -- a single relative url or a list of relative urls strict -- if set to 1, only return uids of parents, not relative_url """ - uid_dict = {} + uid_set = set() if isinstance(relative_url, str): relative_url = (relative_url,) for path in relative_url: try: o = self.getCategoryValue(path, base_category=base_category) if o is not None: - my_base_category = self.getBaseCategoryId(path) - bo = self.get(my_base_category, None) - if bo is not None: - bo_uid = int(bo.getUid()) - uid_dict[(int(o.uid), bo_uid, 1)] = 1 # Strict Membership - if o.meta_type == 'CMF Category' or o.meta_type == 'CMF Base Category': + if base_category is None: + my_base_category = self.getBaseCategoryId(path) + else: + my_base_category = base_category + bo_uid = self[my_base_category].getUid() + uid_set.add((o.getUid(), bo_uid, 1)) # Strict Membership + if not strict: + while o.portal_type == 'Category': # This goes up in the category tree # XXX we should also go up in some other cases.... # ie. when some documents act as categories - if not strict: - while o.meta_type == 'CMF Category': - o = o.aq_parent # We want acquisition here without aq_inner - uid_dict[(int(o.uid), bo_uid, 0)] = 1 # Non Strict Membership + o = o.aq_parent # We want acquisition here without aq_inner + uid_set.add((o.getUid(), bo_uid, 0)) # Non Strict Membership except (KeyError, AttributeError): LOG('WARNING: CategoriesTool',0, 'Unable to find uid for %s' % path) - return uid_dict.keys() - - security.declareProtected(Permissions.AccessContentsInformation, 'getUids') - getUids = getCategoryParentUidList + return list(uid_set) # cast to list for <dtml-in> security.declareProtected(Permissions.AccessContentsInformation, 'getCategoryChildUidList') def getCategoryChildUidList(self, relative_url, base_category = None, strict=0): @@ -631,90 +658,58 @@ class CategoryTool( UniqueObject, Folder, Base ): portal_type = (portal_type,) spec = portal_type - self._cleanupCategories(context) - if isinstance(category_list, str): category_list = (category_list, ) elif category_list is None: category_list = () - elif isinstance(category_list, (list, tuple)): - pass - else: - __traceback_info__ = (base_category_list, category_list) - raise TypeError('Category must be of string, tuple of string ' - 'or list of string type.') if isinstance(base_category_list, str): base_category_list = (base_category_list, ) - # Build the ckecked_permission filter if checked_permission is not None: checkPermission = self.portal_membership.checkPermission - def permissionFilter(obj): - if checkPermission(checked_permission, obj): - return 0 - else: - return 1 - new_category_list = [] - default_dict = {} - spec_len = len(spec) + new_category_list = deque() + default_base_category_set = set() + default_category_set = set() for path in self._getCategoryList(context): my_base_id = self.getBaseCategoryId(path) - if my_base_id not in base_category_list: - # Keep each membership which is not in the - # specified list of base_category ids - new_category_list.append(path) - else: - keep_it = 0 - if spec_len != 0 or (checked_permission is not None): + if my_base_id in base_category_list: + if spec or checked_permission is not None: obj = self.unrestrictedTraverse(path, None) if obj is not None: - if spec_len != 0: - # If spec is (), then we should keep nothing - # Everything will be replaced - # If spec is not (), Only keep this if not in our spec - my_type = obj.portal_type - keep_it = (my_type not in spec) - if (not keep_it) and (checked_permission is not None): - keep_it = permissionFilter(obj) - - if keep_it: - new_category_list.append(path) - elif keep_default: - # We must remember the default value - # for each replaced category - if not default_dict.has_key(my_base_id): - default_dict[my_base_id] = path - # We now create a list of default category values - default_new_category_list = [] - for path in default_dict.values(): - if base or len(base_category_list) > 1: - if path in category_list: - default_new_category_list.append(path) + # If spec is (), then we should keep nothing + # Everything will be replaced + # If spec is not (), Only keep this if not in our spec + if (spec and obj.portal_type not in spec) or not ( + checked_permission is None or + checkPermission(checked_permission, obj)): + new_category_list.append(path) + continue + # We must remember the default value for each replaced category + if keep_default and my_base_id not in default_base_category_set: + default_base_category_set.add(my_base_id) + default_category_set.add(path) else: - if path[len(base_category_list[0])+1:] in category_list: - default_new_category_list.append(path) + # Keep each membership which is not in the + # specified list of base_category ids + new_category_list.append(path) # Before we append new category values (except default values) # We must make sure however that multiple links are possible - default_path_found = {} + base = '' if base or len(base_category_list) > 1 \ + else base_category_list[0] + '/' for path in category_list: - if not path in ('', None): - if base or len(base_category_list) > 1: - # Only keep path which are member of base_category_list - if self.getBaseCategoryId(path) in base_category_list: - if path not in default_new_category_list or default_path_found.has_key(path): - default_path_found[path] = 1 - new_category_list.append(path) + if path not in ('', None): + if base: + path = base + path + elif self.getBaseCategoryId(path) not in base_category_list: + continue + if path in default_category_set: + default_category_set.remove(path) + new_category_list.appendleft(path) else: - new_path = '%s/%s' % (base_category_list[0], path) - if new_path not in default_new_category_list: - new_category_list.append(new_path) -# LOG("CategoryTool, setCategoryMembership", 0 , -# 'new_category_list: %s' % str(new_category_list)) -# LOG("CategoryTool, setCategoryMembership", 0 , -# 'default_new_category_list: %s' % str(default_new_category_list)) - self._setCategoryList(context, tuple(default_new_category_list + new_category_list)) + new_category_list.append(path) + self._setCategoryList(context, new_category_list) security.declareProtected( Permissions.AccessContentsInformation, 'setDefaultCategoryMembership' ) @@ -739,7 +734,6 @@ class CategoryTool( UniqueObject, Folder, Base ): to filter the object on """ - self._cleanupCategories(context) if isinstance(default_category, (tuple, list)): default_category = default_category[0] category_list = self.getCategoryMembershipList(context, base_category, @@ -1182,35 +1176,28 @@ class CategoryTool( UniqueObject, Folder, Base ): """ if getattr(aq_base(context), 'isCategory', 0): return context.isAcquiredMemberOf(category) - for c in self._getAcquiredCategoryList(context): + for c in self.getAcquiredCategoryList(context): if c.find(category) >= 0: return 1 return 0 security.declareProtected( Permissions.AccessContentsInformation, 'getCategoryList' ) def getCategoryList(self, context): - self._cleanupCategories(context) - return self._getCategoryList(context) - - security.declareProtected( Permissions.AccessContentsInformation, '_getCategoryList' ) - def _getCategoryList(self, context): - if getattr(aq_base(context), 'categories', _marker) is not _marker: - if isinstance(context.categories, tuple): - result = list(context.categories) - elif isinstance(context.categories, list): - result = context.categories - else: - result = [] + result = getattr(aq_base(context), 'categories', None) + if result is not None: + result = list(result) elif isinstance(context, dict): - result = list(context.get('categories', [])) + return list(context.get('categories', ())) else: result = [] if getattr(context, 'isCategory', 0): category_url = context.getRelativeUrl() if category_url not in result: - result.append(context.getRelativeUrl()) # Pure category is member of itself + result.append(category_url) # Pure category is member of itself return result + _getCategoryList = getCategoryList + security.declareProtected( Permissions.ModifyPortalContent, 'setCategoryList' ) def setCategoryList(self, context, value): self._setCategoryList(context, value) @@ -1218,45 +1205,39 @@ class CategoryTool( UniqueObject, Folder, Base ): security.declareProtected( Permissions.ModifyPortalContent, '_setCategoryList' ) def _setCategoryList(self, context, value): - context.categories = tuple(value) + old = set(getattr(aq_base(context), 'categories', ())) + context.categories = value = tuple(value) + if context.isTempDocument(): + return + value = set(value) + relative_url = context.getRelativeUrl() + for edit, value in ("remove", old - value), ("add", value - old): + for path in value: + base = self.getBaseCategoryId(path) + try: + if self[base].isRelatedLocallyIndexed(): + path = self._removeDuplicateBaseCategoryIdInCategoryPath(base, path) + ob = aq_base(self.unrestrictedTraverse(path)) + try: + related = ob._related_index + except AttributeError: + if edit is "remove": + continue + related = ob._related_index = RelatedIndex() + getattr(related, edit)(base, relative_url) + except KeyError: + pass security.declareProtected( Permissions.AccessContentsInformation, 'getAcquiredCategoryList' ) def getAcquiredCategoryList(self, context): - """ - Returns the list of acquired categories - """ - self._cleanupCategories(context) - return self._getAcquiredCategoryList(context) - - security.declareProtected( Permissions.AccessContentsInformation, '_getAcquiredCategoryList' ) - def _getAcquiredCategoryList(self, context): result = self.getAcquiredCategoryMembershipList(context, base_category = self.getBaseCategoryList(context=context)) - append = result.append - non_acquired = self._getCategoryList(context) - for c in non_acquired: + for c in self._getCategoryList(context): # Make sure all local categories are considered if c not in result: - append(c) - if getattr(context, 'isCategory', 0): - append(context.getRelativeUrl()) # Pure category is member of itself + result.append(c) return result - security.declareProtected( Permissions.ModifyPortalContent, '_cleanupCategories' ) - def _cleanupCategories(self, context): - # Make sure _cleanupCategories does not modify objects each time it is called - # or we get many conflicts - requires_update = 0 - categories = [] - append = categories.append - if getattr(context, 'categories', _marker) is not _marker: - for cat in self._getCategoryList(context): - if isinstance(cat, str): - append(cat) - else: - requires_update = 1 - if requires_update: self.setCategoryList(context, tuple(categories)) - # Catalog related methods def updateRelatedCategory(self, category, previous_category_url, new_category_url): new_category = re.sub('^%s$' % @@ -1349,7 +1330,6 @@ class CategoryTool( UniqueObject, Folder, Base ): security.declareProtected( Permissions.AccessContentsInformation, 'getRelatedValueList' ) def getRelatedValueList(self, context, base_category_list=None, - spec=(), filter=None, base=1, checked_permission=None, **kw): """ This methods returns the list of objects related to the context @@ -1359,65 +1339,158 @@ class CategoryTool( UniqueObject, Folder, Base ): portal_type = kw.get('portal_type') if isinstance(portal_type, str): - portal_type = [portal_type] - if spec is (): - # We do not want to care about spec - spec = None + portal_type = portal_type, # Base Category may not be related, besides sub categories - if context.getPortalType() == 'Base Category': - category_list = [context.getRelativeUrl()] + relative_url = context.getRelativeUrl() + local_index_dict = {} + if isinstance(context, BaseCategory): + category_list = relative_url, else: + category_list = [] if isinstance(base_category_list, str): - base_category_list = [base_category_list] + base_category_list = base_category_list, elif base_category_list is () or base_category_list is None: base_category_list = self.getBaseCategoryList() - category_list = [] for base_category in base_category_list: - category_list.append("%s/%s" % (base_category, context.getRelativeUrl())) - - sql_kw = {} - for sql_key in ('limit', 'order_by_expression'): # XXX-JPS it would be better to use Catalog API - if sql_key in kw: - sql_kw[sql_key] = kw[sql_key] - - brain_result = self.Base_zSearchRelatedObjectsByCategoryList( - category_list=category_list, - portal_type=portal_type, - strict_membership=strict_membership, - **sql_kw) + if self[base_category].isRelatedLocallyIndexed(): + category = base_category + '/' + local_index_dict[base_category] = '' \ + if relative_url.startswith(category) else category + else: + category_list.append("%s/%s" % (base_category, relative_url)) + + search = self.getPortalObject().Base_zSearchRelatedObjectsByCategoryList + if local_index_dict: + # For some base categories, lookup indexes in ZODB. + recurse = isinstance(context, Category) and not strict_membership + result_dict = {} + def check_local(): + r = set(getattr(related, base_category, ())) + r.difference_update(result_dict) + for r in r: + try: + ob = self.unrestrictedTraverse(r) + if category in aq_base(ob).categories: + result_dict[r] = ob + continue + # Do not add 'r' to result_dict, because 'ob' may be linked in + # another way. + except (AttributeError, KeyError): + result_dict[r] = None + related.remove(base_category, r) + tv = getTransactionalVariable().setdefault( + 'CategoriesTool.getRelatedValueList', {}) + try: + related = aq_base(context)._related_index + except AttributeError: + related = RelatedIndex() + include_self = False + for base_category, category in local_index_dict.iteritems(): + if not category: + # Categories are member of themselves. + include_self = True + result_dict[relative_url] = context + category += relative_url + if tv.get(category, -1) < recurse: + # Update local index with results from catalog for backward + # compatibility. But no need to do it several times in the same + # transaction. + for r in search(category_list=category, + portal_type=None, + strict_membership=strict_membership): + r = r.relative_url + # relative_url is empty if object is deleted (but not yet + # unindexed). Nothing specific to do in such case because + # category tool won't match. + try: + ob = self.unrestrictedTraverse(r) + categories = aq_base(ob).categories + except (AttributeError, KeyError): + result_dict[r] = None + continue + if category in categories: + related.add(base_category, r) + result_dict[r] = ob + elif recurse: + for p in categories: + if p.startswith(category + '/'): + try: + o = self.unrestrictedTraverse(p) + p = aq_base(o)._related_index + except KeyError: + continue + except AttributeError: + p = o._related_index = RelatedIndex() + result_dict[r] = ob + p.add(base_category, r) + tv[category] = recurse + # Get and check all objects referenced by local index for the base + # category that is currently considered. + check_local() + # Modify context only if it's worth it. + if related and not hasattr(aq_base(context), '_related_index'): + context._related_index = related + # In case of non-strict membership search, include all objects that + # are linked to a subobject of context. + if recurse: + r = [context] + while r: + for ob in r.pop().objectValues(): + r.append(ob) + relative_url = ob.getRelativeUrl() + if include_self: + result_dict[relative_url] = ob + try: + related = aq_base(ob)._related_index + except AttributeError: + continue + for base_category, category in local_index_dict.iteritems(): + category += relative_url + check_local() + # Filter out objects that are not of requested portal type. + result = [ob for ob in result_dict.itervalues() if ob is not None and ( + not portal_type or ob.getPortalType() in portal_type)] + # Finish with base categories that are only indexed in catalog, + # making sure we don't return duplicate values. + if category_list: + for r in search(category_list=category_list, + portal_type=portal_type, + strict_membership=strict_membership): + if r.relative_url not in result_dict: + try: + result.append(self.unrestrictedTraverse(r.path)) + except KeyError: + pass - result = [] - if checked_permission is None: - # No permission to check - for b in brain_result: - o = b.getObject() - if o is not None: - result.append(o) else: - # Check permissions on object - if isinstance(checked_permission, str): - checked_permission = (checked_permission, ) - checkPermission = self.portal_membership.checkPermission - for b in brain_result: - obj = b.getObject() - if obj is not None: - for permission in checked_permission: - if not checkPermission(permission, obj): - break - result.append(obj) + # Catalog-only search. + result = [] + for r in search(category_list=category_list, + portal_type=portal_type, + strict_membership=strict_membership): + try: + result.append(self.unrestrictedTraverse(r.path)) + except KeyError: + pass - return result - # XXX missing filter and **kw stuff - #return self.search_category(category_list=category_list, - # portal_type=spec) - # future implementation with brains, much more efficient + if checked_permission is None: + return result + + # Check permissions on object + if isinstance(checked_permission, str): + checked_permission = checked_permission, + checkPermission = self.portal_membership.checkPermission + def check(ob): + for permission in checked_permission: + if checkPermission(permission, ob): + return True + return filter(check, result) security.declareProtected( Permissions.AccessContentsInformation, 'getRelatedPropertyList' ) def getRelatedPropertyList(self, context, base_category_list=None, - property_name=None, spec=(), - filter=None, base=1, + property_name=None, checked_permission=None, **kw): """ This methods returns the list of property_name on objects @@ -1426,8 +1499,7 @@ class CategoryTool( UniqueObject, Folder, Base ): result = [] for o in self.getRelatedValueList( context=context, - base_category_list=base_category_list, spec=spec, - filter=filter, base=base, + base_category_list=base_category_list, checked_permission=checked_permission, **kw): result.append(o.getProperty(property_name, None)) return result diff --git a/product/CMFCategory/tests/testCMFCategory.py b/product/CMFCategory/tests/testCMFCategory.py index 16b9f261577b515f839c9c81dd5fc8cb9369e0cf..ddc9c536d9f72fda023d9ef3308e3d87e1484dda 100644 --- a/product/CMFCategory/tests/testCMFCategory.py +++ b/product/CMFCategory/tests/testCMFCategory.py @@ -26,6 +26,7 @@ # ############################################################################## +from collections import deque import unittest from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase @@ -42,6 +43,30 @@ class TestCMFCategory(ERP5TypeTestCase): region2 = 'europe/west/germany' region_list = [region1, region2] + category_dict = dict( + region = dict( + acquisition_base_category_list=('subordination','parent'), + acquisition_portal_type_list="python: ['Address', 'Organisation', 'Person']", + acquisition_mask_value=1, + acquisition_object_id_list=['default_address'], + contents=('europe', ('west', ('france', 'germany'))), + ), + subordination = dict( + acquisition_portal_type_list="python: ['Career', 'Organisation']", + acquisition_object_id_list=['default_career'], + ), + gender = dict( + fallback_base_category_list=['subordination'], + ), + resource = dict( + ), + test0 = dict( + ), + test1 = dict( + contents=('a', ('ab', 'ac', ('acd',))), + ), + ) + def getTitle(self): return "CMFCategory" @@ -74,16 +99,44 @@ class TestCMFCategory(ERP5TypeTestCase): portal = self.portal self.validateRules() + portal_categories = self.getCategoriesTool() + for name, kw in self.category_dict.iteritems(): + try: + bc = portal_categories[name] + except KeyError: + bc = portal_categories.newContent(name) + edit_kw = dict( + acquisition_copy_value=0, + acquisition_append_value=0, + acquisition_mask_value=0, + acquisition_portal_type_list="python: []", + related_locally_indexed=0) + edit_kw.update(kw) + queue = deque(((bc, edit_kw.pop('contents', ())),)) + bc.edit(**edit_kw) + while queue: + parent, contents = queue.popleft() + for x in contents: + if type(x) is str: + try: + category = parent[x] + except KeyError: + category = parent.newContent(x) + else: + queue.append((category, x)) + # This test creates Person inside Person and Organisation inside - # Organisation, so we modifiy type informations to allow anything inside - # Person and Organisation (we'll cleanup on teardown) - self.getTypesTool().getTypeInfo('Person').filter_content_types = 0 - organisation_ti = self.getTypesTool().getTypeInfo('Organisation') - organisation_ti.filter_content_types = 0 - # we also enable 'destination' category on organisations - self._organisation_categories = organisation_ti.getTypeBaseCategoryList() - organisation_ti._setTypeBaseCategoryList(self._organisation_categories - + ['destination', 'resource']) + # Organisation, so we modify type informations to allow anything inside + # Person and Organisation (we'll cleanup on teardown). + self._original_categories = {} + for portal_type, categories in ( + ('Person', []), + ('Organisation', ['destination', 'resource'])): + ti = self.getTypesTool().getTypeInfo(portal_type) + ti.filter_content_types = 0 + self._original_categories[portal_type] = x = ti.getTypeBaseCategoryList() + x += 'test0', 'test1' + ti._setTypeBaseCategoryList(x + categories) # Make persons. person_module = self.getPersonModule() @@ -109,62 +162,14 @@ class TestCMFCategory(ERP5TypeTestCase): sale_packing_list_module = portal.sale_packing_list_module if self.id1 not in sale_packing_list_module.objectIds(): sale_packing_list_module.newContent(id=self.id1) - # This set the acquisition for region - for bc in ('region', ): - if not hasattr(portal_categories, bc): - portal_categories.newContent(portal_type='Base Category',id=bc) - portal_categories[bc].setAcquisitionBaseCategoryList(('subordination','parent')) - portal_categories[bc].setAcquisitionPortalTypeList("python: ['Address', 'Organisation', 'Person']") - portal_categories[bc].setAcquisitionMaskValue(1) - portal_categories[bc].setAcquisitionCopyValue(0) - portal_categories[bc].setAcquisitionAppendValue(0) - portal_categories[bc].setAcquisitionObjectIdList(['default_address']) - if not 'europe' in portal_categories[bc].objectIds(): - portal_categories[bc].newContent(id='europe',portal_type='Category') - big_region = portal_categories[bc]['europe'] - # Now we have to include by hand no categories - if not 'west' in big_region.objectIds(): - big_region.newContent(id='west',portal_type='Category') - region = big_region['west'] - if not 'france' in region.objectIds(): - region.newContent(id='france',portal_type='Category') - if not 'germany' in region.objectIds(): - region.newContent(id='germany',portal_type='Category') - for bc in ('subordination', ): - if not hasattr(portal_categories, bc): - portal_categories.newContent(portal_type='Base Category',id=bc) - portal_categories[bc].setAcquisitionPortalTypeList("python: ['Career', 'Organisation']") - portal_categories[bc].setAcquisitionMaskValue(0) - portal_categories[bc].setAcquisitionCopyValue(0) - portal_categories[bc].setAcquisitionAppendValue(0) - portal_categories[bc].setAcquisitionObjectIdList(['default_career']) - for bc in ('gender', ): - if not hasattr(portal_categories, bc): - portal_categories.newContent(portal_type='Base Category',id=bc) - portal_categories[bc].setAcquisitionPortalTypeList("python: []") - portal_categories[bc].setAcquisitionMaskValue(0) - portal_categories[bc].setAcquisitionCopyValue(0) - portal_categories[bc].setAcquisitionAppendValue(0) - portal_categories[bc].setFallbackBaseCategoryList(['subordination']) - for bc in ('resource', ): - if not hasattr(portal_categories, bc): - portal_categories.newContent(portal_type='Base Category',id=bc) - portal_categories[bc].setAcquisitionPortalTypeList("python: []") - portal_categories[bc].setAcquisitionMaskValue(0) - portal_categories[bc].setAcquisitionCopyValue(0) - portal_categories[bc].setAcquisitionAppendValue(0) def beforeTearDown(self): """Clean up.""" - # categories - for bc in ('region', 'subordination', 'gender', 'resource'): - bc_obj = self.getPortal().portal_categories[bc] - bc_obj.manage_delObjects() # type informations - self.getTypesTool().getTypeInfo('Person').filter_content_types = 1 - organisation_ti = self.getTypesTool().getTypeInfo('Organisation') - organisation_ti.filter_content_types = 1 - organisation_ti = self._organisation_categories + for portal_type, categories in self._original_categories.iteritems(): + ti = self.getTypesTool().getTypeInfo(portal_type) + ti.filter_content_types = 1 + ti._setTypeBaseCategoryList(categories) def login(self): uf = self.portal.acl_users @@ -1075,6 +1080,76 @@ class TestCMFCategory(ERP5TypeTestCase): # Check indexation self.tic() + def test_setCategoryMemberShip(self): + person = self.getPersonModule().newContent(portal_type='Person') + category_tool = self.getCategoriesTool() + bc = category_tool.newContent() + bc.newContent('a') + bc.newContent('b') + base = (bc.id + '/').__add__ + def get(*args, **kw): + return category_tool.getCategoryMembershipList(person, *args, **kw) + def _set(*args, **kw): + return category_tool._setCategoryMembership(person, *args, **kw) + _set(bc.id, list('aa')) + self.assertEqual(get(bc.id), list('aa')) + _set(bc.id, list('baa')) + self.assertEqual(get(bc.id), list('aba')) + _set(bc.id, map(base, 'bb'), 1) + self.assertEqual(get(bc.id), list('bb')) + _set(bc.id, map(base, 'abb'), 1) + self.assertEqual(get(bc.id), list('bab')) + _set(bc.id, ()) + + def test_relatedIndex(self): + category_tool = self.getCategoriesTool() + newOrganisation = self.getOrganisationModule().newContent + organisation = newOrganisation() + other_organisation = newOrganisation(destination_value=organisation) + person = self.getPersonModule().newContent(test0_value=organisation, + test1='a/ac/acd') + self.tic() + get = organisation.getTest0RelatedValueList + a = category_tool.test1.a + def check(): + self.assertEqual([person, other_organisation], + category_tool.getRelatedValueList(organisation)) + self.assertEqual([person], get()) + self.assertEqual([person], get(portal_type='Person')) + self.assertEqual([], get(portal_type='Organisation')) + self.assertEqual([person], a.getTest1RelatedValueList( + portal_type='Person')) + self.assertEqual([a], a.getTest1RelatedValueList( + strict_membership=True)) + self.assertEqual([person], a.ac.acd.getTest1RelatedValueList( + portal_type='Person', strict_membership=True)) + category_tool.test0._setRelatedLocallyIndexed(True) + category_tool.test1._setRelatedLocallyIndexed(True) + check() + related_list = sorted(a.getTest1RelatedList()) + self.assertTrue(person.getRelativeUrl() in related_list) + self.assertEqual(related_list, sorted(x.getRelativeUrl() + for x in self.portal.portal_catalog(test1_uid=a.getUid()))) + related = organisation._related_index + self.assertTrue(related) + self.assertEqual([person.getRelativeUrl()], list(related.test0)) + person.unindexObject() + self.tic() + category_tool.test0._setRelatedLocallyIndexed(False) + self.assertEqual([], get()) + category_tool.test0._setRelatedLocallyIndexed(True) + check() + person.categories = tuple(x for x in person.categories + if not x.startswith('test0/')) + self.assertEqual([], get()) + self.assertFalse(related) + self.assertEqual([], list(related.test0)) + related = a.ac.acd._related_index.test1 + self.assertEqual(list(related), [person.getRelativeUrl()]) + person._setTest1Value(a) + self.assertEqual(list(related), []) + + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestCMFCategory)) diff --git a/product/ERP5/Document/AcceptSolver.py b/product/ERP5/Document/AcceptSolver.py index a00e67f6f5a420c0dfb4515675df1c8f02bdb987..20045baf11d363f0f506d1b4cebb768b48755041 100644 --- a/product/ERP5/Document/AcceptSolver.py +++ b/product/ERP5/Document/AcceptSolver.py @@ -27,37 +27,16 @@ # ############################################################################## -import zope.interface -from AccessControl import ClassSecurityInfo -from Products.ERP5Type import Permissions, PropertySheet, interfaces -from Products.ERP5Type.XMLObject import XMLObject -from Products.ERP5.mixin.solver import SolverMixin -from Products.ERP5.mixin.configurable import ConfigurableMixin +from Products.ERP5.mixin.solver import ConfigurablePropertySolverMixin -class AcceptSolver(SolverMixin, ConfigurableMixin, XMLObject): +class AcceptSolver(ConfigurablePropertySolverMixin): """Target solver that accepts the values from the decision on the prevision. """ meta_type = 'ERP5 Accept Solver' portal_type = 'Accept Solver' - add_permission = Permissions.AddPortalContent - isIndexable = 0 # We do not want to fill the catalog with objects on which we need no reporting - - # Declarative security - security = ClassSecurityInfo() - security.declareObjectProtected(Permissions.AccessContentsInformation) - - # Default Properties - property_sheets = ( PropertySheet.Base - , PropertySheet.XMLObject - , PropertySheet.CategoryCore - , PropertySheet.DublinCore - , PropertySheet.TargetSolver - ) - - # Declarative interfaces - zope.interface.implements(interfaces.ISolver,) # ISolver Implementation + # XXX-Leo: Needs security declaration! It's currently public. def solve(self, activate_kw=None): """ Adopt new property to simulation movements, with keeping the @@ -90,11 +69,18 @@ class AcceptSolver(SolverMixin, ConfigurableMixin, XMLObject): if solved_property == 'quantity': new_value *= simulation_movement.getDeliveryRatio() value_dict[solved_property] = new_value - for property_id, value in value_dict.iteritems(): - if not simulation_movement.isPropertyRecorded(property_id): - simulation_movement.recordProperty(property_id) - simulation_movement.setMappedProperty(property_id, value) - simulation_movement.expand(activate_kw=activate_kw) + self._updateSimulationMovement(simulation_movement, value_dict, + activate_kw) # Finish solving if portal.portal_workflow.isTransitionPossible(self, 'succeed'): self.succeed() + + # allow subclasses to override this method and do interesting things + # like recording the same values in other simulation movements + def _updateSimulationMovement(self, simulation_movement, value_dict, + activate_kw): + for property_id, value in value_dict.iteritems(): + if not simulation_movement.isPropertyRecorded(property_id): + simulation_movement.recordProperty(property_id) + simulation_movement.setMappedProperty(property_id, value) + simulation_movement.expand(activate_kw=activate_kw) diff --git a/product/ERP5/Document/AdoptSolver.py b/product/ERP5/Document/AdoptSolver.py index 704d20e65fa4064f3d1f493f94fe28ac46020697..7d3d6c8a33317a15534d8a491fff09c673c08458 100644 --- a/product/ERP5/Document/AdoptSolver.py +++ b/product/ERP5/Document/AdoptSolver.py @@ -27,47 +27,21 @@ # ############################################################################## -import zope.interface -from AccessControl import ClassSecurityInfo -from Products.ERP5Type import Permissions, PropertySheet, interfaces -from Products.ERP5Type.XMLObject import XMLObject -from Products.ERP5.mixin.solver import SolverMixin -from Products.ERP5.mixin.configurable import ConfigurableMixin +from Products.ERP5.mixin.solver import ConfigurablePropertySolverMixin -class AdoptSolver(SolverMixin, ConfigurableMixin, XMLObject): +class AdoptSolver(ConfigurablePropertySolverMixin): """Target solver that adopts the values from the prevision on the decision. """ meta_type = 'ERP5 Adopt Solver' portal_type = 'Adopt Solver' - add_permission = Permissions.AddPortalContent - isIndexable = 0 # We do not want to fill the catalog with objects on which we need no reporting - - # Declarative security - security = ClassSecurityInfo() - security.declareObjectProtected(Permissions.AccessContentsInformation) - - # Default Properties - property_sheets = ( PropertySheet.Base - , PropertySheet.XMLObject - , PropertySheet.CategoryCore - , PropertySheet.DublinCore - , PropertySheet.TargetSolver - ) - - # Declarative interfaces - zope.interface.implements(interfaces.ISolver, - interfaces.IConfigurable, - ) # ISolver Implementation + # XXX-Leo: Needs security declaration! It's currently public. def solve(self, activate_kw=None): """ Adopt new property to movements or deliveries. """ - configuration_dict = self.getConfigurationPropertyDict() - portal_type = self.getPortalObject().portal_types.getTypeInfo(self) - solved_property_list = configuration_dict.get('tested_property_list', - portal_type.getTestedPropertyList()) + solved_property_list = self.getTestedPropertyList() delivery_dict = {} for simulation_movement in self.getDeliveryValueList(): delivery_dict.setdefault(simulation_movement.getDeliveryValue(), diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index a5f3f078e7c2078dfb83a34233cfb93adfaeb943..565a208b18974051f0f24ffa13f69c254f78662f 100644 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -544,7 +544,8 @@ class BaseTemplateItem(Implicit, Persistent): klass = obj.__class__ classname = klass.__name__ - attr_set = set(('_dav_writelocks', '_filepath', '_owner', 'last_id', 'uid', + attr_set = set(('_dav_writelocks', '_filepath', '_owner', '_related_index', + 'last_id', 'uid', '__ac_local_roles__', '__ac_local_roles_group_id_dict__')) if export: if not keep_workflow_history: diff --git a/product/ERP5/Document/Delivery.py b/product/ERP5/Document/Delivery.py index 64dcf939a1bae18c83d57b4219468b2a36693d15..144e53d3f24731fe705c37b83f2381aab9e952b4 100644 --- a/product/ERP5/Document/Delivery.py +++ b/product/ERP5/Document/Delivery.py @@ -394,6 +394,7 @@ class Delivery(XMLObject, ImmobilisationDelivery, SimulableMixin, if calculate: path = self.getPath() self.activate( + # after_tag to built: could be removed after_tag=('built:'+path, 'expand:'+path), after_path_and_method_id=(path, '_localBuild'), ).updateCausalityState() @@ -713,6 +714,10 @@ class Delivery(XMLObject, ImmobilisationDelivery, SimulableMixin, after_tag = [after_tag] else: after_tag = list(after_tag) if after_tag else [] + # Now that 'delivery' category relation are indexed in ZODB, this is the + # only method that depends on built: tag (via _updateSimulation), which + # is still required because builders only use catalog to find buildable + # movements and we don't want to miss any for local building. after_tag.append('expand:' + self.getPath()) sm = getSecurityManager() newSecurityManager(None, nobody) @@ -857,12 +862,11 @@ class Delivery(XMLObject, ImmobilisationDelivery, SimulableMixin, return disconnected_simulation_movement_list - def _getAllRelatedSimulationMovementList(self, **kw): - movement_uid_list = [x.getUid() for x in self.getMovementList()] - return movement_uid_list and \ - self.getPortalObject().portal_catalog.unrestrictedSearchResults( - portal_type='Simulation Movement', - delivery_uid=movement_uid_list, **kw) + def _getAllRelatedSimulationMovementList(self): + result = [] + for movement in self.getMovementList(): + result += movement.getDeliveryRelatedValueList() + return result def getDivergentTesterAndSimulationMovementList(self): """ diff --git a/product/ERP5/Document/DeliveryRootSimulationRule.py b/product/ERP5/Document/DeliveryRootSimulationRule.py index 1b602958a8514e8f4bce7a52c06b3d62090b42dd..28a0eee8b05a7a4aba90006ef097f91059c3a5a9 100644 --- a/product/ERP5/Document/DeliveryRootSimulationRule.py +++ b/product/ERP5/Document/DeliveryRootSimulationRule.py @@ -101,35 +101,11 @@ class DeliveryRuleMovementGenerator(MovementGeneratorMixin): return [] else: result = [] - existing_movement_list = self._applied_rule.objectValues() for movement in delivery.getMovementList( portal_type=self._getPortalDeliveryMovementTypeList()): - simulation_movement = self._getDeliveryRelatedSimulationMovement(movement) - if simulation_movement is None or \ - simulation_movement in existing_movement_list: + simulation_movement_list = movement.getDeliveryRelatedValueList() + if not simulation_movement_list or self._applied_rule in ( + simulation_movement.getParentValue() + for simulation_movement in simulation_movement_list): result.append(movement) return result - - def _getDeliveryRelatedSimulationMovement(self, delivery_movement): - """Helper method to get the delivery related simulation movement. - This method is more robust than simply calling getDeliveryRelatedValue - which will not work if simulation movements are not indexed. - """ - simulation_movement = delivery_movement.getDeliveryRelatedValue() - if simulation_movement is not None: - return simulation_movement - # simulation movement was not found, maybe simply because it's not indexed - # yet. We'll look in the simulation tree and try to find it anyway before - # creating another simulation movement. - # Try to find the one from trade model rule, which is the most common case - # where we may expand again before indexation of simulation movements is - # finished. - delivery = delivery_movement.getExplanationValue() - for movement in delivery.getMovementList(): - related_simulation_movement = movement.getDeliveryRelatedValue() - if related_simulation_movement is not None: - for applied_rule in related_simulation_movement.contentValues(): - for simulation_movement in applied_rule.contentValues(): - if simulation_movement.getDeliveryValue() == delivery_movement: - return simulation_movement - return None diff --git a/product/ERP5/Document/Image.py b/product/ERP5/Document/Image.py index f246065dda034f6ec2767361dbe1fecded17cb43..b572695d92ef644819ff4ee13ce041b643bf6826 100644 --- a/product/ERP5/Document/Image.py +++ b/product/ERP5/Document/Image.py @@ -299,7 +299,9 @@ class Image(TextConvertableMixin, File, OFSImage): image_data = image.data # as image will always be requested through a display not by passing exact # pixels we need to restore this way in cache - kw['display'] = display + if display is not None: + # only set if we have a real value + kw['display'] = display image_size = kw.pop('image_size', None) self.setConversion(image_data, mime, **kw) return mime, image_data diff --git a/product/ERP5/Document/InvoiceRootSimulationRule.py b/product/ERP5/Document/InvoiceRootSimulationRule.py index 72f1fedefe462fdb7fa484bd43f508565504d653..2616db61dd57b78871608fd82998685f1f4aca00 100644 --- a/product/ERP5/Document/InvoiceRootSimulationRule.py +++ b/product/ERP5/Document/InvoiceRootSimulationRule.py @@ -28,14 +28,12 @@ """ """ -import zope.interface from AccessControl import ClassSecurityInfo -from Products.ERP5Type import Permissions, PropertySheet, interfaces -from Products.ERP5.mixin.rule import RuleMixin, MovementGeneratorMixin -from Products.ERP5.mixin.movement_collection_updater import \ - MovementCollectionUpdaterMixin +from Products.ERP5Type import Permissions +from Products.ERP5.Document.DeliveryRootSimulationRule \ + import DeliveryRootSimulationRule, DeliveryRuleMovementGenerator -class InvoiceRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): +class InvoiceRootSimulationRule(DeliveryRootSimulationRule): """ """ # CMF Type Definition @@ -46,24 +44,6 @@ class InvoiceRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): security = ClassSecurityInfo() security.declareObjectProtected(Permissions.AccessContentsInformation) - # Declarative interfaces - zope.interface.implements(interfaces.IRule, - interfaces.IDivergenceController, - interfaces.IMovementCollectionUpdater,) - - # Default Properties - property_sheets = ( - PropertySheet.Base, - PropertySheet.XMLObject, - PropertySheet.CategoryCore, - PropertySheet.DublinCore, - PropertySheet.Task, - PropertySheet.Predicate, - PropertySheet.Reference, - PropertySheet.Version, - PropertySheet.Rule - ) - security.declareProtected(Permissions.AccessContentsInformation, 'isAccountable') def isAccountable(self, movement): @@ -81,62 +61,9 @@ class InvoiceRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): """ return InvoiceRuleMovementGenerator(applied_rule=context, rule=self) - def _getMovementGeneratorContext(self, context): - """ - Return the movement generator context to use for expand - """ - return context +class InvoiceRuleMovementGenerator(DeliveryRuleMovementGenerator): - def _getMovementGeneratorMovementList(self, context): - """ - Return the movement lists to provide to the movement generator - """ - return [] - - def _isProfitAndLossMovement(self, movement): - # For a kind of trade rule, a profit and loss movement lacks source - # or destination. - return (movement.getSource() is None or movement.getDestination() is None) - -class InvoiceRuleMovementGenerator(MovementGeneratorMixin): - - def _getInputMovementList(self, movement_list=None, rounding=None): - """Input movement list comes from delivery""" - delivery = self._applied_rule.getDefaultCausalityValue() - if delivery is None: - return [] - else: - ret = [] - existing_movement_list = self._applied_rule.objectValues() - for movement in delivery.getMovementList( - portal_type=(delivery.getPortalInvoiceMovementTypeList() + \ - delivery.getPortalTaxMovementTypeList())): # This is bad XXX-JPS - use use - simulation_movement = self._getDeliveryRelatedSimulationMovement(movement) - if simulation_movement is None or \ - simulation_movement in existing_movement_list: - ret.append(movement) - return ret - - def _getDeliveryRelatedSimulationMovement(self, delivery_movement): - """Helper method to get the delivery related simulation movement. - This method is more robust than simply calling getDeliveryRelatedValue - which will not work if simulation movements are not indexed. - """ - simulation_movement = delivery_movement.getDeliveryRelatedValue() - if simulation_movement is not None: - return simulation_movement - # simulation movement was not found, maybe simply because it's not indexed - # yet. We'll look in the simulation tree and try to find it anyway before - # creating another simulation movement. - # Try to find the one from trade model rule, which is the most common case - # where we may expand again before indexation of simulation movements is - # finished. - delivery = delivery_movement.getExplanationValue() - for movement in delivery.getMovementList(): - related_simulation_movement = movement.getDeliveryRelatedValue() - if related_simulation_movement is not None: - for applied_rule in related_simulation_movement.contentValues(): - for simulation_movement in applied_rule.contentValues(): - if simulation_movement.getDeliveryValue() == delivery_movement: - return simulation_movement - return None + def _getPortalDeliveryMovementTypeList(self): # This is bad XXX-JPS - use use + portal = self._rule.getPortalObject() + return portal.getPortalInvoiceMovementTypeList() + \ + portal.getPortalTaxMovementTypeList() diff --git a/product/ERP5/Document/Movement.py b/product/ERP5/Document/Movement.py index 0bce155eb1d0a74d4b203a4e6a6f30b57d3e1513..c9fc6b4a4f08116e5180ee55088cf6d9dcf67139 100644 --- a/product/ERP5/Document/Movement.py +++ b/product/ERP5/Document/Movement.py @@ -41,7 +41,6 @@ from Products.ERP5Type.TransactionalVariable import getTransactionalVariable from Products.ERP5.mixin.amount_generator import AmountGeneratorMixin from Products.ERP5.mixin.composition import CompositionMixin from Products.ERP5.Document.Amount import Amount -from Products.ERP5.Document.SimulatedDeliveryBuilder import BUILDING_KEY from zLOG import LOG, WARNING @@ -595,11 +594,8 @@ class Movement(XMLObject, Amount, CompositionMixin, AmountGeneratorMixin): simulation movement. """ simulation_movement = self.getDeliveryRelatedValue() - if simulation_movement is not None and \ - not simulation_movement.getParentValue().isRootAppliedRule(): - return True - building = getTransactionalVariable().get(BUILDING_KEY, ()) - return self in building or self.getRootDeliveryValue() in building + return simulation_movement is not None and \ + not simulation_movement.getParentValue().isRootAppliedRule() # New Causality API security.declareProtected( Permissions.AccessContentsInformation, diff --git a/product/ERP5/Document/SimulatedDeliveryBuilder.py b/product/ERP5/Document/SimulatedDeliveryBuilder.py index 98b08227e8808d17c9f3cc100a01b9c036877e82..2494ede6fd9bf953cf4e184d90a26cac6121c0d2 100644 --- a/product/ERP5/Document/SimulatedDeliveryBuilder.py +++ b/product/ERP5/Document/SimulatedDeliveryBuilder.py @@ -35,11 +35,6 @@ from Products.ERP5Type.TransactionalVariable import getTransactionalVariable from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod from Products.ERP5Type.CopySupport import CopyError, tryMethodCallWithTemporaryPermission -# Quite ugly way to avoid useless expand when building lines -# in a delivery that already have lines and a root applied rule. -# For example, it's normally useless to expand after building -# accounting lines in an invoice with manually created invoice lines. -BUILDING_KEY = 'building_from_portal_simulation' class SimulatedDeliveryBuilder(BuilderMixin): """ @@ -145,9 +140,6 @@ class SimulatedDeliveryBuilder(BuilderMixin): and delivery movement. """ delivery = delivery_movement.getExplanationValue() - building = getTransactionalVariable()[BUILDING_KEY] - if delivery in building: - building.add(delivery_movement) simulation_movement.recursiveReindexObject(activate_kw=dict( activate_kw or (), tag='built:'+delivery.getPath())) BuilderMixin._setDeliveryMovementProperties( @@ -380,25 +372,6 @@ class SimulatedDeliveryBuilder(BuilderMixin): return delivery - def _processDeliveryLineGroup(self, delivery, movement_group_node, - *args, **kw): - building = getTransactionalVariable().setdefault(BUILDING_KEY, set()) - if None in building: - super(SimulatedDeliveryBuilder, self)._processDeliveryLineGroup( - delivery, movement_group_node, *args, **kw) - return - building.add(None) - try: - for movement in movement_group_node.getMovementList(): - if not movement.isTempDocument(): - building.add(delivery) - break - super(SimulatedDeliveryBuilder, self)._processDeliveryLineGroup( - delivery, movement_group_node, *args, **kw) - finally: - building.remove(None) - building.discard(delivery) - def _createDeliveryLine(self, delivery, movement_list, activate_kw): """ Refer to the docstring in GeneratedDeliveryBuilder. diff --git a/product/ERP5/MovementGroup.py b/product/ERP5/MovementGroup.py index b5e998df6b22a49ce6058bbf692a2ddde74d32bf..2d3529a5ccf58b2aa1eaa9abf79393a9fbd8edfd 100644 --- a/product/ERP5/MovementGroup.py +++ b/product/ERP5/MovementGroup.py @@ -149,17 +149,17 @@ class MovementGroupNode: property_list = [] if len(divergence_list): divergence_scope = self._movement_group.getDivergenceScope() - if divergence_scope is None: - # Update anyway (eg. CausalityAssignmentMovementGroup etc.) - pass - else: - related_divergence_list = [ - x for x in divergence_list \ - if divergence_scope == x.divergence_scope and \ - self.hasSimulationMovement(x.simulation_movement)] - if not len(related_divergence_list): + if divergence_scope is not None: + for divergence in divergence_list: + if (divergence_scope == getattr(divergence, 'divergence_scope', + # assume match if missing + # (e.g. for new simulation) + divergence_scope) and + self.hasSimulationMovement(divergence.simulation_movement)): + property_list.append(divergence.tested_property) + if not property_list: return True, {} - property_list = [x.tested_property for x in related_divergence_list] + # else update anyway (eg. CausalityAssignmentMovementGroup etc.) return self._movement_group.test(movement, self._property_dict, property_list=property_list) else: diff --git a/product/ERP5/TargetSolver/CopyAndPropagate.py b/product/ERP5/TargetSolver/CopyAndPropagate.py index ff32d3041462d829a0a6074711eb6b4a53143f86..eedf342eaf76d4e531251736ded5f8a1663010eb 100644 --- a/product/ERP5/TargetSolver/CopyAndPropagate.py +++ b/product/ERP5/TargetSolver/CopyAndPropagate.py @@ -73,8 +73,6 @@ class CopyAndPropagate(TargetSolver): quantity_ratio=quantity_ratio, value_dict=value_dict, property_id=property_id) - # XXX: would it be safe to expand by activity ? - simulation_movement.expand('immediate') def _solveRecursively(self, simulation_movement, is_last_movement=1, quantity_ratio=None, value_dict=None, @@ -106,3 +104,5 @@ class CopyAndPropagate(TargetSolver): if not simulation_movement.isPropertyRecorded(property_id): simulation_movement.recordProperty(property_id) simulation_movement.edit(**value_dict) + # XXX would it be safe to expand by activity ? + simulation_movement.expand('immediate') diff --git a/product/ERP5/Tool/CategoryTool.py b/product/ERP5/Tool/CategoryTool.py index 5a9c605a2fde9b9638c1880a0c6686eb5bb5c064..341a411a30275b091b8d037378e7ad4fb6572470 100644 --- a/product/ERP5/Tool/CategoryTool.py +++ b/product/ERP5/Tool/CategoryTool.py @@ -40,6 +40,7 @@ from Products.ERP5Type.Core.Folder import OFS_HANDLER from Products.ERP5Type.CopySupport import CopyContainer from Products.CMFCore.utils import getToolByName from Products.ERP5Type.Cache import caching_instance_method +from Products.ERP5Type.dynamic import portal_type_class from zLOG import LOG @@ -84,54 +85,10 @@ class CategoryTool(CopyContainer, CMFCategoryTool, BaseTool): def hasContent(self,id): return id in self.objectIds() - security.declareProtected(Permissions.AccessContentsInformation, 'getCategoryParentUidList') - def getCategoryParentUidList(self, relative_url, base_category = None, strict=0): - """ - Returns the uids of all categories provided in categorie. This - method can support relative_url such as site/group/a/b/c which - base category is site yet use categories defined in group. - - It is also able to use acquisition to create complex categories - such as site/group/a/b/c/b1/c1 where b and b1 are both children - categories of a. - - relative_url -- a single relative url of a list of - relative urls - - strict -- if set to 1, only return uids of parents, not - relative_url - """ - uid_dict = {} - if type(relative_url) is type('a'): relative_url = (relative_url,) - for path in relative_url: - try: - o = self.getCategoryValue(path, base_category=base_category) - if o is not None: - if base_category is None: - my_base_category = self.getBaseCategoryId(path) - else: - my_base_category = base_category - bo = getattr(self, my_base_category, None) - if bo is not None: - bo_uid = bo.getUid() - uid_dict[(o.getUid(), bo_uid, 1)] = 1 # Strict membership - if o.meta_type == 'ERP5 Category' or o.meta_type == 'ERP5 Base Category' or \ - o.meta_type == 'CMF Category' or o.meta_type == 'CMF Base Category': - # This goes up in the category tree - # XXX we should also go up in some other cases.... - # ie. when some documents act as categories - if not strict: - while o.meta_type == 'ERP5 Category' or o.meta_type == 'CMF Category': - o = o.aq_parent # We want acquisition here without aq_inner - uid_dict[(o.getUid(), bo_uid, 0)] = 1 # Non strict - except (TypeError, KeyError): - LOG('WARNING: CategoriesTool',0, 'Unable to find uid for %s' % path) - return uid_dict.keys() - - security.declareProtected(Permissions.AccessContentsInformation, 'getUids') - getUids = getCategoryParentUidList - - @caching_instance_method(id='portal_categories.getBaseCategoryDict', cache_factory='erp5_content_long', cache_id_generator=lambda m, *a, **k:m) + @caching_instance_method( + id='portal_categories.getBaseCategoryDict', + cache_factory='erp5_content_long', + cache_id_generator=lambda *a: portal_type_class.last_sync) def getBaseCategoryDict(self): """ Cached method to which resturns a dict with category names as keys, and None as values. diff --git a/product/ERP5/Tool/CertificateAuthorityTool.py b/product/ERP5/Tool/CertificateAuthorityTool.py index f450adcdcd1d2d02a3fcfafe0bd1109e3add8561..aab8d657e66361c4c2ec1038ebb1865c1b6df5c5 100644 --- a/product/ERP5/Tool/CertificateAuthorityTool.py +++ b/product/ERP5/Tool/CertificateAuthorityTool.py @@ -27,6 +27,8 @@ # ############################################################################## +import glob, os, subprocess, sys + from AccessControl import ClassSecurityInfo from Products.ERP5Type.Globals import InitializeClass from Products.ERP5Type.Tool.BaseTool import BaseTool @@ -34,9 +36,6 @@ from Products.ERP5Type import Permissions from Products.PageTemplates.PageTemplateFile import PageTemplateFile from zLOG import LOG, INFO -import os -import subprocess - def popenCommunicate(command_list, input=None, **kwargs): kwargs.update(stdout=subprocess.PIPE, stderr=subprocess.STDOUT) popen = subprocess.Popen(command_list, **kwargs) @@ -186,6 +185,8 @@ class CertificateAuthorityTool(BaseTool): # No docstring in order to make this method non publishable # Returns certificate for passed common name, as dictionary of # {key, certificate, id, common_name} + if not common_name: + raise ValueError("Invalid common name: %r" % common_name) self._checkCertificateAuthority() self._lockCertificateAuthority() try: @@ -196,6 +197,7 @@ class CertificateAuthorityTool(BaseTool): cert = os.path.join(self.certificate_authority_path, 'certs', new_id + '.crt') try: + os.close(os.open(key, os.O_CREAT | os.O_EXCL, 0600)) popenCommunicate([self.openssl_binary, 'req', '-nodes', '-config', self.openssl_config, '-new', '-keyout', key, '-out', csr, '-days', '3650'], '%s\n' % common_name, stdin=subprocess.PIPE) @@ -209,14 +211,15 @@ class CertificateAuthorityTool(BaseTool): id=new_id, common_name=common_name) except: + e = sys.exc_info() try: - for p in [key, csr, cert]: + for p in key, csr, cert: if os.path.exists(p): os.unlink(p) except: # do not raise during cleanup pass - raise + raise e[0], e[1], e[2] finally: self._unlockCertificateAuthority() @@ -234,26 +237,32 @@ class CertificateAuthorityTool(BaseTool): cert = os.path.join(self.certificate_authority_path, 'certs', serial.lower() + '.crt') if not os.path.exists(cert): - raise ValueError('Certificate with serial %r does not exists' % serial) + raise ValueError('Certificate with serial %r does not exist' % serial) + created = [crl] + popenCommunicate([self.openssl_binary, 'ca', '-config', + self.openssl_config, '-revoke', cert]) try: - popenCommunicate([self.openssl_binary, 'ca', '-config', - self.openssl_config, '-revoke', cert]) popenCommunicate([self.openssl_binary, 'ca', '-config', self.openssl_config, '-gencrl', '-out', crl]) - hash = popenCommunicate([self.openssl_binary, 'crl', '-noout', - '-hash', '-in', crl]).strip() - previous_id = int(len([q for q in os.listdir(crl_path) if hash in q])) - os.symlink(crl, os.path.join(crl_path, '%s.%s' % (hash, previous_id))) + alias = os.path.join(crl_path, popenCommunicate([self.openssl_binary, + 'crl', '-noout', '-hash', '-in', crl]).strip() + '.') + alias += str(len(glob.glob(alias + '*'))) + created.append(alias) + os.symlink(os.path.basename(crl), alias) return dict(crl=open(crl).read()) except: + e = sys.exc_info() try: - for p in [crl]: + for p in 'index.txt', 'crlnumber': + p = os.path.join(self.certificate_authority_path, p) + os.rename(p + '.old', p) + for p in created: if os.path.exists(p): os.unlink(p) except: # do not raise during cleanup pass - raise + raise e[0], e[1], e[2] finally: self._unlockCertificateAuthority() diff --git a/product/ERP5/Tool/TaskDistributionTool.py b/product/ERP5/Tool/TaskDistributionTool.py index 57030a9c78a0eb62e622786c156041968757aae8..2e9e70b501a6175e56ac463a08cfc7bbe453e13c 100644 --- a/product/ERP5/Tool/TaskDistributionTool.py +++ b/product/ERP5/Tool/TaskDistributionTool.py @@ -46,14 +46,6 @@ class TaskDistributionTool(BaseTool): security = ClassSecurityInfo() security.declareObjectProtected(Permissions.AccessContentsInformation) - def __init__(self, *args, **kw): - BaseTool.__init__(self, *args, **kw) - # XXX Cache information about running test results, because the protocol - # is synchronous and we can't rely on the catalog. - # This is a hack until a better (and asynchronous) protocol is - # implemented. - self.test_result_dict = {} - security.declarePublic('getProtocolRevision') def getProtocolRevision(self): """ @@ -89,9 +81,6 @@ class TaskDistributionTool(BaseTool): portal = self.getPortalObject() if test_title is None: test_title = name - test_result_path, line_dict = self.test_result_dict.get( - test_title, ('', {})) - duration_dict = {} def createNode(test_result, node_title): if node_title is not None: node = self._getTestResultNode(test_result, node_title) @@ -99,7 +88,8 @@ class TaskDistributionTool(BaseTool): node = test_result.newContent(portal_type='Test Result Node', title=node_title) node.start() - def createTestResultLineList(test_result, test_name_list, line_dict): + def createTestResultLineList(test_result, test_name_list): + duration_list = [] previous_test_result_list = portal.test_result_module.searchFolder( title='=%s' % test_result.getTitle(), sort_on=[('creation_date','descending')], @@ -109,11 +99,19 @@ class TaskDistributionTool(BaseTool): previous_test_result = previous_test_result_list[0].getObject() for line in previous_test_result.objectValues(): if line.getSimulationState() == 'stopped': - duration_dict[line.getTitle()] = line.getProperty('duration') + duration_list.append((line.getTitle(),line.getProperty('duration'))) + duration_list.sort(key=lambda x: -x[1]) + sorted_test_list = [x[0] for x in duration_list] for test_name in test_name_list: + index = 0 + if sorted_test_list: + try: + index = sorted_test_list.index(test_name) + except ValueError: + pass line = test_result.newContent(portal_type='Test Result Line', - title=test_name) - line_dict[line.getId()] = duration_dict.get(test_name) + title=test_name, + int_index=index) reference_list_string = None if type(revision) is str and '=' in revision: reference_list_string = revision @@ -124,14 +122,14 @@ class TaskDistributionTool(BaseTool): else: # backward compatibility int_index, reference = revision - test_result = None - if test_result_path: - test_result = portal.unrestrictedTraverse(test_result_path, None) - if test_result is None or test_result.getSimulationState() in \ - ('cancelled', 'failed'): - del self.test_result_dict[test_title] - line_dict = {} - else: + result_list = portal.test_result_module.searchFolder( + portal_type="Test Result", + title="=%s" % test_title, + sort_on=(("creation_date","descending"),), + limit=1) + if result_list: + test_result = result_list[0].getObject() + if test_result is not None: last_state = test_result.getSimulationState() last_revision = str(test_result.getIntIndex()) if last_state == 'started': @@ -141,13 +139,15 @@ class TaskDistributionTool(BaseTool): last_revision = reference elif reference: last_revision = last_revision, reference - if len(line_dict) == 0 and len(test_name_list): - self._p_changed = 1 - createTestResultLineList(test_result, test_name_list, line_dict) - return test_result_path, last_revision - if last_state == 'stopped': + if len(test_result.objectValues(portal_type="Test Result Line")) == 0 \ + and len(test_name_list): + test_result.serialize() # prevent duplicate test result lines + createTestResultLineList(test_result, test_name_list) + return test_result.getRelativeUrl(), last_revision + if last_state in ('stopped',): if reference_list_string is not None: - if reference_list_string == test_result.getReference(): + if reference_list_string == test_result.getReference() \ + and not allow_restart: return elif last_revision == int_index and not allow_restart: return @@ -155,25 +155,25 @@ class TaskDistributionTool(BaseTool): portal_type='Test Result', title=test_title, reference=reference, - predecessor=test_result_path) + is_indexable=False) if int_index is not None: - test_result.setIntIndex(int_index) + test_result._setIntIndex(int_index) if project_title is not None: project_list = portal.portal_catalog(portal_type='Project', title='="%s"' % project_title) - if len(project_list) == 1: - test_result.setSourceProjectValue(project_list[0].getObject()) - else: + if len(project_list) != 1: raise ValueError('found this list of project : %r for title %r' % \ ([x.path for x in project_list], project_title)) + test_result._setSourceProjectValue(project_list[0].getObject()) test_result.updateLocalRolesOnSecurityGroups() # XXX - test_result_path = test_result.getRelativeUrl() - self.test_result_dict[test_title] = test_result_path, line_dict - self._p_changed = 1 test_result.start() - createTestResultLineList(test_result, test_name_list, line_dict) + del test_result.isIndexable + test_result.immediateReindexObject() + self.serialize() # prevent duplicate test result + # following 2 functions only call 'newContent' on test_result + createTestResultLineList(test_result, test_name_list) createNode(test_result, node_title) - return test_result_path, revision + return test_result.getRelativeUrl(), revision security.declarePublic('startUnitTest') def startUnitTest(self, test_result_path, exclude_list=()): @@ -188,12 +188,9 @@ class TaskDistributionTool(BaseTool): test_result = portal.restrictedTraverse(test_result_path) if test_result.getSimulationState() != 'started': return - path, line_dict = self.test_result_dict[test_result.getTitle()] - assert path == test_result_path started_list = [] - for line_id, duration in sorted(line_dict.iteritems(), - key=lambda x: x[1], reverse=1): - line = test_result[line_id] + for line in test_result.objectValues(portal_type="Test Result Line", + sort_on=[("int_index","ascending")]): test = line.getTitle() if test not in exclude_list: state = line.getSimulationState() @@ -218,16 +215,12 @@ class TaskDistributionTool(BaseTool): portal = self.getPortalObject() line = portal.restrictedTraverse(test_path) test_result = line.getParentValue() - path, line_dict = self.test_result_dict[test_result.getTitle()] if test_result.getSimulationState() == 'started': - assert path == test_result.getRelativeUrl() - line_id = line.getId() - if line_id in line_dict: + if line.getSimulationState() == "started": line.stop(**status_dict) - del line_dict[line_id] - self._p_changed = 1 - if not line_dict: - test_result.stop() + if set([x.getSimulationState() for x in test_result.objectValues( + portal_type="Test Result Line")]) == set(["stopped"]): + test_result.stop() def _extractXMLRPCDict(self, xmlrpc_dict): """ @@ -252,7 +245,8 @@ class TaskDistributionTool(BaseTool): if node.getSimulationState() != 'failed': break else: - test_result.fail() + if test_result.getSimulationState() not in ('failed', 'cancelled'): + test_result.fail() security.declarePublic('reportTaskStatus') def reportTaskStatus(self, test_result_path, status_dict, node_title): diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py index 83802e77dd6f607452104d865ae1eb3906f2a07b..b1e847f5d4d3fe476d5855b238cd5736c3343371 100644 --- a/product/ERP5/Tool/TemplateTool.py +++ b/product/ERP5/Tool/TemplateTool.py @@ -316,6 +316,7 @@ class TemplateTool (BaseTool): # XXX: should really check for a magic and offer a falback if it # doens't correspond to anything handled. tar = tarfile.open(path, 'r:gz') + dir_name = tar.members[0].name.split(posixpath.sep, 1)[0] try: # create bt object bt = self.newContent(portal_type='Business Template', id=id) @@ -323,7 +324,7 @@ class TemplateTool (BaseTool): for prop in bt.propertyMap(): prop_type = prop['type'] pid = prop['id'] - prop_path = posixpath.join(tar.members[0].name, 'bt', pid) + prop_path = posixpath.join(dir_name, 'bt', pid) try: info = tar.getmember(prop_path) value = tar.extractfile(info).read() @@ -1298,25 +1299,29 @@ class TemplateTool (BaseTool): # XXX-Luke: This method could replace # TemplateTool_installRepositoryBusinessTemplateList while still being # possible to reuse by external callers - + operation_log = [] resolved_template_list = self.resolveBusinessTemplateListDependency( template_list) - if not install_dependency: - installed_bt5_set = set([x.title - for x in self.getInstalledBusinessTemplatesList()]) - def checkAvailability(bt_title): - return bt_title in template_list or bt_title in installed_bt5_set - missing_dependency_list = [i[1] for i in resolved_template_list - if not checkAvailability(i[1].replace(".bt5", ""))] - if len(missing_dependency_list) > 0: - raise BusinessTemplateMissingDependency,\ - "Impossible to install, please install the following dependencies before: %s" \ - % missing_dependency_list + installed_bt5_set = set([x.title + for x in self.getInstalledBusinessTemplatesList()]) + + def checkAvailability(bt_title): + return bt_title in template_list or bt_title in installed_bt5_set + missing_dependency_list = [i for i in resolved_template_list + if not checkAvailability(i[1].replace(".bt5", ""))] + + if not install_dependency and len(missing_dependency_list) > 0: + raise BusinessTemplateMissingDependency,\ + "Impossible to install, please install the following dependencies before: %s" \ + % [x[1] for x in missing_dependency_list] activate_kw = dict(activity="SQLQueue", tag="start_%s" % (time.time())) - for repository, bt_id in resolved_template_list: + + missing_dependency_list.extend([x for x in resolved_template_list if + x[1] in template_list]) + for repository, bt_id in missing_dependency_list: bt_url = '%s/%s' % (repository, bt_id) param_dict = dict(download_url=bt_url, only_newer=only_newer) if update_catalog is not _MARKER: diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Activity%20Tool/watch_report.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Activity%20Tool/watch_report.xml new file mode 100644 index 0000000000000000000000000000000000000000..e136939ddcfc2482bfcf714480c3daf5362c789a --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Activity%20Tool/watch_report.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_report</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_report</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>watch_report</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>2.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Show Activity Watcher</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/ActivityTool_viewWatcher</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/CategoryTemplateItem/portal_categories/delivery.xml b/product/ERP5/bootstrap/erp5_core/CategoryTemplateItem/portal_categories/delivery.xml index b7b3516bea39f132f0e9fc78ec4bf5c81558fbee..a1104cb8b1ce78b34c8c6d52d195c6b3e0dc5ab3 100644 --- a/product/ERP5/bootstrap/erp5_core/CategoryTemplateItem/portal_categories/delivery.xml +++ b/product/ERP5/bootstrap/erp5_core/CategoryTemplateItem/portal_categories/delivery.xml @@ -76,7 +76,9 @@ </item> <item> <key> <string>description</string> </key> - <value> <string></string> </value> + <value> + <none/> + </value> </item> <item> <key> <string>fallback_base_category</string> </key> @@ -128,6 +130,10 @@ <none/> </value> </item> + <item> + <key> <string>related_locally_indexed</string> </key> + <value> <int>1</int> </value> + </item> <item> <key> <string>rid</string> </key> <value> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_deleteMessage.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_deleteMessage.xml new file mode 100644 index 0000000000000000000000000000000000000000..ccc80ef493d8fceaa5c52f04ad9aa1dffb5f2929 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_deleteMessage.xml @@ -0,0 +1,71 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +return \'ActivityTool_manageDelete?uid=%s&activity=%s\' % (context.uid, context.activity)\n + + +]]></string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>**kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_deleteMessage</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getCurrentActivities.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getCurrentActivities.xml new file mode 100644 index 0000000000000000000000000000000000000000..82ff24fb34215e6e1dda3ed441ff79d5d755a470 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getCurrentActivities.xml @@ -0,0 +1,151 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="SQL" module="Products.ZSQLMethods.SQL"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_col</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>name</string> </key> + <value> <string>message</string> </value> + </item> + <item> + <key> <string>null</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>l</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>2</int> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>name</string> </key> + <value> <string>method_id</string> </value> + </item> + <item> + <key> <string>null</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>t</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>34</int> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>name</string> </key> + <value> <string>processing</string> </value> + </item> + <item> + <key> <string>null</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>i</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>name</string> </key> + <value> <string>node</string> </value> + </item> + <item> + <key> <string>null</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>i</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>2</int> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>name</string> </key> + <value> <string>min_pri</string> </value> + </item> + <item> + <key> <string>null</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>i</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>name</string> </key> + <value> <string>max_pri</string> </value> + </item> + <item> + <key> <string>null</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>i</string> </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </list> + </value> + </item> + <item> + <key> <string>arguments_src</string> </key> + <value> <string>table</string> </value> + </item> + <item> + <key> <string>connection_id</string> </key> + <value> <string>cmf_activity_sql_connection</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_getCurrentActivities</string> </value> + </item> + <item> + <key> <string>src</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +SELECT count(*) AS message, method_id, processing, processing_node AS node, min(priority) AS min_pri, max(priority) AS max_pri FROM <dtml-var table> GROUP BY method_id, processing, processing_node ORDER BY node + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getMessageList.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getMessageList.xml new file mode 100644 index 0000000000000000000000000000000000000000..3762c51e14db7d6a87d2682ef16961a0870b7989 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getMessageList.xml @@ -0,0 +1,98 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +# searching\n +# processing_node column is manage by methods called by getMessageTempObjectList\n +if kw.get(\'processing_node\', None) == \'\':\n + del kw[\'processing_node\']\n +\n +#key_list_to_search = [x for (x,y) in [(k,kw[k]) for k in [\'uid_activity\',\'str_object_path\',\'method_id\',\'retry\',\'processing\']] if y != \'\']\n +message_kw = dict([(k,kw[k]) for k in [\'uid_activity\',\'str_object_path\',\'method_id\',\'retry\',\'processing\'] if not(kw.get(k) in (\'\',None))])\n +\n +message_list = context.getMessageTempObjectList(**message_kw)\n +message_list_to_show = []\n +while len(message_list) > 0:\n + message = message_list.pop(0)\n + message.edit(str_object_path = \'/\'.join(str(i) for i in message.object_path))\n + message.edit(uid_activity = str(message.uid) + \' (\'+ message.activity[3:] +\')\')\n +# # search filter\n +# try:\n +# for k in key_list_to_search:\n +# str(getattr(message,k,None)).index(kw[k])\n +# except ValueError:\n +# continue\n + message.edit(delete = \'[Delete]\')\n + message.edit(restart = \'[Restart]\')\n + message_list_to_show.append(message)\n +\n +## sort\n +## XXX\n +\n +return message_list_to_show\n + + +]]></string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>**kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_getMessageList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getSQLActivities.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getSQLActivities.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5a776fcbefb992ee6b475fe904b57eecbfffa53 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getSQLActivities.xml @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="SQL" module="Products.ZSQLMethods.SQL"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>arguments_src</string> </key> + <value> <string>table</string> </value> + </item> + <item> + <key> <string>connection_id</string> </key> + <value> <string>cmf_activity_sql_connection</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_getSQLActivities</string> </value> + </item> + <item> + <key> <string>src</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +SELECT priority as pri, MIN(timediff(NOW(), date)) AS min, AVG(timediff(NOW() , date)) AS avg, MAX(timediff(NOW() , date)) AS max FROM <dtml-var table> GROUP BY priority; + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getSqlStatisticList.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getSqlStatisticList.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ee996665aa0986bbccc996c6eb0bb6479c66cec --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_getSqlStatisticList.xml @@ -0,0 +1,88 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>data = {}\n +\n +for d, sql in [(\'SQLDict\',context.ActivityTool_getCurrentActivities(table=\'message\')),\n + (\'SQLQueue\',context.ActivityTool_getCurrentActivities(table=\'message_queue\'))]:\n + data[d] = {\'line_list\':[]}\n + for line in sql:\n + tmp = {}\n + for k in [\'message\',\'method_id\',\'processing\',\'node\',\'min_pri\',\'max_pri\']:\n + tmp[k] = line[k]\n + data[d][\'line_list\'].append(tmp)\n +\n +for d, sql in [(\'SQLDict2\',context.ActivityTool_getSQLActivities(table=\'message\')),\n + (\'SQLQueue2\',context.ActivityTool_getSQLActivities(table=\'message_queue\'))]:\n + data[d] = {\'line_list\':[]}\n + for line in sql:\n + tmp = {\'pri\':line[\'pri\']}\n + for k in [\'min\',\'avg\',\'max\']:\n + tmp[k] = str(line[k])\n + data[d][\'line_list\'].append(tmp)\n +\n +import json\n +return json.dumps(data)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_getSqlStatisticList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_manageDelete.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_manageDelete.xml new file mode 100644 index 0000000000000000000000000000000000000000..73f449318dcf5b1c4d1eeae8ad87d0e87a2b2191 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_manageDelete.xml @@ -0,0 +1,67 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>return context.manageDelete([uid],activity,REQUEST=container.REQUEST)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>uid,activity,**kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_manageDelete</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_manageRestart.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_manageRestart.xml new file mode 100644 index 0000000000000000000000000000000000000000..45c36ab7417c911605cef286228b91715a5e932c --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_manageRestart.xml @@ -0,0 +1,67 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>return context.manageRestart([uid],activity,REQUEST=container.REQUEST)\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>uid,activity,**kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_manageRestart</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_restartMessage.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_restartMessage.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a8f1a0c5b4d38bba6cd266af930ce30ced2ed85 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_restartMessage.xml @@ -0,0 +1,71 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +return \'ActivityTool_manageRestart?uid=%s&activity=%s\' % (context.uid, context.activity)\n + + +]]></string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>**kw</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_restartMessage</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewActivityList.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewActivityList.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f21863e4c7231f46109ad92500233f4a721dea9 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewActivityList.xml @@ -0,0 +1,131 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>Base_doSelect</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>bottom</string> + <string>hidden</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>listbox</string> + </list> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list/> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_viewActivityList</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>ActivityTool_viewActivityList</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_list</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Activities</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>update_action_title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewActivityList/listbox.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewActivityList/listbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..e61dab7ceebc022f76d57b3e810fb756d25bfd82 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewActivityList/listbox.xml @@ -0,0 +1,751 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ListBox" module="Products.ERP5Form.ListBox"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>all_editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>all_editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_display_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_style_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_search_column</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_rows_on_no_search_criterion</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_navigation_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>row_css_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>style_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>untranslatable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>Base_viewSearchResultList</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>all_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>all_editable_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>delete</string> + <string>Delete</string> + </tuple> + <tuple> + <string>restart</string> + <string>Restart</string> + </tuple> + <tuple> + <string>uid_activity</string> + <string>UID</string> + </tuple> + <tuple> + <string>str_object_path</string> + <string>Object</string> + </tuple> + <tuple> + <string>method_id</string> + <string>Method ID</string> + </tuple> + <tuple> + <string>activity_kw</string> + <string>Activity Kw</string> + </tuple> + <tuple> + <string>arguments</string> + <string>Arguments</string> + </tuple> + <tuple> + <string>kw</string> + <string>Named Parameters</string> + </tuple> + <tuple> + <string>processing_node</string> + <string>Processing Node</string> + </tuple> + <tuple> + <string>retry</string> + <string>Retry</string> + </tuple> + <tuple> + <string>processing</string> + <string>Processing</string> + </tuple> + <tuple> + <string>call_traceback</string> + <string>Call Traceback</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_display_style</string> </key> + <value> <string>table</string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_style_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> + <list> + <tuple> + <string>delete</string> + <string>Delete</string> + </tuple> + <tuple> + <string>restart</string> + <string>Restart</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>global_search_column</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>height</string> </key> + <value> <int>5</int> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hide_rows_on_no_search_criterion</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <int>30</int> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string>list</string> </value> + </item> + <item> + <key> <string>list_cookie</string> </key> + <value> <string>PERSON_LIST</string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>more_columns</string> </key> + <value> + <list> + <tuple> + <string>path</string> + <string>Path</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>page_navigation_template</string> </key> + <value> <string>ListBox_viewSliderPageNavigationRenderer</string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list> + <tuple> + <string>Activity Tool</string> + <string>Activity Tool</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>reverse</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>row_css_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> + <list> + <tuple> + <string>uid_activity</string> + <string>UID</string> + </tuple> + <tuple> + <string>str_object_path</string> + <string>Object</string> + </tuple> + <tuple> + <string>method_id</string> + <string>Method ID</string> + </tuple> + <tuple> + <string>processing_node</string> + <string>Processing Node</string> + </tuple> + <tuple> + <string>retry</string> + <string>Retry</string> + </tuple> + <tuple> + <string>processing</string> + <string>Processing</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>activity_selection</string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> + <list> + <tuple> + <string>uid_activity</string> + <string>ascending</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> + <list> + <tuple> + <string>uid_activity</string> + <string>UID</string> + </tuple> + <tuple> + <string>str_object_path</string> + <string>Object</string> + </tuple> + <tuple> + <string>method_id</string> + <string>Method ID</string> + </tuple> + <tuple> + <string>processing_node</string> + <string>Processing Node</string> + </tuple> + <tuple> + <string>retry</string> + <string>Retry</string> + </tuple> + <tuple> + <string>processing</string> + <string>Processing</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>style_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Activities</string> </value> + </item> + <item> + <key> <string>untranslatable_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>width</string> </key> + <value> <int>40</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: [(\'delete\', \'ActivityTool_deleteMessage\'),(\'restart\', \'ActivityTool_restartMessage\')]</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Method" module="Products.Formulator.MethodField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>method_name</string> </key> + <value> <string>ActivityTool_getMessageList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewWatcher.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewWatcher.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f92263d0f1ba37120c25a463f688c37d2218215 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewWatcher.xml @@ -0,0 +1,152 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left</string> + <string>right</string> + <string>center</string> + <string>bottom</string> + <string>hidden</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list> + <string>activity_watcher_gadget</string> + </list> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>left</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>right</string> </key> + <value> + <list/> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityTool_viewWatcher</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>ActivityTool_viewWatcher</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_view_dialog</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>update_action_title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_event_resource_list.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewWatcher/activity_watcher_gadget.xml similarity index 62% rename from bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_event_resource_list.xml rename to product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewWatcher/activity_watcher_gadget.xml index 47fbd73f9ed0404b4bd7d52458c32ea5053544df..e96028dd1970ad484f8c7fbf2725e35a232b6811 100644 --- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/SystemPreference_viewCustomerRelation/my_preferred_event_resource_list.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityTool_viewWatcher/activity_watcher_gadget.xml @@ -2,39 +2,18 @@ <ZopeData> <record id="1" aka="AAAAAAAAAAE="> <pickle> - <global name="LinesField" module="Products.Formulator.StandardFields"/> + <global name="GadgetField" module="Products.ERP5Form.GadgetField"/> </pickle> <pickle> <dictionary> <item> <key> <string>id</string> </key> - <value> <string>my_preferred_event_resource_list</string> </value> + <value> <string>activity_watcher_gadget</string> </value> </item> <item> <key> <string>message_values</string> </key> <value> - <dictionary> - <item> - <key> <string>external_validator_failed</string> </key> - <value> <string>The input failed the external validator.</string> </value> - </item> - <item> - <key> <string>line_too_long</string> </key> - <value> <string>A line was too long.</string> </value> - </item> - <item> - <key> <string>required_not_found</string> </key> - <value> <string>Input is required but no input given.</string> </value> - </item> - <item> - <key> <string>too_long</string> </key> - <value> <string>You entered too many characters.</string> </value> - </item> - <item> - <key> <string>too_many_lines</string> </key> - <value> <string>You entered too many lines.</string> </value> - </item> - </dictionary> + <dictionary/> </value> </item> <item> @@ -58,63 +37,55 @@ <value> <string></string> </value> </item> <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_validator</string> </key> + <key> <string>display_maxwidth</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>extra</string> </key> + <key> <string>display_width</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>height</string> </key> + <key> <string>editable</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>hidden</string> </key> + <key> <string>enabled</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_length</string> </key> + <key> <string>extra</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_linelength</string> </key> + <key> <string>gadget_cache_id</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_lines</string> </key> + <key> <string>gadget_cached</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>required</string> </key> + <key> <string>gadget_connection</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>title</string> </key> + <key> <string>gadget_html</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>unicode</string> </key> + <key> <string>gadget_id</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>view_separator</string> </key> + <key> <string>gadget_property</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>whitespace_preserve</string> </key> + <key> <string>hidden</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>width</string> </key> + <key> <string>title</string> </key> <value> <string></string> </value> </item> </dictionary> @@ -134,75 +105,65 @@ </item> <item> <key> <string>default</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> + <value> <string></string> </value> </item> <item> <key> <string>description</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>editable</string> </key> + <key> <string>display_maxwidth</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>enabled</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> - </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> + <key> <string>display_width</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>height</string> </key> + <key> <string>editable</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>hidden</string> </key> + <key> <string>enabled</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_length</string> </key> + <key> <string>extra</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_linelength</string> </key> + <key> <string>gadget_cache_id</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_lines</string> </key> + <key> <string>gadget_cached</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>required</string> </key> + <key> <string>gadget_connection</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>title</string> </key> + <key> <string>gadget_html</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>unicode</string> </key> + <key> <string>gadget_id</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>view_separator</string> </key> + <key> <string>gadget_property</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>whitespace_preserve</string> </key> + <key> <string>hidden</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>width</string> </key> - <value> <string></string> </value> + <key> <string>title</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> </item> </dictionary> </value> @@ -221,77 +182,63 @@ </item> <item> <key> <string>default</string> </key> - <value> - <list/> - </value> + <value> <string></string> </value> </item> <item> <key> <string>description</string> </key> - <value> <string>A list of relative URLs for the services to display in the "Nature" pop-up menu of Events.</string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>external_validator</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>extra</string> </key> + <key> <string>display_maxwidth</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>height</string> </key> - <value> <int>5</int> </value> + <key> <string>display_width</string> </key> + <value> <int>20</int> </value> </item> <item> - <key> <string>hidden</string> </key> - <value> <int>0</int> </value> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> </item> <item> - <key> <string>max_length</string> </key> - <value> <string></string> </value> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> </item> <item> - <key> <string>max_linelength</string> </key> + <key> <string>extra</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>max_lines</string> </key> + <key> <string>gadget_cache_id</string> </key> <value> <string></string> </value> </item> <item> - <key> <string>required</string> </key> + <key> <string>gadget_cached</string> </key> <value> <int>0</int> </value> </item> <item> - <key> <string>title</string> </key> - <value> <string>Event Resources (Deprecated)</string> </value> + <key> <string>gadget_connection</string> </key> + <value> <string></string> </value> </item> <item> - <key> <string>unicode</string> </key> - <value> <int>0</int> </value> + <key> <string>gadget_html</string> </key> + <value> <string>ActivityWatcherGadget_view</string> </value> + </item> + <item> + <key> <string>gadget_id</string> </key> + <value> <string>activity_watcher_gadget</string> </value> </item> <item> - <key> <string>view_separator</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -<br /> - -]]></string> </value> + <key> <string>gadget_property</string> </key> + <value> <string></string> </value> </item> <item> - <key> <string>whitespace_preserve</string> </key> + <key> <string>hidden</string> </key> <value> <int>0</int> </value> </item> <item> - <key> <string>width</string> </key> - <value> <int>40</int> </value> + <key> <string>title</string> </key> + <value> <string>Watcher</string> </value> </item> </dictionary> </value> @@ -307,24 +254,7 @@ <dictionary> <item> <key> <string>_text</string> </key> - <value> <string>python: here.getPreferredEventResourceList() or preferences.getPreferredEventResourceList()</string> </value> - </item> - </dictionary> - </pickle> - </record> - <record id="3" aka="AAAAAAAAAAM="> - <pickle> - <global name="TALESMethod" module="Products.Formulator.TALESField"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -python: len(here.getPreference(field.getId().replace(\'my_\', \'\'))) > 1 - -]]></string> </value> + <value> <string>string:</string> </value> </item> </dictionary> </pickle> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityWatcherGadget_view.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityWatcherGadget_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..699b075c680c4cf84ade2a8b2a022d136042d2de --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ActivityWatcherGadget_view.xml @@ -0,0 +1,70 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_text</string> </key> + <value> <unicode encoding="cdata"><![CDATA[ + +<div>\n + <div id="activity_watcher_gadget"></div>\n + <script src="jquery/core/jquery.js"></script>\n + <script src="activity-watcher-gadget.js"></script>\n +</div> + +]]></unicode> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>expand</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ActivityWatcherGadget_view</string> </value> + </item> + <item> + <key> <string>output_encoding</string> </key> + <value> <string>utf-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <unicode></unicode> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_validateRelatedLocallyIndexed.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_validateRelatedLocallyIndexed.xml new file mode 100644 index 0000000000000000000000000000000000000000..4413ff8e5d57596439ee572f8e2a629d5f93344d --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_validateRelatedLocallyIndexed.xml @@ -0,0 +1,69 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>return not (value and (\n + request.other[\'field_my_acquisition_object_id_list\'] or\n + request.other[\'field_my_acquisition_base_category_list\']))\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>value, request</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>BaseCategory_validateRelatedLocallyIndexed</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view.xml index 02fa90b3c77aadbb8e6215d34b97ef224a5abb20..c579df848aba223502ff1db5b0ba8b40912b60ce 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view.xml @@ -105,6 +105,7 @@ <key> <string>right</string> </key> <value> <list> + <string>my_related_locally_indexed</string> <string>my_acquisition_copy_value</string> <string>my_acquisition_mask_value</string> <string>my_acquisition_append_value</string> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view/my_related_locally_indexed.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view/my_related_locally_indexed.xml new file mode 100644 index 0000000000000000000000000000000000000000..2e7557d91062bc5f80608d87c784c905d7b11c5f --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BaseCategory_view/my_related_locally_indexed.xml @@ -0,0 +1,124 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>external_validator</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>delegated_message_list</string> </key> + <value> + <list> + <string>external_validator_failed</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_related_locally_indexed</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>Local index is incompatible with category acquision.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_checkbox</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Index Related Documents Locally</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Method" module="Products.Formulator.MethodField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>method_name</string> </key> + <value> <string>BaseCategory_validateRelatedLocallyIndexed</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_jumpToRelatedDocument.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_jumpToRelatedDocument.xml index a4a05a4aa62e680b2d3f5707e6c61bc7b8c4ff63..c418b8e07bc56ddea3d3164574b4d9d7f49ca640 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_jumpToRelatedDocument.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_jumpToRelatedDocument.xml @@ -66,7 +66,7 @@ jump_reference_list = getattr(context, accessor_name)(portal_type=portal_type, f \n if len(jump_reference_list)==1:\n jump_reference = jump_reference_list[0]\n - return jump_reference.Base_redirect(\'view\')\n + return jump_reference.Base_redirect()\n else:\n selection_uid_list = map(lambda x:x.getUid(),jump_reference_list) or None\n kw = {\'uid\': selection_uid_list}\n diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_zSearchRelatedObjectsByCategoryList.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_zSearchRelatedObjectsByCategoryList.xml index 423e0c13a703b1d8333dddb1db7e2bbcc8946c69..3b30d5d4eae03ba67733be241f761f47c1ad41f8 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_zSearchRelatedObjectsByCategoryList.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_zSearchRelatedObjectsByCategoryList.xml @@ -58,15 +58,11 @@ order_by_expression</string> </value> <key> <string>src</string> </key> <value> <string encoding="cdata"><![CDATA[ -SELECT DISTINCT catalog.uid, catalog.path, portal_type\n +SELECT DISTINCT catalog.uid, path, relative_url, portal_type\n FROM catalog, category\n WHERE catalog.uid = category.uid\n <dtml-if portal_type>\n - AND\n - (<dtml-in portal_type>\n - <dtml-unless sequence-start> OR </dtml-unless>\n - catalog.portal_type=\'<dtml-var sequence-item>\'\n - </dtml-in>)\n + AND <dtml-sqltest portal_type type="string" multiple>\n </dtml-if>\n AND (<dtml-var "portal_categories.buildSQLSelector(category_list)">)\n <dtml-if strict_membership>\n diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ERP5Site_reindexAll.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ERP5Site_reindexAll.xml index 7be848351d699223445685b5c0dafcdb6a007c3c..4c163a2af04c538bc5dd39f13d81e3865f5136db 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ERP5Site_reindexAll.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ERP5Site_reindexAll.xml @@ -58,35 +58,24 @@ if clear_catalog:\n catalog = portal.portal_catalog.getSQLCatalog(sql_catalog_id)\n catalog.manage_catalogClear()\n \n -print "#### Indexing preferences ####"\n -tag = \'portal_preferences\'\n -context.portal_preferences.activate(\n - tag=tag,\n - priority=additional_priority).Folder_reindexAll(\n - folder_tag=tag,\n - object_tag=tag,\n - object_priority=additional_priority,\n - sql_catalog_id=sql_catalog_id,\n - start_tree=start_tree,\n - stop_tree=stop_tree,)\n -\n # Reindex person module\n print "#### Indexing person_module, stage 1 ####"\n person_module=getattr(portal, \'person_module\', None)\n higher_priority = 1 + additional_priority\n if person_module is not None :\n tag = \'person_stage_1\'\n - folder_after_tag = (\'portal_preferences\',)\n - person_module.activate(tag=tag,\n - priority=higher_priority,\n - after_tag=folder_after_tag).Folder_reindexAll(\n - folder_tag=tag,\n - object_tag=tag,\n - object_priority=higher_priority,\n - sql_catalog_id=sql_catalog_id,\n - start_tree=start_tree,\n - stop_tree=stop_tree,)\n -\n + person_module.recurseCallMethod(\n + method_id=\'immediateReindexObject\',\n + group_method_id=\'portal_catalog/catalogObjectList\',\n + method_kw={\n + \'sql_catalog_id\': sql_catalog_id,\n + },\n + activate_kw={\n + \'tag\': tag,\n + \'priority\': higher_priority,\n + },\n + max_depth=1, # Do not reindex Person\'s subobjects\n + )\n \n print "#### Indexing translations ####"\n context.ERP5Site_updateTranslationTable(sql_catalog_id=sql_catalog_id)\n @@ -132,11 +121,24 @@ for folder in [context.portal_alarms, context.portal_activities]:\n start_tree=start_tree,\n stop_tree=stop_tree,)\n \n +print "#### Indexing preferences ####"\n +preference_tag = \'portal_preferences\'\n +context.portal_preferences.activate(\n + tag=preference_tag,\n + after_tag=\'category\',\n + priority=additional_priority).Folder_reindexAll(\n + folder_tag=preference_tag,\n + object_tag=preference_tag,\n + object_priority=additional_priority,\n + sql_catalog_id=sql_catalog_id,\n + start_tree=start_tree,\n + stop_tree=stop_tree,)\n +\n # We index simulation first to make sure we can calculate tests\n # (ie. related quantity)\n print "#### Indexing simulation ####"\n folder_tag = \'module\'\n -folder_after_tag = (\'category\', \'document\', \'person_stage_1\', \'group_person_stage_1\')\n +folder_after_tag = (\'category\', \'document\', \'person_stage_1\', \'group_person_stage_1\', preference_tag)\n object_tag = \'simulation\'\n object_after_tag = folder_after_tag\n object_priority = 3 + additional_priority\n @@ -153,45 +155,18 @@ context.portal_simulation.activate(\n start_tree=start_tree,\n stop_tree=stop_tree,)\n \n -# We index templates secondly\n -print "#### Indexing templates ####"\n -# Next we index trash bins\n -print "#### Indexing trash bins ####"\n -# Next we index domains\n -print "#### Indexing domains ####"\n -# Next we index applied rules\n -print "#### Indexing applied rules ####"\n -# Next we index delivery builders\n -print "#### Indexing delivery builders ####"\n -# Next we index order builders\n -print "#### Indexing order builders ####"\n -# Next we index portal types\n -print "#### Indexing portal types ####"\n -# Next we index portal_property_sheets\n -print "#### Indexing portal property sheets ####"\n +# We index tools secondly\n +print "#### Indexing tools ####"\n \n folder_tag = \'module\'\n -folder_after_tag = (\'category\', \'person_stage_1\', \'group_person_stage_1\')\n +folder_after_tag = (\'category\', \'person_stage_1\', \'group_person_stage_1\', preference_tag)\n object_tag = \'document\'\n object_after_tag = folder_after_tag\n object_priority = 2 + additional_priority\n -tool_list = [portal.portal_templates, portal.portal_trash,\n - portal.portal_domains, portal.portal_rules,\n - portal.portal_deliveries, portal.portal_orders,\n - portal.portal_caches, portal.portal_types,\n - portal.portal_property_sheets,\n - portal.portal_ids, portal.portal_memcached,]\n -possible_tool_list = [\n - \'portal_contribution_registry\',\n - \'portal_contributions\',\n - \'portal_gadgets\',\n - \'portal_integrations\',\n - \'portal_roundings\',\n - \'portal_solvers\',\n -]\n -for tool_id in possible_tool_list:\n - if getattr(portal, tool_id, None) is not None:\n - tool_list.append(getattr(portal, tool_id))\n +tool_list = [x for x in portal.objectValues() if \\\n + x.getUid != portal.getUid and \\\n + x.meta_type != \'ERP5 Folder\' and \\\n + x.id not in (\'portal_alarms\', \'portal_activities\', \'portal_preferences\', \'portal_simulation\', \'portal_uidhandler\')]\n \n for folder in tool_list:\n folder.activate(\n @@ -207,6 +182,13 @@ for folder in tool_list:\n start_tree=start_tree,\n stop_tree=stop_tree,)\n \n +# Then we index ERP5 Python Scripts\n +print "#### Indexing ERP5 Python Scripts ####"\n +for path, obj in portal.portal_skins.ZopeFind(portal.portal_skins, obj_metatypes=(\'ERP5 Python Script\',), search_sub=1):\n + obj.activate(tag=folder_tag,\n + priority=object_priority,\n + after_tag=folder_after_tag).immediateReindexObject(sql_catalog_id=sql_catalog_id)\n +\n # Then we index everything except inventories\n for folder in portal.objectValues(("ERP5 Folder",)):\n if folder.getId().find(\'inventory\') < 0:\n diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/TemplateTool_installRepositoryBusinessTemplateList.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/TemplateTool_installRepositoryBusinessTemplateList.xml index 9d13af094b34e9f843261e899952f5ef7d16b9c3..c744b3716dd1c75c5d0eaea46e5b11886269fc47 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/TemplateTool_installRepositoryBusinessTemplateList.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/TemplateTool_installRepositoryBusinessTemplateList.xml @@ -71,7 +71,8 @@ if len(uids) == 0:\n id_list = []\n portal_status_message = \'\'\n current_uid_list=[]\n -installed_business_template_title_list = context.getInstalledBusinessTemplateTitleList()\n +installed_business_template_title_list = [\'%s.bt5\' % bt for bt in context.getInstalledBusinessTemplateTitleList()]\n +\n for uid in uids:\n current_uid_list.append(uid)\n repository, id = context.decodeRepositoryBusinessTemplateUid(uid)\n diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/activity-watcher-gadget.js.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/activity-watcher-gadget.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..21c83b9a32789cfa324e4234a84e1ce80460172a --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/activity-watcher-gadget.js.xml @@ -0,0 +1,135 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="DTMLDocument" module="OFS.DTMLDocument"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>__name__</string> </key> + <value> <string>activity-watcher-gadget.js</string> </value> + </item> + <item> + <key> <string>_vars</string> </key> + <value> + <dictionary/> + </value> + </item> + <item> + <key> <string>globals</string> </key> + <value> + <dictionary/> + </value> + </item> + <item> + <key> <string>raw</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*\n + This script generate a lot of html tags inside a div.\n + It would be better to use templates (like mustache)\n +*/\n +(function () {\n + var interval = 1000,\n + div = \'#activity_watcher_gadget\',\n + html_content = \'\',\n + basedir = location.pathname.split(\'/\').slice(0,-1).join(\'/\') + \'/\',\n + fillMessageList = function (data,messagetype,string) {\n + if (data[string] && data[string].line_list) {\n + for (i = 0; i < data[string].line_list.length; i++) {\n + var key_list = [\'message\',\'method_id\',\'node\',\'min_pri\',\'max_pri\'], j;\n + html_content +=\n + \'<tr>\' +\n + \'<td>\' + messagetype + \'</td>\';\n + for (j = 0; j < key_list.length; j++) {\n + html_content +=\n + \'<td>\' + data[string].line_list[i][key_list[j]] + \'</td>\';\n + }\n + html_content +=\n + \'</tr>\';\n + }\n + }\n + },\n + fillMessagePri = function (data,messagetype,string) {\n + if (data[string] && data[string].line_list) {\n + for (i = 0; i < data[string].line_list.length; i++) {\n + var key_list = [\'min\',\'avg\',\'max\'], j;\n + html_content +=\n + \'<tr>\' +\n + \'<td>\' + messagetype + \'</td>\' +\n + \'<td>\' + data[string].line_list[i].pri + \'</td>\';\n + for (j = 0; j < key_list.length; j++) {\n + html_content +=\n + \'<td>\' + data[string].line_list[i][key_list[j]] + \'</td>\';\n + }\n + html_content +=\n + \'</tr>\';\n + }\n + }\n + },\n + watcher = function () {\n + $.ajax({\n + url: basedir + \'ActivityTool_getSqlStatisticList\',\n + type: \'POST\',\n + timeout: 10000,\n + success: function (response) {\n + var i, data, today = new Date();\n + data = JSON.parse(response);\n + html_content =\n + \'Date : \' + today.toTimeString() +\n + \'<table>\' +\n + \' <tr>\' +\n + \' <th>Type</th>\'+\n + \' <th>Message</th>\'+\n + \' <th>Method Id</th>\'+\n + \' <th>Processing Node</th>\'+\n + \' <th>Min pri</th>\'+\n + \' <th>Max pri</th>\' +\n + \' </tr>\';\n + fillMessageList (data,\'dict\',\'SQLDict\');\n + fillMessageList (data,\'queue\',\'SQLQueue\');\n + html_content +=\n + \' </table>\' +\n + \'<table>\'+\n + \' <tr>\'+\n + \' <th>Type</th>\'+\n + \' <th>Pri</th>\'+\n + \' <th>Min</th>\'+\n + \' <th>Avg</th>\'+\n + \' <th>Max</th>\'+\n + \' </tr>\';\n + fillMessagePri (data,\'dict\',\'SQLDict2\');\n + fillMessagePri (data,\'queue\',\'SQLQueue2\');\n + html_content +=\n + \' </table>\';\n + $(div).html(html_content);\n + setTimeout(watcher,interval);\n + },\n + error: function (type) {\n + if (!html_content) {\n + $(div).html(\'ERROR \' + type.status + \': \' + type.statusText);\n + } else {\n + $(div).html(\'ERROR \' + type.status + \': \' + type.statusText +\n + \'<br />\' + html_content);\n + }\n + if (type.status < 400) {\n + setTimeout(watcher,interval);\n + }\n + }\n + });\n + };\n + watcher();\n +}());\n + + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_core/TestTemplateItem/testActivityTool.py b/product/ERP5/bootstrap/erp5_core/TestTemplateItem/testActivityTool.py new file mode 100644 index 0000000000000000000000000000000000000000..06fa76f97b7e55f44bb54a0332c99cbf702e575b --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/TestTemplateItem/testActivityTool.py @@ -0,0 +1,90 @@ +############################################################################## +# +# Copyright (c) 2002-2012 Nexedi SA and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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. +# +############################################################################## + +from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase + +class Test(ERP5TypeTestCase): + """ + A Sample Test Class + """ + + def getTitle(self): + return "TestActivityTool" + + def getBusinessTemplateList(self): + """ + Tuple of Business Templates we need to install + """ + return ('erp5_base',) + + def afterSetUp(self): + """ + This is ran before anything, used to set the environment + """ + # here, you can create the categories and objects your test will depend on + self.activity_tool = self.getPortalObject().portal_activities + if not(hasattr(self.portal,'test_activity_tool_module')): + self.portal.newContent(portal_type='Organisation Module', + id='test_activity_tool_module') + self.test_activity_tool_module = getattr(self.getPortal(), 'test_activity_tool_module', None) + if not(self.test_activity_tool_module.hasContent('untitled')): + self.test_activity_tool_module.newContent(id='untitled') + self.test_activity_tool_object = self.test_activity_tool_module._getOb('untitled') + self.tic() + + def RestartAndDeleteActivity(self, activity): + self.test_activity_tool_object._setTitle('title1') + self.assertEquals('title1',self.test_activity_tool_object.getTitle()) + + self.test_activity_tool_object.activate(activity=activity)._setTitle('title2') + # Needed so that the message are commited into the queue + self.commit() + message_list = self.activity_tool.getMessageTempObjectList() + self.assertEquals(len(message_list),1) + self.activity_tool.manageDelete([message_list[0].uid],activity) + # Needed so that the message are removed from the queue + self.commit() + self.tic() + self.assertEquals('title1',self.test_activity_tool_object.getTitle()) + message_list = self.activity_tool.getMessageTempObjectList() + self.assertEquals(len(message_list),0) + + self.test_activity_tool_object.activate(activity=activity)._setTitle('title2') + # Needed so that the message are commited into the queue + self.commit() + message_list = self.activity_tool.getMessageTempObjectList() + self.assertEquals(len(message_list),1) + self.activity_tool.manageRestart([message_list[0].uid],activity) + self.commit() + self.tic() + self.assertEquals('title2',self.test_activity_tool_object.getTitle()) + message_list = self.activity_tool.getMessageTempObjectList() + self.assertEquals(len(message_list),0) + + def test_manageDelete(self): + self.RestartAndDeleteActivity('SQLQueue') + self.RestartAndDeleteActivity('SQLDict') diff --git a/product/ERP5/bootstrap/erp5_core/bt/revision b/product/ERP5/bootstrap/erp5_core/bt/revision index 0183df9f8164ddf09c4e2ff5bcf038ebb9f84969..49b3517ed3fbd5cd761b61def76775276ba13dfc 100644 --- a/product/ERP5/bootstrap/erp5_core/bt/revision +++ b/product/ERP5/bootstrap/erp5_core/bt/revision @@ -1 +1 @@ -41053 \ No newline at end of file +41062 \ No newline at end of file diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list b/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list index e229b4798050c4afa5b1ce8b9012c94ef7ac5b93..d2b921294e9e374e5983fb981ce84daa4a1d6eac 100644 --- a/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list +++ b/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list @@ -1,5 +1,6 @@ Acquired Property | view Action Information | view +Activity Tool | watch_report Alarm Tool | alarm_report Alarm Tool | view Alarm | call_active_sense diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_test_id_list b/product/ERP5/bootstrap/erp5_core/bt/template_test_id_list new file mode 100644 index 0000000000000000000000000000000000000000..2785bce7035f2b65002d3aa615f41558bbee8c98 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/bt/template_test_id_list @@ -0,0 +1 @@ +testActivityTool \ No newline at end of file diff --git a/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/z_create_catalog.xml b/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/z_create_catalog.xml index b2192fb7ad53dbf65631c6f4fb06686ca20c6409..dfd090a00c723c0ad7026125e20092f30dad506d 100644 --- a/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/z_create_catalog.xml +++ b/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/z_create_catalog.xml @@ -106,7 +106,7 @@ CREATE TABLE `catalog` (\n KEY `Title` (`title`),\n KEY `Reference` (`reference`),\n KEY `relative_url` (`relative_url`),\n - KEY `Portal Type` (`portal_type`),\n + KEY `Portal Type` (`portal_type`, `reference`),\n KEY `opportunity_state` (`opportunity_state`),\n KEY `validation_state_portal_type` (`validation_state`, `portal_type`),\n KEY `simulation_state_portal_type` (`simulation_state`, `portal_type`),\n diff --git a/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/bt/revision b/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/bt/revision index c72784c8c508343b406600858d9969525d9bf7fe..7371afb09c216542b49bc443a3a57567c87116fb 100644 --- a/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/bt/revision +++ b/product/ERP5/bootstrap/erp5_mysql_innodb_catalog/bt/revision @@ -1 +1 @@ -235 \ No newline at end of file +236 \ No newline at end of file diff --git a/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/BaseCategory/related_locally_indexed_property.xml b/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/BaseCategory/related_locally_indexed_property.xml new file mode 100644 index 0000000000000000000000000000000000000000..22f9fd4682ac18cc0c1e33f5531d9280646b508d --- /dev/null +++ b/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/BaseCategory/related_locally_indexed_property.xml @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Standard Property" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_local_properties</string> </key> + <value> + <tuple> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>mode</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + </tuple> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>elementary_type/boolean</string> + </tuple> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>Determines if related values should be indexed on target documents (i.e. in ZODB) in addition to catalog.\n +This is incompatible with category acquisition.</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>related_locally_indexed_property</string> </value> + </item> + <item> + <key> <string>mode</string> </key> + <value> <string>w</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Standard Property</string> </value> + </item> + <item> + <key> <string>property_default</string> </key> + <value> <string>python: 0</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DocumentPreference/preferred_pre_converted_only_property.xml b/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DocumentPreference/preferred_pre_converted_only_property.xml index d92838efcc1bda06b911712b091308bd2cf9e1b5..d4e86f58857fb63024341ff99df41a0279b39a85 100644 --- a/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DocumentPreference/preferred_pre_converted_only_property.xml +++ b/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DocumentPreference/preferred_pre_converted_only_property.xml @@ -53,7 +53,7 @@ </item> <item> <key> <string>property_default</string> </key> - <value> <string>python: True</string> </value> + <value> <string>python: False</string> </value> </item> <item> <key> <string>write_permission</string> </key> diff --git a/product/ERP5/bootstrap/erp5_property_sheets/bt/revision b/product/ERP5/bootstrap/erp5_property_sheets/bt/revision index 7c6ba0fe181de786f8f09b1b8cc1ad6bbc1dd5a4..f0b5c72cad2a31240e128db4bc833e782855f796 100644 --- a/product/ERP5/bootstrap/erp5_property_sheets/bt/revision +++ b/product/ERP5/bootstrap/erp5_property_sheets/bt/revision @@ -1 +1 @@ -55 \ No newline at end of file +57 \ No newline at end of file diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_createCloneDocument.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_createCloneDocument.xml index d0ebf3a48c2720730e7e26ca4cf82f70d3cbc848..2997ca497f1e60b0197dff9edcce2434668fbaf6 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_createCloneDocument.xml +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_createCloneDocument.xml @@ -67,7 +67,8 @@ else:\n # We copy contents in place if possible\n directory = getattr(context, \'original_container\', None) or context.getParentValue()\n allowed_type_list = directory.getVisibleAllowedContentTypeList()\n -if portal_type not in allowed_type_list:\n +is_user_allowed_copy_or_move = context.Base_checkPermission(context.getRelativeUrl(), \'Copy or Move\')\n +if portal_type not in allowed_type_list or not is_user_allowed_copy_or_move:\n if batch_mode:\n return None\n else:\n diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_redirect.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_redirect.xml index 4ff6842ce3a68cbab852d3f3d2ceea95cd7178b3..adac404bb6e775f12c32161f98bcb033cb4f9119 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_redirect.xml +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_redirect.xml @@ -60,17 +60,20 @@ TODO: improve API and extensively document. ERP5Site_redirect may \n be redundant.\n """\n +# BBB: originally, form_id was the first positional argument\n +if not redirect_url or \'/\' not in redirect_url:\n + form_id = redirect_url or kw.pop(\'form_id\', None)\n + redirect_url = context.absolute_url()\n + if form_id:\n + redirect_url += \'/\' + form_id\n +\n from ZTUtils import make_query\n -request_form = context.REQUEST.form\n +request = context.getPortalObject().REQUEST\n +request_form = request.form\n request_form.update(kw)\n request_form = context.ERP5Site_filterParameterList(request_form)\n request_form.update(keep_items)\n \n -if form_id == \'view\':\n - redirect_url = context.absolute_url()\n -else:\n - redirect_url = \'%s/%s\' % (context.absolute_url(), form_id)\n -\n parameters = make_query(dict([(k, v) for k, v in request_form.items() if k and v is not None]))\n if len(parameters):\n if \'?\' in redirect_url:\n @@ -79,14 +82,17 @@ if len(parameters):\n separator = \'?\'\n redirect_url = \'%s%s%s\' % (redirect_url, separator, parameters)\n \n -return context.REQUEST.RESPONSE.redirect( redirect_url )\n +if abort_transaction:\n + from zExceptions import Redirect\n + raise Redirect(redirect_url)\n +return request.RESPONSE.redirect(redirect_url)\n ]]></string> </value> </item> <item> <key> <string>_params</string> </key> - <value> <string>form_id=\'view\', keep_items={}, **kw</string> </value> + <value> <string>redirect_url=None, keep_items=(), abort_transaction=False, **kw</string> </value> </item> <item> <key> <string>id</string> </key> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5Site_redirect.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5Site_redirect.xml index 1b8c0f29ade1374eafbcda01694bd3b3023956c5..2dd5ffaab285cafcb8e70f8145cc65aa0830a27d 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5Site_redirect.xml +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5Site_redirect.xml @@ -50,35 +50,12 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -from ZTUtils import make_query\n -request_form = context.REQUEST.form\n -request_form.update(kw)\n -request_form = context.ERP5Site_filterParameterList(request_form)\n -request_form.update(keep_items)\n -\n -# JPS-XXX Why ERP5Site ? not Base ? \n -\n -if redirect_url is None:\n - redirect_url = context.getPortalObject().absolute_url()\n -\n -parameters = make_query(dict([(k, v) for k, v in request_form.items() if k and v is not None]))\n -if len(parameters):\n - if \'?\' in redirect_url:\n - separator = \'&\'\n - else:\n - separator = \'?\'\n - redirect_url = \'%s%s%s\' % (redirect_url, separator, parameters)\n -\n -return context.REQUEST.RESPONSE.redirect( redirect_url )\n - - -]]></string> </value> + <value> <string>return context.getPortalObject().Base_redirect(redirect_url, keep_items, **kw)\n +</string> </value> </item> <item> <key> <string>_params</string> </key> - <value> <string>redirect_url=None, keep_items={}, **kw</string> </value> + <value> <string>redirect_url=None, keep_items=(), **kw</string> </value> </item> <item> <key> <string>id</string> </key> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.css.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.css.xml index 2462dbd01b18cf9805f5646231db739a0dce5eb0..c45c8e34e43d0b90a3170234e9a23b1f3b0fc1e5 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.css.xml +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.css.xml @@ -716,7 +716,7 @@ fieldset.right {\n fieldset.left fieldset.left,\n fieldset.right fieldset.left,\n fieldset.center fieldset.left,\n -table.fake > tr > td > fieldset {\n +table.fake > tbody > tr > td > fieldset {\n border-width: 0;\n padding: 0;\n margin: 0;\n diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/require.js.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/require.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..381b4bb6554f7225cb4cce384c2868945ad10a9f --- /dev/null +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/require.js.xml @@ -0,0 +1,2063 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts59369034.49</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>require.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>80196</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>require.js</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Pdata" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/** vim: et:ts=4:sw=4:sts=4\n + * @license RequireJS 2.1.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.\n + * Available via the MIT or new BSD license.\n + * see: http://github.com/jrburke/requirejs for details\n + */\n +//Not using strict: uneven strict support in browsers, #392, and causes\n +//problems with requirejs.exec()/transpiler plugins that may not be strict.\n +/*jslint regexp: true, nomen: true, sloppy: true */\n +/*global window, navigator, document, importScripts, setTimeout, opera */\n +\n +var requirejs, require, define;\n +(function (global) {\n + var req, s, head, baseElement, dataMain, src,\n + interactiveScript, currentlyAddingScript, mainScript, subPath,\n + version = \'2.1.4\',\n + commentRegExp = /(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/mg,\n + cjsRequireRegExp = /[^.]\\s*require\\s*\\(\\s*["\']([^\'"\\s]+)["\']\\s*\\)/g,\n + jsSuffixRegExp = /\\.js$/,\n + currDirRegExp = /^\\.\\//,\n + op = Object.prototype,\n + ostring = op.toString,\n + hasOwn = op.hasOwnProperty,\n + ap = Array.prototype,\n + apsp = ap.splice,\n + isBrowser = !!(typeof window !== \'undefined\' && navigator && document),\n + isWebWorker = !isBrowser && typeof importScripts !== \'undefined\',\n + //PS3 indicates loaded and complete, but need to wait for complete\n + //specifically. Sequence is \'loading\', \'loaded\', execution,\n + // then \'complete\'. The UA check is unfortunate, but not sure how\n + //to feature test w/o causing perf issues.\n + readyRegExp = isBrowser && navigator.platform === \'PLAYSTATION 3\' ?\n + /^complete$/ : /^(complete|loaded)$/,\n + defContextName = \'_\',\n + //Oh the tragedy, detecting opera. See the usage of isOpera for reason.\n + isOpera = typeof opera !== \'undefined\' && opera.toString() === \'[object Opera]\',\n + contexts = {},\n + cfg = {},\n + globalDefQueue = [],\n + useInteractive = false;\n +\n + function isFunction(it) {\n + return ostring.call(it) === \'[object Function]\';\n + }\n +\n + function isArray(it) {\n + return ostring.call(it) === \'[object Array]\';\n + }\n +\n + /**\n + * Helper function for iterating over an array. If the func returns\n + * a true value, it will break out of the loop.\n + */\n + function each(ary, func) {\n + if (ary) {\n + var i;\n + for (i = 0; i < ary.length; i += 1) {\n + if (ary[i] && func(ary[i], i, ary)) {\n + break;\n + }\n + }\n + }\n + }\n +\n + /**\n + * Helper function for iterating over an array backwards. If the func\n + * returns a true value, it will break out of the loop.\n + */\n + function eachReverse(ary, func) {\n + if (ary) {\n + var i;\n + for (i = ary.length - 1; i > -1; i -= 1) {\n + if (ary[i] && func(ary[i], i, ary)) {\n + break;\n + }\n + }\n + }\n + }\n +\n + function hasProp(obj, prop) {\n + return hasOwn.call(obj, prop);\n + }\n +\n + function getOwn(obj, prop) {\n + return hasProp(obj, prop) && obj[prop];\n + }\n +\n + /**\n + * Cycles over properties in an object and calls a function for each\n + * property value. If the function returns a truthy value, then the\n + * iteration is stopped.\n + */\n + function eachProp(obj, func) {\n + var prop;\n + for (prop in obj) {\n + if (hasProp(obj, prop)) {\n + if (func(obj[prop], prop)) {\n + break;\n + }\n + }\n + }\n + }\n +\n + /**\n + * Simple function to mix in properties from source into target,\n + * but only if target does not already have a property of the same name.\n + */\n + function mixin(target, source, force, deepStringMixin) {\n + if (source) {\n + eachProp(source, function (value, prop) {\n + if (force || !hasProp(target, prop)) {\n + if (deepStringMixin && typeof value !== \'string\') {\n + if (!target[prop]) {\n + target[prop] = {};\n + }\n + mixin(target[prop], value, force, deepStringMixin);\n + } else {\n + target[prop] = value;\n + }\n + }\n + });\n + }\n + return target;\n + }\n +\n + //Similar to Function.prototype.bind, but the \'this\' object is specified\n + //first, since it is easier to read/figure out what \'this\' will be.\n + function bind(obj, fn) {\n + return function () {\n + return fn.apply(obj, arguments);\n + };\n + }\n +\n + function scripts() {\n + return document.getElementsByTagName(\'script\');\n + }\n +\n + //Allow getting a global that expressed in\n + //dot notation, like \'a.b.c\'.\n + function getGlobal(value) {\n + if (!value) {\n + return value;\n + }\n + var g = global;\n + each(value.split(\'.\'), function (part) {\n + g = g[part];\n + });\n + return g;\n + }\n +\n + /**\n + * Constructs an error with a pointer to an URL with more information.\n + * @param {String} id the error ID that maps to an ID on a web page.\n + * @param {String} message human readable error.\n + * @param {Error} [err] the original error, if there is one.\n + *\n + * @returns {Error}\n + */\n + function makeError(id, msg, err, requireModules) {\n + var e = new Error(msg + \'\\nhttp://requirejs.org/docs/errors.html#\' + id);\n + e.requireType = id;\n + e.requireModules = requireModules;\n + if (err) {\n + e.originalError = err;\n + }\n + return e;\n + }\n +\n + if (typeof define !== \'undefined\') {\n + //If a define is already in play via another AMD loader,\n + //do not overwrite.\n + return;\n + }\n +\n + if (typeof requirejs !== \'undefined\') {\n + if (isFunction(requirejs)) {\n + //Do not overwrite and existing requirejs instance.\n + return;\n + }\n + cfg = requirejs;\n + requirejs = undefined;\n + }\n +\n + //Allow for a require config object\n + if (typeof require !== \'undefined\' && !isFunction(require)) {\n + //assume it is a config object.\n + cfg = require;\n + require = undefined;\n + }\n +\n + function newContext(contextName) {\n + var inCheckLoaded, Module, context, handlers,\n + checkLoadedTimeoutId,\n + config = {\n + waitSeconds: 7,\n + baseUrl: \'./\',\n + paths: {},\n + pkgs: {},\n + shim: {},\n + map: {},\n + config: {}\n + },\n + registry = {},\n + undefEvents = {},\n + defQueue = [],\n + defined = {},\n + urlFetched = {},\n + requireCounter = 1,\n + unnormalizedCounter = 1;\n +\n + /**\n + * Trims the . and .. from an array of path segments.\n + * It will keep a leading path segment if a .. will become\n + * the first path segment, to help with module name lookups,\n + * which act like paths, but can be remapped. But the end result,\n + * all paths that use this function should look normalized.\n + * NOTE: this method MODIFIES the input array.\n + * @param {Array} ary the array of path segments.\n + */\n + function trimDots(ary) {\n + var i, part;\n + for (i = 0; ary[i]; i += 1) {\n + part = ary[i];\n + if (part === \'.\') {\n + ary.splice(i, 1);\n + i -= 1;\n + } else if (part === \'..\') {\n + if (i === 1 && (ary[2] === \'..\' || ary[0] === \'..\')) {\n + //End of the line. Keep at least one non-dot\n + //path segment at the front so it can be mapped\n + //correctly to disk. Otherwise, there is likely\n + //no path mapping for a path starting with \'..\'.\n + //This can still fail, but catches the most reasonable\n + //uses of ..\n + break;\n + } else if (i > 0) {\n + ary.splice(i - 1, 2);\n + i -= 2;\n + }\n + }\n + }\n + }\n +\n + /**\n + * Given a relative module name, like ./something, normalize it to\n + * a real name that can be mapped to a path.\n + * @param {String} name the relative name\n + * @param {String} baseName a real name that the name arg is relative\n + * to.\n + * @param {Boolean} applyMap apply the map config to the value. Should\n + * only be done if this normalization is for a dependency ID.\n + * @returns {String} normalized name\n + */\n + function normalize(name, baseName, applyMap) {\n + var pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment,\n + foundMap, foundI, foundStarMap, starI,\n + baseParts = baseName && baseName.split(\'/\'),\n + normalizedBaseParts = baseParts,\n + map = config.map,\n + starMap = map && map[\'*\'];\n +\n + //Adjust any relative paths.\n + if (name && name.charAt(0) === \'.\') {\n + //If have a base name, try to normalize against it,\n + //otherwise, assume it is a top-level require that will\n + //be relative to baseUrl in the end.\n + if (baseName) {\n + if (getOwn(config.pkgs, baseName)) {\n + //If the baseName is a package name, then just treat it as one\n + //name to concat the name with.\n + normalizedBaseParts = baseParts = [baseName];\n + } else {\n + //Convert baseName to array, and lop off the last part,\n + //so that . matches that \'directory\' and not name of the baseName\'s\n + //module. For instance, baseName of \'one/two/three\', maps to\n + //\'one/two/three.js\', but we want the directory, \'one/two\' for\n + //this normalization.\n + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n + }\n +\n + name = normalizedBaseParts.concat(name.split(\'/\'));\n + trimDots(name);\n +\n + //Some use of packages may use a . path to reference the\n + //\'main\' module name, so normalize for that.\n + pkgConfig = getOwn(config.pkgs, (pkgName = name[0]));\n + name = name.join(\'/\');\n + if (pkgConfig && name === pkgName + \'/\' + pkgConfig.main) {\n + name = pkgName;\n + }\n + } else if (name.indexOf(\'./\') === 0) {\n + // No baseName, so this is ID is resolved relative\n + // to baseUrl, pull off the leading dot.\n + name = name.substring(2);\n + }\n + }\n +\n + //Apply map config if available.\n + if (applyMap && (baseParts || starMap) && map) {\n + nameParts = name.split(\'/\');\n +\n + for (i = nameParts.length; i > 0; i -= 1) {\n + nameSegment = nameParts.slice(0, i).join(\'/\');\n +\n + if (baseParts) {\n + //Find the longest baseName segment match in the config.\n + //So, do joins on the biggest to smallest lengths of baseParts.\n + for (j = baseParts.length; j > 0; j -= 1) {\n + mapValue = getOwn(map, baseParts.slice(0, j).join(\'/\'));\n +\n + //baseName segment has config, find if it has one for\n + //this name.\n + if (mapValue) {\n + mapValue = getOwn(mapValue, nameSegment);\n + if (mapValue) {\n + //Match, update name to the new value.\n + foundMap = mapValue;\n + foundI = i;\n + break;\n + }\n + }\n + }\n + }\n +\n + if (foundMap) {\n + break;\n + }\n +\n + //Check for a star map match, but just hold on to it,\n + //if there is a shorter segment match later in a matching\n + //config, then favor over this star map.\n + if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) {\n + foundStarMap = getOwn(starMap, nameSegment);\n + starI = i;\n + }\n + }\n +\n + if (!foundMap && foundStarMap) {\n + foundMap = foundStarMap;\n + foundI = starI;\n + }\n +\n + if (foundMap) {\n + nameParts.splice(0, foundI, foundMap);\n + name = nameParts.join(\'/\');\n + }\n + }\n +\n + return name;\n + }\n +\n + function removeScript(name) {\n + if (isBrowser) {\n + each(scripts(), function (scriptNode) {\n + if (scriptNode.getAttribute(\'data-requiremodule\') === name &&\n + scriptNode.getAttribute(\'data-requirecontext\') === context.contextName) {\n + scriptNode.parentNode.removeChild(scriptNode);\n + return true;\n + }\n + });\n + }\n + }\n +\n + function hasPathFallback(id) {\n + var pathConfig = getOwn(config.paths, id);\n + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) {\n + removeScript(id);\n + //Pop off the first array value, since it failed, and\n + //retry\n + pathConfig.shift();\n + context.require.undef(id);\n + context.require([id]);\n + return true;\n + }\n + }\n +\n + //Turns a plugin!resource to [plugin, resource]\n + //with the plugin being undefined if the name\n + //did not have a plugin prefix.\n + function splitPrefix(name) {\n + var prefix,\n + index = name ? name.indexOf(\'!\') : -1;\n + if (index > -1) {\n + prefix = name.substring(0, index);\n + name = name.substring(index + 1, name.length);\n + }\n + return [prefix, name];\n + }\n +\n + /**\n + * Creates a module mapping that includes plugin prefix, module\n + * name, and path. If parentModuleMap is provided it will\n + * also normalize the name via require.normalize()\n + *\n + * @param {String} name the module name\n + * @param {String} [parentModuleMap] parent module map\n + * for the module name, used to resolve relative names.\n + * @param {Boolean} isNormalized: is the ID already normalized.\n + * This is true if this call is done for a define() module ID.\n + * @param {Boolean} applyMap: apply the map config to the ID.\n + * Should only be true if this map is for a dependency.\n + *\n + * @returns {Object}\n + */\n + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) {\n + var url, pluginModule, suffix, nameParts,\n + prefix = null,\n + parentName = parentModuleMap ? parentModuleMap.name : null,\n + originalName = name,\n + isDefine = true,\n + normalizedName = \'\';\n +\n + //If no name, then it means it is a require call, generate an\n + //internal name.\n + if (!name) {\n + isDefine = false;\n + name = \'_@r\' + (requireCounter += 1);\n + }\n +\n + nameParts = splitPrefix(name);\n + prefix = nameParts[0];\n + name = nameParts[1];\n +\n + if (prefix) {\n + prefix = normalize(prefix, parentName, applyMap);\n + pluginModule = getOwn(defined, prefix);\n + }\n +\n + //Account for relative paths if there is a base name.\n + if (name) {\n + if (prefix) {\n + if (pluginModule && pluginModule.normalize) {\n + //Plugin is loaded, use its normalize method.\n + normalizedName = pluginModule.normalize(name, function (name) {\n + return normalize(name, parentName, applyMap);\n + });\n + } else {\n + normalizedName = normalize(name, parentName, applyMap);\n + }\n + } else {\n + //A regular module.\n + normalizedName = normalize(name, parentName, applyMap);\n +\n + //Normalized name may be a plugin ID due to map config\n + //application in normalize. The map config values must\n + //already be normalized, so do not need to redo that part.\n + nameParts = splitPrefix(normalizedName);\n + prefix = nameParts[0];\n + normalizedName = nameParts[1];\n + isNormalized = true;\n +\n + url = context.nameToUrl(normalizedName);\n + }\n + }\n +\n + //If the id is a plugin id that cannot be determined if it needs\n + //normalization, stamp it with a unique ID so two matching relative\n + //ids that may conflict can be separate.\n + suffix = prefix && !pluginModule && !isNormalized ?\n + \'_unnormalized\' + (unnormalizedCounter += 1) :\n + \'\';\n +\n + return {\n + prefix: prefix,\n + name: normalizedName,\n + parentMap: parentModuleMap,\n + unnormalized: !!suffix,\n + url: url,\n + originalName: originalName,\n + isDefine: isDefine,\n + id: (prefix ?\n + prefix + \'!\' + normalizedName :\n + normalizedName) + suffix\n + };\n + }\n +\n + function getModule(depMap) {\n + var id = depMap.id,\n + mod = getOwn(registry, id);\n +\n + if (!mod) {\n + mod = registry[id] = new context.Module(depMap);\n + }\n +\n + return mod;\n + }\n +\n + function on(depMap, name, fn) {\n + var id = depMap.id,\n + mod = getOwn(registry, id);\n +\n + if (hasProp(defined, id) &&\n + (!mod || mod.defineEmitComplete)) {\n + if (name === \'defined\') {\n + fn(defined[id]);\n + }\n + } else {\n + getModule(depMap).on(name, fn);\n + }\n + }\n +\n + function onError(err, errback) {\n + var ids = err.requireModules,\n + notified = false;\n +\n + if (errback) {\n + errback(err);\n + } else {\n + each(ids, function (id) {\n + var mod = getOwn(registry, id);\n + if (mod) {\n + //Set error on module, so it skips timeout checks.\n + mod.error = err;\n + if (mod.events.error) {\n + notified = true;\n + mod.emit(\'error\', err);\n + }\n + }\n + });\n +\n + if (!notified) {\n + req.onError(err);\n + }\n + }\n + }\n +\n + /**\n + * Internal method to transfer globalQueue items to this context\'s\n + * defQueue.\n + */\n + function takeGlobalQueue() {\n + //Push all the globalDefQueue items into the context\'s defQueue\n + if (globalDefQueue.length) {\n + //Array splice in the values since the context code has a\n + //local var ref to defQueue, so cannot just reassign the one\n + //on context.\n + apsp.apply(defQueue,\n + [defQueue.length - 1, 0].concat(globalDefQueue));\n + globalDefQueue = [];\n + }\n + }\n +\n + handlers = {\n + \'require\': function (mod) {\n + if (mod.require) {\n + return mod.require;\n + } else {\n + return (mod.require = context.makeRequire(mod.map));\n + }\n + },\n + \'exports\': function (mod) {\n + mod.usingExports = true;\n + if (mod.map.isDefine) {\n + if (mod.exports) {\n + return mod.exports;\n + } else {\n + return (mod.exports = defined[mod.map.id] = {});\n + }\n + }\n + },\n + \'module\': function (mod) {\n + if (mod.module) {\n + return mod.module;\n + } else {\n + return (mod.module = {\n + id: mod.map.id,\n + uri: mod.map.url,\n + config: function () {\n + return (config.config && getOwn(config.config, mod.map.id)) || {};\n + },\n + exports: defined[mod.map.id]\n + });\n + }\n + }\n + };\n +\n + function cleanRegistry(id) {\n + //Clean up machinery used for waiting modules.\n + delete registry[id];\n + }\n +\n + function breakCycle(mod, traced, processed) {\n + var id = mod.map.id;\n +\n + if (mod.error) {\n + mod.emit(\'error\', mod.error);\n + } else {\n + traced[id] = true;\n + each(mod.depMaps, function (depMap, i) {\n + var depId = depMap.id,\n + dep = getOwn(registry, depId);\n +\n + //Only force things that have not completed\n + //being defined, so still in the registry,\n + //and only if it has not been matched up\n + //in the module already.\n + if (dep && !mod.depMatched[i] && !processed[depId]) {\n + if (getOwn(traced, depId)) {\n + mod.defineDep(i, defined[depId]);\n + mod.check(); //pass false?\n + } else {\n + breakCycle(dep, traced, processed);\n + }\n + }\n + });\n + processed[id] = true;\n + }\n + }\n +\n + function checkLoaded() {\n + var map, modId, err, usingPathFallback,\n + waitInterval = config.waitSeconds * 1000,\n + //It is possible to disable the wait interval by using waitSeconds of 0.\n + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),\n + noLoads = [],\n + reqCalls = [],\n + stillLoading = false,\n + needCycleCheck = true;\n +\n + //Do not bother if this call was a result of a cycle break.\n + if (inCheckLoaded) {\n + return;\n + }\n +\n + inCheckLoaded = true;\n +\n + //Figure out the state of all the modules.\n + eachProp(registry, function (mod) {\n + map = mod.map;\n + modId = map.id;\n +\n + //Skip things that are not enabled or in error state.\n + if (!mod.enabled) {\n + return;\n + }\n +\n + if (!map.isDefine) {\n + reqCalls.push(mod);\n + }\n +\n + if (!mod.error) {\n + //If the module should be executed, and it has not\n + //been inited and time is up, remember it.\n + if (!mod.inited && expired) {\n + if (hasPathFallback(modId)) {\n + usingPathFallback = true;\n + stillLoading = true;\n + } else {\n + noLoads.push(modId);\n + removeScript(modId);\n + }\n + } else if (!mod.inited && mod.fetched && map.isDefine) {\n + stillLoading = true;\n + if (!map.prefix) {\n + //No reason to keep looking for unfinished\n + //loading. If the only stillLoading is a\n + //plugin resource though, keep going,\n + //because it may be that a plugin resource\n + //is waiting on a non-plugin cycle.\n + return (needCycleCheck = false);\n + }\n + }\n + }\n + });\n +\n + if (expired && noLoads.length) {\n + //If wait time expired, throw error of unloaded modules.\n + err = makeError(\'timeout\', \'Load timeout for modules: \' + noLoads, null, noLoads);\n + err.contextName = context.contextName;\n + return onError(err);\n + }\n +\n + //Not expired, check for a cycle.\n + if (needCycleCheck) {\n + each(reqCalls, function (mod) {\n + breakCycle(mod, {}, {});\n + });\n + }\n +\n + //If still waiting on loads, and the waiting load is something\n + //other than a plugin resource, or there are still outstanding\n + //scripts, then just try back later.\n + if ((!expired || usingPathFallback) && stillLoading) {\n + //Something is still waiting to load. Wait for it, but only\n + //if a timeout is not already in effect.\n + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) {\n + checkLoadedTimeoutId = setTimeout(function () {\n + checkLoadedTimeoutId = 0;\n + checkLoaded();\n + }, 50);\n + }\n + }\n +\n + inCheckLoaded = false;\n + }\n +\n + Module = function (map) {\n + this.events = getOwn(undefEvents, map.id) || {};\n + this.map = map;\n + this.shim = getOwn(config.shim, map.id);\n + this.depExports = [];\n + this.depMaps = [];\n + this.depMatched = [];\n + this.pluginMaps = {};\n + this.depCount = 0;\n +\n + /* this.exports this.factory\n + this.depMaps = [],\n + this.enabled, this.fetched\n + */\n + };\n +\n + Module.prototype = {\n + init: function (depMaps, factory, errback, options) {\n + options = options || {};\n +\n + //Do not do more inits if already done. Can happen if there\n + //are multiple define calls for the same module. That is not\n + //a normal, common case, but it is also not unexpected.\n + if (this.inited) {\n + return;\n + }\n +\n + this.factory = factory;\n +\n + if (errback) {\n + //Register for errors on this module.\n + this.on(\'error\', errback);\n + } else if (this.events.error) {\n + //If no errback already, but there are error listeners\n + //on this module, set up an errback to pass to the deps.\n + errback = bind(this, function (err) {\n + this.emit(\'error\', err);\n + });\n + }\n +\n + //Do a copy of the dependency array, so that\n + //source inputs are not modified. For example\n + //"shim" deps are passed in here directly, and\n + //doing a direct modification of the depMaps array\n + //would affect that config.\n + this.depMaps = depMaps && depMaps.slice(0);\n +\n + this.errback = errback;\n +\n + //Indicate this module has be initialized\n + this.inited = true;\n +\n + this.ignore = options.ignore;\n +\n + //Could have option to init this module in enabled mode,\n + //or could have been previously marked as enabled. However,\n + //the dependencies are not known until init is called. So\n + //if enabled previously, now trigger dependencies as enabled.\n + if (options.enabled || this.enabled) {\n + //Enable this module and dependencies.\n + //Will call this.check()\n + this.enable();\n + } else {\n + this.check();\n + }\n + },\n +\n + defineDep: function (i, depExports) {\n + //Because of cycles, defined callback for a given\n + //export can be called more than once.\n + if (!this.depMatched[i]) {\n + this.depMatched[i] = true;\n + this.depCount -= 1;\n + this.depExports[i] = depExports;\n + }\n + },\n +\n + fetch: function () {\n + if (this.fetched) {\n + return;\n + }\n + this.fetched = true;\n +\n + context.startTime = (new Date()).getTime();\n +\n + var map = this.map;\n +\n + //If the manager is for a plugin managed resource,\n + //ask the plugin to load it now.\n + if (this.shim) {\n + context.makeRequire(this.map, {\n + enableBuildCallback: true\n + })(this.shim.deps || [], bind(this, function () {\n + return map.prefix ? this.callPlugin() : this.load();\n + }));\n + } else {\n + //Regular dependency.\n + return map.prefix ? this.callPlugin() : this.load();\n + }\n + },\n +\n + load: function () {\n + var url = this.map.url;\n +\n + //Regular dependency.\n + if (!urlFetched[url]) {\n + urlFetched[url] = true;\n + context.load(this.map.id, url);\n + }\n + },\n +\n + /**\n + * Checks is the module is ready to define itself, and if so,\n + * define it.\n + */\n + check: function () {\n + if (!this.enabled || this.enabling) {\n + return;\n + }\n +\n + var err, cjsModule,\n + id = this.map.id,\n + depExports = this.depExports,\n + exports = this.exports,\n + factory = this.factory;\n +\n + if (!this.inited) {\n + this.fetch();\n + } else if (this.error) {\n + this.emit(\'error\', this.error);\n + } else if (!this.defining) {\n + //The factory could trigger another require call\n + //that would result in checking this module to\n + //define itself again. If already in the process\n + //of doing that, skip this work.\n + this.defining = true;\n +\n + if (this.depCount < 1 && !this.defined) {\n + if (isFunction(factory)) {\n + //If there is an error listener, favor passing\n + //to that instead of throwing an error.\n + if (this.events.error) {\n + try {\n + exports = context.execCb(id, factory, depExports, exports);\n + } catch (e) {\n + err = e;\n + }\n + } else {\n + exports = context.execCb(id, factory, depExports, exports);\n + }\n +\n + if (this.map.isDefine) {\n + //If setting exports via \'module\' is in play,\n + //favor that over return value and exports. After that,\n + //favor a non-undefined return value over exports use.\n + cjsModule = this.module;\n + if (cjsModule &&\n + cjsModule.exports !== undefined &&\n + //Make sure it is not already the exports value\n + cjsModule.exports !== this.exports) {\n + exports = cjsModule.exports;\n + } else if (exports === undefined && this.usingExports) {\n + //exports already set the defined value.\n + exports = this.exports;\n + }\n + }\n +\n + if (err) {\n + err.requireMap = this.map;\n + err.requireModules = [this.map.id];\n + err.requireType = \'define\';\n + return onError((this.error = err));\n + }\n +\n + } else {\n + //Just a literal value\n + exports = factory;\n + }\n +\n + this.exports = exports;\n +\n + if (this.map.isDefine && !this.ignore) {\n + defined[id] = exports;\n +\n + if (req.onResourceLoad) {\n + req.onResourceLoad(context, this.map, this.depMaps);\n + }\n + }\n +\n + //Clean up\n + delete registry[id];\n +\n + this.defined = true;\n + }\n +\n + //Finished the define stage. Allow calling check again\n + //to allow define notifications below in the case of a\n + //cycle.\n + this.defining = false;\n +\n + if (this.defined && !this.defineEmitted) {\n + this.defineEmitted = true;\n + this.emit(\'defined\', this.exports);\n + this.defineEmitComplete = true;\n + }\n +\n + }\n + },\n +\n + callPlugin: function () {\n + var map = this.map,\n + id = map.id,\n + //Map already normalized the prefix.\n + pluginMap = makeModuleMap(map.prefix);\n +\n + //Mark this as a dependency for this plugin, so it\n + //can be traced for cycles.\n + this.depMaps.push(pluginMap);\n +\n + on(pluginMap, \'defined\', bind(this, function (plugin) {\n + var load, normalizedMap, normalizedMod,\n + name = this.map.name,\n + parentName = this.map.parentMap ? this.map.parentMap.name : null,\n + localRequire = context.makeRequire(map.parentMap, {\n + enableBuildCallback: true\n + });\n +\n + //If current map is not normalized, wait for that\n + //normalized name to load instead of continuing.\n + if (this.map.unnormalized) {\n + //Normalize the ID if the plugin allows it.\n + if (plugin.normalize) {\n + name = plugin.normalize(name, function (name) {\n + return normalize(name, parentName, true);\n + }) || \'\';\n + }\n +\n + //prefix and name should already be normalized, no need\n + //for applying map config again either.\n + normalizedMap = makeModuleMap(map.prefix + \'!\' + name,\n + this.map.parentMap);\n + on(normalizedMap,\n + \'defined\', bind(this, function (value) {\n + this.init([], function () { return value; }, null, {\n + enabled: true,\n + ignore: true\n + });\n + }));\n +\n + normalizedMod = getOwn(registry, normalizedMap.id);\n + if (normalizedMod) {\n + //Mark this as a dependency for this plugin, so it\n + //can be traced for cycles.\n + this.depMaps.push(normalizedMap);\n +\n + if (this.events.error) {\n + normalizedMod.on(\'error\', bind(this, function (err) {\n + this.emit(\'error\', err);\n + }));\n + }\n + normalizedMod.enable();\n + }\n +\n + return;\n + }\n +\n + load = bind(this, function (value) {\n + this.init([], function () { return value; }, null, {\n + enabled: true\n + });\n + });\n +\n + load.error = bind(this, function (err) {\n + this.inited = true;\n + this.error = err;\n + err.requireModules = [id];\n +\n + //Remove temp unnormalized modules for this module,\n + //since they will never be resolved otherwise now.\n + eachProp(registry, function (mod) {\n + if (mod.map.id.indexOf(id + \'_unnormalized\') === 0) {\n + cleanRegistry(mod.map.id);\n + }\n + });\n +\n + onError(err);\n + });\n +\n + //Allow plugins to load other code without having to know the\n + //context or how to \'complete\' the load.\n + load.fromText = bind(this, function (text, textAlt) {\n + /*jslint evil: true */\n + var moduleName = map.name,\n + moduleMap = makeModuleMap(moduleName),\n + hasInteractive = useInteractive;\n +\n + //As of 2.1.0, support just passing the text, to reinforce\n + //fromText only being called once per resource. Still\n + //support old style of passing moduleName but discard\n + //that moduleName in favor of the internal ref.\n + if (textAlt) {\n + text = textAlt;\n + }\n +\n + //Turn off interactive script matching for IE for any define\n + //calls in the text, then turn it back on at the end.\n + if (hasInteractive) {\n + useInteractive = false;\n + }\n +\n + //Prime the system by creating a module instance for\n + //it.\n + getModule(moduleMap);\n +\n + //Transfer any config to this other module.\n + if (hasProp(config.config, id)) {\n + config.config[moduleName] = config.config[id];\n + }\n +\n + try {\n + req.exec(text);\n + } catch (e) {\n + return onError(makeError(\'fromtexteval\',\n + \'fromText eval for \' + id +\n + \' failed: \' + e,\n + e,\n + [id]));\n + }\n +\n + if (hasInteractive) {\n + useInteractive = true;\n + }\n +\n + //Mark this as a dependency for the plugin\n + //resource\n + this.depMaps.push(moduleMap);\n +\n + //Support anonymous modules.\n + context.completeLoad(moduleName);\n +\n + //Bind the value of that module to the value for this\n + //resource ID.\n + localRequire([moduleName], load);\n + });\n +\n + //Use parentName here since the plugin\'s name is not reliable,\n + //could be some weird string with no path that actually wants to\n + //reference the parentName\'s path.\n + plugin.load(map.name, localRequire, load, config);\n + }));\n +\n + context.enable(pluginMap, this);\n + this.pluginMaps[pluginMap.id] = pluginMap;\n + },\n +\n + enable: function () {\n + this.enabled = true;\n +\n + //Set flag mentioning that the module is enabling,\n + //so that immediate calls to the defined callbacks\n + //for dependencies do not trigger inadvertent load\n + //with the depCount still being zero.\n + this.enabling = true;\n +\n + //Enable each dependency\n + each(this.depMaps, bind(this, function (depMap, i) {\n + var id, mod, handler;\n +\n + if (typeof depMap === \'string\') {\n + //Dependency needs to be converted to a depMap\n + //and wired up to this module.\n + depMap = makeModuleMap(depMap,\n + (this.map.isDefine ? this.map : this.map.parentMap),\n + false,\n + !this.skipMap);\n + this.depMaps[i] = depMap;\n +\n + handler = getOwn(handlers, depMap.id);\n +\n + if (handler) {\n + this.depExports[i] = handler(this);\n + return;\n + }\n +\n + this.depCount += 1;\n +\n + on(depMap, \'defined\', bind(this, function (depExports) {\n + this.defineDep(i, depExports);\n + this.check();\n + }));\n +\n + if (this.errback) {\n + on(depMap, \'error\', this.errback);\n + }\n + }\n +\n + id = depMap.id;\n + mod = registry[id];\n +\n + //Skip special modules like \'require\', \'exports\', \'module\'\n + //Also, don\'t call enable if it is already enabled,\n + //important in circular dependency cases.\n + if (!hasProp(handlers, id) && mod && !mod.enabled) {\n + context.enable(depMap, this);\n + }\n + }));\n +\n + //Enable each plugin that is used in\n + //a dependency\n + eachProp(this.pluginMaps, bind(this, function (pluginMap) {\n + var mod = getOwn(registry, pluginMap.id);\n + if (mod && !mod.enabled) {\n + context.enable(pluginMap, this);\n + }\n + }));\n +\n + this.enabling = false;\n +\n + this.check();\n + },\n +\n + on: function (name, cb) {\n + var cbs = this.events[name];\n + if (!cbs) {\n + cbs = this.events[name] = [];\n + }\n + cbs.push(cb);\n + },\n +\n + emit: function (name, evt) {\n + each(this.events[name], function (cb) {\n + cb(evt);\n + });\n + if (name === \'error\') {\n + //Now that the error handler was triggered, remove\n + //the listeners, since this broken Module instance\n + //can stay around for a while in the registry.\n + delete this.events[name];\n + }\n + }\n + };\n +\n + function callGetModule(args) {\n + //Skip modules already defined.\n + if (!hasProp(defined, args[0])) {\n + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]);\n + }\n + }\n +\n + function removeListener(node, func, name, ieName) {\n + //Favor detachEvent because of IE9\n + //issue, see attachEvent/addEventListener comment elsewhere\n + //in this file.\n + if (node.detachEvent && !isOpera) {\n + //Probably IE. If not it will throw an error, which will be\n + //useful to know.\n + if (ieName) {\n + node.detachEvent(ieName, func);\n + }\n + } else {\n + node.removeEventListener(name, func, false);\n + }\n + }\n +\n + /**\n + * Given an event from a script node, get the requirejs info from it,\n + * and then removes the event listeners on the node.\n + * @param {Event} evt\n + * @returns {Object}\n + */\n + function getScriptData(evt) {\n + //Using currentTarget instead of target for Firefox 2.0\'s sake. Not\n + //all old browsers will be supported, but this one was easy enough\n + //to support and still makes sense.\n + var node = evt.currentTarget || evt.srcElement;\n +\n + //Remove the listeners once here.\n + removeListener(node, context.onScriptLoad, \'load\', \'onreadystatechange\');\n + removeListener(node, context.onScriptError, \'error\');\n +\n + return {\n + node: node,\n + id: node && node.getAttribute(\'data-requiremodule\')\n + };\n + }\n +\n + function intakeDefines() {\n + var args;\n +\n + //Any defined modules in the global queue, intake them now.\n + takeGlobalQueue();\n +\n + //Make sure any remaining defQueue items get properly processed.\n + while (defQueue.length) {\n + args = defQueue.shift();\n + if (args[0] === null) {\n + return onError(makeError(\'mismatch\', \'Mismatched anonymous define() module: \' + args[args.length - 1]));\n + } else {\n + //args are id, deps, factory. Should be normalized by the\n + //define() function.\n + callGetModule(args);\n + }\n + }\n + }\n +\n + context = {\n + config: config,\n + contextName: contextName,\n + registry: registry,\n + defined: defined,\n + urlFetched: urlFetched,\n + defQueue: defQueue,\n + Module: Module,\n + makeModuleMap: makeModuleMap,\n + nextTick: req.nextTick,\n +\n + /**\n + * Set a configuration for the context.\n + * @param {Object} cfg config object to integrate.\n + */\n + configure: function (cfg) {\n + //Make sure the baseUrl ends in a slash.\n + if (cfg.baseUrl) {\n + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== \'/\') {\n + cfg.baseUrl += \'/\';\n + }\n + }\n +\n + //Save off the paths and packages since they require special processing,\n + //they are additive.\n + var pkgs = config.pkgs,\n + shim = config.shim,\n + objs = {\n + paths: true,\n + config: true,\n + map: true\n + };\n +\n + eachProp(cfg, function (value, prop) {\n + if (objs[prop]) {\n + if (prop === \'map\') {\n + mixin(config[prop], value, true, true);\n + } else {\n + mixin(config[prop], value, true);\n + }\n + } else {\n + config[prop] = value;\n + }\n + });\n +\n + //Merge shim\n + if (cfg.shim) {\n + eachProp(cfg.shim, function (value, id) {\n + //Normalize the structure\n + if (isArray(value)) {\n + value = {\n + deps: value\n + };\n + }\n + if ((value.exports || value.init) && !value.exportsFn) {\n + value.exportsFn = context.makeShimExports(value);\n + }\n + shim[id] = value;\n + });\n + config.shim = shim;\n + }\n +\n + //Adjust packages if necessary.\n + if (cfg.packages) {\n + each(cfg.packages, function (pkgObj) {\n + var location;\n +\n + pkgObj = typeof pkgObj === \'string\' ? { name: pkgObj } : pkgObj;\n + location = pkgObj.location;\n +\n + //Create a brand new object on pkgs, since currentPackages can\n + //be passed in again, and config.pkgs is the internal transformed\n + //state for all package configs.\n + pkgs[pkgObj.name] = {\n + name: pkgObj.name,\n + location: location || pkgObj.name,\n + //Remove leading dot in main, so main paths are normalized,\n + //and remove any trailing .js, since different package\n + //envs have different conventions: some use a module name,\n + //some use a file name.\n + main: (pkgObj.main || \'main\')\n + .replace(currDirRegExp, \'\')\n + .replace(jsSuffixRegExp, \'\')\n + };\n + });\n +\n + //Done with modifications, assing packages back to context config\n + config.pkgs = pkgs;\n + }\n +\n + //If there are any "waiting to execute" modules in the registry,\n + //update the maps for them, since their info, like URLs to load,\n + //may have changed.\n + eachProp(registry, function (mod, id) {\n + //If module already has init called, since it is too\n + //late to modify them, and ignore unnormalized ones\n + //since they are transient.\n + if (!mod.inited && !mod.map.unnormalized) {\n + mod.map = makeModuleMap(id);\n + }\n + });\n +\n + //If a deps array or a config callback is specified, then call\n + //require with those args. This is useful when require is defined as a\n + //config object before require.js is loaded.\n + if (cfg.deps || cfg.callback) {\n + context.require(cfg.deps || [], cfg.callback);\n + }\n + },\n +\n + makeShimExports: function (value) {\n + function fn() {\n + var ret;\n + if (value.init) {\n + ret = value.init.apply(global, arguments);\n + }\n + return ret || (value.exports && getGlobal(value.exports));\n + }\n + return fn;\n + },\n +\n + makeRequire: function (relMap, options) {\n + options = options || {};\n +\n + function localRequire(deps, callback, errback) {\n + var id, map, requireMod;\n +\n + if (options.enableBuildCallback && callback && isFunction(callback)) {\n + callback.__requireJsBuild = true;\n + }\n +\n + if (typeof deps === \'string\') {\n + if (isFunction(callback)) {\n + //Invalid call\n + return onError(makeError(\'requireargs\', \'Invalid require call\'), errback);\n + }\n +\n + //If require|exports|module are requested, get the\n + //value for them from the special handlers. Caveat:\n + //this only works while module is being defined.\n + if (relMap && hasProp(handlers, deps)) {\n + return handlers[deps](registry[relMap.id]);\n + }\n +\n + //Synchronous access to one module. If require.get is\n + //available (as in the Node adapter), prefer that.\n + if (req.get) {\n + return req.get(context, deps, relMap);\n + }\n +\n + //Normalize module name, if it contains . or ..\n + map = makeModuleMap(deps, relMap, false, true);\n + id = map.id;\n +\n + if (!hasProp(defined, id)) {\n + return onError(makeError(\'notloaded\', \'Module name "\' +\n + id +\n + \'" has not been loaded yet for context: \' +\n + contextName +\n + (relMap ? \'\' : \'. Use require([])\')));\n + }\n + return defined[id];\n + }\n +\n + //Grab defines waiting in the global queue.\n + intakeDefines();\n +\n + //Mark all the dependencies as needing to be loaded.\n + context.nextTick(function () {\n + //Some defines could have been added since the\n + //require call, collect them.\n + intakeDefines();\n +\n + requireMod = getModule(makeModuleMap(null, relMap));\n +\n + //Store if map config should be applied to this require\n + //call for dependencies.\n + requireMod.skipMap = options.skipMap;\n +\n + requireMod.init(deps, callback, errback, {\n + enabled: true\n + });\n +\n + checkLoaded();\n + });\n +\n + return localRequire;\n + }\n +\n + mixin(localRequire, {\n + isBrowser: isBrowser,\n +\n + /**\n + * Converts a module name + .extension into an URL path.\n + * *Requires* the use of a module name. It does not support using\n + * plain URLs like nameToUrl.\n + */\n + toUrl: function (moduleNamePlusExt) {\n + var ext, url,\n + index = moduleNamePlusExt.lastIndexOf(\'.\'),\n + segment = moduleNamePlusExt.split(\'/\')[0],\n + isRelative = segment === \'.\' || segment === \'..\';\n +\n + //Have a file extension alias, and it is not the\n + //dots from a relative path.\n + if (index !== -1 && (!isRelative || index > 1)) {\n + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);\n + moduleNamePlusExt = moduleNamePlusExt.substring(0, index);\n + }\n +\n + url = context.nameToUrl(normalize(moduleNamePlusExt,\n + relMap && relMap.id, true), ext || \'.fake\');\n + return ext ? url : url.substring(0, url.length - 5);\n + },\n +\n + defined: function (id) {\n + return hasProp(defined, makeModuleMap(id, relMap, false, true).id);\n + },\n +\n + specified: function (id) {\n + id = makeModuleMap(id, relMap, false, true).id;\n + return hasProp(defined, id) || hasProp(registry, id);\n + }\n + });\n +\n + //Only allow undef on top level require calls\n + if (!relMap) {\n + localRequire.undef = function (id) {\n + //Bind any waiting define() calls to this context,\n + //fix for #408\n + takeGlobalQueue();\n +\n + var map = makeModuleMap(id, relMap, true),\n + mod = getOwn(registry, id);\n +\n + delete defined[id];\n + delete urlFetched[map.url];\n + delete undefEvents[id];\n +\n + if (mod) {\n + //Hold on to listeners in case the\n + //module will be attempted to be reloaded\n + //using a different config.\n + if (mod.events.defined) {\n + undefEvents[id] = mod.events;\n + }\n +\n + cleanRegistry(id);\n + }\n + };\n + }\n +\n + return localRequire;\n + },\n +\n + /**\n + * Called to enable a module if it is still in the registry\n + * awaiting enablement. A second arg, parent, the parent module,\n + * is passed in for context, when this method is overriden by\n + * the optimizer. Not shown here to keep code compact.\n + */\n + enable: function (depMap) {\n + var mod = getOwn(registry, depMap.id);\n + if (mod) {\n + getModule(depMap).enable();\n + }\n + },\n +\n + /**\n + * Internal method used by environment adapters to complete a load event.\n + * A load event could be a script load or just a load pass from a synchronous\n + * load call.\n + * @param {String} moduleName the name of the module to potentially complete.\n + */\n + completeLoad: function (moduleName) {\n + var found, args, mod,\n + shim = getOwn(config.shim, moduleName) || {},\n + shExports = shim.exports;\n +\n + takeGlobalQueue();\n +\n + while (defQueue.length) {\n + args = defQueue.shift();\n + if (args[0] === null) {\n + args[0] = moduleName;\n + //If already found an anonymous module and bound it\n + //to this name, then this is some other anon module\n + //waiting for its completeLoad to fire.\n + if (found) {\n + break;\n + }\n + found = true;\n + } else if (args[0] === moduleName) {\n + //Found matching define call for this script!\n + found = true;\n + }\n +\n + callGetModule(args);\n + }\n +\n + //Do this after the cycle of callGetModule in case the result\n + //of those calls/init calls changes the registry.\n + mod = getOwn(registry, moduleName);\n +\n + if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) {\n + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) {\n + if (hasPathFallback(moduleName)) {\n + return;\n + } else {\n + return onError(makeError(\'nodefine\',\n + \'No define call for \' + moduleName,\n + null,\n + [moduleName]));\n + }\n + } else {\n + //A script that does not call define(), so just simulate\n + //the call for it.\n + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]);\n + }\n + }\n +\n + checkLoaded();\n + },\n +\n + /**\n + * Converts a module name to a file path. Supports cases where\n + * moduleName may actually be just an URL.\n + * Note that it **does not** call normalize on the moduleName,\n + * it is assumed to have already been normalized. This is an\n + * internal API, not a public one. Use toUrl for the public API.\n + */\n + nameToUrl: function (moduleName, ext) {\n + var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url,\n + parentPath;\n +\n + //If a colon is in the URL, it indicates a protocol is used and it is just\n + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?)\n + //or ends with .js, then assume the user meant to use an url and not a module id.\n + //The slash is important for protocol-less URLs as well as full paths.\n + if (req.jsExtRegExp.test(moduleName)) {\n + //Just a plain path, not module name lookup, so just return it.\n + //Add extension if it is included. This is a bit wonky, only non-.js things pass\n + //an extension, this method probably needs to be reworked.\n + url = moduleName + (ext || \'\');\n + } else {\n + //A module that needs to be converted to a path.\n + paths = config.paths;\n + pkgs = config.pkgs;\n +\n + syms = moduleName.split(\'/\');\n + //For each module name segment, see if there is a path\n + //registered for it. Start with most specific name\n + //and work up from it.\n + for (i = syms.length; i > 0; i -= 1) {\n + parentModule = syms.slice(0, i).join(\'/\');\n + pkg = getOwn(pkgs, parentModule);\n + parentPath = getOwn(paths, parentModule);\n + if (parentPath) {\n + //If an array, it means there are a few choices,\n + //Choose the one that is desired\n + if (isArray(parentPath)) {\n + parentPath = parentPath[0];\n + }\n + syms.splice(0, i, parentPath);\n + break;\n + } else if (pkg) {\n + //If module name is just the package name, then looking\n + //for the main module.\n + if (moduleName === pkg.name) {\n + pkgPath = pkg.location + \'/\' + pkg.main;\n + } else {\n + pkgPath = pkg.location;\n + }\n + syms.splice(0, i, pkgPath);\n + break;\n + }\n + }\n +\n + //Join the path parts together, then figure out if baseUrl is needed.\n + url = syms.join(\'/\');\n + url += (ext || (/\\?/.test(url) ? \'\' : \'.js\'));\n + url = (url.charAt(0) === \'/\' || url.match(/^[\\w\\+\\.\\-]+:/) ? \'\' : config.baseUrl) + url;\n + }\n +\n + return config.urlArgs ? url +\n + ((url.indexOf(\'?\') === -1 ? \'?\' : \'&\') +\n + config.urlArgs) : url;\n + },\n +\n + //Delegates to req.load. Broken out as a separate function to\n + //allow overriding in the optimizer.\n + load: function (id, url) {\n + req.load(context, id, url);\n + },\n +\n + /**\n + * Executes a module callack function. Broken out as a separate function\n + * solely to allow the build system to sequence the files in the built\n + * layer in the right sequence.\n + *\n + * @private\n + */\n + execCb: function (name, callback, args, exports) {\n + return callback.apply(exports, args);\n + },\n +\n + /**\n + * callback for script loads, used to check status of loading.\n + *\n + * @param {Event} evt the event from the browser for the script\n + * that was loaded.\n + */\n + onScriptLoad: function (evt) {\n + //Using currentTarget instead of target for Firefox 2.0\'s sake. Not\n + //all old browsers will be supported, but this one was easy enough\n + //to support and still makes sense.\n + if (evt.type === \'load\' ||\n + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) {\n + //Reset interactive script so a script node is not held onto for\n + //to long.\n + interactiveScript = null;\n +\n + //Pull out the name of the module and the context.\n + var data = getScriptData(evt);\n + context.completeLoad(data.id);\n + }\n + },\n +\n + /**\n + * Callback for script errors.\n + */\n + onScriptError: function (evt) {\n + var data = getScriptData(evt);\n + if (!hasPathFallback(data.id)) {\n + return onError(makeError(\'scripterror\', \'Script error\', evt, [data.id]));\n + }\n + }\n + };\n +\n + context.require = context.makeRequire();\n + return context;\n + }\n +\n + /**\n + * Main entry point.\n + *\n + * If the only argument to require is a string, then the module that\n + * is represented by that string is fetched for the appropriate context.\n + *\n + * If the first argument is an array, then it will be treated as an array\n + * of dependency string names to fetch. An optional function callback can\n + * be specified to execute when all of those dependencies are available.\n + *\n + * Make a local req variable to help Caja compliance (it assumes things\n + * on a require that are not standardized), and to give a short\n + * name for minification/local scope use.\n + */\n + req = requirejs = function (deps, callback, errback, optional) {\n +\n + //Find the right context, use default\n + var context, config,\n + contextName = defContextName;\n +\n + // Determine if have config object in the call.\n + if (!isArray(deps) && typeof deps !== \'string\') {\n + // deps is a config object\n + config = deps;\n + if (isArray(callback)) {\n + // Adjust args if there are dependencies\n + deps = callback;\n + callback = errback;\n + errback = optional;\n + } else {\n + deps = [];\n + }\n + }\n +\n + if (config && config.context) {\n + contextName = config.context;\n + }\n +\n + context = getOwn(contexts, contextName);\n + if (!context) {\n + context = contexts[contextName] = req.s.newContext(contextName);\n + }\n +\n + if (config) {\n + context.configure(config);\n + }\n +\n + return context.require(deps, callback, errback);\n + };\n +\n + /**\n + * Support require.config() to make it easier to cooperate with other\n + * AMD loaders on globally agreed names.\n + */\n + req.config = function (config) {\n + return req(config);\n + };\n +\n + /**\n + * Execute something after the current tick\n + * of the event loop. Override for other envs\n + * that have a better solution than setTimeout.\n + * @param {Function} fn function to execute later.\n + */\n + req.nextTick = typeof setTimeout !== \'undefined\' ? function (fn) {\n + setTimeout(fn, 4);\n + } : function (fn) { fn(); };\n +\n + /**\n + * Export require as a global, but only if it does not already exist.\n + */\n + if (!require) {\n + require = req;\n + }\n +\n + req.version = version;\n +\n + //Used to filter out dependencies that are already paths.\n + req.jsExtRegExp = /^\\/|:|\\?|\\.js$/;\n + req.isBrowser = isBrowser;\n + s = req.s = {\n + contexts: contexts,\n + newContext: newContext\n + };\n +\n + //Create default context.\n + req({});\n +\n + //Exports some context-sensitive methods on global require.\n + each([\n + \'toUrl\',\n + \'undef\',\n + \'defined\',\n + \'specified\'\n + ], function (prop) {\n + //Reference from contexts instead of early binding to default context,\n + //so that during builds, the latest instance of the default context\n + //with its config gets used.\n + req[prop] = function () {\n + var ctx = contexts[defContextName];\n + return ctx.require[prop].apply(ctx, arguments);\n + };\n + });\n +\n + if (isBrowser) {\n + head = s.head = document.getElementsByTagName(\'head\')[0];\n + //If BASE tag is in play, using appendChild is a problem for IE6.\n + //When that browser dies, this can be removed. Details in this jQuery bug:\n + //http://dev.jquery.com/ticket/2709\n + baseElement = document.getElementsByTagName(\'base\')[0];\n + if (baseElement) {\n + head = s.head = baseElement.parentNode;\n + }\n + }\n +\n + /**\n + * Any errors that require explicitly generates will be passed to this\n + * function. Intercept/override it if you want custom error handling.\n + * @param {Error} err the error object.\n + */\n + req.onError = function (err) {\n + throw err;\n + };\n +\n + /**\n + * Does the request to load a module for the browser case.\n + * Make this a separate function to allow other environments\n + * to override it.\n + *\n + * @param {Object} context the require context to find state.\n + * @param {String} moduleName the name of the module.\n + * @param {Object} url the URL to the module.\n + */\n + req.load = function (context, moduleName, url) {\n + var config = (context && context.config) || {},\n + node;\n + if (isBrowser) {\n + //In the browser so use a script tag\n + node = config.xhtml ?\n + document.createElementNS(\'http://www.w3.org/1999/xhtml\', \'html:script\') :\n + document.createElement(\'script\');\n + node.type = config.scriptType || \'text/javascript\';\n + node.charset = \'utf-8\';\n + node.async = true;\n +\n + node.setAttribute(\'data-requirecontext\', context.contextName);\n + node.setAttribute(\'data-requiremodule\', moduleName);\n +\n + //Set up load listener. Test attachEvent first because IE9 has\n + //a subtle issue in its addEventListener and script onload firings\n + //that do not match the behavior of all other browsers with\n + //addEventListener support, which fire the onload event for a\n + //script right after the script execution. See:\n + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution\n + //UNFORTUNATELY Opera implements attachEvent but does not follow the script\n + //script execution mode.\n + if (node.attachEvent &&\n + //Check if node.attachEvent is artificially added by custom script or\n + //natively supported by browser\n + //read https://github.com/jrburke/requirejs/issues/187\n + //if we can NOT find [native code] then it must NOT natively supported.\n + //in IE8, node.attachEvent does not have toString()\n + //Note the test for "[native code" with no closing brace, see:\n + //https://github.com/jrburke/requirejs/issues/273\n + !(node.attachEvent.toString && node.attachEvent.toString().indexOf(\'[native code\') < 0) &&\n + !isOpera) {\n + //Probably IE. IE (at least 6-8) do not fire\n + //script onload right after executing the script, so\n + //we cannot tie the anonymous define call to a name.\n + //However, IE reports the script as being in \'interactive\'\n + //readyState at the time of the define call.\n + useInteractive = true;\n +\n + node.attachEvent(\'onreadystatechange\', context.onScriptLoad);\n + //It would be great to add an error handler here to catch\n + //404s in IE9+. However, onreadystatechange will fire before\n + //the error handler, so that does not help. If addEvenListener\n + //is used, then IE will fire error before load, but we cannot\n + //use that pathway given the connect.microsoft.com issue\n + //mentioned above about not doing the \'script execute,\n + //then fire the script load event listener before execute\n + //next script\' that other browsers do.\n + //Best hope: IE10 fixes the issues,\n + //and then destroys all installs of IE 6-9.\n + //node.attachEvent(\'onerror\', context.onScriptError);\n + } else {\n + node.addEventListener(\'load\', context.onScriptLoad, false);\n + node.addEventListener(\'error\', context.onScriptError, false);\n + }\n + node.src = url;\n +\n + //For some cache cases in IE 6-8, the script executes before the end\n + //of the appendChild execution, so to tie an anonymous define\n + //call to the module name (which is stored on the node), hold on\n + //to a reference to this node, but clear after the DOM insertion.\n + currentlyAddingScript = node;\n + if (baseElement) {\n + head.insertBefore(node, baseElement);\n + } else {\n + head.appendChild(node);\n + }\n + currentlyAddingScript = null;\n +\n + return node;\n + } else if (isWebWorker) {\n + //In a web worker, use importScripts. This is not a very\n + //efficient use of importScripts, importScripts will block until\n + //its script is downloaded and evaluated. However, if web workers\n + //are in play, the expectation that a build has been done so that\n + //only one script needs to be loaded anyway. This may need to be\n + //reevaluated if other use cases become common.\n + importScripts(url);\n +\n + //Account for anonymous modules\n + context.completeLoad(moduleName);\n + }\n + };\n +\n + function getInteractiveScript() {\n + if (interactiveScript && interactiveScript.readyState === \'interactive\') {\n + return interactiveScript;\n + }\n +\n + eachReverse(scripts(), function (script) {\n + if (script.readyState === \'interactive\') {\n + return (interactiveScript = script);\n + }\n + });\n + return interactiveScript;\n + }\n +\n + //Look for a data-main script attribute, which could also adjust the baseUrl.\n + if (isBrowser) {\n + //Figure out baseUrl. Get it from the script tag with require.js in it.\n + eachReverse(scripts(), function (script) {\n + //Set the \'head\' where we can append children by\n + //using the script\'s parent.\n + if (!head) {\n + head = script.parentNode;\n + }\n +\n + //Look for a data-main attribute to set main script for the page\n + //to load. If it is there, the path to data main becomes the\n + //baseUrl, if it is not already set.\n + dataMain = script.getAttribute(\'data-main\');\n + if (dataMain) {\n + //Set final baseUrl if there is not already an explicit one.\n + if (!cfg.baseUrl) {\n + //Pull off the directory of data-main for use as the\n + //baseUrl.\n + src = dataMain.split(\'/\');\n + mainScript = src.pop();\n + subPath = src.length ? src.join(\'/\') + \'/\' : \'./\';\n +\n + cfg.baseUrl = subPath;\n + dataMain = mainScript;\n + }\n +\n + //Strip off any trailing .js since dataMain is now\n + //like a module name.\n + dataMain = dataMain.replace(jsSuffixRegExp, \'\');\n +\n + //Put the data-main script in the files to load.\n + cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain];\n +\n + return true;\n + }\n + });\n + }\n +\n + /**\n + * The function that handles definitions of modules. Differs from\n + * require() in that a string for the module should be the first argument,\n + * and the function to execute after dependencies are loaded should\n + * return a value to define the module corresponding to the first argument\'s\n + * name.\n + */\n + define = function (name, deps, callback) {\n + var node, context;\n +\n + //Allow for anonymous modules\n + if (typeof name !== \'string\') {\n + //Adjust args appropriately\n + callback = deps;\n + deps = name;\n + name = null;\n + }\n +\n + //This module may not have dependencies\n + if (!isArray(deps)) {\n + callback = deps;\n + deps = [];\n + }\n +\n + //If no name, and callback is a function, then figure out if it a\n + //CommonJS thing with dependencies.\n + if (!deps.length && isFunction(callback)) {\n + //Remove comments from the callback string,\n + //look for require calls, and pull them into the dependencies,\n + //but only if there are function args.\n + if (callback.length) {\n + callback\n + .toString()\n + .replace(commentRegExp, \'\')\n + .replace(cjsRequireRegExp, function (match, dep) {\n + deps.push(dep);\n + });\n +\n + //May be a CommonJS thing even without require calls, but still\n + //could use exports, and module. Avoid doing exports and module\n + //work though if it just needs require.\n + //REQUIRES the function to expect the CommonJS variables in the\n + //order listed below.\n + deps = (callback.length === 1 ? [\'require\'] : [\'require\', \'exports\', \'module\']).concat(deps);\n + }\n + }\n +\n + //If in IE 6-8 and hit an anonymous define() call, do the interactive\n + //work.\n + if (useInteractive) {\n + node = currentlyAddingScript || getInteractiveScript();\n + if (node) {\n + if (!name) {\n + name = node.getAttribute(\'data-requiremodule\');\n + }\n + context = contexts[node.getAttribute(\'data-requirecontext\')];\n + }\n + }\n +\n + //Always save off evaluating the def call until the script onload handler.\n + //This allows multiple modules to be in a file without prematurely\n + //tracing dependencies, and allows for anonymous module support,\n + //where the module name is not known until the script onload event\n + //occurs. If no context, use the global queue, and get it processed\n + //in the onscript load callback.\n + (context ? context.defQueue : globalDefQueue).push([name, deps, callback]);\n + };\n +\n + define.amd = {\n + jQuery: true\n + };\n +\n +\n + /**\n + * Executes the text. Normally just uses eval, but can be modified\n + * to use a better, environment-specific call. Only used for transpiling\n + * loader plugins, not for plain JS modules.\n + * @param {String} text the text to execute/evaluate.\n + */\n + req.exec = function (text) {\n + /*jslint evil: true */\n + return eval(text);\n + };\n +\n + //Set up with config info.\n + req(cfg);\n +}(this));\n + + +]]></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/require.min.js.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/require.min.js.xml new file mode 100644 index 0000000000000000000000000000000000000000..4172f87fc978b78788e9ecd5cbf6a52a44ebfe4e --- /dev/null +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/require.min.js.xml @@ -0,0 +1,83 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="File" module="OFS.Image"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Cacheable__manager_id</string> </key> + <value> <string>http_cache</string> </value> + </item> + <item> + <key> <string>_EtagSupport__etag</string> </key> + <value> <string>ts59369020.06</string> </value> + </item> + <item> + <key> <string>__name__</string> </key> + <value> <string>require.min.js</string> </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>application/javascript</string> </value> + </item> + <item> + <key> <string>data</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*\n + RequireJS 2.1.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.\n + Available via the MIT or new BSD license.\n + see: http://github.com/jrburke/requirejs for details\n +*/\n +var requirejs,require,define;\n +(function(Y){function I(b){return"[object Function]"===L.call(b)}function J(b){return"[object Array]"===L.call(b)}function x(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+=1);}}function M(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b));d-=1);}}function r(b,c){return da.call(b,c)}function i(b,c){return r(b,c)&&b[c]}function E(b,c){for(var d in b)if(r(b,d)&&c(b[d],d))break}function Q(b,c,d,i){c&&E(c,function(c,h){if(d||!r(b,h))i&&"string"!==typeof c?(b[h]||(b[h]={}),Q(b[h],\n +c,d,i)):b[h]=c});return b}function t(b,c){return function(){return c.apply(b,arguments)}}function Z(b){if(!b)return b;var c=Y;x(b.split("."),function(b){c=c[b]});return c}function F(b,c,d,i){c=Error(c+"\\nhttp://requirejs.org/docs/errors.html#"+b);c.requireType=b;c.requireModules=i;d&&(c.originalError=d);return c}function ea(b){function c(a,f,v){var e,n,b,c,d,k,g,h=f&&f.split("/");e=h;var l=m.map,j=l&&l["*"];if(a&&"."===a.charAt(0))if(f){e=i(m.pkgs,f)?h=[f]:h.slice(0,h.length-1);f=a=e.concat(a.split("/"));\n +for(e=0;f[e];e+=1)if(n=f[e],"."===n)f.splice(e,1),e-=1;else if(".."===n)if(1===e&&(".."===f[2]||".."===f[0]))break;else 0<e&&(f.splice(e-1,2),e-=2);e=i(m.pkgs,f=a[0]);a=a.join("/");e&&a===f+"/"+e.main&&(a=f)}else 0===a.indexOf("./")&&(a=a.substring(2));if(v&&(h||j)&&l){f=a.split("/");for(e=f.length;0<e;e-=1){b=f.slice(0,e).join("/");if(h)for(n=h.length;0<n;n-=1)if(v=i(l,h.slice(0,n).join("/")))if(v=i(v,b)){c=v;d=e;break}if(c)break;!k&&(j&&i(j,b))&&(k=i(j,b),g=e)}!c&&k&&(c=k,d=g);c&&(f.splice(0,d,\n +c),a=f.join("/"))}return a}function d(a){z&&x(document.getElementsByTagName("script"),function(f){if(f.getAttribute("data-requiremodule")===a&&f.getAttribute("data-requirecontext")===k.contextName)return f.parentNode.removeChild(f),!0})}function y(a){var f=i(m.paths,a);if(f&&J(f)&&1<f.length)return d(a),f.shift(),k.require.undef(a),k.require([a]),!0}function g(a){var f,b=a?a.indexOf("!"):-1;-1<b&&(f=a.substring(0,b),a=a.substring(b+1,a.length));return[f,a]}function h(a,f,b,e){var n,u,d=null,h=f?f.name:\n +null,l=a,m=!0,j="";a||(m=!1,a="_@r"+(L+=1));a=g(a);d=a[0];a=a[1];d&&(d=c(d,h,e),u=i(p,d));a&&(d?j=u&&u.normalize?u.normalize(a,function(a){return c(a,h,e)}):c(a,h,e):(j=c(a,h,e),a=g(j),d=a[0],j=a[1],b=!0,n=k.nameToUrl(j)));b=d&&!u&&!b?"_unnormalized"+(M+=1):"";return{prefix:d,name:j,parentMap:f,unnormalized:!!b,url:n,originalName:l,isDefine:m,id:(d?d+"!"+j:j)+b}}function q(a){var f=a.id,b=i(j,f);b||(b=j[f]=new k.Module(a));return b}function s(a,f,b){var e=a.id,n=i(j,e);if(r(p,e)&&(!n||n.defineEmitComplete))"defined"===\n +f&&b(p[e]);else q(a).on(f,b)}function A(a,f){var b=a.requireModules,e=!1;if(f)f(a);else if(x(b,function(f){if(f=i(j,f))f.error=a,f.events.error&&(e=!0,f.emit("error",a))}),!e)l.onError(a)}function w(){R.length&&(fa.apply(G,[G.length-1,0].concat(R)),R=[])}function B(a,f,b){var e=a.map.id;a.error?a.emit("error",a.error):(f[e]=!0,x(a.depMaps,function(e,c){var d=e.id,h=i(j,d);h&&(!a.depMatched[c]&&!b[d])&&(i(f,d)?(a.defineDep(c,p[d]),a.check()):B(h,f,b))}),b[e]=!0)}function C(){var a,f,b,e,n=(b=1E3*m.waitSeconds)&&\n +k.startTime+b<(new Date).getTime(),c=[],h=[],g=!1,l=!0;if(!T){T=!0;E(j,function(b){a=b.map;f=a.id;if(b.enabled&&(a.isDefine||h.push(b),!b.error))if(!b.inited&&n)y(f)?g=e=!0:(c.push(f),d(f));else if(!b.inited&&(b.fetched&&a.isDefine)&&(g=!0,!a.prefix))return l=!1});if(n&&c.length)return b=F("timeout","Load timeout for modules: "+c,null,c),b.contextName=k.contextName,A(b);l&&x(h,function(a){B(a,{},{})});if((!n||e)&&g)if((z||$)&&!U)U=setTimeout(function(){U=0;C()},50);T=!1}}function D(a){r(p,a[0])||\n +q(h(a[0],null,!0)).init(a[1],a[2])}function H(a){var a=a.currentTarget||a.srcElement,b=k.onScriptLoad;a.detachEvent&&!V?a.detachEvent("onreadystatechange",b):a.removeEventListener("load",b,!1);b=k.onScriptError;(!a.detachEvent||V)&&a.removeEventListener("error",b,!1);return{node:a,id:a&&a.getAttribute("data-requiremodule")}}function K(){var a;for(w();G.length;){a=G.shift();if(null===a[0])return A(F("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));D(a)}}var T,W,k,N,U,m={waitSeconds:7,\n +baseUrl:"./",paths:{},pkgs:{},shim:{},map:{},config:{}},j={},X={},G=[],p={},S={},L=1,M=1;N={require:function(a){return a.require?a.require:a.require=k.makeRequire(a.map)},exports:function(a){a.usingExports=!0;if(a.map.isDefine)return a.exports?a.exports:a.exports=p[a.map.id]={}},module:function(a){return a.module?a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return m.config&&i(m.config,a.map.id)||{}},exports:p[a.map.id]}}};W=function(a){this.events=i(X,a.id)||{};this.map=a;this.shim=\n +i(m.shim,a.id);this.depExports=[];this.depMaps=[];this.depMatched=[];this.pluginMaps={};this.depCount=0};W.prototype={init:function(a,b,c,e){e=e||{};if(!this.inited){this.factory=b;if(c)this.on("error",c);else this.events.error&&(c=t(this,function(a){this.emit("error",a)}));this.depMaps=a&&a.slice(0);this.errback=c;this.inited=!0;this.ignore=e.ignore;e.enabled||this.enabled?this.enable():this.check()}},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,this.depCount-=1,this.depExports[a]=\n +b)},fetch:function(){if(!this.fetched){this.fetched=!0;k.startTime=(new Date).getTime();var a=this.map;if(this.shim)k.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],t(this,function(){return a.prefix?this.callPlugin():this.load()}));else return a.prefix?this.callPlugin():this.load()}},load:function(){var a=this.map.url;S[a]||(S[a]=!0,k.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id;b=this.depExports;var e=this.exports,n=this.factory;\n +if(this.inited)if(this.error)this.emit("error",this.error);else{if(!this.defining){this.defining=!0;if(1>this.depCount&&!this.defined){if(I(n)){if(this.events.error)try{e=k.execCb(c,n,b,e)}catch(d){a=d}else e=k.execCb(c,n,b,e);this.map.isDefine&&((b=this.module)&&void 0!==b.exports&&b.exports!==this.exports?e=b.exports:void 0===e&&this.usingExports&&(e=this.exports));if(a)return a.requireMap=this.map,a.requireModules=[this.map.id],a.requireType="define",A(this.error=a)}else e=n;this.exports=e;if(this.map.isDefine&&\n +!this.ignore&&(p[c]=e,l.onResourceLoad))l.onResourceLoad(k,this.map,this.depMaps);delete j[c];this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a=this.map,b=a.id,d=h(a.prefix);this.depMaps.push(d);s(d,"defined",t(this,function(e){var n,d;d=this.map.name;var v=this.map.parentMap?this.map.parentMap.name:null,g=k.makeRequire(a.parentMap,{enableBuildCallback:!0});\n +if(this.map.unnormalized){if(e.normalize&&(d=e.normalize(d,function(a){return c(a,v,!0)})||""),e=h(a.prefix+"!"+d,this.map.parentMap),s(e,"defined",t(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),d=i(j,e.id)){this.depMaps.push(e);if(this.events.error)d.on("error",t(this,function(a){this.emit("error",a)}));d.enable()}}else n=t(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),n.error=t(this,function(a){this.inited=!0;this.error=a;a.requireModules=\n +[b];E(j,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&delete j[a.map.id]});A(a)}),n.fromText=t(this,function(e,c){var d=a.name,u=h(d),v=O;c&&(e=c);v&&(O=!1);q(u);r(m.config,b)&&(m.config[d]=m.config[b]);try{l.exec(e)}catch(j){return A(F("fromtexteval","fromText eval for "+b+" failed: "+j,j,[b]))}v&&(O=!0);this.depMaps.push(u);k.completeLoad(d);g([d],n)}),e.load(a.name,g,n,m)}));k.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){this.enabling=this.enabled=!0;x(this.depMaps,t(this,function(a,\n +b){var c,e;if("string"===typeof a){a=h(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=i(N,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;s(a,"defined",t(this,function(a){this.defineDep(b,a);this.check()}));this.errback&&s(a,"error",this.errback)}c=a.id;e=j[c];!r(N,c)&&(e&&!e.enabled)&&k.enable(a,this)}));E(this.pluginMaps,t(this,function(a){var b=i(j,a.id);b&&!b.enabled&&k.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=\n +this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){x(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};k={config:m,contextName:b,registry:j,defined:p,urlFetched:S,defQueue:G,Module:W,makeModuleMap:h,nextTick:l.nextTick,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=m.pkgs,c=m.shim,e={paths:!0,config:!0,map:!0};E(a,function(a,b){e[b]?"map"===b?Q(m[b],a,!0,!0):Q(m[b],a,!0):m[b]=a});a.shim&&(E(a.shim,function(a,\n +b){J(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=k.makeShimExports(a);c[b]=a}),m.shim=c);a.packages&&(x(a.packages,function(a){a="string"===typeof a?{name:a}:a;b[a.name]={name:a.name,location:a.location||a.name,main:(a.main||"main").replace(ga,"").replace(aa,"")}}),m.pkgs=b);E(j,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=h(b))});if(a.deps||a.callback)k.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(Y,arguments));\n +return b||a.exports&&Z(a.exports)}},makeRequire:function(a,d){function g(e,c,u){var i,m;d.enableBuildCallback&&(c&&I(c))&&(c.__requireJsBuild=!0);if("string"===typeof e){if(I(c))return A(F("requireargs","Invalid require call"),u);if(a&&r(N,e))return N[e](j[a.id]);if(l.get)return l.get(k,e,a);i=h(e,a,!1,!0);i=i.id;return!r(p,i)?A(F("notloaded",\'Module name "\'+i+\'" has not been loaded yet for context: \'+b+(a?"":". Use require([])"))):p[i]}K();k.nextTick(function(){K();m=q(h(null,a));m.skipMap=d.skipMap;\n +m.init(e,c,u,{enabled:!0});C()});return g}d=d||{};Q(g,{isBrowser:z,toUrl:function(b){var d,f=b.lastIndexOf("."),h=b.split("/")[0];if(-1!==f&&(!("."===h||".."===h)||1<f))d=b.substring(f,b.length),b=b.substring(0,f);b=k.nameToUrl(c(b,a&&a.id,!0),d||".fake");return d?b:b.substring(0,b.length-5)},defined:function(b){return r(p,h(b,a,!1,!0).id)},specified:function(b){b=h(b,a,!1,!0).id;return r(p,b)||r(j,b)}});a||(g.undef=function(b){w();var c=h(b,a,!0),d=i(j,b);delete p[b];delete S[c.url];delete X[b];\n +d&&(d.events.defined&&(X[b]=d.events),delete j[b])});return g},enable:function(a){i(j,a.id)&&q(a).enable()},completeLoad:function(a){var b,c,d=i(m.shim,a)||{},h=d.exports;for(w();G.length;){c=G.shift();if(null===c[0]){c[0]=a;if(b)break;b=!0}else c[0]===a&&(b=!0);D(c)}c=i(j,a);if(!b&&!r(p,a)&&c&&!c.inited){if(m.enforceDefine&&(!h||!Z(h)))return y(a)?void 0:A(F("nodefine","No define call for "+a,null,[a]));D([a,d.deps||[],d.exportsFn])}C()},nameToUrl:function(a,b){var c,d,h,g,k,j;if(l.jsExtRegExp.test(a))g=\n +a+(b||"");else{c=m.paths;d=m.pkgs;g=a.split("/");for(k=g.length;0<k;k-=1)if(j=g.slice(0,k).join("/"),h=i(d,j),j=i(c,j)){J(j)&&(j=j[0]);g.splice(0,k,j);break}else if(h){c=a===h.name?h.location+"/"+h.main:h.location;g.splice(0,k,c);break}g=g.join("/");g+=b||(/\\?/.test(g)?"":".js");g=("/"===g.charAt(0)||g.match(/^[\\w\\+\\.\\-]+:/)?"":m.baseUrl)+g}return m.urlArgs?g+((-1===g.indexOf("?")?"?":"&")+m.urlArgs):g},load:function(a,b){l.load(k,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===\n +a.type||ha.test((a.currentTarget||a.srcElement).readyState))P=null,a=H(a),k.completeLoad(a.id)},onScriptError:function(a){var b=H(a);if(!y(b.id))return A(F("scripterror","Script error",a,[b.id]))}};k.require=k.makeRequire();return k}var l,w,B,D,s,H,P,K,ba,ca,ia=/(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/mg,ja=/[^.]\\s*require\\s*\\(\\s*["\']([^\'"\\s]+)["\']\\s*\\)/g,aa=/\\.js$/,ga=/^\\.\\//;w=Object.prototype;var L=w.toString,da=w.hasOwnProperty,fa=Array.prototype.splice,z=!!("undefined"!==typeof window&&navigator&&\n +document),$=!z&&"undefined"!==typeof importScripts,ha=z&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,V="undefined"!==typeof opera&&"[object Opera]"===opera.toString(),C={},q={},R=[],O=!1;if("undefined"===typeof define){if("undefined"!==typeof requirejs){if(I(requirejs))return;q=requirejs;requirejs=void 0}"undefined"!==typeof require&&!I(require)&&(q=require,require=void 0);l=requirejs=function(b,c,d,y){var g,h="_";!J(b)&&"string"!==typeof b&&(g=b,J(c)?(b=c,c=d,d=y):b=[]);\n +g&&g.context&&(h=g.context);(y=i(C,h))||(y=C[h]=l.s.newContext(h));g&&y.configure(g);return y.require(b,c,d)};l.config=function(b){return l(b)};l.nextTick="undefined"!==typeof setTimeout?function(b){setTimeout(b,4)}:function(b){b()};require||(require=l);l.version="2.1.4";l.jsExtRegExp=/^\\/|:|\\?|\\.js$/;l.isBrowser=z;w=l.s={contexts:C,newContext:ea};l({});x(["toUrl","undef","defined","specified"],function(b){l[b]=function(){var c=C._;return c.require[b].apply(c,arguments)}});if(z&&(B=w.head=document.getElementsByTagName("head")[0],\n +D=document.getElementsByTagName("base")[0]))B=w.head=D.parentNode;l.onError=function(b){throw b;};l.load=function(b,c,d){var i=b&&b.config||{},g;if(z)return g=i.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script"),g.type=i.scriptType||"text/javascript",g.charset="utf-8",g.async=!0,g.setAttribute("data-requirecontext",b.contextName),g.setAttribute("data-requiremodule",c),g.attachEvent&&!(g.attachEvent.toString&&0>g.attachEvent.toString().indexOf("[native code"))&&\n +!V?(O=!0,g.attachEvent("onreadystatechange",b.onScriptLoad)):(g.addEventListener("load",b.onScriptLoad,!1),g.addEventListener("error",b.onScriptError,!1)),g.src=d,K=g,D?B.insertBefore(g,D):B.appendChild(g),K=null,g;$&&(importScripts(d),b.completeLoad(c))};z&&M(document.getElementsByTagName("script"),function(b){B||(B=b.parentNode);if(s=b.getAttribute("data-main"))return q.baseUrl||(H=s.split("/"),ba=H.pop(),ca=H.length?H.join("/")+"/":"./",q.baseUrl=ca,s=ba),s=s.replace(aa,""),q.deps=q.deps?q.deps.concat(s):\n +[s],!0});define=function(b,c,d){var i,g;"string"!==typeof b&&(d=c,c=b,b=null);J(c)||(d=c,c=[]);!c.length&&I(d)&&d.length&&(d.toString().replace(ia,"").replace(ja,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c));if(O){if(!(i=K))P&&"interactive"===P.readyState||M(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return P=b}),i=P;i&&(b||(b=i.getAttribute("data-requiremodule")),g=C[i.getAttribute("data-requirecontext")])}(g?\n +g.defQueue:R).push([b,c,d])};define.amd={jQuery:!0};l.exec=function(b){return eval(b)};l(q)}})(this);\n + + +]]></string> </value> + </item> + <item> + <key> <string>precondition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>14629</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>require.min.js</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log b/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log index d0205d4edf95d2a6d110d3291d0634ea3280b7f8..b029fe34b48bc1ddf4d8988e423d076f67625a9f 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log +++ b/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log @@ -1,3 +1,9 @@ +2013-01-28 Kazuhiko +* update RequireJS 2.1.4. + +2013-01-14 Kazuhiko +* add RequireJS 2.1.2. + 2012-10-16 arnaud.fontaine * Fix background color of stat and no cell ListBox lines. diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision b/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision index b29e8d2b2be279ea7c2e24283d29ecb956f7a1bd..dab082fe2f9630a129f5c1ecd1a9739f09447266 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision +++ b/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision @@ -1 +1 @@ -1090 \ No newline at end of file +1095 \ No newline at end of file diff --git a/product/ERP5/mixin/builder.py b/product/ERP5/mixin/builder.py index 9793f6f4e2fc86046d2fbf1413e8358e1ed7fba2..5a61570d0fcaeb1a491a2ad2e38747ecfe624f00 100644 --- a/product/ERP5/mixin/builder.py +++ b/product/ERP5/mixin/builder.py @@ -277,27 +277,39 @@ class BuilderMixin(XMLObject, Amount, Predicate): def _test(self, instance, movement_group_node_list, divergence_list): result = True - new_property_dict = {} + new_property_dict_list = [] for movement_group_node in movement_group_node_list: tmp_result, tmp_property_dict = movement_group_node.test( instance, divergence_list) if not tmp_result: result = tmp_result - new_property_dict.update(tmp_property_dict) - return result, new_property_dict + new_property_dict_list.append(tmp_property_dict) + return result, new_property_dict_list + + @staticmethod + def _getSortedPropertyDict(property_dict_list): + # Sort the edit keywords according to the order of their movement + # groups. This is important so that, for example, the 'resource' + # is already set on a movement before trying to set the + # 'variation_category' or 'variation_property' pseudo properties, + # which rely on the resource being set to discover which + # categories/properties to set + # XXX-Leo: in the future: using an ordered_dict would be nice, + # but this would have to be respected on Base._edit() + edit_order = [] + property_dict = {'edit_order': edit_order} + for d in property_dict_list: + for k,v in d.iteritems(): + if k in property_dict: + raise DuplicatedPropertyDictKeysError(k) + property_dict[k] = v + edit_order.append(k) + return property_dict def _findUpdatableObject(self, instance_list, movement_group_node_list, divergence_list): instance = None - property_dict = {} - if not len(instance_list): - for movement_group_node in movement_group_node_list: - for k,v in movement_group_node.getGroupEditDict().iteritems(): - if k in property_dict: - raise DuplicatedPropertyDictKeysError(k) - else: - property_dict[k] = v - else: + if instance_list: # we want to check the original delivery first. # so sort instance_list by that current is exists or not. try: @@ -311,12 +323,15 @@ class BuilderMixin(XMLObject, Amount, Predicate): except AttributeError: pass for instance_to_update in instance_list: - result, property_dict = self._test( + result, property_dict_list = self._test( instance_to_update, movement_group_node_list, divergence_list) if result: instance = instance_to_update break - return instance, property_dict + else: + property_dict_list = [movement_group_node.getGroupEditDict() + for movement_group_node in movement_group_node_list] + return instance, self._getSortedPropertyDict(property_dict_list) @UnrestrictedMethod def buildDeliveryList(self, movement_group_node, diff --git a/product/ERP5/mixin/movement_collection_updater.py b/product/ERP5/mixin/movement_collection_updater.py index eba0d8211e45223d63519371b315dbe1d9b84bf5..c9f734d99f45b73173ea7737512cc8a47328358b 100644 --- a/product/ERP5/mixin/movement_collection_updater.py +++ b/product/ERP5/mixin/movement_collection_updater.py @@ -192,4 +192,8 @@ class MovementCollectionUpdaterMixin: del movement.__dict__ movement = newMovement() d.update(movement.__dict__) + categories = d.pop('categories') movement.__dict__ = d + # Force update of local indexes on linked objects + # (important for 'delivery'). + movement._setCategoryList(categories) diff --git a/product/ERP5/mixin/rule.py b/product/ERP5/mixin/rule.py index aad181196f516633a6f9fe353ed132dc7c77e804..2a466d7c17f0d44932ea2a8f79391ce8aa550015 100644 --- a/product/ERP5/mixin/rule.py +++ b/product/ERP5/mixin/rule.py @@ -509,7 +509,9 @@ class SimulableMixin(Base): activity='SQLQueue', group_method_id='portal_rules/updateSimulation', tag='expand:' + path, - after_tag='built:'+ path, # see SimulatedDeliveryBuilder + # Now that we don't rely on catalog anymore, this after_tag could + # moved to _localBuild, which currently only depends on 'expand:'. + after_tag='built:'+ path, priority=3, )._updateSimulation(**kw) del tv[key] @@ -595,6 +597,10 @@ class SimulableMixin(Base): portal.portal_simulation, is_indexable=False) applied_rule._setCausalityValue(self) del applied_rule.isIndexable + # To prevent duplicate root Applied Rule, we reindex immediately and + # lock ZODB, and we rely on the fact that ZODB is committed after + # catalog. This way, we guarantee the catalog is up-to-date as soon as + # ZODB is unlocked. applied_rule.immediateReindexObject() self.serialize() # prevent duplicate root Applied Rule return applied_rule diff --git a/product/ERP5/mixin/solver.py b/product/ERP5/mixin/solver.py index 72d74dffefb8d95fd44a933c3fb9329744829bfd..c07736c700e4c03d74faa289f22a154e61bda5be 100644 --- a/product/ERP5/mixin/solver.py +++ b/product/ERP5/mixin/solver.py @@ -29,9 +29,11 @@ import zope.interface from AccessControl import ClassSecurityInfo -from Products.ERP5Type import Permissions, interfaces +from Products.ERP5Type import Permissions, PropertySheet, interfaces +from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5.mixin.configurable import ConfigurableMixin -class SolverMixin: +class SolverMixin(object): """ Provides generic methods and helper methods to implement ISolver. """ @@ -58,3 +60,51 @@ class SolverMixin: target_solver_type = self.getPortalTypeValue() solver_list = target_solver_type.getDeliverySolverValueList() return solver_list + +class ConfigurablePropertySolverMixin(SolverMixin, + ConfigurableMixin, + XMLObject): + """ + Base class for Target Solvers that can be applied to many + solver-decisions of a solver process, and need to accumulate the + tested_property_list configuration among all solver-decisions + """ + + add_permission = Permissions.AddPortalContent + isIndexable = 0 # We do not want to fill the catalog with objects on which we need no reporting + + # Declarative security + security = ClassSecurityInfo() + security.declareObjectProtected(Permissions.AccessContentsInformation) + + zope.interface.implements(interfaces.ISolver, + interfaces.IConfigurable,) + + # Default Properties + property_sheets = ( PropertySheet.Base + , PropertySheet.XMLObject + , PropertySheet.CategoryCore + , PropertySheet.DublinCore + , PropertySheet.TargetSolver + ) + + def updateConfiguration(self, **kw): + # This method is called once for each 'Solver Decision' of a + # 'Solver Process' that maps into this solver for the same + # Simulation Movement, so we need to take care not to lose + # information by overwriting. + configuration = self._getConfigurationPropertyDict() + tested_property_list = configuration.get('tested_property_list') + if tested_property_list is not None: + tested_property_set = set(tested_property_list) + tested_property_set.update(kw.get('tested_property_list', ())) + kw['tested_property_list'] = list(tested_property_set) + super(ConfigurablePropertySolverMixin, self).updateConfiguration(**kw) + + def getTestedPropertyList(self): + configuration_dict = self.getConfigurationPropertyDict() + tested_property_list = configuration_dict.get('tested_property_list') + if tested_property_list is None: + portal_type = self.getPortalObject().portal_types.getTypeInfo(self) + tested_property_list = portal_type.getTestedPropertyList() + return tested_property_list diff --git a/product/ERP5/tests/testAdvancedInvoicing.py b/product/ERP5/tests/testAdvancedInvoicing.py index 55a8808e0011a340ef0939250b9e0863c2dc8eeb..fe12765d571f7e162961ca68e0573310450ad87f 100644 --- a/product/ERP5/tests/testAdvancedInvoicing.py +++ b/product/ERP5/tests/testAdvancedInvoicing.py @@ -311,7 +311,6 @@ class TestAdvancedInvoice(TestSaleInvoiceMixin, ERP5TypeTestCase): self.assertEquals([], packing_list.getDivergenceList()) self.assertEquals('solved', packing_list.getCausalityState()) - @newSimulationExpectedFailure def test_AdoptQuantityDivergenceOnInvoiceLineWithStoppedPackingList(self, quiet=quiet, run=RUN_ALL_TESTS): """Adopt quantity with stopped packing list""" @@ -1040,7 +1039,6 @@ class TestAdvancedSaleInvoice(TestAdvancedInvoice): """) sequence_list.play(self, quiet=quiet) - @newSimulationExpectedFailure def test_13_acceptQuantityDivergenceOnInvoiceWithStartedPackingList( self, quiet=quiet, run=RUN_ALL_TESTS): if not run: return diff --git a/product/ERP5/tests/testDeliveryBuilderToSupportMultipleLines.py b/product/ERP5/tests/testDeliveryBuilderToSupportMultipleLines.py index b33b201a05788f4704d375e36234e39540958b14..8c7c51b55809ac2ffb2731442b77cf9e90bc726f 100644 --- a/product/ERP5/tests/testDeliveryBuilderToSupportMultipleLines.py +++ b/product/ERP5/tests/testDeliveryBuilderToSupportMultipleLines.py @@ -27,8 +27,6 @@ ############################################################################## import unittest -import transaction - from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase from Products.ERP5Type.tests.Sequence import SequenceList @@ -338,15 +336,13 @@ class TestNestedLine(TestNestedLineMixin, ERP5TypeTestCase): return False self.tic(stop_condition=stop_condition) update_causality_message_uid, = prioritize_uid_list - # make all other messages have less priority: for table in 'message', 'message_queue': self.portal.cmf_activity_sql_connection.manage_test(""" update %s - set priority=200 - where uid <> %s + set priority=-200 + where uid = %s """ % (table, update_causality_message_uid)) - transaction.commit() - self.stepTic(sequence) + self.tic() @newSimulationExpectedFailure @expectedFailure diff --git a/product/ERP5/tests/testERP5Core.py b/product/ERP5/tests/testERP5Core.py index 00893c1e15df03a1fac26353c10d461143e65ab8..7bbb665b06816c79db204f283cf4ccf6ee16285a 100644 --- a/product/ERP5/tests/testERP5Core.py +++ b/product/ERP5/tests/testERP5Core.py @@ -472,11 +472,11 @@ class TestERP5Core(ERP5TypeTestCase, ZopeTestCase.Functional): self.assertEqual(module.objectCount(), 2) def test_getPropertyForUid(self): - error_list = [] - for i in self.portal.objectValues(): - if i.getUid() != 0 and i.getUid() != i.getProperty('uid'): - error_list.append((i.getId(), i.getUid(), i.getProperty('uid'))) - self.assertEquals(error_list, []) + self.assertEqual([], [ + (i.getId(), i.getUid(), i.getProperty('uid')) + for i in self.portal.objectValues() + if i.getId() not in ('portal_uidhandler',) and + 0 != i.getUid() != i.getProperty('uid')]) def test_site_manager_and_translation_migration(self): from zope.site.hooks import getSite, setSite diff --git a/product/ERP5/tests/testERP5Credential.py b/product/ERP5/tests/testERP5Credential.py index f563aea4bed5aa893aead63ee698ed1142b7f01c..753b89822da0db47f18d90b54b352c50772a9287 100644 --- a/product/ERP5/tests/testERP5Credential.py +++ b/product/ERP5/tests/testERP5Credential.py @@ -297,7 +297,7 @@ class TestERP5Credential(ERP5TypeTestCase): credential_request = portal_catalog.getResultValue( portal_type="Credential Request", reference=reference) mail_message = portal_catalog.getResultValue(portal_type="Mail Message", - follow_up=credential_request) + default_follow_up_uid=credential_request.getUid()) self.tic() self.logout() self.portal.ERP5Site_activeLogin(mail_message.getReference()) @@ -824,7 +824,7 @@ class TestERP5Credential(ERP5TypeTestCase): credential_reference = portal_catalog.getResultValue( portal_type="Credential Request", reference=credential_reference_str) mail_message = portal_catalog.getResultValue(portal_type="Mail Message", - follow_up=credential_reference) + default_follow_up_uid=credential_reference.getUid()) self.assertEquals(mail_message.getSimulationState(), "started") self.assertTrue("key=%s" % mail_message.getReference() in mail_message.getTextContent()) @@ -1056,7 +1056,8 @@ class TestERP5Credential(ERP5TypeTestCase): portal_type="Credential Request", reference="vifibtest", first_name="Vifib", last_name="Test") mail_message = portal_catalog.getResultValue( - portal_type="Mail Message", follow_up=credential_request) + portal_type="Mail Message", + default_follow_up_uid=credential_request.getUid()) last_message = self.portal.MailHost._last_message self.assertNotEquals((), last_message) mfrom, mto, message_text = last_message @@ -1105,7 +1106,7 @@ class TestERP5Credential(ERP5TypeTestCase): credential_request = portal_catalog.getResultValue( portal_type="Credential Request", reference="barney") mail_message = portal_catalog.getResultValue(portal_type="Mail Message", - follow_up=credential_request) + default_follow_up_uid=credential_request.getUid()) self.logout() self.portal.ERP5Site_activeLogin(mail_message.getReference()) self.login("ERP5TypeTestCase") diff --git a/product/ERP5/tests/testERP5WebWithDms.py b/product/ERP5/tests/testERP5WebWithDms.py index 604708f56884ec0feb78ebbe4f7d5f515a2c5ec4..1c588c829fe130eb7a005f7a6df18293c0891fca 100644 --- a/product/ERP5/tests/testERP5WebWithDms.py +++ b/product/ERP5/tests/testERP5WebWithDms.py @@ -722,6 +722,9 @@ return True self.assertEquals(response.getHeader('content-type'), 'image/jpeg') # testing Image conversions, svg + # disable Image permissiions checks format checks + createZODBPythonScript(portal.portal_skins.custom, 'Image_checkConversionFormatPermission', + '**kw', 'return 1') response = self.publish(website.absolute_url_path() + '/' +\ image_reference + '?format=svg', credential) self.assertEquals(response.getHeader('content-type'), 'image/svg+xml') diff --git a/product/ERP5/tests/testFunctionalRunMyDocSample.py b/product/ERP5/tests/testFunctionalRunMyDocSample.py old mode 100755 new mode 100644 diff --git a/product/ERP5/tests/testInvalidationBug.py b/product/ERP5/tests/testInvalidationBug.py index 0ae8d96ac757657324fe4eb4c7943893ebc54c13..dcb0b5330e44778ae06d81247c8d352cd13f5b25 100644 --- a/product/ERP5/tests/testInvalidationBug.py +++ b/product/ERP5/tests/testInvalidationBug.py @@ -70,28 +70,30 @@ class TestInvalidationBug(ERP5TypeTestCase): len(manage_test(query))) result_list = [map(apply, test_list)] Transaction_commitResources = transaction.Transaction._commitResources + connection = module._p_jar def _commitResources(self): - orig_tpc_finish_dict = dict((rm.__class__, rm.__class__.tpc_finish) - for rm in self._resources) - def tpc_finish(self, txn): - orig_tpc_finish_dict[self.__class__](self, txn) - result_list.append(map(apply, test_list)) + def tpc_finish(rm, txn): + rm.__class__.tpc_finish(rm, txn) + result_list.append(None if rm is connection else map(apply, test_list)) try: - for cls in orig_tpc_finish_dict: - cls.tpc_finish = tpc_finish + for rm in self._resources: + rm.tpc_finish = lambda txn, rm=rm: tpc_finish(rm, txn) return Transaction_commitResources(self) finally: - for cls, tpc_finish in orig_tpc_finish_dict.iteritems(): - cls.tpc_finish = tpc_finish + for rm in self._resources: + del rm.tpc_finish try: transaction.Transaction._commitResources = _commitResources self.commit() finally: transaction.Transaction._commitResources = Transaction_commitResources self.tic() + # Whether ZODB should be committed before or after catalog is not obvious. + # Current behaviour is required to avoid creating duplicated applied rules. self.assertEqual(result_list[0], [0,0]) self.assertEqual(result_list[1], [0,0]) # activity buffer first - self.assertEqual(result_list[-2], [1,0]) # catalog + self.assertEqual(result_list[-3], [1,0]) # catalog + self.assertEqual(result_list[-2], None) # ZODB self.assertEqual(result_list[-1], [1,1]) # activity tables last def testLateInvalidationFromZEO(self): diff --git a/product/ERP5/tests/testResource.py b/product/ERP5/tests/testResource.py index 6ba2197fd5a8da443eaa417dcaac83e0a84f755d..70794627636bb0576b42634bf031dbd019ffcff8 100644 --- a/product/ERP5/tests/testResource.py +++ b/product/ERP5/tests/testResource.py @@ -862,20 +862,19 @@ class TestResource(ERP5TypeTestCase): self.tic() # Test the cases for product, variation, node, base_price in test_case_list: + categories = [] if node is not None: self.logMessage("Check product %s with destination section %s" % \ (product.getTitle(), node.getTitle()), tab=1) - self.assertEquals(base_price, - product.getPrice( - categories=['destination_section/%s' % node.getRelativeUrl(), - variation])) + categories.append('destination_section/' + node.getRelativeUrl()) else: self.logMessage("Check product %s without destination section" % \ product.getTitle(), tab=1) - self.assertEquals(base_price, - product.getPrice(categories=[variation])) + if variation: + categories.append(variation) + self.assertEqual(base_price, product.getPrice(categories=categories)) # The following test tests Movement.getPrice, which is based on the movement diff --git a/product/ERP5/tests/testRule.py b/product/ERP5/tests/testRule.py index 05ac8e3b307250bf4ac59d359af53fde13366ce9..50144b33c6756b2379b7e4b4b76de9dd42c5c610 100644 --- a/product/ERP5/tests/testRule.py +++ b/product/ERP5/tests/testRule.py @@ -26,7 +26,6 @@ ############################################################################## import unittest -from Products.ERP5Type.tests.backportUnittest import expectedFailure from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase from Products.ERP5Type.tests.utils import createZODBPythonScript from Products.ERP5.tests.testOrder import TestOrderMixin @@ -690,10 +689,12 @@ return context.generatePredicate( for m in message_list if m.method_id == 'immediateReindexObject')) root_applied_rule, = self.pl.getCausalityRelatedValueList() sm, = root_applied_rule.objectValues() - self.assertEqual([], sm.getDeliveryValue().getDeliveryRelatedList()) + line = sm.getDeliveryValue() + self.assertEqual([sm], line.getDeliveryRelatedValueList()) + self.assertEqual([], [x.getObject() for x in self.portal.portal_catalog + .unrestrictedSearchResults(delivery_uid=line.getUid())]) return root_applied_rule - @expectedFailure def test_13_unlinkSimulation(self): """ When a root delivery line is deleted, the related simulation movement diff --git a/product/ERP5Banking/BaobabMixin.py b/product/ERP5Banking/BaobabMixin.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Constraint/__init__.py b/product/ERP5Banking/Constraint/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/BankingOperation.py b/product/ERP5Banking/Document/BankingOperation.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/BankingOperationLine.py b/product/ERP5Banking/Document/BankingOperationLine.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashContainer.py b/product/ERP5Banking/Document/CashContainer.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashCurrency.py b/product/ERP5Banking/Document/CashCurrency.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashDelivery.py b/product/ERP5Banking/Document/CashDelivery.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashDeliveryCell.py b/product/ERP5Banking/Document/CashDeliveryCell.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashDeliveryLine.py b/product/ERP5Banking/Document/CashDeliveryLine.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashInventoryCell.py b/product/ERP5Banking/Document/CashInventoryCell.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CashInventoryLine.py b/product/ERP5Banking/Document/CashInventoryLine.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/CheckOperationLine.py b/product/ERP5Banking/Document/CheckOperationLine.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Document/__init__.py b/product/ERP5Banking/Document/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Extensions/__init__.py b/product/ERP5Banking/Extensions/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Permissions.py b/product/ERP5Banking/Permissions.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/PropertySheet/__init__.py b/product/ERP5Banking/PropertySheet/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/Tool/__init__.py b/product/ERP5Banking/Tool/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/__init__.py b/product/ERP5Banking/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/dtml/__init__.py b/product/ERP5Banking/dtml/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Banking/skins/__init__.py b/product/ERP5Banking/skins/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Catalog/Document/Archive.py b/product/ERP5Catalog/Document/Archive.py old mode 100755 new mode 100644 diff --git a/product/ERP5Catalog/Tool/ArchiveTool.py b/product/ERP5Catalog/Tool/ArchiveTool.py old mode 100755 new mode 100644 diff --git a/product/ERP5Catalog/Tool/__init__.py b/product/ERP5Catalog/Tool/__init__.py old mode 100755 new mode 100644 diff --git a/product/ERP5Catalog/tests/testArchive.py b/product/ERP5Catalog/tests/testArchive.py index bba8e576c6272c3cef4400aa593b041366dc1e8d..422e9ec59b00ac1ded0010455cf467081a483423 100644 --- a/product/ERP5Catalog/tests/testArchive.py +++ b/product/ERP5Catalog/tests/testArchive.py @@ -167,29 +167,27 @@ class TestArchive(InventoryAPITestCase): self.checkRelativeUrlInSQLPathList(path_list, connection_id=self.original_connection_id) # Create new connectors for destination + addSQLConnection = portal.manage_addProduct['ZMySQLDA'] \ + .manage_addZMySQLConnection self.new_connection_id = 'erp5_sql_connection1' db1, db2 = getExtraSqlConnectionStringList()[:2] - portal.manage_addZMySQLConnection(self.new_connection_id,'', - db1) + addSQLConnection(self.new_connection_id,'', db1) new_connection = portal[self.new_connection_id] new_connection.manage_open_connection() # the deferred one self.new_deferred_connection_id = 'erp5_sql_connection2' - portal.manage_addZMySQLConnection(self.new_deferred_connection_id,'', - db1) + addSQLConnection(self.new_deferred_connection_id,'', db1) new_deferred_connection = portal[self.new_deferred_connection_id] new_deferred_connection.manage_open_connection() # Create new connectors for archive self.archive_connection_id = 'erp5_sql_connection3' - portal.manage_addZMySQLConnection(self.archive_connection_id,'', - db2) + addSQLConnection(self.archive_connection_id,'', db2) archive_connection = portal[self.archive_connection_id] archive_connection.manage_open_connection() # the deferred one self.archive_deferred_connection_id = 'erp5_sql_connection4' - portal.manage_addZMySQLConnection(self.archive_deferred_connection_id,'', - db2) + addSQLConnection(self.archive_deferred_connection_id,'', db2) archive_deferred_connection = portal[self.archive_deferred_connection_id] archive_deferred_connection.manage_open_connection() diff --git a/product/ERP5Catalog/tests/testERP5Catalog.py b/product/ERP5Catalog/tests/testERP5Catalog.py index 73f4a2173623bf9608437b77a6692c4563aaac41..d80db0bc0557fda72504681d1d3f0d0f7b9c1410 100644 --- a/product/ERP5Catalog/tests/testERP5Catalog.py +++ b/product/ERP5Catalog/tests/testERP5Catalog.py @@ -463,6 +463,7 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor): title="GreatTitle2") # Flush message queue self.tic() + original_path_list = self.getSQLPathList() # Clear catalog portal_catalog = self.getCatalogTool() portal_catalog.manage_catalogClear() @@ -482,10 +483,9 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor): result = sql_connection.manage_test(sql) message_count = result[0]['COUNT(*)'] self.assertEquals(0, message_count) - # Check if object are catalogued - self.checkRelativeUrlInSQLPathList([ - organisation.getRelativeUrl(), - 'portal_categories/%s' % base_category.getRelativeUrl()]) + # Check if all objects are catalogued as before + new_path_list = self.getSQLPathList() + self.assertEquals(set(original_path_list) - set(new_path_list), set()) def test_14_ReindexWithBrokenCategory(self, quiet=quiet, run=run_all_test): if not run: return @@ -1495,13 +1495,13 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor): title="GreatTitle2") # Flush message queue self.tic() + addSQLConnection = portal.manage_addProduct['ZMySQLDA'] \ + .manage_addZMySQLConnection # Create new connectors - portal.manage_addZMySQLConnection(self.new_connection_id,'', - new_connection_string) + addSQLConnection(self.new_connection_id,'', new_connection_string) new_connection = portal[self.new_connection_id] new_connection.manage_open_connection() - portal.manage_addZMySQLConnection(self.new_deferred_connection_id,'', - new_connection_string) + addSQLConnection(self.new_deferred_connection_id,'', new_connection_string) new_connection = portal[self.new_deferred_connection_id] new_connection.manage_open_connection() # the transactionless connector must not be change because this one @@ -1531,6 +1531,9 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor): # Flush message queue self.tic() + original_path_list = self.getSQLPathList(self.original_connection_id) + new_path_list = self.getSQLPathList(self.new_connection_id) + self.assertEquals(set(original_path_list) - set(new_path_list), set()) self.organisation2 = module.newContent(portal_type='Organisation', title="GreatTitle2") first_deleted_url = self.organisation2.getRelativeUrl() @@ -1645,11 +1648,12 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor): LOG('Testing... ',0, message) # Create new connectors - portal.manage_addZMySQLConnection(self.new_erp5_sql_connection,'', - new_connection_string) + addSQLConnection = portal.manage_addProduct['ZMySQLDA'] \ + .manage_addZMySQLConnection + addSQLConnection(self.new_erp5_sql_connection,'', new_connection_string) new_connection = portal[self.new_erp5_sql_connection] new_connection.manage_open_connection() - portal.manage_addZMySQLConnection(self.new_erp5_deferred_sql_connection,'', + addSQLConnection(self.new_erp5_deferred_sql_connection,'', new_connection_string) new_connection = portal[self.new_erp5_deferred_sql_connection] new_connection.manage_open_connection() diff --git a/product/ERP5Configurator/Document/AccountConfiguratorItem.py b/product/ERP5Configurator/Document/AccountConfiguratorItem.py index fa775e2330eb3dfd9d1fd5554069e1a3b45d0ecb..1a0dbff8f32892fb96e0744fc514032c98005b02 100644 --- a/product/ERP5Configurator/Document/AccountConfiguratorItem.py +++ b/product/ERP5Configurator/Document/AccountConfiguratorItem.py @@ -30,6 +30,7 @@ import zope.interface from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -79,7 +80,7 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): # Update existing account if (self.getAccountType() != account.getAccountType()) and \ (self.getFinancialSection() != account.getFinancialSection()): - raise ValueError("The Configurator is trying to overwritte previous configuration information (%s)" % account.getRelativeUrl()) + raise ValueError("The Configurator is trying to overwrite previous configuration information (%s)" % account.getRelativeUrl()) account.edit(title=self.getTitle(), description=self.getDescription()) gap_list = account.getGapList() @@ -90,7 +91,7 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): account.setCreditAccount(self.isCreditAccount()) if self.portal_workflow.isTransitionPossible(account, 'validate'): - account.validate(comment="Validated by Configurator") + account.validate(comment=translateString("Validated by Configurator")) ## add to customer template self.install(account, business_configuration) diff --git a/product/ERP5Configurator/Document/BusinessProcessConfiguratorItem.py b/product/ERP5Configurator/Document/BusinessProcessConfiguratorItem.py index 00a5206ace12d3dc9360daa99a6e711c1fa8d495..deace8a4da45414d2984dcfe00347f6c2377ff09 100644 --- a/product/ERP5Configurator/Document/BusinessProcessConfiguratorItem.py +++ b/product/ERP5Configurator/Document/BusinessProcessConfiguratorItem.py @@ -30,6 +30,7 @@ import zope.interface from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class BusinessProcessConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -106,6 +107,7 @@ class BusinessProcessConfiguratorItem(ConfiguratorItemMixin, XMLObject): delivery_builder = delivery_builder, **link_dict) + business_process.validate(comment=translateString('Validated by configurator')) self.install(business_process, business_configuration) def _getBusinessProcessDict(self): diff --git a/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py b/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py index 11595f8d0762c1a71da3b6b7f27afab7de546085..e16399db04ee55c0230740f2b84084cef0910995 100644 --- a/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py +++ b/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py @@ -30,6 +30,7 @@ import zope.interface from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -72,7 +73,7 @@ class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject): title = title, reference = reference, base_unit_quantity = base_unit_quantity) - currency.validate() + currency.validate(comment=translateString("Validated by Configurator")) business_configuration.setGlobalConfigurationAttr(currency_id=currency.getId()) ## add to customer template self.install(currency, business_configuration) diff --git a/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py b/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py index 64fb6051aa069de3696b8d0586071b822a718f44..a467387ae0913490afac15436e407340fdab49f3 100644 --- a/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py +++ b/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py @@ -30,6 +30,7 @@ import zope.interface from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -78,7 +79,7 @@ class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject): business_configuration.setGlobalConfigurationAttr(organisation_id=organisation.getId()) if self.portal_workflow.isTransitionPossible(organisation, 'validate'): - organisation.validate(comment="Validated by Configurator") + organisation.validate(comment=translateString("Validated by Configurator")) ## add to customer template self.install(organisation, business_configuration) diff --git a/product/ERP5Configurator/Document/PersonConfiguratorItem.py b/product/ERP5Configurator/Document/PersonConfiguratorItem.py index 9ad8c52ce50f9f4bcf2679a383b551d1264ba1e3..a48accf08335beb0d81bd37411f58234475c2fef 100644 --- a/product/ERP5Configurator/Document/PersonConfiguratorItem.py +++ b/product/ERP5Configurator/Document/PersonConfiguratorItem.py @@ -31,6 +31,7 @@ from Acquisition import aq_base from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from DateTime import DateTime from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin @@ -92,8 +93,8 @@ class PersonConfiguratorItem(XMLObject, ConfiguratorItemMixin): assignment.setStopDate(now + (365*10)) # Validate the Person and Assigment - person.validate(comment="Validated by Configurator") - assignment.open(comment="Open by Configuration") + person.validate(comment=translateString("Validated by Configurator")) + assignment.open(comment=translateString("Open by Configuration")) ## add to customer template self.install(person, business_configuration) diff --git a/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py b/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py index 6de517cf60ba631ccf0d31173f3b570fae5f624c..112be2c632537cdc6e4e80bc3ccfccbe77963a4e 100644 --- a/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py +++ b/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py @@ -55,35 +55,21 @@ class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): , PropertySheet.DublinCore ) def _getPreferenceNameList(self): - """Returns all existing preference names. - - TODO: this should be done by introspecting property sheet. + """Return names of preference properties. """ - return ( 'preferred_category_child_item_list_method_id', - 'preferred_accounting_transaction_from_date', - 'preferred_accounting_transaction_at_date', - 'preferred_section_category', - 'preferred_section', - 'preferred_accounting_transaction_section_category', - 'preferred_accounting_transaction_source_section', - 'preferred_accounting_transaction_currency', - 'preferred_accounting_transaction_gap', - 'preferred_accounting_transaction_simulation_state_list', - 'preferred_text_format', - 'preferred_text_editor', - 'preferred_date_order', - 'preferred_listbox_view_mode_line_count', - 'preferred_listbox_list_mode_line_count', - 'preferred_string_field_width', - 'preferred_textarea_width', - 'preferred_textarea_height', - 'preferred_money_quantity_field_width', - 'preferred_quantity_field_width', - 'preferred_report_style', - 'preferred_report_format', - 'preferred_html_style_access_tab', - ) - + property_id_list = [] + portal = self.getPortalObject() + for property_sheet_id in portal.portal_types.Preference.getTypePropertySheetList(): + property_sheet = portal.portal_property_sheets[property_sheet_id] + for prop in property_sheet.contentValues(): + if prop.getProperty('preference'): + list_prefix = '' + if prop.getProperty('multivalued') or ( + prop.getProperty('elementary_type') in ( + 'lines', 'multiple_selection', 'tokens')): + list_prefix = '_list' + property_id_list.append('%s%s' % (prop.getReference(), list_prefix)) + return property_id_list def _build(self, business_configuration): portal = self.getPortalObject() @@ -96,14 +82,13 @@ class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): description = self.description, priority = 1) - # XXX this have to be translated in user language. preference_dict = {} marker = [] for preference_name in self._getPreferenceNameList(): preference_value = getattr(self, preference_name, preference.getProperty(preference_name, marker)) - if preference_value is not marker: + if preference_value is not marker and preference_value is not None: preference_dict[preference_name] = preference_value if self.portal_workflow.isTransitionPossible(preference, 'enable'): diff --git a/product/ERP5Configurator/Document/PurchaseTradeConditionConfiguratorItem.py b/product/ERP5Configurator/Document/PurchaseTradeConditionConfiguratorItem.py index 548ccea22443c160e823a0f84f775159abb18669..64f8a0e66ee308888bf300fe256ea0370dd01d20 100644 --- a/product/ERP5Configurator/Document/PurchaseTradeConditionConfiguratorItem.py +++ b/product/ERP5Configurator/Document/PurchaseTradeConditionConfiguratorItem.py @@ -31,6 +31,7 @@ from AccessControl import ClassSecurityInfo from DateTime import DateTime from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -71,9 +72,7 @@ class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): trade_condition = portal.purchase_trade_condition_module.newContent( portal_type="Purchase Trade Condition", reference=self.getReference(), - title=self.getTitle(), - effective_date=DateTime() - 1, - expiration_date=DateTime() + 10 * 365) + title=self.getTitle(), ) trade_condition.setSpecialise("business_process_module/%s" %\ business_process_id) @@ -82,6 +81,6 @@ class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): trade_condition.setDestinationSection("organisation_module/%s" % organisation_id) trade_condition.setPriceCurrency("currency_module/%s" % currency_id) - trade_condition.validate(comment="Validated by Configurator") + trade_condition.validate(comment=translateString("Validated by Configurator")) self.install(trade_condition, business_configuration) diff --git a/product/ERP5Configurator/Document/SaleTradeConditionConfiguratorItem.py b/product/ERP5Configurator/Document/SaleTradeConditionConfiguratorItem.py index 18d146631218267ab8d749ed76132df83bc77204..f2ab6781d77c26de6247bc61b4432f0c1f71efd9 100644 --- a/product/ERP5Configurator/Document/SaleTradeConditionConfiguratorItem.py +++ b/product/ERP5Configurator/Document/SaleTradeConditionConfiguratorItem.py @@ -31,6 +31,7 @@ from DateTime import DateTime from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -71,9 +72,7 @@ class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): trade_condition = portal.sale_trade_condition_module.newContent( portal_type="Sale Trade Condition", reference=self.getReference(), - title=self.getTitle(), - effective_date=DateTime() - 1, - expiration_date=DateTime() + 10 * 365) + title=self.getTitle()) trade_condition.setSpecialise("business_process_module/%s" %\ business_process_id) @@ -82,6 +81,6 @@ class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): trade_condition.setSourceSection("organisation_module/%s" % organisation_id) trade_condition.setPriceCurrency("currency_module/%s" % currency_id) - trade_condition.validate(comment="Validated by Configurator") + trade_condition.validate(comment=translateString("Validated by Configurator")) self.install(trade_condition, business_configuration) diff --git a/product/ERP5Configurator/Document/ServiceConfiguratorItem.py b/product/ERP5Configurator/Document/ServiceConfiguratorItem.py index 24afa3efa8a99f9202cc4da0a452b0d915776dac..67aa9d13a695ebd117639e4538c8039fb7bdb6ce 100644 --- a/product/ERP5Configurator/Document/ServiceConfiguratorItem.py +++ b/product/ERP5Configurator/Document/ServiceConfiguratorItem.py @@ -26,10 +26,12 @@ # ############################################################################## +from warnings import warn import zope.interface from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5Type.Message import translateString from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject): @@ -57,12 +59,17 @@ class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject): def _build(self, business_configuration): portal = self.getPortalObject() - for service_id, service_title in iter(self.getConfigurationListList()): + for service_id, service_dict in iter(self.getConfigurationListList()): + if isinstance(service_dict, basestring): + warn(DeprecationWarning, + "ServiceConfiguratorItem now use (service_id, service_dict) as configuration list") + service_dict = dict(title=service_dict) + document = getattr(portal.service_module, service_id, None) if document is None: document = portal.service_module.newContent(portal_type='Service', - id=service_id, title=service_title) - document.validate("Validated by Configurator") + id=service_id, **service_dict) + document.validate(comment=translateString("Validated by Configurator")) ## add to customer template self.install(document, business_configuration) diff --git a/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py b/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py index 1b415246762398a2539dc287716d4bca42be47ea..f97b91eadc2cb939394b884d43e7c78b0ebb9510 100644 --- a/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py +++ b/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py @@ -55,43 +55,22 @@ class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): , PropertySheet.DublinCore ) def _getPreferenceNameList(self): - """Returns all existing preference names. - - TODO: this should be done by introspecting property sheet. + """Return names of preference properties. """ - return ( # CRM - 'preferred_campaign_resource_list', - 'preferred_event_assessment_form_id_list', - 'preferred_event_resource_list', - 'preferred_event_sender_email', - 'preferred_meeting_resource_list', - 'preferred_sale_opportunity_resource_list', - 'preferred_support_request_resource_list', - # DMS - 'preferred_conversion_cache_factory', - 'preferred_document_email_ingestion_address', - 'preferred_document_reference_method_id', - 'preferred_document_file_name_regular_expression', - 'preferred_document_reference_regular_expression', - 'preferred_document_classification', - 'preferred_synchronous_metadata_discovery', - 'preferred_redirect_to_document', - 'preferred_ooodoc_server_address', - 'preferred_ooodoc_server_port_number', - # PDM - 'preferred_product_individual_variation_base_category_list', - 'preferred_component_individual_variation_base_category_list', - 'preferred_service_individual_variation_base_category_list', - # Trade - 'preferred_supplier_role_list', - 'preferred_client_role_list', - 'preferred_sale_use_list', - 'preferred_purchase_use_list', - 'preferred_packing_use_list', - 'preferred_tax_use_list', - # Express - ) - + property_id_list = [] + portal = self.getPortalObject() + for property_sheet_id in portal.portal_types[ + 'System Preference'].getTypePropertySheetList(): + property_sheet = portal.portal_property_sheets[property_sheet_id] + for prop in property_sheet.contentValues(): + if prop.getProperty('preference'): + list_prefix = '' + if prop.getProperty('multivalued') or ( + prop.getProperty('elementary_type') in ( + 'lines', 'multiple_selection', 'tokens')): + list_prefix = '_list' + property_id_list.append('%s%s' % (prop.getReference(), list_prefix)) + return property_id_list def _build(self, business_configuration): portal = self.getPortalObject() @@ -104,17 +83,13 @@ class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): description = self.description, priority = 1) - # XXX this have to be translated in user language. preference_dict = {} marker = [] - activated_preference = portal.portal_preferences.getActiveSystemPreference() for preference_name in self._getPreferenceNameList(): preference_value = getattr(self, preference_name, preference.getProperty(preference_name, marker)) - if preference_value is None and activated_preference is not None: - preference_value = activated_preference.getProperty(preference_name) - if preference_value is not marker: + if preference_value is not marker and preference_value is not None: preference_dict[preference_name] = preference_value if self.portal_workflow.isTransitionPossible(preference, 'enable'): diff --git a/product/ERP5Configurator/tests/testFunctionalConfigurator.py b/product/ERP5Configurator/tests/testFunctionalConfigurator.py old mode 100755 new mode 100644 diff --git a/product/ERP5Configurator/tests/testFunctionalConfiguratorConsulting.py b/product/ERP5Configurator/tests/testFunctionalConfiguratorConsulting.py old mode 100755 new mode 100644 diff --git a/product/ERP5Form/CaptchaField.py b/product/ERP5Form/CaptchaField.py index e94b2b5569723aba92b199d95223f9426d40c440..0c7a5fac800ee7fb373495c11369eade9c1359ec 100644 --- a/product/ERP5Form/CaptchaField.py +++ b/product/ERP5Form/CaptchaField.py @@ -216,6 +216,8 @@ class CaptchaWidget(Widget.TextWidget): name=key, css_class=field.get_value('css_class'), size=10) + # HTML page having a captcha field should never be cached. + REQUEST.RESPONSE.setHeader('Cache-Control', 'max-age=0') return captcha_field + key_field + splitter + answer def render_view(self, field, value, REQUEST=None, render_prefix=None): diff --git a/product/ERP5Form/Tool/SelectionTool.py b/product/ERP5Form/Tool/SelectionTool.py index 0deb9aee22b35252778392a6fa326e9e6ed14441..7cd4a6fc2399c97fcaf1419ce76d433b88067fc3 100644 --- a/product/ERP5Form/Tool/SelectionTool.py +++ b/product/ERP5Form/Tool/SelectionTool.py @@ -328,7 +328,7 @@ class SelectionTool( BaseTool, SimpleItem ): selection = self.getSelectionFor(selection_name, REQUEST=REQUEST) if selection is not None: try: - return selection.getDomain().asDomainDict + return selection.getDomain().asDomainDict() except AttributeError: return {} @@ -340,7 +340,7 @@ class SelectionTool( BaseTool, SimpleItem ): selection = self.getSelectionFor(selection_name, REQUEST=REQUEST) if selection is not None: try: - return selection.getReport().asDomainDict + return selection.getReport().asDomainDict() except AttributeError: return {} diff --git a/product/ERP5Form/tests/testFields.py b/product/ERP5Form/tests/testFields.py index 9e7bde245fe922575b26e7de0514913a23f7a492..155d1142b6125e077866a09dda2118e1077ccca6 100644 --- a/product/ERP5Form/tests/testFields.py +++ b/product/ERP5Form/tests/testFields.py @@ -166,9 +166,9 @@ class TestFloatField(ERP5TypeTestCase): def test_render_big_numbers(self): self.field.values['precision'] = 2 self.field.values['editable'] = 0 - self.assertEquals('10000000000000000000.00', - self.field.render(10000000000000000000)) - self.assertEquals('1e+100', self.field.render(1e+100)) + self.assertEquals('10000000000000.00', + self.field.render(10000000000000)) + self.assertEquals('1e+20', self.field.render(1e+20)) def test_validate_thousand_separator_point(self): self.field.values['input_style'] = '-1 234.5' diff --git a/product/ERP5Form/tests/testPDFForm.py b/product/ERP5Form/tests/testPDFForm.py index 3269be0425ec34d081801f996002b7e4b336c000..354c2c54f7b775a8ebacbf43b27cfdbfe2c2b30e 100644 --- a/product/ERP5Form/tests/testPDFForm.py +++ b/product/ERP5Form/tests/testPDFForm.py @@ -28,7 +28,7 @@ import unittest import os -from zope.app.testing.placelesssetup import PlacelessSetup +from zope.component.testing import PlacelessSetup from Products.ERP5Form.PDFForm import PDFForm from Products.ERP5.Document.Document import Document diff --git a/product/ERP5OOo/OOoUtils.py b/product/ERP5OOo/OOoUtils.py index 52ecdd4214d4dca6b824ac82180645526a48448e..eb2d9a4f66cdb446940aabf3438d772ea386a2be 100644 --- a/product/ERP5OOo/OOoUtils.py +++ b/product/ERP5OOo/OOoUtils.py @@ -428,10 +428,43 @@ class OOoParser(Implicit): xpath = '@*[local-name()="%s"]' % attribute_type_mapping[value_type] cell_data = str(cell.xpath(xpath)[0]) else: # read text nodes - text_tags = cell.findall('./{%s}p' % cell.nsmap['text']) - if len(text_tags): - cell_data = ''.join([text.xpath('string(.)') - for text in text_tags]) + # Text nodes can contain multiple <text:p> tags, one for each + # line. There are also some tags for special entities, for + # instance <text:s/> for a space (or using <text:s text:c="3"/> + # for multiple spaces) <text:tab/> for a tab and <text:line-break/> + # for new line + text_ns = cell.nsmap['text'] + def format_node(node): + if node.tag == '{%s}table-cell' % node.nsmap['table']: + return "\n".join(part for part in + [format_node(child) for child in node.iterchildren()] + if part is not None) + elif node.tag == '{%s}p' % node.nsmap['text']: + part_list = [node.text] + part_list.extend(format_node(child) + for child in node.iterchildren()) + return ''.join(part for part in part_list if part) + elif node.tag == '{%s}s' % node.nsmap['text']: + count = int(node.get('{%s}c' % node.nsmap['text'], 1)) + return ''.join(part for part in + [node.text, ' ' * count, node.tail] if part) + elif node.tag == '{%s}span' % node.nsmap['text']: + part_list = [node.text] + part_list.extend(format_node(child) + for child in node.iterchildren()) + part_list.append(node.tail) + return ''.join(part for part in part_list if part) + elif node.tag == '{%s}tab' % node.nsmap['text']: + return ''.join(part for part in + [node.text, '\t', node.tail] if part) + elif node.tag == '{%s}line-break' % node.nsmap['text']: + return ''.join(part for part in + [node.text, '\n', node.tail] if part) + elif node.tag == '{%s}a' % node.nsmap['text']: + return ''.join(part for part in + [node.text, node.tail] if part) + # we can also have table:annotation, and they are ignored + cell_data = format_node(cell) or None # Add the cell to the line table_line.append(cell_data) diff --git a/product/ERP5OOo/tests/testDeferredStyle.py b/product/ERP5OOo/tests/testDeferredStyle.py index 1170c759834ee8b87f3462103a64a0880e9c7cd5..4087715378dc0b7230f0e905062222f212508557 100644 --- a/product/ERP5OOo/tests/testDeferredStyle.py +++ b/product/ERP5OOo/tests/testDeferredStyle.py @@ -28,10 +28,7 @@ import unittest from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from Products.ERP5Form.Selection import Selection from Testing import ZopeTestCase -from Products.ERP5Type.tests.utils import DummyMailHost -from AccessControl import getSecurityManager from AccessControl.SecurityManagement import newSecurityManager from Products.ERP5OOo.tests.utils import Validator import email @@ -71,11 +68,6 @@ class TestDeferredStyle(ERP5TypeTestCase, ZopeTestCase.Functional): default_email_text=self.recipient_email_address) assignment = person.newContent(portal_type='Assignment') assignment.open() - - # replace MailHost - if 'MailHost' in self.portal.objectIds(): - self.portal.manage_delObjects(['MailHost']) - self.portal._setObject('MailHost', DummyMailHost('MailHost')) self.tic() def loginAsUser(self, username): diff --git a/product/ERP5OOo/tests/testDms.py b/product/ERP5OOo/tests/testDms.py index 30d35f26351af08960f63ae679cd9c6a01525b5a..19a615f2d3c430f32ecd9257406a4dc6cf9e03bb 100644 --- a/product/ERP5OOo/tests/testDms.py +++ b/product/ERP5OOo/tests/testDms.py @@ -90,6 +90,13 @@ def makeFileUpload(name, as_name=None): path = makeFilePath(name) return FileUpload(path, as_name) +def getFileSize(name): + path = makeFilePath(name) + f = open(path, "r") + file_size = len(f.read()) + f.close() + return file_size + class TestDocumentMixin(ERP5TypeTestCase): business_template_list = ['erp5_core_proxy_field_legacy', @@ -175,6 +182,7 @@ class TestDocumentMixin(ERP5TypeTestCase): conversion_format_permission_script_id_list = [ 'Document_checkConversionFormatPermission', + 'Image_checkConversionFormatPermission', 'PDF_checkConversionFormatPermission'] def clearRestrictedSecurityHelperScript(self): for script_id in self.conversion_format_permission_script_id_list: @@ -1650,7 +1658,7 @@ class TestDocument(TestDocumentMixin): self.assertFalse(web_page.hasConversion(format=format)) # test with not well-formed html document - html_content = """ + html_content = r""" <HTML dir=3Dltr><HEAD>=0A= <META http-equiv=3DContent-Type content=3D"text/html; charset=3Dunicode">=0A= <META content=3D"DIRTYHTML 6.00.2900.2722" name=3DGENERATOR></HEAD>=0A= @@ -1663,19 +1671,19 @@ class TestDocument(TestDocumentMixin): <DIV> </DIV>=0A= <DIV> </DIV>=0A= <br>= -<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Transitional//EN\\\\= -" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\\\">= -=0A<html xmlns=3D\\\"http://www.w3.org/1999/xhtml\\\">=0A<head>=0A<m= -eta http-equiv=3D\\\"Content-Type\\\" content=3D\\\"text/html; c= -harset=3Diso-8859-1\\\" />=0A<style type=3D\\\"text/css\\\">=0A<= +<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\\= +" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">= +=0A<html xmlns=3D\"http://www.w3.org/1999/xhtml\">=0A<head>=0A<m= +eta http-equiv=3D\"Content-Type\" content=3D\"text/html; c= +harset=3Diso-8859-1\" />=0A<style type=3D\"text/css\">=0A<= !--=0A.style1 {font-size: 8px}=0A.style2 {font-family: Arial, Helvetica, san= s-serif}=0A.style3 {font-size: 8px; font-family: Arial, Helvetica, sans-seri= -f; }=0A-->=0A</style>=0A</head>=0A=0A<body>=0A<div>=0A <p><span class=3D\\= -\\"style1\\\"><span class=3D\\\"style2\\\"><strong>I'm inside very broken HTML code</strong><br />=0A ERP5<br />=0A +f; }=0A-->=0A</style>=0A</head>=0A=0A<body>=0A<div>=0A <p><span class=3D\= +\"style1\"><span class=3D\"style2\"><strong>I'm inside very broken HTML code</strong><br />=0A ERP5<br />=0A ERP5 <br />=0A = -</span></span></p>=0A <p class=3D\\\"sty= -le3\\\">ERP5:<br />=0A </p>=0A <p class=3D\\\"style3\\\"><strong>ERP5</strong>= +</span></span></p>=0A <p class=3D\"sty= +le3\">ERP5:<br />=0A </p>=0A <p class=3D\"style3\"><strong>ERP5</strong>= <br />=0A ERP5</p>=0A</di= v>=0A</body>=0A</html>=0A @@ -2156,6 +2164,49 @@ return 1 image_document_image_size_no_quality) ) + def test_getOriginalContentOnTraversal(self): + """ + Return original content on traversal. + """ + def getURL(uri, **kw): + # __ac=RVJQNVR5cGVUZXN0Q2FzZTo%3D is encoded ERP5TypeTestCase with empty password + url = '%s?%s&__ac=%s' %(uri, urllib.urlencode(kw), 'RVJQNVR5cGVUZXN0Q2FzZTo%3D') + return urllib.urlopen(url) + + ooo_document = self.portal.document_module.newContent(portal_type='Presentation') + upload_file = makeFileUpload('TEST-en-003.odp') + ooo_document.edit(file=upload_file) + + pdf_document = self.portal.document_module.newContent(portal_type='PDF') + upload_file = makeFileUpload('TEST-en-002.pdf') + pdf_document.edit(file=upload_file) + + image_document = self.portal.image_module.newContent(portal_type='Image') + upload_file = makeFileUpload('TEST-en-002.png') + image_document.edit(file=upload_file) + + web_page_document = self.portal.web_page_module.newContent(portal_type="Web Page") + web_page_document.setTextContent('<b> test </b> $website_url $website_url') + # a Web Page can generate dynamic text so test is as well + web_page_document.setTextContentSubstitutionMappingMethodId('WebPage_getStandardSubstitutionMappingDict') + self.tic() + + response = getURL(image_document.absolute_url(), **{'format':''}) + self.assertTrue('Content-Type: image/png\r\n' in response.info().headers) + self.assertTrue('Content-Length: %s\r\n' %getFileSize('TEST-en-002.png') in response.info().headers) + + response = getURL(ooo_document.absolute_url(), **{'format':''}) + self.assertTrue('Content-Type: application/vnd.oasis.opendocument.presentation\r\n' in response.info().headers) + self.assertTrue('Content-Disposition: attachment; filename="TEST-en-003.odp"\r\n' in response.info().headers) + self.assertTrue('Content-Length: %s\r\n' %getFileSize('TEST-en-003.odp') in response.info().headers) + + response = getURL(pdf_document.absolute_url(), **{'format':''}) + self.assertTrue('Content-Type: application/octet-stream\r\n' in response.info().headers) + self.assertTrue('Content-Disposition: attachment; filename="TEST-en-002.pdf"\r\n' in response.info().headers) + + response = getURL(web_page_document.absolute_url(), **{'format':''}) + self.assertTrue('Content-Type: text/html; charset=utf-8\r\n' in response.info().headers) + def test_checkConversionFormatPermission(self): """ Test various use cases when conversion can be not allowed @@ -2167,7 +2218,14 @@ return 1 # if PDF size is larger than A4 format system should deny conversion self.assertRaises(Unauthorized, pdf.convert, format='jpeg') - + + # raster -> svg image should deny conversion if image width or height > 128 px + portal_type = 'Image' + module = self.portal.getDefaultModule(portal_type) + upload_file = makeFileUpload('TEST-en-002.jpg') + image = module.newContent(portal_type=portal_type, file=upload_file) + self.assertRaises(Unauthorized, image.convert, format='svg') + def test_preConversionOnly(self): """ Test usage of pre_converted_only argument - i.e. return a conversion only form cache otherwise diff --git a/product/ERP5OOo/tests/testOOoDynamicStyle.py b/product/ERP5OOo/tests/testOOoDynamicStyle.py index 66e841530b25dea9c6555d9a1b8183e6234c478f..2d7b846d60d7423e0676402a2b9e0e55b3a9f4f2 100644 --- a/product/ERP5OOo/tests/testOOoDynamicStyle.py +++ b/product/ERP5OOo/tests/testOOoDynamicStyle.py @@ -58,7 +58,8 @@ class TestOooDynamicStyle(ERP5TypeTestCase): 'erp5_ingestion_mysql_innodb_catalog', 'erp5_ingestion', 'erp5_web', - 'erp5_dms') + 'erp5_dms', + 'erp5_odt_style') def afterSetUp(self): @@ -126,7 +127,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) self.assertEqual('attachment; filename="Dynamic_viewAsOdt.odt"', response.getHeader('content-disposition')) self._validate(response.getBody()) - self.assertTrue(200, response.getStatus()) + self.assertEquals(200, response.getStatus()) ooo_builder = OOoBuilder(response.getBody()) styles_xml_body = ooo_builder.extract('styles.xml') @@ -156,7 +157,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) response = self.publish('/' + self.getPortal().Dynamic_viewAsOdt.absolute_url(1)) # then, it is not a zip stream self.assertFalse(response.getBody().startswith('PK')) - self.assertTrue(500, response.getStatus()) + self.assertEquals(500, response.getStatus()) def test_02_static(self): @@ -175,7 +176,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) # 1. test a normal case response = self.publish('/' + self.getPortal().Static_viewAsOdt.absolute_url(1)) - self.assertTrue(200, response.getStatus()) + self.assertEqual(200, response.getStatus()) self.assertEqual('application/vnd.oasis.opendocument.text', response.getHeader('content-type').split(';')[0]) self.assertEqual('attachment; filename="Static_viewAsOdt.odt"', @@ -191,7 +192,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) Static_viewAsOdt.doSettings(request, title='', xml_file_id='content.xml', ooo_stylesheet='Test_getODTStyleSheet_en', script_name='') response = self.publish('/' + self.getPortal().Static_viewAsOdt.absolute_url(1)) - self.assertTrue(200, response.getStatus()) + self.assertEqual(200, response.getStatus()) self._validate(response.getBody()) ooo_builder = OOoBuilder(response.getBody()) styles_xml_body = ooo_builder.extract('styles.xml') @@ -204,7 +205,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) ooo_stylesheet='NotFound_getODTStyleSheet', script_name='') response = self.publish('/' + self.getPortal().Static_viewAsOdt.absolute_url(1)) self.assertFalse(response.getBody().startswith('PK')) - self.assertTrue(500, response.getStatus()) + self.assertEquals(500, response.getStatus()) def test_include_img(self): """ @@ -232,14 +233,16 @@ return getattr(context, "%s_%s" % (parameter, current_language)) Base_viewIncludeImageAsOdt.pt_edit(custom_content, content_type='application/vnd.oasis.opendocument.text') self.tic() + response = self.publish('/' + self.getPortal().Base_viewIncludeImageAsOdt.absolute_url(1)) + body = response.getBody() + self.assertEquals(200, response.getStatus(), body) self.assertEqual('application/vnd.oasis.opendocument.text', response.getHeader('content-type').split(';')[0]) self.assertEqual('attachment; filename="Base_viewIncludeImageAsOdt.odt"', response.getHeader('content-disposition')) - self.assertTrue(200, response.getStatus()) cs = StringIO() - cs.write(response.getBody()) + cs.write(body) zip_document = ZipFile(cs) picture_list = filter(lambda x: "Pictures" in x.filename, zip_document.infolist()) diff --git a/product/ERP5OOo/tests/testOOoImport.py b/product/ERP5OOo/tests/testOOoImport.py index 8d6d0993e0a217430c697e7effa1b0e2831a0691..148096f3b663885adbba6cf33e115f0d0c21f196 100644 --- a/product/ERP5OOo/tests/testOOoImport.py +++ b/product/ERP5OOo/tests/testOOoImport.py @@ -30,33 +30,21 @@ import unittest import os -from Testing import ZopeTestCase from AccessControl.SecurityManagement import newSecurityManager from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from Products.ERP5Type.tests.ERP5TypeTestCase import install_product_quiet from Products.ERP5Type.tests.ERP5TypeTestCase import _getConversionServerDict +from Products.ERP5Type.tests.utils import FileUpload from Products.ERP5Type.tests.Sequence import SequenceList from Products.ERP5OOo.OOoUtils import OOoParser from Products.ERP5Form.PreferenceTool import Priority from DateTime import DateTime -ZopeTestCase.installProduct('Sessions', quiet=install_product_quiet) - -class FileUploadTest(file): - - __allow_access_to_unprotected_subobjects__=1 - - def __init__(self, path, name): - self.filename = name - file.__init__(self, path, 'rb') - self.headers = {} - def makeFilePath(name): return os.path.join(os.path.dirname(__file__), 'test_document', name) def makeFileUpload(name): path = makeFilePath(name) - return FileUploadTest(path, name) + return FileUpload(path, name) class TestOOoImportMixin(ERP5TypeTestCase): gender_base_cat_id = 'gender' @@ -770,62 +758,6 @@ class TestOOoImport(TestOOoImportMixin): self.assertEquals(['france'], list(region.europe.france.europe.objectIds())) self.assertEquals([], list(region.europe.france.europe.france.objectIds())) - - # OOoParser tests - def test_getSpreadSheetMapping(self): - parser = OOoParser() - parser.openFile(open(makeFilePath('import_data_list.ods'), 'rb')) - mapping = parser.getSpreadsheetsMapping() - self.assertEquals(['Person'], mapping.keys()) - person_mapping = mapping['Person'] - self.assertTrue(isinstance(person_mapping, list)) - self.assertTrue(102, len(person_mapping)) - self.assertEquals(person_mapping[0], - ['Title', 'First Name', 'Last Name', 'Default Email Text']) - self.assertEquals(person_mapping[1], - ['John Doe 0', 'John', 'Doe 0', 'john.doe0@foo.com']) - - def test_openFromString(self): - parser = OOoParser() - parser.openFromString( - open(makeFilePath('import_data_list.ods'), 'rb').read()) - mapping = parser.getSpreadsheetsMapping() - self.assertEquals(['Person'], mapping.keys()) - - def test_getSpreadSheetMappingStyle(self): - parser = OOoParser() - parser.openFile(open(makeFilePath('import_data_list_with_style.ods'), 'rb')) - mapping = parser.getSpreadsheetsMapping() - self.assertEquals(['Feuille1'], mapping.keys()) - self.assertEquals(mapping['Feuille1'][1], - ['a line with style']) - self.assertEquals(mapping['Feuille1'][2], - ['a line with multiple styles']) - self.assertEquals(mapping['Feuille1'][3], - ['http://www.erp5.org']) - self.assertEquals(mapping['Feuille1'][4], - ['john.doe@example.com']) - - def test_getSpreadSheetMappingDataTypes(self): - parser = OOoParser() - parser.openFile(open(makeFilePath('import_data_list_data_type.ods'), 'rb')) - mapping = parser.getSpreadsheetsMapping() - self.assertEquals(['Feuille1'], mapping.keys()) - self.assertEquals(mapping['Feuille1'][0], - ['1234.5678']) - self.assertEquals(mapping['Feuille1'][1], - ['1234.5678']) - self.assertEquals(mapping['Feuille1'][2], - ['0.1']) - self.assertEquals(mapping['Feuille1'][3], - ['2008-11-14']) - self.assertEquals(mapping['Feuille1'][4], - ['2008-11-14T10:20:30']) # supported by DateTime - self.assertEquals(mapping['Feuille1'][5], - ['PT12H34M56S']) # maybe not good, this is raw format - self.assertEquals(mapping['Feuille1'][6], - ['With note']) - # Base_getCategoriesSpreadSheetMapping tests def test_Base_getCategoriesSpreadSheetMapping(self): # test structure returned by Base_getCategoriesSpreadSheetMapping diff --git a/product/ERP5OOo/tests/testOOoParser.py b/product/ERP5OOo/tests/testOOoParser.py new file mode 100644 index 0000000000000000000000000000000000000000..80f870ebf7d1daa0ae65cfb3a02841eca142202b --- /dev/null +++ b/product/ERP5OOo/tests/testOOoParser.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- +############################################################################## +# Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + + +import unittest +import os +from DateTime import DateTime + +from Products.ERP5OOo.OOoUtils import OOoParser + + +def makeFilePath(name): + return os.path.join(os.path.dirname(__file__), 'test_document', name) + +class TestOOoParser(unittest.TestCase): + """ OOoParser tests + """ + def test_getSpreadSheetMapping(self): + parser = OOoParser() + parser.openFile(open(makeFilePath('import_data_list.ods'), 'rb')) + mapping = parser.getSpreadsheetsMapping() + self.assertEquals(['Person'], mapping.keys()) + person_mapping = mapping['Person'] + self.assertTrue(isinstance(person_mapping, list)) + self.assertTrue(102, len(person_mapping)) + self.assertEquals(person_mapping[0], + ['Title', 'First Name', 'Last Name', 'Default Email Text']) + self.assertEquals(person_mapping[1], + ['John Doe 0', 'John', 'Doe 0', 'john.doe0@foo.com']) + + def test_openFromString(self): + parser = OOoParser() + parser.openFromString( + open(makeFilePath('import_data_list.ods'), 'rb').read()) + mapping = parser.getSpreadsheetsMapping() + self.assertEquals(['Person'], mapping.keys()) + + def test_getSpreadSheetMappingStyle(self): + parser = OOoParser() + parser.openFile(open(makeFilePath('import_data_list_with_style.ods'), 'rb')) + mapping = parser.getSpreadsheetsMapping() + self.assertEquals(['Feuille1'], mapping.keys()) + self.assertEquals(mapping['Feuille1'][1], + ['a line with style']) + self.assertEquals(mapping['Feuille1'][2], + ['a line with multiple styles']) + self.assertEquals(mapping['Feuille1'][3], + ['http://www.erp5.org']) + self.assertEquals(mapping['Feuille1'][4], + ['john.doe@example.com']) + + def test_getSpreadSheetMappingDataTypes(self): + parser = OOoParser() + parser.openFile(open(makeFilePath('import_data_list_data_type.ods'), 'rb')) + mapping = parser.getSpreadsheetsMapping() + self.assertEquals(['Feuille1'], mapping.keys()) + self.assertEquals(mapping['Feuille1'][0], + ['1234.5678']) + self.assertEquals(mapping['Feuille1'][1], + ['1234.5678']) + self.assertEquals(mapping['Feuille1'][2], + ['0.1']) + self.assertEquals(mapping['Feuille1'][3], + ['2008-11-14']) + self.assertEquals(mapping['Feuille1'][4], + ['2008-11-14T10:20:30']) # supported by DateTime + self.assertEquals(mapping['Feuille1'][5], + ['PT12H34M56S']) # maybe not good, this is raw format + self.assertEquals(mapping['Feuille1'][6], + ['With note']) + + def test_BigSpreadSheet_can_be_parsed(self,): + """Test than OOoimport can parse a file with more than 40000 lines + """ + parser = OOoParser() + parser.openFile(open(makeFilePath('import_big_spreadsheet.ods'), 'rb')) + mapping = parser.getSpreadsheetsMapping() + not_ok = 1 + for spread, values in mapping.iteritems(): + self.assertEquals(len(values), 41001) + not_ok = 0 + if not_ok: + self.fail('Spreadsheet not read!') + + def test_getSpreadSheetMappingText(self): + parser = OOoParser() + parser.openFile(open(makeFilePath('complex_text.ods'), 'rb')) + mapping = parser.getSpreadsheetsMapping() + self.assertEquals(['Feuille1'], mapping.keys()) + self.assertEquals(mapping['Feuille1'][0], [' leading space']) + self.assertEquals(mapping['Feuille1'][1], [' leading space']) + self.assertEquals(mapping['Feuille1'][2], ['tab\t']) + self.assertEquals(mapping['Feuille1'][3], ['New\nLine']) + + def test_getSpreadSheetMappingEmptyCells(self): + parser = OOoParser() + parser.openFile(open(makeFilePath('empty_cells.ods'), 'rb')) + mapping = parser.getSpreadsheetsMapping() + self.assertEquals(['Feuille1'], mapping.keys()) + self.assertEquals(mapping['Feuille1'], + [ + ['A1', None, 'C1'], + [], + [None, 'B3',], + ]) + + +def test_suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(TestOOoParser)) + return suite diff --git a/product/ERP5OOo/tests/test_document/complex_text.ods b/product/ERP5OOo/tests/test_document/complex_text.ods new file mode 100644 index 0000000000000000000000000000000000000000..0a521e364ab0717b91dc8cb82d381dcfbe7b4cfc Binary files /dev/null and b/product/ERP5OOo/tests/test_document/complex_text.ods differ diff --git a/product/ERP5OOo/tests/test_document/empty_cells.ods b/product/ERP5OOo/tests/test_document/empty_cells.ods new file mode 100644 index 0000000000000000000000000000000000000000..68e0eade818161501bed195d770c6f601aa54abc Binary files /dev/null and b/product/ERP5OOo/tests/test_document/empty_cells.ods differ diff --git a/product/ERP5Security/tests/testERP5Security.py b/product/ERP5Security/tests/testERP5Security.py index 8f0216b14728c0a08f303b0966c2127902ae7fc0..fab5dc0f27eec19a7a9ff4bc0d474a6d21fbac74 100644 --- a/product/ERP5Security/tests/testERP5Security.py +++ b/product/ERP5Security/tests/testERP5Security.py @@ -31,9 +31,6 @@ """ import unittest - -import transaction - from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase from Products.ERP5Type.tests.utils import createZODBPythonScript from AccessControl.SecurityManagement import newSecurityManager @@ -951,7 +948,7 @@ class TestLocalRoleManagement(ERP5TypeTestCase): self.assertTrue(len(person_module.keys())) # When we update security of a module... person_module.reindexObjectSecurity() - transaction.commit() + self.commit() # we don't want all underlying objects to be recursively # reindexed. After all, its contents do not acquire local roles. check(['immediateReindexObject']) @@ -963,7 +960,7 @@ class TestLocalRoleManagement(ERP5TypeTestCase): for rec in person_module.searchFolder(reference=self.username)] self.assertTrue(len(person.objectIds())) person.reindexObjectSecurity() - transaction.commit() + self.commit() check(['recursiveImmediateReindexObject']) self.tic() diff --git a/product/ERP5SyncML/Conduit/SharedVCardConduit.py b/product/ERP5SyncML/Conduit/SharedVCardConduit.py old mode 100755 new mode 100644 diff --git a/product/ERP5SyncML/Conduit/VCardConduit.py b/product/ERP5SyncML/Conduit/VCardConduit.py old mode 100755 new mode 100644 diff --git a/product/ERP5SyncML/tests/testERP5SyncMLVCard.py b/product/ERP5SyncML/tests/testERP5SyncMLVCard.py old mode 100755 new mode 100644 diff --git a/product/ERP5Type/Accessor/Value.py b/product/ERP5Type/Accessor/Value.py index d7d4f6889a1d6faa5b4f7ab945334848121e291e..9d22ec57f2f85f2a3b3b54e1add6add92a04bd8a 100644 --- a/product/ERP5Type/Accessor/Value.py +++ b/product/ERP5Type/Accessor/Value.py @@ -48,8 +48,7 @@ class SetSetter(BaseSetter): def __call__(self, instance, *args, **kw): if self._warning: LOG("ERP5Type Deprecated Setter Id:",0, self._id) - value = set(args[0]) - instance._setValue(self._key, value, + instance._setValue(self._key, set(args[0]), spec=kw.get('spec',()), filter=kw.get('filter', None), portal_type=kw.get('portal_type',()), @@ -451,7 +450,7 @@ class UidSetSetter(BaseSetter): def __call__(self, instance, *args, **kw): if self._warning: LOG("ERP5Type Deprecated Getter Id:",0, self._id) - instance._setValueUidList(self._key, args[0], + instance._setValueUidList(self._key, set(args[0]), spec=kw.get('spec',()), filter=kw.get('filter', None), portal_type=kw.get('portal_type',()), diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py index 416d21c59967a4690f8722e37d829eac5370f12a..e93b9cf47be6833fbbf9984f4583c9b6609138c7 100644 --- a/product/ERP5Type/Base.py +++ b/product/ERP5Type/Base.py @@ -2013,11 +2013,8 @@ class Base( CopyContainer, checked_permission=None): # We must do an ordered list so we can not use the previous method # self._setValue(id, self.portal_catalog.getObjectList(uids), spec=spec) - references = [] - if type(uids) not in (type(()), type([])): - uids = [uids] - for uid in uids: - references.append(self.portal_catalog.getObject(uid)) + references = map(self.getPortalObject().portal_catalog.getObject, + (uids,) if isinstance(uids, (int, long)) else uids) self._setValue(id, references, spec=spec, filter=filter, portal_type=portal_type, keep_default=keep_default, checked_permission=checked_permission) @@ -2178,9 +2175,6 @@ class Base( CopyContainer, """ return self._getCategoryTool().getAcquiredCategoryList(self) - def _getAcquiredCategoryList(self): - return self._getCategoryTool()._getAcquiredCategoryList(self) - security.declareProtected( Permissions.ModifyPortalContent, 'setCategoryList' ) def setCategoryList(self, path_list): self.portal_categories.setCategoryList(self, path_list) diff --git a/product/ERP5Type/ConnectionPlugin/TimeoutTransport.py b/product/ERP5Type/ConnectionPlugin/TimeoutTransport.py index 5df75910a99d7e0ff6e233295f092165e396d364..f327e1fcfd2a9a06d2058c49a8d0cb9be243a456 100644 --- a/product/ERP5Type/ConnectionPlugin/TimeoutTransport.py +++ b/product/ERP5Type/ConnectionPlugin/TimeoutTransport.py @@ -35,27 +35,20 @@ class TimeoutTransport(SafeTransport): """A xmlrpc transport with configurable timeout. """ def __init__(self, timeout=None, scheme='http'): - self._timeout = timeout - self._scheme = scheme SafeTransport.__init__(self) + transport_class = Transport if scheme == 'http' else SafeTransport + def make_connection(*args, **kw): + connection = transport_class.make_connection(self, *args, **kw) + if timeout is not None: + # BBB: On Python < 2.7, HTTP connection is wrapped + getattr(connection, '_conn', connection).timeout = timeout + return connection + self.make_connection = make_connection def send_content(self, connection, request_body): try: - connection.putheader("Content-Type", "text/xml") - connection.putheader("Content-Length", str(len(request_body))) - connection.endheaders() - if self._timeout: - connection._conn.sock.settimeout(self._timeout) - if request_body: - connection.send(request_body) + return SafeTransport.send_content(self, connection, request_body) except socket.error, e: - raise ProtocolError(connection._conn.host, -1, + # BBB: On Python < 2.7, HTTP connection is wrapped + raise ProtocolError(getattr(connection, '_conn', connection).host, -1, "Could not connect to server", None) - - def make_connection(self, host): - try: - if self._scheme == 'http': - return Transport.make_connection(self, host) - return SafeTransport.make_connection(self, host) - except socket.error, e: - raise ProtocolError(host, -1, "Could not connect to server", None) diff --git a/product/ERP5Type/Core/Folder.py b/product/ERP5Type/Core/Folder.py index 21c7d36142595845b8cd17571ff5c644c1d6ceb4..58d6e6bff8eeb8a0f5723ac272a5922a46008d5a 100644 --- a/product/ERP5Type/Core/Folder.py +++ b/product/ERP5Type/Core/Folder.py @@ -666,13 +666,6 @@ class Folder(CopyContainer, CMFBTreeFolder, CMFHBTreeFolder, Base, FolderMixIn): return CMFHBTreeFolder._initBTrees(self) else: return CMFBTreeFolder._initBTrees(self) - - def initBTrees(self): - """ """ - if self._folder_handler == HBTREE_HANDLER: - return CMFHBTreeFolder.initBTrees(self) - else: - return CMFBTreeFolder.initBTrees(self) def hashId(self, id): """Return a hash of id diff --git a/product/ERP5Type/Core/MemcachedPlugin.py b/product/ERP5Type/Core/MemcachedPlugin.py index a1d28048571d019ad864cd1669e5b4f3e8a2be2a..a667b893d320016c0803a8d2cb6955fe36a0a74b 100644 --- a/product/ERP5Type/Core/MemcachedPlugin.py +++ b/product/ERP5Type/Core/MemcachedPlugin.py @@ -31,7 +31,8 @@ from AccessControl import ClassSecurityInfo from Products.ERP5Type.XMLObject import XMLObject from Products.ERP5Type import PropertySheet from Products.ERP5Type import Permissions -from Products.ERP5Type.Tool.MemcachedTool import memcached_dict_pool +from Products.ERP5Type.Tool.MemcachedTool import MemcachedDict +from Products.ERP5Type.Globals import InitializeClass class MemcachedPlugin(XMLObject): """Memcached Plugin authorise Memcached Tool to connect several backends. @@ -57,16 +58,25 @@ class MemcachedPlugin(XMLObject): , PropertySheet.Url ) - def manage_beforeDelete(self, *args, **kw): + security.declarePublic('getConnection') + def getConnection(self): try: - del(memcached_dict_pool.memcached_dict) + key, connection = self._v_connection except AttributeError: - pass - XMLObject.manage_beforeDelete(self, *args, **kw) + key = None + url = self.getUrlString() + expiration = self.getExpirationTime() + max_key_length = self.getServerMaxKeyLength() + max_value_length = self.getServerMaxValueLength() + my_key = (url, expiration, max_key_length, max_value_length) + if key != my_key: + connection = MemcachedDict( + (url, ), + expiration_time=expiration, + server_max_key_length=max_key_length, + server_max_value_length=max_value_length, + ) + self._v_connection = my_key, connection + return connection - def manage_afterAdd(self, *args, **kw): - try: - del(memcached_dict_pool.memcached_dict) - except AttributeError: - pass - XMLObject.manage_afterAdd(self, *args, **kw) +InitializeClass(MemcachedPlugin) diff --git a/product/ERP5Type/Tool/MemcachedTool.py b/product/ERP5Type/Tool/MemcachedTool.py index 98569579f8943ce6eec4e7cdde0902e7a7e9b968..96e91cfee7abca80d9f36c4bdac6882db374c4b8 100644 --- a/product/ERP5Type/Tool/MemcachedTool.py +++ b/product/ERP5Type/Tool/MemcachedTool.py @@ -26,16 +26,24 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## - import time -from threading import local from Products.ERP5Type.Tool.BaseTool import BaseTool from Products.ERP5Type import Permissions, _dtmldir from AccessControl import ClassSecurityInfo -from Products.ERP5Type.Globals import DTMLFile +from Products.ERP5Type.Globals import DTMLFile, InitializeClass from quopri import encodestring MEMCACHED_TOOL_MODIFIED_FLAG_PROPERTY_ID = '_v_memcached_edited' +class _MemcacheTool(BaseTool): + id = "portal_memcached" + meta_type = "ERP5 Memcached Tool" + portal_type = "Memcached Tool" + manage_options = ( + { + 'label': 'Configure', + 'action': 'memcached_tool_configure', + }, + ) + BaseTool.manage_options try: import memcache @@ -50,19 +58,15 @@ def encodeKey(key): # control characters and white spaces. return encodestring(key, True).replace('\n', '').replace('\r', '') -memcached_dict_pool = local() if memcache is not None: # Real memcache tool - import memcache - import traceback from Shared.DC.ZRDB.TM import TM from Products.PythonScripts.Utility import allow_class from zLOG import LOG - MARKER = tuple() - UPDATE_ACTION = 'update' - DELETE_ACTION = 'delete' - MEMCACHED_MINIMUM_KEY_CHAR_ORD = ord(' ') + MARKER = object() + DELETE_ACTION = 0 + UPDATE_ACTION = 1 class MemcachedDict(TM): """ @@ -70,56 +74,48 @@ if memcache is not None: available). Uses transactions to only update memcached at commit time. No conflict generation/resolution : last edit wins. - - TODO: - - prove that concurency handling in event queuing is not needed - - make picklable ? """ - - def __init__(self, server_list=('127.0.0.1:11211',), expiration_time=0, - server_max_key_length=MARKER, server_max_value_length=MARKER): - """ - Initialise properties : - memcached_connection - Connection to memcached. - local_cache - Dictionnary used as a connection cache with duration limited to - transaction length. - scheduled_action_dict - Each key in this dictionary must be handled at transaction commit. - Value gives the action to take : - UPDATE_ACTION - Take value from local cache and send it to memcached. - DELETE_ACTION - Send a delete order to memcached. - """ + def __init__(self, server_list, expiration_time=0, + server_max_key_length=memcache.SERVER_MAX_KEY_LENGTH, + server_max_value_length=memcache.SERVER_MAX_VALUE_LENGTH, + ): + """ + server_list (tuple of strings) + Servers to connect to, in 'host:port' format. + expiration_time (int) + Entry expiration time. See "Expiration times" in memcache protocol + spec. Summary: + 0 = never + less than 60*60*24*30 = time starting at entry creation/update + more = absolute unix timestamp + server_max_key_length (int) + Maximum key length. Storing larger keys will cause an exception to be + raised. + server_max_value_length (int) + Maximum value length. Storing larger values will cause an exception to + be raised. + """ + # connection cache with duration limited to transaction length. self.local_cache = {} + # Each key in scheduled_action_dict must be handled at commit. + # UPDATE_ACTION: send local_cache value to server + # DELETE_ACTION: delete on server self.scheduled_action_dict = {} self.server_list = server_list # see "Expiration times" from memcached protocol docs - self.expiration_time_since_epoch = expiration_time > (60*60*24*30) + # (this simulates relative expiration time greater than 30 days) + self.expiration_time_since_epoch = expiration_time >= 2592000 self.expiration_time = expiration_time self.server_max_key_length = server_max_key_length self.server_max_value_length = server_max_value_length self._initialiseConnection() def _initialiseConnection(self): - try: - self.memcached_connection.disconnect_all() - except AttributeError: - pass - init_dict = {} - if self.server_max_key_length is not MARKER: - init_dict['server_max_key_length'] = self.server_max_key_length - if self.server_max_value_length is not MARKER: - init_dict['server_max_value_length'] = self.server_max_value_length - self.memcached_connection = memcache.Client(self.server_list, **init_dict) - - def __del__(self): - """ - Close connection before deleting object. - """ - self.memcached_connection.disconnect_all() + self.memcached_connection = memcache.Client( + self.server_list, + server_max_key_length=self.server_max_key_length, + server_max_value_length=self.server_max_value_length, + ) def _finish(self, *ignored): """ @@ -157,14 +153,13 @@ if memcache is not None: if not succeed: LOG('MemcacheTool', 0, 'delete command to memcached server (%r) failed' % (self.server_list,)) except: - LOG('MemcachedDict', 0, 'An exception occured during _finish : %s' % (traceback.format_exc(), )) - self.scheduled_action_dict.clear() - self.local_cache.clear() + LOG('MemcachedDict', 0, 'An exception occured during _finish', error=True) + self.__cleanup() def _abort(self, *ignored): - """ - Cleanup the action dict and invalidate local cache. - """ + self.__cleanup() + + def __cleanup(self): self.local_cache.clear() self.scheduled_action_dict.clear() @@ -215,28 +210,19 @@ if memcache is not None: self.local_cache[key] = None def set(self, key, value): - """ - Set an item to local cache and schedule update of memcached. - """ return self.__setitem__(key, value) def get(self, key, default=None): - """ - Get an item from local cache, otherwise from memcached. - """ try: return self.__getitem__(key) except KeyError: return default - class SharedDict: + class SharedDict(object): """ Class to make possible for multiple "users" to store data in the same dictionary without risking to overwrite other's data. Each "user" of the dictionary must get an instance of this class. - - TODO: - - handle persistence ? """ def __init__(self, dictionary, prefix): @@ -250,29 +236,17 @@ if memcache is not None: self.prefix = prefix def _prefixKey(self, key): - """ - Prefix key with self.prefix . - """ if not isinstance(key, basestring): raise TypeError, 'Key %s is not a string. Only strings are supported as key in SharedDict' % (repr(key), ) return '%s_%s' % (self.prefix, key) def __getitem__(self, key): - """ - Get item from memcached. - """ return self._dictionary.__getitem__(self._prefixKey(key)) def __setitem__(self, key, value): - """ - Put item in memcached. - """ self._dictionary.__setitem__(self._prefixKey(key), value) def __delitem__(self, key): - """ - Delete item from memcached. - """ self._dictionary.__delitem__(self._prefixKey(key)) # These are the method names called by zope @@ -281,55 +255,20 @@ if memcache is not None: __guarded_delitem__ = __delitem__ def get(self, key, default=None): - """ - Get item from memcached. - """ return self._dictionary.get(self._prefixKey(key), default) def set(self, key, value): - """ - Put item in memcached. - """ self._dictionary.set(self._prefixKey(key), value) allow_class(SharedDict) - class MemcachedTool(BaseTool): + class MemcachedTool(_MemcacheTool): """ Memcached interface available as a tool. """ - id = "portal_memcached" - meta_type = "ERP5 Memcached Tool" - portal_type = "Memcached Tool" - security = ClassSecurityInfo() - manage_options = ({'label': 'Configure', - 'action': 'memcached_tool_configure', - },) + BaseTool.manage_options - memcached_tool_configure = DTMLFile('memcached_tool_configure', _dtmldir) - - def _getMemcachedDict(self, plugin_path): - """ - Return used memcached dict. - Create it if does not exist. - """ - try: - local_dict = memcached_dict_pool.local_dict - except AttributeError: - local_dict = memcached_dict_pool.local_dict = {} - try: - dictionary = local_dict[plugin_path] - except KeyError: - memcached_plugin = self.restrictedTraverse(plugin_path, None) - if memcached_plugin is None: - raise ValueError, 'Memcached Plugin does not exists: %r' % (plugin_path,) - dictionary = MemcachedDict((memcached_plugin.getUrlString(''),), - expiration_time=memcached_plugin.getExpirationTime(), - server_max_key_length=memcached_plugin.getServerMaxKeyLength(), - server_max_value_length=memcached_plugin.getServerMaxValueLength()) - local_dict[plugin_path] = dictionary - return dictionary + erp5_site_global_id = '' security.declareProtected(Permissions.AccessContentsInformation, 'getMemcachedDict') def getMemcachedDict(self, key_prefix, plugin_path): @@ -344,26 +283,25 @@ if memcache is not None: plugin_path relative_url of dedicated Memcached Plugin """ - global_prefix = getattr(self, 'erp5_site_global_id', '') + memcached_plugin = self.restrictedTraverse(plugin_path, None) + if memcached_plugin is None: + raise ValueError('Memcached Plugin does not exists: %r' % ( + plugin_path, )) + global_prefix = self.erp5_site_global_id if global_prefix: - key_prefix = '%s_%s' % (global_prefix, key_prefix) - return SharedDict(self._getMemcachedDict(plugin_path), prefix=key_prefix) + key_prefix = global_prefix + '_' + key_prefix + return SharedDict(memcached_plugin.getConnection(), prefix=key_prefix) + InitializeClass(MemcachedTool) else: # Placeholder memcache tool - class MemcachedTool(BaseTool): + class MemcachedTool(_MemcachedTool): """ Dummy MemcachedTool placeholder. """ - id = "portal_memcached" - meta_type = "ERP5 Memcached Tool" - portal_type = "Memcached Tool" title = "DISABLED" security = ClassSecurityInfo() - manage_options = ({'label': 'Configure', - 'action': 'memcached_tool_configure', - },) + BaseTool.manage_options def failingMethod(self, *args, **kw): """ @@ -373,6 +311,5 @@ else: raise RuntimeError, 'MemcachedTool is disabled. You should ask the'\ ' server administrator to enable it by installing python-memcached.' - manage_beforeDelete = failingMethod memcached_tool_configure = failingMethod getMemcachedDict = failingMethod diff --git a/product/ERP5Type/UnrestrictedMethod.py b/product/ERP5Type/UnrestrictedMethod.py index c1cf48f7f6a0971045c7566607308209ce8796dc..5a257786dc9b5d7e779d23d06f0a56710e8918a2 100644 --- a/product/ERP5Type/UnrestrictedMethod.py +++ b/product/ERP5Type/UnrestrictedMethod.py @@ -30,7 +30,6 @@ from AccessControl.User import UnrestrictedUser from AccessControl.SpecialUsers import system from AccessControl.SecurityManagement import getSecurityManager, \ newSecurityManager, setSecurityManager -from Zope2 import app from Products.ERP5Type.Utils import simple_decorator class PrivilegedUser(UnrestrictedUser): @@ -86,7 +85,9 @@ def unrestricted_apply(function, args=(), kw={}): # XXX-JPS: naming # XXX is it better to get roles from the parent (i.e. portal)? uf = user.aq_inner.aq_parent except AttributeError: - uf = app().acl_users + # XXX: local imports are bad, getSite should be moved to ERP5Type. + from Products.ERP5.ERP5Site import getSite + uf = getSite().acl_users role_list = uf.valid_roles() if anonymous: # If the user is anonymous, use the id of the system user, diff --git a/product/ERP5Type/ZopePatch.py b/product/ERP5Type/ZopePatch.py index 6ea50e2c658fda79fb8448962f5b4f5eab729d16..be89724ff245a2fee85909977b60807293d539ef 100644 --- a/product/ERP5Type/ZopePatch.py +++ b/product/ERP5Type/ZopePatch.py @@ -34,6 +34,7 @@ from Products.ERP5Type.patches import WorkflowTool from Products.ERP5Type.patches import XMLExportImport from Products.ERP5Type.patches import ppml from Products.ERP5Type.patches import Expression +from Products.ERP5Type.patches import sqltest from Products.ERP5Type.patches import sqlvar from Products.ERP5Type.patches import CMFCatalogAware from Products.ERP5Type.patches import ProductContext diff --git a/product/ERP5Type/patches/BTreeFolder2.py b/product/ERP5Type/patches/BTreeFolder2.py index 95ecca37a2a5f089881098b7a6cff0054d25dd37..bc4076d00b6b7666cc0c7be66ae31e5a1d160510 100644 --- a/product/ERP5Type/patches/BTreeFolder2.py +++ b/product/ERP5Type/patches/BTreeFolder2.py @@ -101,3 +101,10 @@ BTreeFolder2Base._cleanup = _cleanup # Otherwise, we use superclass' __contains__ implementation, which uses # objectIds, which is inefficient in HBTreeFolder2 to lookup a single key. BTreeFolder2Base.__contains__ = BTreeFolder2Base.has_key + +# BBB: Remove workaround on recent BTreeFolder2Base +# OFS.ObjectManager really needs to be fixed properly. +try: + del BTreeFolder2Base.__getitem__ +except AttributeError: + pass diff --git a/product/ERP5Type/patches/DemoStorage.py b/product/ERP5Type/patches/DemoStorage.py index 7feab074a09af3dfcff8cf4e05cd4e84f897dcce..d9fe84d86a727da9091d9eeeafd19fc0d0eaf64a 100644 --- a/product/ERP5Type/patches/DemoStorage.py +++ b/product/ERP5Type/patches/DemoStorage.py @@ -1,8 +1,7 @@ ############################################################################## # # Copyright (c) 2001, 2002 Zope Corporation and Contributors. -# Copyright (c) 2010 Nexedi SARL and Contributors. All Rights Reserved. -# All Rights Reserved. +# Copyright (c) 2010-2013 Nexedi SARL and Contributors. All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. @@ -13,43 +12,27 @@ # ############################################################################## -from ZODB.DemoStorage import DemoStorage -from ZODB.ConflictResolution import tryToResolveConflict, ResolvedSerial +from ZODB import DemoStorage as _DemoStorage +from ZODB.ConflictResolution import ConflictResolvingStorage, ResolvedSerial +from ZODB.POSException import ConflictError -if 1: +assert not issubclass(_DemoStorage.DemoStorage, ConflictResolvingStorage) + +class DemoStorage(_DemoStorage.DemoStorage, ConflictResolvingStorage): ## # Implement conflict resolution for DemoStorage # - import ZODB.POSException def store(self, oid, serial, data, version, transaction): - assert version=='', "versions aren't supported" - if transaction is not self._transaction: - raise ZODB.POSException.StorageTransactionError(self, transaction) - - # Since the OID is being used, we don't have to keep up with it any - # more. Save it now so we can forget it later. :) - self._stored_oids.add(oid) - - # See if we already have changes for this oid try: - old = self.changes.load(oid, '')[1] - except ZODB.POSException.POSKeyError: - try: - old = self.base.load(oid, '')[1] - except ZODB.POSException.POSKeyError: - old = serial - - if old != serial: - # <patch> - rdata = tryToResolveConflict(self, oid, old, serial, data) - if rdata is None: - raise ZODB.POSException.ConflictError( - oid=oid, serials=(old, serial), data=data) + return super(DemoStorage, self).store( + oid, serial, data, version, transaction) + except ConflictError, e: + old = e.serials[0] + rdata = self.tryToResolveConflict(oid, old, serial, data) + if rdata is None: # BBB: Zope < 2.13 + raise ConflictError(oid=oid, serials=(old, serial), data=data) self.changes.store(oid, old, rdata, '', transaction) return ResolvedSerial - # </patch> - - return self.changes.store(oid, serial, data, '', transaction) - DemoStorage.store = store +_DemoStorage.DemoStorage = DemoStorage diff --git a/product/ERP5Type/patches/noZopeHelp.py b/product/ERP5Type/patches/noZopeHelp.py new file mode 100644 index 0000000000000000000000000000000000000000..0d558c1c321b325ad8c3667cf076709072ef40d8 --- /dev/null +++ b/product/ERP5Type/patches/noZopeHelp.py @@ -0,0 +1,25 @@ +############################################################################## +# +# Copyright (c) 2005 Zope Foundation and Contributors. +# Copyright (c) 2013 Nexedi SARL and Contributors. All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## + +# copied & pasted from Testing.ZopeTestCase.ZopeLite +import App.ProductContext + +if 1: + # Avoid expensive help registration + def null_register_topic(self,id,topic): pass + App.ProductContext.ProductContext.registerHelpTopic = null_register_topic + def null_register_title(self,title): pass + App.ProductContext.ProductContext.registerHelpTitle = null_register_title + def null_register_help(self,directory='',clear=1,title_re=None): pass + App.ProductContext.ProductContext.registerHelp = null_register_help diff --git a/product/ERP5Type/patches/sqltest.py b/product/ERP5Type/patches/sqltest.py new file mode 100644 index 0000000000000000000000000000000000000000..decb478e7f45cc53e640109107eeeaae682cd058 --- /dev/null +++ b/product/ERP5Type/patches/sqltest.py @@ -0,0 +1,96 @@ +############################################################################## +# +# Copyright (c) 2002 Zope Foundation and Contributors. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE +# +############################################################################## +from Shared.DC.ZRDB.sqltest import * + +list_type_list = list, tuple, set, frozenset, dict + +if 1: # For easy diff with original + def render(self, md): + name=self.__name__ + + t=self.type + args=self.args + try: + expr=self.expr + if type(expr) is type(''): + v=md[expr] + else: + v=expr(md) + except KeyError: + if args.has_key('optional') and args['optional']: + return '' + raise ValueError, 'Missing input variable, <em>%s</em>' % name + + # PATCH: use isinstance instead of type comparison, to allow + # subclassing. + if isinstance(v, list_type_list): + if len(v) > 1 and not self.multiple: + raise ValueError, ( + 'multiple values are not allowed for <em>%s</em>' + % name) + else: v=[v] + + vs=[] + for v in v: + if not v and type(v) is StringType and t != 'string': continue + if t=='int': + try: + if type(v) is StringType: + if v[-1:]=='L': + v=v[:-1] + atoi(v) + else: v=str(int(v)) + except ValueError: + raise ValueError, ( + 'Invalid integer value for <em>%s</em>' % name) + elif t=='float': + if not v and type(v) is StringType: continue + try: + if type(v) is StringType: atof(v) + else: v=str(float(v)) + except ValueError: + raise ValueError, ( + 'Invalid floating-point value for <em>%s</em>' % name) + + else: + if not isinstance(v, (str, unicode)): + v = str(v) + v=md.getitem('sql_quote__',0)(v) + #if find(v,"\'") >= 0: v=join(split(v,"\'"),"''") + #v="'%s'" % v + vs.append(v) + + if not vs and t=='nb': + if args.has_key('optional') and args['optional']: + return '' + else: + err = 'Invalid empty string value for <em>%s</em>' % name + raise ValueError, err + + + if not vs: + if self.optional: return '' + raise ValueError, ( + 'No input was provided for <em>%s</em>' % name) + + if len(vs) > 1: + vs=join(map(str,vs),', ') + if self.op == '<>': + ## Do the equivalent of 'not-equal' for a list, + ## "a not in (b,c)" + return "%s not in (%s)" % (self.column, vs) + else: + ## "a in (b,c)" + return "%s in (%s)" % (self.column, vs) + return "%s %s %s" % (self.column, self.op, vs[0]) + SQLTest.render = SQLTest.__call__ = render diff --git a/product/ERP5Type/patches/unicodeconflictresolver.py b/product/ERP5Type/patches/unicodeconflictresolver.py index 77c3ea92112419cbafbe1ca0ac8bd17f27154e94..ee2097532459ff4987dfa5ca9df071a3c6d4c080 100644 --- a/product/ERP5Type/patches/unicodeconflictresolver.py +++ b/product/ERP5Type/patches/unicodeconflictresolver.py @@ -35,7 +35,7 @@ def PreferredCharsetResolver_resolve(context, text, expression): except UnicodeDecodeError, e: tb_info = ''.join(traceback.format_stack()) logger.warn('UnicodeDecodeError: %s\ntext: %r\nat:\n%s' % - (e, text, tb_info)) + (e, repr(text), tb_info)) result = unicode(text, 'utf-8', 'replace') return result PreferredCharsetResolver.resolve = PreferredCharsetResolver_resolve diff --git a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py old mode 100755 new mode 100644 index 0bbe93a28d2a2362e3dd063a7ed910eeffdad60d..1d113159381be5620d3f484bf5cd5622c7afc1f8 --- a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py +++ b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py @@ -77,7 +77,8 @@ class Xvfb: xvfb_bin = os.environ.get("xvfb_bin", "Xvfb") with open(os.devnull, 'w') as null: self.process = subprocess.Popen( - (xvfb_bin, '-fbdir' , self.fbdir, display), + (xvfb_bin, '-fbdir' , self.fbdir, display, + '-screen', '0', '1280x1024x24'), stdout=null, stderr=null, close_fds=True) # try to check if X screen is available time.sleep(5) @@ -284,6 +285,8 @@ class FunctionalTestRunner: while self.getStatus() is None: time.sleep(10) if (time.time() - start) > float(self.timeout): + # TODO: here we could take a screenshot and display it in the report + # (maybe using data: scheme inside a <img>) raise TimeoutError("Test took more than %s seconds" % self.timeout) except: print("ERP5TypeFunctionalTestCase.test Exception: %r" % (sys.exc_info(),)) @@ -386,7 +389,7 @@ class ERP5TypeFunctionalTestCase(ERP5TypeTestCase): expected_failure, error_title_list = self.runner.processResult() except TimeoutError, e: self._verboseErrorLog(20) - raise TimeoutError(e) + raise # In case of failure, verbose the error_log entries in order to collect # appropriated information to debug the system. @@ -405,5 +408,5 @@ class ERP5TypeFunctionalTestCase(ERP5TypeTestCase): self.logMessage("-" * 79) self.logMessage(detail) self.logMessage("-" * 79) - self.assertEquals([], error_title_list) + self.assertEquals([], error_title_list, '\n'.join(error_title_list)) diff --git a/product/ERP5Type/tests/ERP5TypeTestCase.py b/product/ERP5Type/tests/ERP5TypeTestCase.py index 4f3b214af309eecf78f6b4234f2f1ec53e36a4dd..6484fd9b96317e00fb3f886db02b72c0129750b3 100644 --- a/product/ERP5Type/tests/ERP5TypeTestCase.py +++ b/product/ERP5Type/tests/ERP5TypeTestCase.py @@ -65,8 +65,6 @@ from zLOG import LOG, DEBUG from Products.ERP5Type.tests.backportUnittest import SetupSiteError from Products.ERP5Type.tests.utils import DummyMailHostMixin, parseListeningAddress -# Quiet messages when installing products -install_product_quiet = 1 # Quiet messages when installing business templates install_bt5_quiet = 0 @@ -79,37 +77,11 @@ if getattr(config, 'product_config', None) is None: config.product_config = {} config.product_config['deadlockdebugger'] = {'dump_url':'/manage_debug_threads'} -import OFS.Application -OFS.Application.import_products() - -# Std Zope Products -ZopeTestCase.installProduct('Photo', quiet=install_product_quiet) -ZopeTestCase.installProduct('Formulator', quiet=install_product_quiet) -ZopeTestCase.installProduct('FCKeditor', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZSQLMethods', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZMySQLDA', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZSQLCatalog', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZMailIn', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZGDChart', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZCTextIndex', quiet=install_product_quiet) -ZopeTestCase.installProduct('MailHost', quiet=install_product_quiet) -ZopeTestCase.installProduct('PageTemplates', quiet=install_product_quiet) -ZopeTestCase.installProduct('PythonScripts', quiet=install_product_quiet) -ZopeTestCase.installProduct('ExternalMethod', quiet=install_product_quiet) -ZopeTestCase.installProduct('Sessions', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZODBMountPoint', quiet=install_product_quiet) - from Testing.ZopeTestCase.layer import onsetup -# installProduct() is a delayed call, so imports that depend on products being -# "initialize"d should only be called "on setup". The decorator above delays -# calls to the decorated function until after Product initialization. -# Also, we need Five to wire all our CMF dependencies. -ZopeTestCase.installProduct('Five', quiet=install_product_quiet) try: # Workaround iHotFix patch that doesn't work with # ZopeTestCase REQUESTs - ZopeTestCase.installProduct('iHotfix', quiet=install_product_quiet) from Products import iHotfix from types import UnicodeType # revert monkey patchs from iHotfix @@ -126,7 +98,6 @@ try: iHotfix.iHotfixStringIO = UnicodeSafeStringIO except ImportError: pass -ZopeTestCase.installProduct('Localizer', quiet=install_product_quiet) try: # Workaround Localizer >= 1.2 patch that doesn't work with # ZopeTestCase REQUESTs (it's the same as iHotFix @@ -137,75 +108,10 @@ try: except ImportError: pass -try: - from Products.Localizer import patches - # originalStringIO has been removed from recent Localizer versions - from Products.Localizer.patches import originalStringIO - class UnicodeSafeStringIO(patches.originalStringIO): - """StringIO like class which never fails with unicode.""" - def write(self, s): - if isinstance(s, unicode): - s = s.encode('utf8', 'repr') - patches.originalStringIO.write(self, s) - # Localizer will patch PageTemplate StringIO with - patches.LocalizerStringIO = UnicodeSafeStringIO -except ImportError: - pass - from Products.ERP5Type.tests.ProcessingNodeTestCase import \ ProcessingNodeTestCase, patchActivityTool onsetup(patchActivityTool)() -ZopeTestCase.installProduct('TimerService', quiet=install_product_quiet) - -# CMF -ZopeTestCase.installProduct('CMFCore', quiet=install_product_quiet) -ZopeTestCase.installProduct('CMFDefault', quiet=install_product_quiet) -ZopeTestCase.installProduct('CMFTopic', quiet=install_product_quiet) -ZopeTestCase.installProduct('DCWorkflow', quiet=install_product_quiet) -ZopeTestCase.installProduct('CMFCalendar', quiet=install_product_quiet) - -# Based on CMF -ZopeTestCase.installProduct('CMFPhoto', quiet=install_product_quiet) -ZopeTestCase.installProduct('BTreeFolder2', quiet=install_product_quiet) -ZopeTestCase.installProduct('CMFReportTool', quiet=install_product_quiet) # Not required by ERP5Type but required by ERP5Form -ZopeTestCase.installProduct('TranslationService', quiet=install_product_quiet) -ZopeTestCase.installProduct('PortalTransforms', quiet=install_product_quiet) -ZopeTestCase.installProduct('MimetypesRegistry', quiet=install_product_quiet) - -# Security Stuff -ZopeTestCase.installProduct('PluggableAuthService', quiet=install_product_quiet) -ZopeTestCase.installProduct('ERP5Security', quiet=install_product_quiet) - -# Debugging -ZopeTestCase.installProduct('VerboseSecurity', quiet=install_product_quiet) -ZopeTestCase.installProduct('Zelenium', quiet=install_product_quiet) - -# ERP5 - ERP5Type product is installed last so that -# initializeProductDocumentRegistry is only called -# after all products which need to register their Document -# classes can register them by invoking updateGlobals in __init__ -ZopeTestCase.installProduct('CMFActivity', quiet=install_product_quiet) -ZopeTestCase.installProduct('ERP5Catalog', quiet=install_product_quiet) -ZopeTestCase.installProduct('ERP5Form', quiet=install_product_quiet) -ZopeTestCase.installProduct('ERP5', quiet=install_product_quiet) -ZopeTestCase.installProduct('ERP5SyncML', quiet=install_product_quiet) -ZopeTestCase.installProduct('ERP5Type', quiet=install_product_quiet) -ZopeTestCase.installProduct('CMFCategory', quiet=install_product_quiet) -ZopeTestCase.installProduct('ZMySQLDDA', quiet=install_product_quiet) - -ZopeTestCase.installProduct('ParsedXML', quiet=install_product_quiet) - -# Install everything else which looks like related to ERP5 -from OFS.Application import get_products -for priority, product_name, index, product_dir in get_products(): - # XXX very heuristic - if os.path.isdir(os.path.join(product_dir, product_name, 'Document')) \ - or os.path.isdir(os.path.join(product_dir, product_name, 'PropertySheet')) \ - or os.path.isdir(os.path.join(product_dir, product_name, 'Constraint')) \ - or os.path.isdir(os.path.join(product_dir, product_name, 'Tool')): - ZopeTestCase.installProduct(product_name, quiet=install_product_quiet) - from AccessControl.SecurityManagement import newSecurityManager, noSecurityManager from Acquisition import aq_base diff --git a/product/ERP5Type/tests/ProcessingNodeTestCase.py b/product/ERP5Type/tests/ProcessingNodeTestCase.py index e76caad0b44b901af4331492c474d8ad2cab4410..0c19982fb69947e88ede87f8e43cc4117f56635c 100644 --- a/product/ERP5Type/tests/ProcessingNodeTestCase.py +++ b/product/ERP5Type/tests/ProcessingNodeTestCase.py @@ -101,6 +101,9 @@ def Application_resolveConflict(self, old_state, saved_state, new_state): new_state = new_state.copy() old, saved, new = [set(state.pop('test_processing_nodes', {}).items()) for state in old_state, saved_state, new_state] + # The value of these attributes don't have proper __eq__ implementation. + for attr in '__before_traverse__', '__before_publishing_traverse__': + del old_state[attr], saved_state[attr] if sorted(old_state.items()) != sorted(saved_state.items()): raise ConflictError new |= saved - old diff --git a/product/ERP5Type/tests/_testPystone.py b/product/ERP5Type/tests/_testPystone.py new file mode 100644 index 0000000000000000000000000000000000000000..8950f1c00c9326621014fae9ee41408c7491aab0 --- /dev/null +++ b/product/ERP5Type/tests/_testPystone.py @@ -0,0 +1,36 @@ +############################################################################## +# +# Copyright (c) 2013 Nexedi SA and Contributors. All Rights Reserved. +# Sebastien Robin <seb@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +import unittest +from test import pystone + +class TestPystone(unittest.TestCase): + """Tests to get pystone value + """ + def test_pystone(self): + print "PYSTONE RESULT (time,score) : %r" % (pystone.pystones(),) diff --git a/product/ERP5Type/tests/runFunctionalTest.py b/product/ERP5Type/tests/runFunctionalTest.py old mode 100755 new mode 100644 diff --git a/product/ERP5Type/tests/runUnitTest.py b/product/ERP5Type/tests/runUnitTest.py old mode 100755 new mode 100644 index 215049c92bbd194c4243f5f04424862f0332e6af..19ff5f2fdd7da9915dab9268bb74526c111216f4 --- a/product/ERP5Type/tests/runUnitTest.py +++ b/product/ERP5Type/tests/runUnitTest.py @@ -322,7 +322,8 @@ class ERP5TypeTestLoader(unittest.TestLoader): return filtered_name_list return name_list -unittest.TestLoader = ERP5TypeTestLoader +# BBB: Python < 2.7 +getattr(unittest, 'loader', unittest).TestLoader = ERP5TypeTestLoader class DebugTestResult: """Wrap an unittest.TestResult, invoking pdb on errors / failures @@ -393,8 +394,9 @@ def runUnitTestList(test_list, verbosity=1, debug=0, run_only=None): else: products_home = os.path.join(instance_home, 'Products') - import OFS.Application - from Testing import ZopeTestCase + from Testing.ZopeTestCase import layer, PortalTestCase + _apply_patches = layer._deferred_setup.pop(0)[0] + assert _apply_patches.__name__ == '_apply_patches' from ZConfig.components.logger import handlers, logger, loghandler import logging @@ -448,12 +450,15 @@ def runUnitTestList(test_list, verbosity=1, debug=0, run_only=None): # change current directory to the test home, to create zLOG.log in this dir. os.chdir(tests_home) + from Products.ERP5Type.patches import noZopeHelp + from OFS.Application import AppInitializer + AppInitializer.install_session_data_manager = lambda self: None + # import ERP5TypeTestCase before calling layer.ZopeLite.setUp # XXX What if the unit test itself uses 'onsetup' ? We should be able to call # remaining 'onsetup' hooks just before executing the test suite. from Products.ERP5Type.tests.ERP5TypeTestCase import \ ProcessingNodeTestCase, ZEOServerTestCase, dummy_setUp, dummy_tearDown - from Testing.ZopeTestCase import layer # Since we're not using the zope.testing testrunner, we need to set up # the layer ourselves @@ -510,8 +515,8 @@ def runUnitTestList(test_list, verbosity=1, debug=0, run_only=None): # Skip all tests and monkeypatch PortalTestCase to skip # afterSetUp/beforeTearDown. ERP5TypeTestLoader._testMethodPrefix = 'dummy_test' - ZopeTestCase.PortalTestCase.setUp = dummy_setUp - ZopeTestCase.PortalTestCase.tearDown = dummy_tearDown + PortalTestCase.setUp = dummy_setUp + PortalTestCase.tearDown = dummy_tearDown elif debug: # Hack the profiler to run only specified test methods, # and wrap results when running in debug mode. diff --git a/product/ERP5Type/tests/testCopySupport.py b/product/ERP5Type/tests/testCopySupport.py index cc8c83e0495ea81c7369f2a236e118e8ef3523de..666736dda30730100016013f18db2e82c0b433e8 100644 --- a/product/ERP5Type/tests/testCopySupport.py +++ b/product/ERP5Type/tests/testCopySupport.py @@ -86,24 +86,12 @@ class TestCopySupport(ERP5TypeTestCase): self.assertTrue(person.getCareerSubordinationValue().aq_base is organisation.aq_base) def test_02_unindexObjectDependency(self): - # XXX This test passes for bad reasons. person = self.portal.person_module.newContent(portal_type='Person', address_city='Lille') self.tic() person.recursiveReindexObject() person.default_address.setId('old_address') - person.setAddressCity('Paris') self.commit() - # Currently, the test passes only because ActivityTool.distribute always - # iterates on queues in the same order: SQLQueue before SQLDict. - # If Python returned dictionary values in a different order, - # reindex activities would fail with the following error: - # uid of <Products.ERP5Catalog.CatalogTool.IndexableObjectWrapper for - # /erp5/person_module/1/old_address> is 599L and is already assigned - # to deleted in catalog !!! This can be fatal. - # This test would fail if: - # - SQLDict was used for 'unindexObject' - # - there were more than MAX_VALIDATED_LIMIT unindexed & reindexed objects self.tic() def test_03_unindexObjectGrouping(self): diff --git a/product/ERP5Type/tests/testDynamicClassGeneration.py b/product/ERP5Type/tests/testDynamicClassGeneration.py index 00cc0f8d0ed1d049989febd14ce917457dfe4c20..a4bb23b3b825422281f66960ef76b632982dc327 100644 --- a/product/ERP5Type/tests/testDynamicClassGeneration.py +++ b/product/ERP5Type/tests/testDynamicClassGeneration.py @@ -31,6 +31,7 @@ import gc import unittest +import transaction from persistent import Persistent from Products.ERP5Type.dynamic.portal_type_class import synchronizeDynamicModules from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase @@ -1062,7 +1063,8 @@ class TestZodbPropertySheet(ERP5TypeTestCase): """ # Open new connection and add a new constraint. db = self.app._p_jar.db() - con = db.open() + tm = transaction.TransactionManager() + con = db.open(transaction_manager=tm) app = con.root()['Application'].__of__(self.app.aq_parent) portal = app[self.getPortalName()] from Products.ERP5.ERP5Site import getSite, setSite @@ -1077,15 +1079,14 @@ class TestZodbPropertySheet(ERP5TypeTestCase): expression='python: object.getTitle() == "my_tales_constraint_title"') dummy.Predicate_view() - self.commit() + tm.commit() # Recreate class with a newly added constraint synchronizeDynamicModules(portal, force=True) # Load test_module - test_module = getattr(portal, 'Test Migration') - test_module.objectValues() + getattr(portal, 'Test Migration').objectValues() # Then close this new connection. - self.abort() + tm.abort() con.close() # This code depends on ZODB implementation. for i in db.pool.available[:]: diff --git a/product/ERP5Type/tests/testERP5Type.py b/product/ERP5Type/tests/testERP5Type.py index f9c68eeaff150ac3f155901beb9f4f25263b6338..013a8f222f17bfe359c6e58de9fd95e352d59c39 100644 --- a/product/ERP5Type/tests/testERP5Type.py +++ b/product/ERP5Type/tests/testERP5Type.py @@ -722,27 +722,21 @@ class TestERP5Type(PropertySheetTestCase, LogInterceptor): self.assertEquals(person.getDefaultRegion(), 'alpha') person.setRegionUid(alpha.getUid()) self.assertEquals(person.getRegion(), 'alpha') - person.setRegionUidList([alpha.getUid(), alpha.getUid()]) - self.assertEquals(person.getRegionList(), ['alpha', 'alpha']) + person.setRegionUidList([beta.getUid(), beta.getUid()]) + self.assertEquals(person.getRegionList(), ['beta', 'beta']) person.setRegionUidSet([alpha.getUid(), alpha.getUid()]) - self.assertEquals(person.getRegionSet(), ['alpha']) + self.assertEquals(person.getRegionList(), ['alpha']) person.setRegionUidList([alpha.getUid(), beta.getUid(), alpha.getUid()]) self.assertEquals(person.getRegionList(), ['alpha', 'beta', 'alpha']) person.setRegionUidSet([alpha.getUid(), beta.getUid(), alpha.getUid()]) - result = person.getRegionSet() - result.sort() - self.assertEquals(result, ['alpha', 'beta']) + self.assertEquals(sorted(person.getRegionSet()), ['alpha', 'beta']) person.setDefaultRegionUid(beta.getUid()) self.assertEquals(person.getDefaultRegion(), 'beta') - result = person.getRegionSet() - result.sort() - self.assertEquals(result, ['alpha', 'beta']) + self.assertEquals(sorted(person.getRegionSet()), ['alpha', 'beta']) self.assertEquals(person.getRegionList(), ['beta', 'alpha']) person.setDefaultRegionUid(alpha.getUid()) self.assertEquals(person.getDefaultRegion(), 'alpha') - result = person.getRegionSet() - result.sort() - self.assertEquals(result, ['alpha', 'beta']) + self.assertEquals(sorted(person.getRegionSet()), ['alpha', 'beta']) self.assertEquals(person.getRegionList(), ['alpha', 'beta']) # Test accessor on documents rather than on categories person.setDefaultRegionUid(person.getUid()) diff --git a/product/ERP5Type/tests/testFunctionalCore.py b/product/ERP5Type/tests/testFunctionalCore.py old mode 100755 new mode 100644 diff --git a/product/ERP5Type/tests/testFunctionalKM.py b/product/ERP5Type/tests/testFunctionalKM.py old mode 100755 new mode 100644 diff --git a/product/ERP5Type/tests/testFunctionalStandaloneUserTutorial.py b/product/ERP5Type/tests/testFunctionalStandaloneUserTutorial.py old mode 100755 new mode 100644 diff --git a/product/ERP5Type/tests/testJSONEncoder.py b/product/ERP5Type/tests/testJSONEncoder.py deleted file mode 100644 index e023be11ab8ce40749eee90742399ac29025cb87..0000000000000000000000000000000000000000 --- a/product/ERP5Type/tests/testJSONEncoder.py +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################## -# -# Copyright (c) 2008 Nexedi SA and Contributors. All Rights Reserved. -# Lucas Carvalho <lucas@nexedi.com> -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsability of assessing all potential -# consequences resulting from its eventual inadequacies and bugs -# End users who are looking for a ready-to-use solution with commercial -# garantees and support are strongly adviced to contract a Free Software -# Service Company -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -############################################################################## - -import unittest -from Products.ERP5Type.JSONEncoder import encodeInJson - -class TestJSONEncoder(unittest.TestCase): - - def test_encodeAListType(self): - my_list = [1, 2, 3, 'foo', 'bar'] - result = encodeInJson(my_list) - self.assertEquals(result, '[1, 2, 3, "foo", "bar"]') - - def test_encodeATupleType(self): - my_tuple = (1, 2, 3, 'foo', None,) - result = encodeInJson(my_tuple) - self.assertEquals(result, '[1, 2, 3, "foo", null]') - - def test_encodeADictionaryType(self): - my_dict = { 'foo': 'bar', - 1: 2, - 'bar': [1, 2, 'bar'], - 2: None, - 3: float(3), - 4: True, - 5: False, - } - expected_result = '{"1": 2, "2": null, "3": 3.0, "bar": [1, 2, "bar"], '\ - '"5": false, "4": true, "foo": "bar"}' - result = encodeInJson(my_dict) - self.assertEquals(result, expected_result) - - def test_encodeAStringType(self): - result = encodeInJson('This is my string.') - self.assertEquals(result, '"This is my string."') - - def test_encodeAIntType(self): - result = encodeInJson(int(3)) - self.assertEquals(result, '3') - - def test_encodeANoneType(self): - result = encodeInJson(None) - self.assertEquals(result, 'null') - - def test_encodeAFloatType(self): - result = encodeInJson(float(3)) - self.assertEquals(result, '3.0') - - def test_encodeALongType(self): - result = encodeInJson(long(3)) - self.assertEquals(result, '3') - - def test_encodeABooleanType(self): - result_true = encodeInJson(True) - result_false = encodeInJson(False) - - self.assertEquals(result_true, 'true') - self.assertEquals(result_false, 'false') - -if __name__ == '__main__': - unittest.main() diff --git a/product/Formulator/Field.py b/product/Formulator/Field.py index d554b97bb2ca41ca16cc348f56f331fc0c6194cf..f9dc8fa77d7c8f48f5cc4850fe84e891f639d917 100644 --- a/product/Formulator/Field.py +++ b/product/Formulator/Field.py @@ -449,6 +449,8 @@ class Field: return obj.method_name elif obj_type is TALESField.TALESMethod: return obj._text + elif obj_type is unicode: + return obj.encode('utf-8') return str(obj) return ''.join(map(getSearchSource, (self.values.values()+self.tales.values()+ diff --git a/product/Formulator/Widget.py b/product/Formulator/Widget.py index accca9456eb494bc833c51db951dd74fea1167d6..e0d367e879dcd01c119258df0db393ebbae6cf9c 100644 --- a/product/Formulator/Widget.py +++ b/product/Formulator/Widget.py @@ -1807,38 +1807,32 @@ class FloatWidget(TextWidget): if value not in (None,''): precision = field.get_value('precision') input_style = field.get_value('input_style') - percent = 0 - original_value = value - if input_style.find('%')>=0: - percent=1 - try: - value = float(value) * 100 - except ValueError: - return value - try : + percent = '%' in input_style + try: float_value = float(value) - if precision not in (None, ''): + if percent: + float_value *= 100 + if precision not in (None, '') and ( + # ignore precision for too big absolute numbers + abs(float_value) * 10**precision < 2**53): # if we have a precision, then use it now value = ('%%0.%sf' % precision) % float_value else: value = str(float_value) + # if this number is displayed in scientific notification, + # just return it as is + if 'e' in value: + return value + value, fpart = value.split('.') except ValueError: return value - # if this number displayed in scientific notification, just return it as - # is - if 'e' in value: - return value - value_list = value.split('.') - integer = value_list[0] - + decimal_separator = '' decimal_point = '.' - if input_style == "-1234.5": - decimal_point = '.' + pass elif input_style == '-1 234.5': decimal_separator = ' ' - decimal_point = '.' elif input_style == '-1 234,5': decimal_separator = ' ' decimal_point = ',' @@ -1847,37 +1841,28 @@ class FloatWidget(TextWidget): decimal_point = ',' elif input_style == '-1,234.5': decimal_separator = ',' - decimal_point = '.' - if input_style.find(decimal_separator) >= 0: - integer = value_list[0] - sign = '' - if integer.startswith('-'): + if decimal_separator in input_style: + if value.startswith('-'): sign = '-' - integer = integer[1:] - i = len(integer) % 3 - value = integer[:i] - while i != len(integer): - value += decimal_separator + integer[i:i+3] - i += 3 - if value[0] == decimal_separator: value = value[1:] - value = '%s%s' % (sign, value) - else: - value = value_list[0] + else: + sign = '' + i = len(value) % 3 or 3 + integer = value[:i] + while i < len(value): + integer += decimal_separator + value[i:i+3] + i += 3 + value = sign + integer if precision != 0: value += decimal_point - if precision not in (None, ''): - for i in range(0, precision): - if i < len(value_list[1]): - value += value_list[1][i] - else: - value += '0' - else: - value += value_list[1] + if precision: + value += fpart[:precision].ljust(precision, '0') + else: + value += fpart if percent: value += '%' - return value.strip() + return value return '' def render(self, field, key, value, REQUEST, render_prefix=None): diff --git a/product/HBTreeFolder2/HBTreeFolder2.py b/product/HBTreeFolder2/HBTreeFolder2.py index 9edd73417e252b22e98a0d016b4c639cece10a35..3b7d91a5cdbce51d3d8e20a00dadab47cee41383 100644 --- a/product/HBTreeFolder2/HBTreeFolder2.py +++ b/product/HBTreeFolder2/HBTreeFolder2.py @@ -33,6 +33,7 @@ from AccessControl import getSecurityManager, ClassSecurityInfo from AccessControl.Permissions import access_contents_information, \ view_management_screens from zLOG import LOG, INFO, ERROR, WARNING +from AccessControl.SimpleObjectPolicies import ContainerAssertions manage_addHBTreeFolder2Form = DTMLFile('folderAdd', globals()) @@ -109,6 +110,7 @@ class HBTreeObjectIds(object): except StopIteration: del self._index, self._ikeys raise IndexError +ContainerAssertions[HBTreeObjectIds] = 1 class HBTreeObjectItems(HBTreeObjectIds): @@ -119,6 +121,7 @@ class HBTreeObjectItems(HBTreeObjectIds): def __getitem__(self, item): object_id = HBTreeObjectIds.__getitem__(self, item) return object_id, self._tree._getOb(object_id) +ContainerAssertions[HBTreeObjectItems] = 1 class HBTreeObjectValues(HBTreeObjectIds): @@ -128,6 +131,7 @@ class HBTreeObjectValues(HBTreeObjectIds): def __getitem__(self, item): return self._tree._getOb(HBTreeObjectIds.__getitem__(self, item)) +ContainerAssertions[HBTreeObjectValues] = 1 class HBTreeFolder2Base (Persistent): @@ -161,10 +165,6 @@ class HBTreeFolder2Base (Persistent): self._htree = OOBTree() self._count = Length() self._tree_list = PersistentMapping() - - def initBTrees(self): - """ """ - return self._initBTrees() def _populateFromFolder(self, source): """Fill this folder with the contents of another folder. diff --git a/product/HBTreeFolder2/tests/testHBTreeFolder2.py b/product/HBTreeFolder2/tests/testHBTreeFolder2.py index 78eb7383a6a1a5ad3d93d82c85bd9d9f5799c072..8b6152210a68e6b96d68fc4d4f45c4a3fb831672 100644 --- a/product/HBTreeFolder2/tests/testHBTreeFolder2.py +++ b/product/HBTreeFolder2/tests/testHBTreeFolder2.py @@ -26,6 +26,7 @@ import timeit from textwrap import dedent from Products.ERP5Type.tests.backportUnittest import expectedFailure from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase +from Products.PythonScripts.PythonScript import PythonScript class HBTreeFolder2Tests(ERP5TypeTestCase): @@ -222,6 +223,44 @@ class HBTreeFolder2Tests(ERP5TypeTestCase): id_list.remove(i) h._delOb(i) + def testRestrictedIteration(self): + """ + Check content iterators can be used by restricted python code. + """ + # To let restricted python access methods on folder + marker = object() + saved_class_attributes = {} + for method_id in ('objectIds', 'objectValues', 'objectItems'): + roles_id = method_id + '__roles__' + saved_class_attributes[roles_id] = getattr(HBTreeFolder2, roles_id, + marker) + setattr(HBTreeFolder2, roles_id, None) + try: + h = HBTreeFolder2() + # whatever value, as long as it has an __of__ + h._setOb('foo', HBTreeFolder2()) + script = PythonScript('script') + script.ZPythonScript_edit('h', dedent(""" + for dummy in h.objectIds(): + pass + for dummy in h.objectValues(): + pass + for dummy in h.objectItems(): + pass + """)) + class DummyRequest(object): + # To make Shared.DC.Scripts.Bindings.Bindings._getTraverseSubpath + # happy + other = {} + script.REQUEST = DummyRequest + script(h) + finally: + for roles_id, orig in saved_class_attributes.iteritems(): + if orig is marker: + delattr(HBTreeFolder2, roles_id) + else: + setattr(HBTreeFolder2, roles_id, orig) + @expectedFailure def _testPerformanceInDepth(self): """ diff --git a/product/PortalTransforms/transforms/safe_html.py b/product/PortalTransforms/transforms/safe_html.py index 9f445244e87e7b0c382b24aadcc14cead635e8ff..64ba544fa179308e3eed80cfce2e5f16337204f8 100644 --- a/product/PortalTransforms/transforms/safe_html.py +++ b/product/PortalTransforms/transforms/safe_html.py @@ -283,6 +283,13 @@ class StrippingParser(HTMLParser): def getResult(self): return ''.join(self.result) + def feed(self, html): + # BBB: Python 2.7 is more tolerant to broken HTML. + # For the moment, be strict to behave like Python 2.6. + HTMLParser.feed(self, html) + if self.rawdata: + raise HTMLParseError("unknown error", self.getpos()) + def scrubHTML(html, valid=VALID_TAGS, nasty=NASTY_TAGS, remove_javascript=True, raise_error=True, default_encoding=None): diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py index 96577e1b3146b5fccb57ff39cc2e681ccb2d962a..5232257811bda91b699e5a1a2cbc3b6d4896822b 100644 --- a/product/ZSQLCatalog/SQLCatalog.py +++ b/product/ZSQLCatalog/SQLCatalog.py @@ -22,6 +22,7 @@ from App.special_dtml import DTMLFile from thread import allocate_lock, get_ident from OFS.Folder import Folder from AccessControl import ClassSecurityInfo +from AccessControl.SimpleObjectPolicies import ContainerAssertions from BTrees.OIBTree import OIBTree from App.config import getConfiguration from BTrees.Length import Length @@ -240,6 +241,54 @@ class UidBuffer(TM): tid = get_ident() self.temporary_buffer.setdefault(tid, []).extend(iterable) +class DummyDict(dict): + def __setitem__(self, key, value): + pass + +class LazyIndexationParameterList(tuple): + def __new__(cls, document_list, attribute, global_cache): + self = super(LazyIndexationParameterList, cls).__new__(cls) + self._document_list = document_list + self._attribute = attribute + self._global_cache = global_cache + return self + + def __getitem__(self, index): + document = self._document_list[index] + attribute = self._attribute + global_cache_key = (document.uid, attribute) + global_cache = self._global_cache + if global_cache_key in global_cache: + value = global_cache[global_cache_key] + else: + value = getattr(document, attribute, None) + if callable(value): + try: + value = value() + except ConflictError: + raise + except Exception: + LOG('SQLCatalog', WARNING, + 'Failed to call method %s on %r' % (attribute, document), + error=True, + ) + value = None + global_cache[global_cache_key] = value + return value + + def __iter__(self): + for index in xrange(len(self)): + yield self[index] + + def __len__(self): + return len(self._document_list) + + def __repr__(self): + return '<%s(%i documents, %r) at %x>' % (self.__class__.__name__, + len(self), self._attribute, id(self)) + +ContainerAssertions[LazyIndexationParameterList] = 1 + related_key_definition_cache = {} related_key_warned_column_set = set() @@ -1503,6 +1552,23 @@ class Catalog(Folder, pass finally: lock.release() + elif catalog_path == 'deleted': + # Two possible cases: + # - Reindexed object's path changed (ie, it or at least one of its + # parents was renamed) but unindexObject was not called yet. + # Reindexing is harmelss: unindexObject and then an + # immediateReindexObject will be called. + # - Reindexed object was deleted by a concurrent transaction, which + # committed after we got our ZODB snapshot of this object. + # Reindexing is harmless: unindexObject will be called, and + # cannot be executed in parallel thanks to activity's + # serialisation_tag (so we cannot end up with a fantom object in + # catalog). + # So we index object. + # We could also not index it to save the time needed to index, but + # this would slow down all regular case to slightly improve an + # exceptional case. + pass elif catalog_path is not None: # An uid conflict happened... Why? # can be due to path length @@ -1528,7 +1594,10 @@ class Catalog(Folder, if method_id_list is None: method_id_list = self.sql_catalog_object_list econtext = getEngine().getContext() - argument_cache = {} + if disable_cache: + argument_cache = DummyDict() + else: + argument_cache = {} with (noReadOnlyTransactionCache if disable_cache else readOnlyTransactionCache)(): @@ -1610,29 +1679,12 @@ class Catalog(Folder, method.func_code.co_varnames[:method.func_code.co_argcount] else: arguments = [] - kw = {} - for arg in arguments: - value_list = [] - append = value_list.append - for object in catalogged_object_list: - argument_cache_key = (object.uid, arg) - try: - value = argument_cache[argument_cache_key] - except KeyError: - try: - value = getattr(object, arg, None) - if callable(value): - value = value() - except ConflictError: - raise - except: - LOG('SQLCatalog', WARNING, 'Failed to call method %s on %r' % - (arg, object), error=sys.exc_info()) - value = None - if not disable_cache: - argument_cache[argument_cache_key] = value - append(value) - kw[arg] = value_list + kw = dict( + (x, LazyIndexationParameterList( + catalogged_object_list, + x, + argument_cache, + )) for x in arguments) # Alter/Create row try: diff --git a/product/ZSQLCatalog/ZSQLCatalog.py b/product/ZSQLCatalog/ZSQLCatalog.py index ff6022d4dfa1b07351c872c97844986173d7db1c..237280783e874a754b09eec525bf3a5818ad5f20 100644 --- a/product/ZSQLCatalog/ZSQLCatalog.py +++ b/product/ZSQLCatalog/ZSQLCatalog.py @@ -347,15 +347,10 @@ class ZCatalog(Folder, Persistent, Implicit): result = catalog_object.readRecordedObjectList(catalog=catalog) if len(result): for o in result: - if catalog==0: + if catalog == 0: self.uncatalog_object(uid=o.path, sql_catalog_id=sql_catalog_id) - elif catalog==1: - try: - obj = self.resolve_path(o.path) - except ConflictError: - raise - except: - obj = None + elif catalog == 1: + obj = self.resolve_path(o.path) if obj is not None: obj.reindexObject(sql_catalog_id=sql_catalog_id) else: @@ -368,7 +363,7 @@ class ZCatalog(Folder, Persistent, Implicit): playBackRecordedObjectList(sql_catalog_id=sql_catalog_id, catalog=catalog) else: - # If there iss nothing to do, go to next step. + # If there is nothing to do, go to next step. if catalog == 0: # If we were replaying unindex actions, time to replay index actions. self.activate(priority=5).\ @@ -420,11 +415,14 @@ class ZCatalog(Folder, Persistent, Implicit): skin_name_list=None, skin_selection_list=None, update_destination_sql_catalog=None, + base_priority=5, REQUEST=None, RESPONSE=None): """ Starts a hot reindexing. - Hot reindexing will create a catalog and sync it with the current one. + Hot reindexing reindexes all documents using destination_sql_catalog_id + with low priority (so site can keep working during hot reindexation). + Once done, both catalogs will be swapped so that current catalog will not be used any more and destination catalog will get used "for real". @@ -516,24 +514,24 @@ class ZCatalog(Folder, Persistent, Implicit): self.ERP5Site_reindexAll(sql_catalog_id=destination_sql_catalog_id, final_activity_tag=final_activity_tag, clear_catalog=1, - additional_priority=1) + additional_priority=base_priority) # Once reindexing is finished, change the hot reindexing state so that # new catalog changes are applied in both catalogs. self.activate(after_tag=final_activity_tag, - priority=5).setHotReindexingState(HOT_REINDEXING_DOUBLE_INDEXING_STATE, + priority=base_priority).setHotReindexingState(HOT_REINDEXING_DOUBLE_INDEXING_STATE, source_sql_catalog_id=source_sql_catalog_id, destination_sql_catalog_id=destination_sql_catalog_id, archive_path=archive_path) # Once in double-indexing mode, planned reindex can be replayed. self.activate(after_method_id='setHotReindexingState', - priority=5).playBackRecordedObjectList( + priority=base_priority).playBackRecordedObjectList( sql_catalog_id=destination_sql_catalog_id) # Once there is nothing to replay, databases are sync'ed, so the new # catalog can become current. self.activate(after_method_id=('playBackRecordedObjectList', 'InventoryModule_reindexMovementList'), after_tag='InventoryModule_reindexMovementList', - priority=5).finishHotReindexing( + priority=base_priority).finishHotReindexing( source_sql_catalog_id=source_sql_catalog_id, destination_sql_catalog_id=destination_sql_catalog_id, skin_selection_dict=skin_selection_dict, diff --git a/product/ZSQLCatalog/dtml/catalogHotReindexing.dtml b/product/ZSQLCatalog/dtml/catalogHotReindexing.dtml index af0d8e9c496787de3bdbaebe40c4c13e88899585..2a7d3b036596fcccfe4e4fb1e82aaecb0453f6bc 100644 --- a/product/ZSQLCatalog/dtml/catalogHotReindexing.dtml +++ b/product/ZSQLCatalog/dtml/catalogHotReindexing.dtml @@ -1,7 +1,7 @@ <dtml-var manage_page_header> <dtml-var manage_tabs> -<form action="<dtml-var URL1>"> +<form action="<dtml-var URL1>" method="post"> <p class="form-help"> Hot Reindexing allows you to recreate a new SQL Catalog without stopping your system. This requires at least two SQL Catalogs. diff --git a/setup.py b/setup.py index 54a6b637807feca716423e1212733a20debff33b..771c0b1c77fcccd722e7b3ff687c300dc680259b 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages import glob import os -version = '0.4.19' +version = '0.4.22' name = 'erp5.util' long_description = open("README.erp5.util.txt").read() + "\n" @@ -49,9 +49,10 @@ setup(name=name, namespace_packages=['erp5', 'erp5.util'], install_requires=[ 'setuptools', # namespaces + 'psutil >= 0.5.0', ], extras_require={ - 'testnode': ['slapos.core', 'xml_marshaller'], + 'testnode': ['slapos.core', 'xml_marshaller', 'psutil >= 0.5.0'], 'testbrowser': ['zope.testbrowser >= 3.11.1', 'z3c.etestbrowser'], 'benchmark': benchmark_install_require_list, 'benchmark-report': [name+'[benchmark]', 'matplotlib', 'numpy'], @@ -76,6 +77,7 @@ setup(name=name, tests_require=[ 'slapos.core', 'xml_marshaller', + 'psutil >= 0.5.0', ], ) diff --git a/tests/__init__.py b/tests/__init__.py index 4bffe75516b74036c43c41a547bb50607ae1ad92..21c0dab0901baf47dd84be868227000f7505b949 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -45,11 +45,15 @@ class _ERP5(ERP5TypeTestSuite): class PERF(_ERP5): - allow_restart = True def getTestList(self): return [x for x in self._getAllTestList() if x.find('Performance')>0] +class CloudPERF(_ERP5): + + def getTestList(self): + return ['_testPystone'] + class ERP5(_ERP5): mysql_db_count = 3 @@ -58,10 +62,15 @@ class ERP5(_ERP5): for test_case in self._getAllTestList(): # skip some tests if test_case.startswith('testLive') or test_case.startswith('testVifib') \ - or test_case.startswith('testFunctional') \ or test_case.find('Performance') > 0 \ or test_case in ('testERP5LdapCatalog', # XXX (Ivan), until LDAP server is available this test will alway fail - 'testERP5eGov', # it is not maintained any more + # tests reading selenium tables from erp5.com + 'testFunctionalStandaloneUserTutorial', + 'testFunctionalRunMyDocSample', + 'testFunctionalConfigurator', + 'testFunctionalConfiguratorConsulting', + # not maintained + 'testERP5eGov', 'testAccounting_l10n_fr_m9'): continue test_list.append(test_case) @@ -73,28 +82,11 @@ class ERP5(_ERP5): if not status_dict['status_code']: status_dict = self.runUnitTest('--load', '--activity_node=2', test) return status_dict + if test.startswith('testFunctional'): + return self._updateFunctionalTestResponse(self.runUnitTest(test)) return super(ERP5, self).run(test) -class ERP5_simulation(_ERP5): - - def getTestList(self): - p = subprocess.Popen(('grep', '-lr', '--include=test*.py', - '-e', '@newSimulationExpectedFailure', - '-e', 'erp5_report_new_simulation_failures', - 'Products/ERP5/tests'), - stdout=subprocess.PIPE) - return sorted(os.path.basename(x)[:-3] - for x in p.communicate()[0].splitlines()) - - def runUnitTest(self, *args, **kw): - return super(ERP5_simulation, self).runUnitTest( - erp5_report_new_simulation_failures='1', *args, **kw) - - -class ERP5UserInterface(_ERP5): - """ Run Test Suites which runs Zelenium tests """ - - def _updateTestResponse(self, status_dict): + def _updateFunctionalTestResponse(self, status_dict): """ Convert the Unit Test output into more accurate information related to funcional test run. """ @@ -102,7 +94,7 @@ class ERP5UserInterface(_ERP5): try: summary, html_test_result = status_dict['stderr'].split("-"*79)[1:3] except ValueError: - # In case of error when parse the file, preserve the original + # In case of error when parse the file, preserve the original # informations. This prevents we have unfinished tests. return status_dict status_dict['html_test_result'] = html_test_result @@ -112,21 +104,22 @@ class ERP5UserInterface(_ERP5): status_dict['failure_count'] = int(group_dict['failures']) status_dict['test_count'] = int(group_dict['total']) status_dict['skip_count'] = int(group_dict['expected_failure']) - return status_dict - def run(self, test): - return self._updateTestResponse(self.runUnitTest(test)) + +class ERP5_simulation(_ERP5): def getTestList(self): - test_list = [] - for test_path in glob.glob('%s/product/*/tests/testFunctional*.py' % sys.path[0]) + \ - glob.glob('%s/bt5/*/TestTemplateItem/testFunctional*.py' % sys.path[0]): - test_case = test_path.split(os.sep)[-1][:-3] # remove .py - product = test_path.split(os.sep)[-3] - # don't test 3rd party products - if product in ('PortalTransforms', 'MailTemplates'): - continue - test_list.append(test_case) - return test_list + p = subprocess.Popen(('grep', '-lr', '--include=test*.py', + '-e', '@newSimulationExpectedFailure', + '-e', 'erp5_report_new_simulation_failures', + 'Products/ERP5/tests'), + stdout=subprocess.PIPE) + return sorted(os.path.basename(x)[:-3] + for x in p.communicate()[0].splitlines()) + + def runUnitTest(self, *args, **kw): + return super(ERP5_simulation, self).runUnitTest( + erp5_report_new_simulation_failures='1', *args, **kw) +