Commit 9433000bd259d336f631da70fd54a29dfc743f43
1 parent
2365e8da
KTS-2627
"Compress all javascript includes and remove orphaned includes." Fixed. All large js file compressed and includes removed. Committed By: Jalaloedien Abrahams Reviewed By: Kevin Fourie git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7601 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
32 changed files
with
1009 additions
and
6942 deletions
lib/documentmanagement/observers.inc.php
| ... | ... | @@ -70,9 +70,6 @@ class JavascriptObserver { |
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | function start() { |
| 73 | - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js'); | |
| 74 | - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js'); | |
| 75 | - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js'); | |
| 76 | 73 | $this->context->oPage->requireJSResource('resources/js/add_document.js'); |
| 77 | 74 | $this->context->oRedirector =& $this; |
| 78 | 75 | $this->context->handleOutput('<div id="kt-add-document-target"> </div>'); | ... | ... |
lib/templating/kt3template.inc.php
| ... | ... | @@ -130,7 +130,7 @@ class KTPage { |
| 130 | 130 | $aJS[] = 'thirdpartyjs/MochiKit/MochiKitPacked.js'; |
| 131 | 131 | $aJS[] = 'resources/js/kt-utility.js'; |
| 132 | 132 | $aJS[] = 'presentation/i18nJavascript.php'; |
| 133 | - $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners.inc.js'; | |
| 133 | + $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners_lite.inc.js'; | |
| 134 | 134 | $aJS[] = 'resources/js/loader.js'; |
| 135 | 135 | $aJS[] = 'thirdpartyjs/yui/tools/tools.js'; |
| 136 | 136 | $aJS[] = 'thirdpartyjs/yui/connection/connection.js'; | ... | ... |
plugins/ktcore/admin/fieldsets/basic.inc.php
| ... | ... | @@ -608,8 +608,6 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { |
| 608 | 608 | $renderedTree = $this->_evilTreeRenderer($fieldTree); |
| 609 | 609 | |
| 610 | 610 | $this->oPage->setTitle(_kt('Edit Lookup Tree')); |
| 611 | - | |
| 612 | - //$this->oPage->requireJSResource('thirdparty/js/MochiKit/Base.js'); | |
| 613 | 611 | |
| 614 | 612 | if ($current_node == 0) { $category_name = 'Root'; } |
| 615 | 613 | else { | ... | ... |
plugins/ktstandard/KTBulkExportPlugin.php
| ... | ... | @@ -106,8 +106,6 @@ class KTBulkExportAction extends KTFolderAction { |
| 106 | 106 | exit(0); |
| 107 | 107 | } |
| 108 | 108 | |
| 109 | - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js'); | |
| 110 | - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js'); | |
| 111 | 109 | $this->oPage->template = "kt3/minimal_page"; |
| 112 | 110 | $this->handleOutput(""); |
| 113 | 111 | ... | ... |
sql/mysql/install/rebuild.bat
| ... | ... | @@ -14,7 +14,7 @@ mysqladmin -u root -p -f drop %INPUT% |
| 14 | 14 | ECHO ---- Creating database %INPUT% ---- |
| 15 | 15 | mysqladmin -u root -p create %INPUT% |
| 16 | 16 | ECHO ---- Creating structure for database %INPUT% ---- |
| 17 | -mysql -u root %INPUT%<structure.sql | |
| 17 | +mysql -u root -p %INPUT%<structure.sql | |
| 18 | 18 | ECHO ---- Inserting data into database %INPUT% ---- |
| 19 | 19 | mysql -u root -p %INPUT%< data.sql |
| 20 | 20 | ECHO ---- Creating user information for database %INPUT% ---- | ... | ... |
templates/kt3/document/edit.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | - | |
| 7 | 1 | <!-- unforunate, but (currently) necessary --> |
| 8 | 2 | |
| 9 | 3 | {$context->oPage->requireJSResource('resources/js/taillog.js')} | ... | ... |
templates/ktcore/action/checkout_final.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 4 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 5 | - | |
| 6 | 1 | {capture assign=sLocation}action=checkout_final&fDocumentId={$context->oDocument->getId()}&reason={$reason|escape:'url'}{/capture} |
| 7 | 2 | |
| 8 | 3 | {capture assign=sJavascript} | ... | ... |
templates/ktcore/boolean_search_change.smarty
| 1 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")} | |
| 2 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")} | |
| 3 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 4 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 5 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")} | |
| 6 | 1 | {$context->oPage->requireJSResource("resources/js/taillog.js")} |
| 7 | 2 | {$context->oPage->requireJSResource("resources/js/constructed_search.js")} |
| 8 | 3 | {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")} | ... | ... |
templates/ktcore/boolean_search_edit.smarty
| 1 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")} | |
| 2 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")} | |
| 3 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 4 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 5 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")} | |
| 6 | 1 | {$context->oPage->requireJSResource("resources/js/taillog.js")} |
| 7 | 2 | {$context->oPage->requireJSResource("resources/js/constructed_search.js")} |
| 8 | 3 | {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")} | ... | ... |
templates/ktcore/document/add.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | - | |
| 7 | 1 | <!-- unforunate, but (currently) necessary --> |
| 8 | 2 | |
| 9 | 3 | {$context->oPage->requireJSResource('resources/js/taillog.js')} |
| ... | ... | @@ -50,6 +44,11 @@ function startupMetadata() { |
| 50 | 44 | document_type_changed(); |
| 51 | 45 | } |
| 52 | 46 | |
| 47 | +function progressIndicator(){ | |
| 48 | + var indicator = document.getElementById(); | |
| 49 | + indicator.style.display = "block"; | |
| 50 | +} | |
| 51 | + | |
| 53 | 52 | addLoadEvent(startupMetadata); |
| 54 | 53 | {/literal} |
| 55 | 54 | {/capture} | ... | ... |
templates/ktcore/document/admin/deletedlist.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 4 | - | |
| 5 | 1 | {$context->oPage->requireJSResource('resources/js/toggleselect.js')} |
| 6 | 2 | {$context->oPage->requireJSResource('resources/js/expungeList.js')} |
| 7 | 3 | ... | ... |
templates/ktcore/document/edit.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | - | |
| 7 | 1 | <!-- unforunate, but (currently) necessary --> |
| 8 | 2 | |
| 9 | 3 | {$context->oPage->requireJSResource('resources/js/taillog.js')} | ... | ... |
templates/ktcore/folder/bulkImport.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | - | |
| 7 | 1 | {$context->oPage->requireJSResource('resources/js/taillog.js')} |
| 8 | 2 | {$context->oPage->requireJSResource('resources/js/conditional_usage.js')} |
| 9 | 3 | ... | ... |
templates/ktcore/folder/bulkUpload.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | - | |
| 7 | 1 | {$context->oPage->requireJSResource('resources/js/taillog.js')} |
| 8 | 2 | {$context->oPage->requireJSResource('resources/js/conditional_usage.js')} |
| 9 | 3 | ... | ... |
templates/ktcore/folder/roles_managegroups.smarty
| 1 | 1 | <h2>{i18n arg_rolename=$rolename}Allocate Groups to Role: #rolename#{/i18n}</h2> |
| 2 | 2 | |
| 3 | 3 | {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')} |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 6 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 7 | 4 | |
| 8 | 5 | <p class="descriptiveText">{i18n}Groups must be allocated to roles to ensure that the workflow transition this role is supposed to support can be acted upon by a user.{/i18n}</p> |
| 9 | 6 | ... | ... |
templates/ktcore/folder/roles_manageusers.smarty
| 1 | 1 | <h2>{i18n}Allocate User to Role{/i18n}</h2> |
| 2 | 2 | |
| 3 | 3 | {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')} |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 6 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 7 | 4 | |
| 8 | 5 | <p class="descriptiveText">{i18n}Add or remove users for this role. {/i18n}</p> |
| 9 | 6 | ... | ... |
templates/ktcore/forms/widgets/collection.smarty
| ... | ... | @@ -7,12 +7,6 @@ |
| 7 | 7 | <link rel="stylesheet" type="text/css" href="{$rootUrl}/resources/css/kt-headings.css" /> |
| 8 | 8 | <!--[if lt IE 7]><style type="text/css" media="all">@import url({$rootUrl}/resources/css/kt-ie-icons.css);</style><![endif]--> |
| 9 | 9 | |
| 10 | -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Base.js"> </script> | |
| 11 | -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Iter.js"> </script> | |
| 12 | -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/DOM.js"> </script> | |
| 13 | -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Logging.js"> </script> | |
| 14 | -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Async.js"> </script> | |
| 15 | -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Signal.js"> </script> | |
| 16 | 10 | <script type="text/javascript" src="{$rootUrl}/resources/js/kt-utility.js"> </script> |
| 17 | 11 | <script type="text/javascript" src="{$rootUrl}/resources/js/toggleselect.js"> </script> |
| 18 | 12 | <script type="text/javascript" src="{$rootUrl}/presentation/i18nJavascript.php"> </script> | ... | ... |
templates/ktcore/login.smarty
| ... | ... | @@ -11,7 +11,7 @@ |
| 11 | 11 | |
| 12 | 12 | <link rel="stylesheet" href="{$rootUrl}/resources/css/kt-ie-icons.css" type="text/css" /> |
| 13 | 13 | |
| 14 | - <script type="text/javascript" src="{$rootUrl}/thirdpartyjs/curvycorners/rounded_corners.inc.js"> </script> | |
| 14 | + <script type="text/javascript" src="{$rootUrl}/thirdpartyjs/curvycorners/rounded_corners_lite.inc.js"> </script> | |
| 15 | 15 | <script type="text/javascript" src="{$rootUrl}/resources/js/login_loader.js"> </script> |
| 16 | 16 | </head> |
| 17 | 17 | <body> |
| ... | ... | @@ -45,6 +45,7 @@ |
| 45 | 45 | </select> |
| 46 | 46 | <div class="form_actions"> |
| 47 | 47 | <input type="submit" value="{i18n}login{/i18n}" /> |
| 48 | + <p class="smaller"><a href="#" onclick="showBox();">Forgot Password?</a></p> | |
| 48 | 49 | </div> |
| 49 | 50 | </form> |
| 50 | 51 | </div> |
| ... | ... | @@ -54,24 +55,72 @@ |
| 54 | 55 | </div> |
| 55 | 56 | {/if} |
| 56 | 57 | <p class="descriptiveText version"> |
| 57 | - {i18n arg_appname="$appname"}#appname# Version{/i18n} {$versionName}<br/> | |
| 58 | - {i18n}<a href="http://www.knowledgetree.com/">Document Management Software</a>{/i18n}<br> | |
| 59 | - {i18n}© 2007 <a href="http://www.knowledgetree.com/">The Jam Warehouse Software (Pty) Ltd.</a>{/i18n}<br><br> | |
| 60 | - {if ($smallVersion == 'OSS')} | |
| 61 | - {i18n}This program is free software and published under the <a href=" http://www.gnu.org/licenses/">GNU General Public License version 3</a>{/i18n}<br> | |
| 62 | - {else} | |
| 63 | - {i18n}All rights reserved.{/i18n}<br> | |
| 64 | - {/if} | |
| 58 | + {i18n}Access to this service is subject to the KnowledgeTreeLive <a href="http://www.knowledgetree.com/about/legal/live">Terms and Conditions</a> of use.{/i18n}<br/> | |
| 59 | + {i18n}© 2007 <a href="http://www.knowledgetree.com/">The Jam Warehouse Software (Pty) Ltd.</a> All Rights Reserved{/i18n} | |
| 65 | 60 | </p> |
| 66 | - | |
| 67 | - | |
| 68 | 61 | <div id="bottomspacer"></div> |
| 69 | 62 | <div class="floatClear"></div> |
| 70 | 63 | </div> |
| 64 | + <div id="forgot_box"> | |
| 65 | + <form name="forgot_form" action="" method="POST"> | |
| 66 | + <table width="80%"> | |
| 67 | + <tr> | |
| 68 | + <td><div class="close_box" id="close_box" onclick="hideBox();" onmouseover="glow();" onmouseout="unglow();">Close</div></td> | |
| 69 | + </tr> | |
| 70 | + <tr> | |
| 71 | + <input type="hidden" value="request_password_reset" name="request_password_reset" id="request_password_reset"> | |
| 72 | + <td>Please note that this feature is only used to reset the ADMIN password. System users should contact admin to reset their password.</td> | |
| 73 | + </tr> | |
| 74 | + <!--<tr> | |
| 75 | + <td><label for="company_name">Company Name</label> | |
| 76 | + <input type="text" id="company_name" name="company_name"></input></td> | |
| 77 | + </tr>--> | |
| 78 | + <tr> | |
| 79 | + <td><label for="email">Email Address</label> | |
| 80 | + <input type="text" id="email" name="email"></input></td> | |
| 81 | + </tr> | |
| 82 | + <tr> | |
| 83 | + <td class="form_actions"><input type="submit" value="{i18n}submit{/i18n}" /></td> | |
| 84 | + <td></td> | |
| 85 | + </tr> | |
| 86 | + </table> | |
| 87 | + </form> | |
| 88 | + </div> | |
| 89 | + <div id="reset_box"> | |
| 90 | + <form name="reset_form" action="" method="POST"> | |
| 91 | + <table width="80%"> | |
| 92 | + <tr> | |
| 93 | + <input type="hidden" name="perform_password_reset" value="perform_password_reset" id="perform_password_reset"> | |
| 94 | + <td>Please note that this feature is only used to reset the ADMIN password. System users should contact admin to reset their password.</td> | |
| 95 | + </tr> | |
| 96 | + <tr> | |
| 97 | + <td><label for="full_name">Full Name</label> | |
| 98 | + <input type="text" id="full_name" name="full_name"></input></td> | |
| 99 | + </tr> | |
| 100 | + <tr> | |
| 101 | + <td><label for="email">Email Address</label> | |
| 102 | + <input type="text" id="email" name="email"></input></td> | |
| 103 | + </tr> | |
| 104 | + <tr> | |
| 105 | + <td><label for="new_password">New password</label> | |
| 106 | + <input type="password" id="new_password" name="new_password"></input></td> | |
| 107 | + </tr> | |
| 108 | + <tr> | |
| 109 | + <td><label for="new_password_repeat">Repeat new password</label> | |
| 110 | + <input type="password" id="new_password_repeat" name="new_password_repeat"></input></td> | |
| 111 | + </tr> | |
| 112 | + <tr> | |
| 113 | + <td class="form_actions"><input type="submit" value="{i18n}submit{/i18n}" /></td> | |
| 114 | + <td></td> | |
| 115 | + </tr> | |
| 116 | + </table> | |
| 117 | + </form> | |
| 118 | + </div> | |
| 119 | + {if $reset_password == true} | |
| 120 | + <script type="text/javascript">showResetBox();</script> | |
| 121 | + {else} | |
| 122 | + <script type="text/javascript">hideResetBox();</script> | |
| 123 | + {/if} | |
| 71 | 124 | </div> |
| 72 | - | |
| 73 | - | |
| 74 | - | |
| 75 | - | |
| 76 | 125 | </body> |
| 77 | 126 | </html> | ... | ... |
templates/ktcore/metadata/admin/edit_lookuptree.smarty
| 1 | 1 | {$context->oPage->requireCSSResource('resources/css/kt-treewidget.css')} |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 3 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 4 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 5 | 2 | |
| 6 | 3 | <h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Lookup Tree{/i18n}:<br />{$field->getName()}</h2> |
| 7 | 4 | ... | ... |
templates/ktcore/metadata/conditional/conditional_overview.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | 1 | {$context->oPage->requireJSResource('resources/js/taillog.js')} |
| 7 | 2 | {$context->oPage->requireJSResource('resources/js/conditional_usage.js')} |
| 8 | 3 | ... | ... |
templates/ktcore/metadata/conditional/editcomplex.smarty
| ... | ... | @@ -35,13 +35,6 @@ |
| 35 | 35 | {/capture} |
| 36 | 36 | {$context->oPage->requireCSSStandalone($sCSS)} |
| 37 | 37 | |
| 38 | -<!-- include the mochikit js --> | |
| 39 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")} | |
| 40 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 41 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")} | |
| 42 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")} | |
| 43 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 44 | - | |
| 45 | 38 | {$context->oPage->requireJSResource("resources/js/taillog.js")} |
| 46 | 39 | {$context->oPage->requireJSResource("resources/js/conditional_complex_edit.js")} |
| 47 | 40 | ... | ... |
templates/ktcore/metadata/conditional/editsimple.smarty
| ... | ... | @@ -46,11 +46,6 @@ td { vertical-align: top; } |
| 46 | 46 | {$context->oPage->requireCSSStandalone($sCSS)} |
| 47 | 47 | |
| 48 | 48 | <!-- include the mochikit js --> |
| 49 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")} | |
| 50 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")} | |
| 51 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 52 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")} | |
| 53 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 54 | 49 | |
| 55 | 50 | {$context->oPage->requireJSResource("resources/js/taillog.js")} |
| 56 | 51 | {$context->oPage->requireJSResource("resources/js/conditional_simple_edit.js")} | ... | ... |
templates/ktcore/principals/groups_sourceusers.smarty
| 1 | 1 | <h2>{i18n arg_name=$group->getName()}Manage Users in #name#{/i18n}</h2> |
| 2 | 2 | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 4 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 5 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 6 | - | |
| 7 | 3 | <p class="descriptiveText">{i18n}Users may be associated with Groups which are then used to grant these users security privileges.{/i18n}</p> |
| 8 | 4 | |
| 9 | 5 | ... | ... |
templates/ktcore/widget_fieldset_conditional.smarty
| 1 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")} | |
| 2 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")} | |
| 3 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")} | |
| 4 | -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")} | |
| 5 | - | |
| 6 | 1 | {capture assign=sJS} |
| 7 | 2 | var innerUrl = {$rootUrl}; |
| 8 | 3 | {literal} | ... | ... |
templates/ktstandard/authentication/ldapsearchuser.smarty
| 1 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')} | |
| 2 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')} | |
| 3 | -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')} | |
| 4 | - | |
| 5 | 1 | {$context->oPage->requireJSResource('resources/js/toggleselect.js')} |
| 6 | 2 | |
| 7 | 3 | <form method="POST" action="{$smarty.server.PHP_SELF}"> | ... | ... |
thirdpartyjs/tinymce/jscripts/tiny_mce/tiny_mce.js
| 1 | -/** | |
| 2 | - * $RCSfile$ | |
| 3 | - * $Revision$ | |
| 4 | - * $Date$ | |
| 5 | - * | |
| 6 | - * @author Moxiecode | |
| 7 | - * @copyright Copyright ยฉ 2004, Moxiecode Systems AB, All rights reserved. | |
| 8 | - */ | |
| 9 | - function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.dialogCounter=0;this.idCounter=0;};TinyMCE.prototype.defParam=function(key,def_val){this.settings[key]=tinyMCE.getParam(key,def_val);};TinyMCE.prototype.init=function(settings){var theme;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip.php")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1)?'_src':'';src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.defParam("mode","none");this.defParam("theme","advanced");this.defParam("plugins","",true);this.defParam("language","en");this.defParam("docs_language",this.settings['language']);this.defParam("elements","");this.defParam("textarea_trigger","mce_editable");this.defParam("valid_elements","+a[name|href|target|title|class],strong/b[class],em/i[class],strike[class],u[class],+p[dir|class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],div[dir|class|align],span[class|align],pre[class|align],address[class|align],h1[dir|class|align],h2[dir|class|align],h3[dir|class|align],h4[dir|class|align],h5[dir|class|align],h6[dir|class|align],hr");this.defParam("extended_valid_elements","");this.defParam("invalid_elements","");this.defParam("encoding","");this.defParam("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE.prototype.convertURL"));this.defParam("save_callback","");this.defParam("debug",false);this.defParam("force_br_newlines",false);this.defParam("force_p_newlines",true);this.defParam("add_form_submit_trigger",true);this.defParam("relative_urls",true);this.defParam("remove_script_host",true);this.defParam("focus_alert",true);this.defParam("document_base_url",this.documentURL);this.defParam("visual",true);this.defParam("visual_table_class","mceVisualAid");this.defParam("setupcontent_callback","");this.defParam("fix_content_duplication",true);this.defParam("custom_undo_redo",true);this.defParam("custom_undo_redo_levels",-1);this.defParam("custom_undo_redo_keyboard_shortcuts",true);this.defParam("verify_css_classes",false);this.defParam("trim_span_elements",true);this.defParam("verify_html",true);this.defParam("apply_source_formatting",false);this.defParam("directionality","ltr");this.defParam("auto_cleanup_word",false);this.defParam("cleanup_on_startup",false);this.defParam("inline_styles",false);this.defParam("convert_newlines_to_brs",false);this.defParam("auto_reset_designmode",false);this.defParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,202,Ecirc,203,Euml,204,Igrave,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,217,Ugrave,219,Ucirc,220,Uuml,376,Yuml,222,THORN,224,agrave,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,234,ecirc,235,euml,236,igrave,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,249,ugrave,251,ucirc,252,uuml,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy,233,eacute");this.defParam("entity_encoding","named");this.defParam("cleanup_callback","");this.defParam("add_unload_trigger",true);this.defParam("ask",false);this.defParam("nowrap",false);this.defParam("auto_resize",false);this.defParam("auto_focus",false);this.defParam("cleanup",true);this.defParam("remove_linebreaks",true);this.defParam("button_tile_map",false);this.defParam("submit_patch",true);this.defParam("browsers","msie,safari,gecko");this.defParam("dialog_type","window");if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;var baseHREF=tinyMCE.settings['document_base_url'];if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.blockRegExp=new RegExp("^(h1|h2|h3|h4|h5|h6|p|div|address|pre|form|table|li|ol|ul|td)$","i");this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else this.settings['content_css']=cssPath;}else this.settings['content_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_content.css";if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath;}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath;}else this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_ui.css";if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg);}this._initCleanup();if(this.configs.length==0){if(this.isSafari)alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.");tinyMCE.addEvent(window,"load",TinyMCE.prototype.onLoad);if(tinyMCE.isMSIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE.prototype.unloadHandler);}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i<themePlugins.length;i++)this.loadScript(tinyMCE.baseURL+'/plugins/'+themePlugins[i]+'/editor_plugin'+tinyMCE.srcMode+'.js');}settings['index']=this.configs.length;this.configs[this.configs.length]=settings;};TinyMCE.prototype.loadScript=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.loadCSS=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<link href="'+url+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.importCSS=function(doc,css_file){if(tinyMCE.isMSIE)var styleSheet=doc.createStyleSheet(css_file);else{var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if(headArr=doc.getElementsByTagName("head"))headArr[0].appendChild(elm);}};TinyMCE.prototype.confirmAdd=function(e,settings){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true');};TinyMCE.prototype.updateContent=function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isMSIE)doc.body.innerHTML=tinyMCE._cleanupHTML(doc,this.settings,doc.body,inst.visualAid);}}};TinyMCE.prototype.addMCEControl=function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCEControl(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst.onAdd(replace_element,form_element_name,target_document);};TinyMCE.prototype.triggerSave=function(skip_cleanup,skip_callback){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(inst.getDoc(),inst.getBody().innerHTML);var htm=skip_cleanup?inst.getBody().innerHTML:tinyMCE._cleanupHTML(inst.getDoc(),this.settings,inst.getBody(),this.visualAid,true);if(tinyMCE.settings["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")htm=tinyMCE.convertStringToXML(htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(inst.formTargetElementId,htm,inst.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"(","(","gi");htm=tinyMCE.regexpReplace(htm,")",")","gi");htm=tinyMCE.regexpReplace(htm,";",";","gi");htm=tinyMCE.regexpReplace(htm,""",""","gi");htm=tinyMCE.regexpReplace(htm,"^","^","gi");if(inst.formElement)inst.formElement.value=htm;}};TinyMCE.prototype._convertOnClick=function(node){if(tinyMCE.isMSIE5)return;var elms=node.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var onclick=elms[i].getAttribute('onclick');if(onclick&&onclick!=""){elms[i].removeAttribute("onclick");elms[i].setAttribute("mce_onclick",tinyMCE.cleanupEventStr(""+onclick));elms[i].onclick=null;}}};TinyMCE.prototype.resetForm=function(form_index){var formObj=document.forms[form_index];for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();for(var i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name){inst.getBody().innerHTML=formObj.elements[i].value;return;}}}};TinyMCE.prototype.execInstanceCommand=function(editor_id,command,user_interface,value,focus){var inst=tinyMCE.getInstanceById(editor_id);if(inst){if(typeof(focus)=="undefined")focus=true;if(focus)inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();this.selectedInstance=inst;tinyMCE.execCommand(command,user_interface,value);}};TinyMCE.prototype.execCommand=function(command,user_interface,value){user_interface=user_interface?user_interface:false;value=value?value:null;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();switch(command){case 'mceHelp':window.open(tinyMCE.themeURL+"/docs/"+this.settings['docs_language']+"/index.htm","mceHelp","menubar=yes,toolbar=yes,scrollbars=yes,left=20,top=20,width=550,height=600");return;case 'mceFocus':var inst=tinyMCE.getInstanceById(value);if(inst)inst.contentWindow.focus();return;case "mceAddControl":case "mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case "mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value['element'],value['document']);return;case "mceRemoveControl":case "mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case "mceResetDesignMode":if(!tinyMCE.isMSIE){for(var n in tinyMCE.instances){try{tinyMCE.instances[n].getDoc().designMode="on";}catch(e){}}}return;}if(this.selectedInstance)this.selectedInstance.execCommand(command,user_interface,value);else if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert']);};TinyMCE.prototype.eventPatch=function(editor_id){if(typeof(tinyMCE)=="undefined")return true;for(var i=0;i<document.frames.length;i++){if(document.frames[i].event){var event=document.frames[i].event;event.target=event.srcElement;event.target.editor_id=document.frames[i].editor_id;TinyMCE.prototype.handleEvent(event);return;}}};TinyMCE.prototype.unloadHandler=function(){tinyMCE.triggerSave(true,true);};TinyMCE.prototype.addEventHandlers=function(editor_id){if(tinyMCE.isMSIE){var doc=document.frames[editor_id].document;document.frames[editor_id].editor_id=editor_id;tinyMCE.addEvent(doc,"keypress",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"keyup",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"keydown",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"mouseup",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"click",TinyMCE.prototype.eventPatch);}else{var inst=tinyMCE.instances[editor_id];var doc=inst.getDoc();inst.switchSettings();doc.editor_id=editor_id;tinyMCE.addEvent(doc,"keypress",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keypress",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keydown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keyup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"click",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mouseup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mousedown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"focus",tinyMCE.handleEvent);eval('try { doc.designMode = "On"; } catch(e) {}');}};TinyMCE.prototype._createIFrame=function(replace_element){var iframe=document.createElement("iframe");var id=replace_element.getAttribute("id");iframe.setAttribute("id",id);iframe.setAttribute("className","mceEditorArea");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",tinyMCE.settings['area_width']);iframe.setAttribute("height",tinyMCE.settings['area_height']);iframe.setAttribute("allowtransparency","true");if(tinyMCE.settings["auto_resize"])iframe.setAttribute("scrolling","no");if(tinyMCE.isMSIE)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=tinyMCE.settings['area_width'];iframe.style.height=tinyMCE.settings['area_height'];if(tinyMCE.isMSIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isMSIE)return window.frames[id];else return iframe;};TinyMCE.prototype.setupContent=function(editor_id){var inst=tinyMCE.instances[editor_id];var doc=inst.getDoc();var head=doc.getElementsByTagName('head').item(0);var content=inst.startContent;inst.switchSettings();if(!tinyMCE.isMSIE&&doc.title!="blank_page"){doc.location.href=tinyMCE.baseURL+"/blank.htm";window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return;}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return;}tinyMCE.importCSS(inst.getDoc(),inst.settings['content_css']);tinyMCE.executeCallback('init_instance_callback','_initInstance',0,inst);if(tinyMCE.settings['nowrap'])doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isMSIE)doc.documentElement.editorId=editor_id;base=doc.createElement("base");base.setAttribute('href',tinyMCE.settings['base_href']);head.appendChild(base);if(tinyMCE.settings['convert_newlines_to_brs']){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi");}content=tinyMCE._customCleanup("insert_to_editor",content);if(tinyMCE.isMSIE){window.setInterval('try{tinyMCE.getCSSClasses(document.frames["'+editor_id+'"].document, "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])document.frames[editor_id].document.styleSheets[0].addRule("p","margin: 0px;");var body=document.frames[editor_id].document.body;tinyMCE.addEvent(body,"beforepaste",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(body,"beforecut",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(body,"paste",TinyMCE.prototype.eventPatch);body.editorId=editor_id;}if(!tinyMCE.isMSIE){var contentElement=inst.getDoc().createElement("body");var doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.settings['force_p_newlines'])content=content.replace(new RegExp('<>','g'),"");if(tinyMCE.settings['cleanup_on_startup'])inst.getBody().innerHTML=tinyMCE._cleanupHTML(doc,this.settings,contentElement);else{content=tinyMCE.regexpReplace(content,"<strong","<b","gi");content=tinyMCE.regexpReplace(content,"<em","<i","gi");content=tinyMCE.regexpReplace(content,"</strong>","</b>","gi");content=tinyMCE.regexpReplace(content,"</em>","</i>","gi");inst.getBody().innerHTML=content;}inst.convertAllRelativeURLs();}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(inst.getDoc(),content);eval('try {inst.getBody().innerHTML = tinyMCE._cleanupHTML(inst.contentDocument, this.settings, inst.getBody());} catch(e) {}');}else tinyMCE._setHTML(inst.getDoc(),content);}tinyMCE._convertOnClick(inst.getBody());var parentElm=document.getElementById(inst.editorId+'_parent');if(parentElm.lastChild.nodeName.toLowerCase()=="input")inst.formElement=parentElm.lastChild;else inst.formElement=parentElm.nextSibling;tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings['visual']);tinyMCE.executeCallback('setupcontent_callback','_setupContent',0,editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isMSIE)TinyMCE.prototype.addEventHandlers(editor_id);inst.startContent=inst.getBody().innerHTML;tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=inst.contentWindow.document.body;tinyMCE.triggerNodeChange(false,true);tinyMCE._customCleanup("insert_to_editor_dom",inst.contentWindow.document.body);};TinyMCE.prototype.cancelEvent=function(e){if(tinyMCE.isMSIE){e.returnValue=false;e.cancelBubble=true;}else e.preventDefault();};TinyMCE.prototype.removeTinyMCEFormElements=function(form_obj){for(var i=0;i<form_obj.elements.length;i++){var elementId=form_obj.elements[i].name?form_obj.elements[i].name:form_obj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)form_obj.elements[i].disabled=true;}};TinyMCE.prototype.handleEvent=function(e){if(typeof(tinyMCE)=="undefined")return true;switch(e.type){case "submit":tinyMCE.removeTinyMCEFormElements(tinyMCE.isMSIE?window.event.srcElement:e.target);tinyMCE.triggerSave();return;case "reset":var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10);}return;case "paste":if(tinyMCE.settings['auto_cleanup_word']){var editorId=e.target.editorId;if(!editorId)editorId=e.target.ownerDocument.editorId;if(editorId)window.setTimeout("tinyMCE.execInstanceCommand('"+editorId+"', 'mceCleanupWord', false, null);",1);}break;case "beforecut":case "beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");break;case "keypress":if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}else{if(e.target.ownerDocument.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.ownerDocument.editorId];}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&e.keyCode==13&&!e.shiftKey){if(tinyMCE.selectedInstance._insertPara(e)){e.preventDefault();return false;}}if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){e.preventDefault();return false;}}if(!tinyMCE.isMSIE&&e.ctrlKey&&tinyMCE.settings['custom_undo_redo']){if(e.charCode==120||e.charCode==118){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");return;}if(tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']){if(e.charCode==122){tinyMCE.selectedInstance.execCommand("Undo");e.preventDefault();return false;}if(e.charCode==121){tinyMCE.selectedInstance.execCommand("Redo");e.preventDefault();return false;}}if(e.charCode==98){tinyMCE.selectedInstance.execCommand("Bold");e.preventDefault();return false;}if(e.charCode==105){tinyMCE.selectedInstance.execCommand("Italic");e.preventDefault();return false;}if(e.charCode==117){tinyMCE.selectedInstance.execCommand("Underline");e.preventDefault();return false;}}if(tinyMCE.settings['custom_undo_redo']){var keys=new Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;posKey=true;break;}}if(!tinyMCE.selectedInstance.typing&&!posKey){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;}}if(tinyMCE.isMSIE&&tinyMCE.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.triggerNodeChange(false);return false;}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false);}return false;break;case "keyup":case "keydown":if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];else return;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){e.preventDefault();return false;}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings['visual']);if(tinyMCE.isGecko&&tinyMCE.settings['document_base_url']!=""+document.location.href&&e.type=="keyup"&&e.ctrlKey&&e.keyCode==86)tinyMCE.selectedInstance.fixBrokenURLs();if(tinyMCE.isMSIE&&tinyMCE.settings['custom_undo_redo']){var keys=new Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;posKey=true;break;}}if(!tinyMCE.selectedInstance.typing&&!posKey&&(e.keyCode<16||e.keyCode>18&&e.keyCode!=255)){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;tinyMCE.triggerNodeChange(false);}if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);var keys=new Array(8,46);for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(!tinyMCE.selectedInstance.typing){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;}if(e.type=="keyup")tinyMCE.triggerNodeChange(false);return true;}}var ctrlKeys=new Array(66,73,85,86,88);for(var i=0;i<keys.length;i++){if(ctrlKeys[i]==e.keyCode&&e.ctrlKey){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return true;}}if(tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']){if(e.keyCode==90&&e.ctrlKey&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Undo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return false;}if(e.keyCode==89&&e.ctrlKey&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Redo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return false;}}}var keys=new Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break;}}if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);break;case "mousedown":case "mouseup":case "click":case "focus":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var targetBody=tinyMCE.getParentElement(e.target,"body");for(var instanceName in tinyMCE.instances){var inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody()==targetBody){tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");tinyMCE.selectedInstance.typing=false;break;}}if(tinyMCE.isSafari){tinyMCE.selectedInstance.lastSafariSelection=tinyMCE.selectedInstance.getBookmark();tinyMCE.selectedInstance.lastSafariSelectedElement=tinyMCE.selectedElement;var lnk=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");if(lnk&&e.type=="mousedown"){lnk.setAttribute("mce_real_href",lnk.getAttribute("href"));lnk.setAttribute("href","javascript:void(0);");}if(lnk&&e.type=="click"){window.setTimeout(function(){lnk.setAttribute("href",lnk.getAttribute("mce_real_href"));lnk.removeAttribute("mce_real_href");},10);}}if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];if(e.target.nodeName.toLowerCase()=="a"&&e.type=="click"&&e.altKey){var evalCode=""+tinyMCE.cleanupEventStr(e.target.getAttribute("mce_onclick"));eval(evalCode.replace('return false;',''));}if(tinyMCE.isGecko&&tinyMCE.settings['document_base_url']!=""+document.location.href)window.setTimeout('tinyMCE.getInstanceById("'+inst.editorId+'").fixBrokenURLs();',10);return false;break;}};TinyMCE.prototype.switchClass=function(element,class_name,lock_state){var lockChanged=false;if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.oldClassName=element.className;element.className=class_name;}};TinyMCE.prototype.restoreAndSwitchClass=function(element,class_name){if(element!=null&&!element.classLock){this.restoreClass(element);this.switchClass(element,class_name);}};TinyMCE.prototype.switchClassSticky=function(element_name,class_name,lock_state){var element,lockChanged=false;if(!this.stickyClassesLookup[element_name])this.stickyClassesLookup[element_name]=document.getElementById(element_name);element=this.stickyClassesLookup[element_name];if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.className=class_name;element.oldClassName=class_name;}};TinyMCE.prototype.restoreClass=function(element){if(element!=null&&element.oldClassName&&!element.classLock){element.className=element.oldClassName;element.oldClassName=null;}};TinyMCE.prototype.setClassLock=function(element,lock_state){if(element!=null)element.classLock=lock_state;};TinyMCE.prototype.addEvent=function(obj,name,handler){if(tinyMCE.isMSIE){obj.attachEvent("on"+name,handler);}else obj.addEventListener(name,handler,false);};TinyMCE.prototype.submitPatch=function(){tinyMCE.removeTinyMCEFormElements(this);tinyMCE.triggerSave();this.oldSubmit();};TinyMCE.prototype.onLoad=function(){for(var c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];var elementRefAr=new Array();if(document.forms&&tinyMCE.settings['add_form_submit_trigger']&&!tinyMCE.submitTriggers){for(var i=0;i<document.forms.length;i++){var form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings['submit_patch']){try{form.oldSubmit=form.submit;form.submit=TinyMCE.prototype.submitPatch;}catch(e){}}}}var mode=tinyMCE.settings['mode'];switch(mode){case "exact":var elements=tinyMCE.getParam('elements','',true,',');for(var i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);var trigger=element?element.getAttribute(tinyMCE.settings['textarea_trigger']):"";if(trigger=="false")continue;if(tinyMCE.settings['ask']&&element){elementRefAr[elementRefAr.length]=element;continue;}if(element)tinyMCE.addMCEControl(element,elements[i]);else if(tinyMCE.settings['debug'])alert("Error: Could not find element by id or name: "+elements[i]);}break;case "specific_textareas":case "textareas":var nodeList=document.getElementsByTagName("textarea");for(var i=0;i<nodeList.length;i++){var trigger=nodeList.item(i).getAttribute(tinyMCE.settings['textarea_trigger']);if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=nodeList.item(i);}break;}for(var i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']){if(tinyMCE.isGecko){var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e){window.setTimeout(function(){TinyMCE.prototype.confirmAdd(e,settings);},10);});}else{var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE.prototype.confirmAdd(null,settings);});}}else tinyMCE.addMCEControl(element,elementId);}if(tinyMCE.settings['auto_focus']){window.setTimeout(function(){var inst=tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);inst.selectNode(inst.getBody(),true,true);inst.contentWindow.focus();},10);}tinyMCE.executeCallback('oninit','_oninit',0);}};TinyMCE.prototype.removeMCEControl=function(editor_id){var inst=tinyMCE.getInstanceById(editor_id);if(inst){inst.switchSettings();editor_id=inst.editorId;var html=tinyMCE.getContent(editor_id);var tmpInstances=new Array();for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(instanceName!=editor_id)tmpInstances[instanceName]=instance;}tinyMCE.instances=tmpInstances;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;var replaceElement=document.getElementById(editor_id+"_parent");var oldTargetElement=inst.oldTargetElement;var targetName=oldTargetElement.nodeName.toLowerCase();if(targetName=="textarea"||targetName=="input"){replaceElement.parentNode.removeChild(replaceElement);oldTargetElement.style.display="inline";oldTargetElement.value=html;}else{oldTargetElement.innerHTML=html;replaceElement.parentNode.insertBefore(oldTargetElement,replaceElement);replaceElement.parentNode.removeChild(replaceElement);}}};TinyMCE.prototype._cleanupElementName=function(element_name,element){element_name=element_name.toLowerCase();if(element_name=="body")return null;if(tinyMCE.cleanup_verify_html){for(var i=0;i<tinyMCE.cleanup_invalidElements.length;i++){if(tinyMCE.cleanup_invalidElements[i]==element_name)return null;}var validElement=false;var elementAttribs=null;for(var i=0;i<tinyMCE.cleanup_validElements.length&&!elementAttribs;i++){for(var x=0,n=tinyMCE.cleanup_validElements[i][0].length;x<n;x++){var elmMatch=tinyMCE.cleanup_validElements[i][0][x];if(elmMatch.charAt(0)=='+')elmMatch=elmMatch.substring(1);if(elmMatch.match(new RegExp('\\*|\\?|\\+','g'))!=null){elmMatch=elmMatch.replace(new RegExp('\\?','g'),'(\\S?)');elmMatch=elmMatch.replace(new RegExp('\\+','g'),'(\\S+)');elmMatch=elmMatch.replace(new RegExp('\\*','g'),'(\\S*)');elmMatch="^"+elmMatch+"$";if(element_name.match(new RegExp(elmMatch,'g'))){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;break;}}if(element_name==elmMatch){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;element_name=elementAttribs[0][0];break;}}}if(!validElement)return null;}if(!tinyMCE.isMSIE){if(element_name=="strong"&&!tinyMCE.cleanup_on_save)element_name="b";else if(element_name=="em"&&!tinyMCE.cleanup_on_save)element_name="i";}if(tinyMCE.isMSIE){if(element_name=="table"){var attribValue=element.style.pixelWidth==0?element.getAttribute("width"):element.style.pixelWidth;element.setAttribute("width",attribValue);attribValue=element.style.pixelHeight==0?element.getAttribute("height"):element.style.pixelHeight;element.setAttribute("height",attribValue);}}var elmData=new Object();elmData.element_name=element_name;elmData.valid_attribs=elementAttribs;return elmData;};TinyMCE.prototype._fixInlineStyles=function(elm){var eName=elm.nodeName;if(elm.nodeName=="FONT"){if((c=tinyMCE.getAttrib(elm,"color"))!=""){elm.style.color=c;}}if(eName=="TABLE"||eName=="TD"||eName=="IMG"){var value;value=tinyMCE.isMSIE?elm.width:elm.getAttribute("width");if(value&&value!=""){if(typeof(value)!="string"||!value.indexOf("%"))value+="px";elm.style.width=value;}value=tinyMCE.isMSIE?elm.height:elm.getAttribute("height");if(value&&value!=""){if(typeof(value)!="string"||!value.indexOf("%"))value+="px";elm.style.height=value;}value=tinyMCE.isMSIE?elm.border:elm.getAttribute("border");if(value&&value!=""&&(value!="0"&&eName!="TABLE")){elm.style.borderWidth=value+"px";}}value=elm.getAttribute("align");if(value&&value!=""){if(elm.nodeName.toLowerCase()=="img"){if(tinyMCE.isMSIE)elm.style.styleFloat=value;else elm.style.cssFloat=value;}else elm.style.textAlign=value;}value=elm.getAttribute("vspace");if(value&&value!=""){elm.style.marginTop=value+"px";elm.style.marginBottom=value+"px";}value=elm.getAttribute("hspace");if(value&&value!=""){elm.style.marginLeft=value+"px";elm.style.marginRight=value+"px";}};TinyMCE.prototype._cleanupAttribute=function(valid_attributes,element_name,attribute_node,element_node){var attribName=attribute_node.nodeName.toLowerCase();var attribValue=attribute_node.nodeValue;var attribMustBeValue=null;var verified=false;if(tinyMCE.cleanup_inline_styles&&(element_name=="table"||element_name=="td"||element_name=="img")){if(attribName=="width"||attribName=="height"||attribName=="border"||attribName=="align"||attribName=="valign"||attribName=="hspace"||attribName=="vspace")return null;}if(attribName.indexOf('moz_')!=-1)return null;if(!tinyMCE.isMSIE&&(attribName=="mce_real_href"||attribName=="mce_real_src")){if(!tinyMCE.cleanup_on_save){var attrib=new Object();attrib.name=attribName;attrib.value=attribValue;return attrib;}else return null;}if(attribName=="mce_onclick")verified=true;if(tinyMCE.cleanup_verify_html&&!verified){for(var i=1;i<valid_attributes.length;i++){var attribMatch=valid_attributes[i][0];var re=null;if(attribMatch.match(new RegExp('\\*|\\?|\\+','g'))!=null){attribMatch=attribMatch.replace(new RegExp('\\?','g'),'(\\S?)');attribMatch=attribMatch.replace(new RegExp('\\+','g'),'(\\S+)');attribMatch=attribMatch.replace(new RegExp('\\*','g'),'(\\S*)');attribMatch="^"+attribMatch+"$";re=new RegExp(attribMatch,'g');}if((re&&attribName.match(re)!=null)||attribName==attribMatch){verified=true;attribMustBeValue=valid_attributes[i][3];break;}}if((element_name=="table"||element_name=="td")&&attribName=="style")verified=true;if(!verified)return false;}else verified=true;switch(attribName){case "size":if(tinyMCE.isMSIE5&&element_name=="font")attribValue=element_node.size;break;case "color":if(tinyMCE.isMSIE5&&element_name=="font")attribValue=element_node.color;break;case "width":if(tinyMCE.isMSIE)attribValue=element_node.width;break;case "height":if(tinyMCE.isMSIE)attribValue=element_node.height;break;case "border":if(tinyMCE.isMSIE)attribValue=element_node.border;break;case "class":if(element_name=="table"||element_name=="td"){if(tinyMCE.cleanup_visual_table_class!="")attribValue=tinyMCE.getVisualAidClass(attribValue,!tinyMCE.cleanup_on_save);}if(!tinyMCE._verifyClass(element_node)||attribValue=="")return null;break;case "style":attribValue=element_node.style.cssText.toLowerCase();if(tinyMCE.isMSIE){var border=element_node.style.border;var bt=element_node.style.borderTop;var bl=element_node.style.borderLeft;var br=element_node.style.borderRight;var bb=element_node.style.borderBottom;if(border!=""&&(bt==border&&bl==border&&br==border&&bb==border)){attribValue=tinyMCE.regexpReplace(attribValue,'border-top: '+border+'?; ?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-left: '+border+'?; ?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-right: '+border+'?; ?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-bottom: '+border+'?;( ?)','border: '+border+';$1');}}break;case "onclick":case "mce_onclick":if(tinyMCE.isMSIE5)break;if(tinyMCE.cleanup_on_save){if(element_node.getAttribute("mce_onclick")){attribName="onclick";attribValue=""+element_node.getAttribute("mce_onclick");}}else{if(attribName=="onclick"&&!tinyMCE.cleanup_on_save)return null;}break;case "href":case "src":if(!tinyMCE.isMSIE&&attribName=="href"&&element_node.getAttribute("mce_real_href"))attribValue=element_node.getAttribute("mce_real_href");if(!tinyMCE.isMSIE&&attribName=="src"&&element_node.getAttribute("mce_real_src"))attribValue=element_node.getAttribute("mce_real_src");if(tinyMCE.isGecko&&!tinyMCE.settings['relative_urls'])attribValue=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],attribValue);attribValue=eval(tinyMCE.cleanup_urlconverter_callback+"(attribValue, element_node, tinyMCE.cleanup_on_save);");break;case "colspan":case "rowspan":if(attribValue=="1")return null;break;case "_moz-userdefined":case "editorid":case "editor_id":case "mce_real_href":case "mce_real_src":return null;}if(attribMustBeValue!=null){var isCorrect=false;for(var i=0;i<attribMustBeValue.length;i++){if(attribValue==attribMustBeValue[i]){isCorrect=true;break;}}if(!isCorrect)return null;}var attrib=new Object();attrib.name=attribName;attrib.value=attribValue;return attrib;};TinyMCE.prototype._verifyClass=function(node){if(tinyMCE.isGecko){var className=node.getAttribute('class');if(!className)return false;}if(tinyMCE.isMSIE)var className=node.getAttribute('className');if(tinyMCE.cleanup_verify_css_classes&&tinyMCE.cleanup_on_save){var csses=tinyMCE.getCSSClasses();nonDefinedCSS=true;for(var c=0;c<csses.length;c++){if(csses[c]==className){nonDefinedCSS=false;break;}}if(nonDefinedCSS&&className.indexOf('mce_')!=0){node.removeAttribute('className');node.removeAttribute('class');return false;}}return true;};TinyMCE.prototype.cleanupNode=function(node){var output="";switch(node.nodeType){case 1:var elementData=tinyMCE._cleanupElementName(node.nodeName,node);var elementName=elementData?elementData.element_name:null;var elementValidAttribs=elementData?elementData.valid_attribs:null;var elementAttribs="";var openTag=false;if(elementName!=null&&elementName.charAt(0)=='+'){elementName=elementName.substring(1);openTag=true;}if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var lookup=tinyMCE.cleanup_elementLookupTable;for(var i=0;i<lookup.length;i++){if(lookup[i]==node)return output;}lookup[lookup.length]=node;}if(!elementName){if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return output;}if(node.style&&(node.style.cssText.indexOf('mso-')!=-1&&tinyMCE.settings['auto_cleanup_word'])||node.style.cssText==""){node.style.cssText="";node.removeAttribute("style");}if(tinyMCE.cleanup_inline_styles)tinyMCE._fixInlineStyles(node);if(elementValidAttribs){for(var a=1;a<elementValidAttribs.length;a++){var attribName,attribDefaultValue,attribForceValue,attribValue;attribName=elementValidAttribs[a][0];attribDefaultValue=elementValidAttribs[a][1];attribForceValue=elementValidAttribs[a][2];if(attribDefaultValue!=null||attribForceValue!=null){var attribValue=node.getAttribute(attribName);if(node.getAttribute(attribName)==null||node.getAttribute(attribName)=="")attribValue=attribDefaultValue;attribValue=attribForceValue?attribForceValue:attribValue;if(attribValue=="{$uid}")attribValue="uid_"+(tinyMCE.cleanup_idCount++);if(attribName=="class")attribValue=tinyMCE.getVisualAidClass(attribValue,tinyMCE.cleanup_on_save);node.setAttribute(attribName,attribValue);}}}if(elementName=="span"&&tinyMCE.cleanup_trim_span_elements){var re=new RegExp('^[ \t]+','g');var onlyWhiteSpace=true;for(var a=0;a<node.childNodes.length;a++){var tmpNode=node.childNodes[a];if((tmpNode.nodeType==3&&!tmpNode.nodeValue.match(re))||tmpNode.nodeName.toLowerCase()!="span"){onlyWhiteSpace=false;break;}}tinyMCE._verifyClass(node);var numAttribs=0;for(var i=0;i<node.attributes.length;i++){if(node.attributes[i].specified)numAttribs++;}if(onlyWhiteSpace||numAttribs==0){if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return output;}}if(elementName=="table"&&!node.hasChildNodes())return "";if(tinyMCE.isGecko&&elementName=="img"){var w=node.style.width;if(w!=null&&w!="")node.setAttribute("width",w);var h=node.style.height;if(h!=null&&h!="")node.setAttribute("height",h);}if(node.attributes.length>0){for(var i=0;i<node.attributes.length;i++){if(node.attributes[i].specified){var attrib=tinyMCE._cleanupAttribute(elementValidAttribs,elementName,node.attributes[i],node);if(attrib)elementAttribs+=" "+attrib.name+"="+'"'+attrib.value+'"';}}}if(tinyMCE.isMSIE&&elementName=="input"){if(node.type){if(!elementAttribs.match(/type=/g))elementAttribs+=" type="+'"'+node.type+'"';}if(node.value){if(!elementAttribs.match(/value=/g))elementAttribs+=" value="+'"'+node.value+'"';}}if((elementName=="p"||elementName=="td")&&(node.innerHTML==""||node.innerHTML==" "))return "<"+elementName+elementAttribs+">"+this.convertStringToXML(String.fromCharCode(160))+"</"+elementName+">";if(tinyMCE.isMSIE&&elementName=="script")return "<"+elementName+elementAttribs+">"+node.text+"</"+elementName+">";if(node.hasChildNodes()){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="<div"+elementAttribs+">";else output+="<"+elementName+elementAttribs+">";for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="</div><br />";else output+="</"+elementName+">";}else{if(openTag)output+="<"+elementName+elementAttribs+"></"+elementName+">";else{output+="<"+elementName+elementAttribs+" />";}}return output;case 3:if(node.parentNode.nodeName.toLowerCase()=="script")return node.nodeValue;return this.convertStringToXML(node.nodeValue);case 8:return "<!--"+node.nodeValue+"-->";default:return "[UNKNOWN NODETYPE "+node.nodeType+"]";}};TinyMCE.prototype.convertStringToXML=function(html_data){var output="";for(var i=0;i<html_data.length;i++){var chr=html_data.charCodeAt(i);if(tinyMCE.settings['entity_encoding']=="numeric"){if(chr>127)output+='&#'+chr+";";else output+=String.fromCharCode(chr);continue;}if(tinyMCE.settings['entity_encoding']=="raw"){output+=String.fromCharCode(chr);continue;}if(typeof(tinyMCE.cleanup_entities["c"+chr])!='undefined'&&tinyMCE.cleanup_entities["c"+chr]!='')output+='&'+tinyMCE.cleanup_entities["c"+chr]+';';else output+=''+String.fromCharCode(chr);}return output;};TinyMCE.prototype._getCleanupElementName=function(chunk){var pos;if(chunk.charAt(0)=='+')chunk=chunk.substring(1);if((pos=chunk.indexOf('/'))!=-1)chunk=chunk.substring(0,pos);if((pos=chunk.indexOf('['))!=-1)chunk=chunk.substring(0,pos);return chunk;};TinyMCE.prototype._initCleanup=function(){var validElements=tinyMCE.settings["valid_elements"];validElements=validElements.split(',');var extendedValidElements=tinyMCE.settings["extended_valid_elements"];extendedValidElements=extendedValidElements.split(',');for(var i=0;i<extendedValidElements.length;i++){var elementName=this._getCleanupElementName(extendedValidElements[i]);var skipAdd=false;for(var x=0;x<validElements.length;x++){if(this._getCleanupElementName(validElements[x])==elementName){validElements[x]=extendedValidElements[i];skipAdd=true;break;}}if(!skipAdd)validElements[validElements.length]=extendedValidElements[i];}for(var i=0;i<validElements.length;i++){var item=validElements[i];item=item.replace('[','|');item=item.replace(']','');var attribs=item.split('|');for(var x=0;x<attribs.length;x++)attribs[x]=attribs[x].toLowerCase();attribs[0]=attribs[0].split('/');for(var x=1;x<attribs.length;x++){var attribName=attribs[x];var attribDefault=null;var attribForce=null;var attribMustBe=null;if((pos=attribName.indexOf('='))!=-1){attribDefault=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf(':'))!=-1){attribForce=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf('<'))!=-1){attribMustBe=attribName.substring(pos+1).split('?');attribName=attribName.substring(0,pos);}attribs[x]=new Array(attribName,attribDefault,attribForce,attribMustBe);}validElements[i]=attribs;}var invalidElements=tinyMCE.settings['invalid_elements'].split(',');for(var i=0;i<invalidElements.length;i++)invalidElements[i]=invalidElements[i].toLowerCase();tinyMCE.settings['cleanup_validElements']=validElements;tinyMCE.settings['cleanup_invalidElements']=invalidElements;tinyMCE.settings['cleanup_entities']=new Array();var entities=tinyMCE.getParam('entities','',true,',');for(var i=0;i<entities.length;i+=2)tinyMCE.settings['cleanup_entities']['c'+entities[i]]=entities[i+1];};TinyMCE.prototype._cleanupHTML=function(doc,config,element,visual,on_save){if(!tinyMCE.settings['cleanup'])return element.innerHTML;tinyMCE._customCleanup(on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);tinyMCE.cleanup_validElements=tinyMCE.settings['cleanup_validElements'];tinyMCE.cleanup_entities=tinyMCE.settings['cleanup_entities'];tinyMCE.cleanup_invalidElements=tinyMCE.settings['cleanup_invalidElements'];tinyMCE.cleanup_verify_html=tinyMCE.settings['verify_html'];tinyMCE.cleanup_force_br_newlines=tinyMCE.settings['force_br_newlines'];tinyMCE.cleanup_urlconverter_callback=tinyMCE.settings['urlconverter_callback'];tinyMCE.cleanup_verify_css_classes=tinyMCE.settings['verify_css_classes'];tinyMCE.cleanup_visual_table_class=tinyMCE.settings['visual_table_class'];tinyMCE.cleanup_apply_source_formatting=tinyMCE.settings['apply_source_formatting'];tinyMCE.cleanup_trim_span_elements=tinyMCE.settings['trim_span_elements'];tinyMCE.cleanup_inline_styles=tinyMCE.settings['inline_styles'];tinyMCE.cleanup_visual_aid=visual;tinyMCE.cleanup_on_save=on_save;tinyMCE.cleanup_idCount=0;tinyMCE.cleanup_elementLookupTable=new Array();var startTime=new Date().getTime();tinyMCE._convertOnClick(element);if(tinyMCE.isMSIE){element.innerHTML=tinyMCE.regexpReplace(element.innerHTML,'<p>[ \n\r]*<hr id=null>[ \n\r]*</p>','<hr />','gi');element.innerHTML=tinyMCE.regexpReplace(element.innerHTML,'<!([^-(DOCTYPE)]* )|<!/[^-]*>','','gi');}var html=this.cleanupNode(element);if(tinyMCE.settings['debug'])alert("Cleanup process executed in: "+(new Date().getTime()-startTime)+" ms.");html=tinyMCE.regexpReplace(html,'<p><hr /></p>','<hr />');html=tinyMCE.regexpReplace(html,'<p> </p><hr /><p> </p>','<hr />');if(!tinyMCE.isMSIE)html=html.replace(new RegExp('<o:p _moz-userdefined="" />','g'),"");if(tinyMCE.settings['apply_source_formatting']){html=html.replace(new RegExp('<(p|div)([^>]*)>','g'),"\n<$1$2>\n");html=html.replace(new RegExp('<\/(p|div)([^>]*)>','g'),"\n</$1$2>\n");html=html.replace(new RegExp('<br />','g'),"<br />\n");}if(tinyMCE.settings['force_br_newlines']){var re=new RegExp('<p> </p>','g');html=html.replace(re,"<br />");}if(tinyMCE.settings['force_p_newlines']){var re=new RegExp('<>','g');html=html.replace(re,"");}if(tinyMCE.settings['remove_linebreaks'])html=html.replace(new RegExp('\r|\n','g'),' ');html=tinyMCE._customCleanup(on_save?"get_from_editor":"insert_to_editor",html);var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","").toLowerCase();if(chk=="<br/>"||chk=="<br>"||chk=="<p> </p>"||chk=="<p> </p>"||chk=="<p></p>")html="";if(tinyMCE.settings["preformatted"])return "<pre>"+html+"</pre>";return html;};TinyMCE.prototype.setAttrib=function(element,name,value,no_fix_value){if(!no_fix_value&&value!=null){var re=new RegExp('[^0-9%]','g');value=value.replace(re,'');}if(value!=null&&value!="")element.setAttribute(name,value);else element.removeAttribute(name);if(value!=null&&value!="")element.setAttribute(name,value);else element.removeAttribute(name);};TinyMCE.prototype.insertLink=function(href,target,title,onclick,style_class){this.execCommand("mceAddUndoLevel");if(this.selectedInstance&&this.selectedElement&&this.selectedElement.nodeName.toLowerCase()=="img"){var doc=this.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(this.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true;}href=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");tinyMCE.setAttrib(linkElement,'href',href);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'mce_onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(this.selectedElement.cloneNode(true));this.selectedElement.parentNode.replaceChild(linkElement,this.selectedElement);}return;}if(!this.linkElement&&this.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="#mce_temp_url#">'+this.selectedInstance.getSelectedHTML()+'</a>');}else this.selectedInstance.contentDocument.execCommand("createlink",false,"#mce_temp_url#");tinyMCE.linkElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");var elementArray=this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");for(var i=0;i<elementArray.length;i++){href=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");tinyMCE.setAttrib(elementArray[i],'href',href);tinyMCE.setAttrib(elementArray[i],'mce_real_href',href);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'mce_onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class);}tinyMCE.linkElement=elementArray[0];}if(this.linkElement){href=eval(tinyMCE.settings['urlconverter_callback']+"(href, this.linkElement);");tinyMCE.setAttrib(this.linkElement,'href',href);tinyMCE.setAttrib(this.linkElement,'mce_real_href',href);tinyMCE.setAttrib(this.linkElement,'target',target);tinyMCE.setAttrib(this.linkElement,'title',title);tinyMCE.setAttrib(this.linkElement,'mce_onclick',onclick);tinyMCE.setAttrib(this.linkElement,'class',style_class);}};TinyMCE.prototype.insertImage=function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){if(src=="")return;this.execCommand("mceAddUndoLevel");if(!this.imgElement&&tinyMCE.isSafari){var html="";html+='<img src="'+src+'" alt="'+alt+'"';html+=' border="'+border+'" hspace="'+hspace+'"';html+=' vspace="'+vspace+'" width="'+width+'"';html+=' height="'+height+'" align="'+align+'" title="'+title+'" onmouseover="'+onmouseover+'" onmouseout="'+onmouseout+'" />';tinyMCE.execCommand("mceInsertContent",false,html);}else{if(!this.imgElement&&this.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'<img src="#mce_temp_url#" />');else this.selectedInstance.contentDocument.execCommand("insertimage",false,"#mce_temp_url#");tinyMCE.imgElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"img","src","#mce_temp_url#");}}if(this.imgElement){var needsRepaint=false;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, tinyMCE.imgElement);");if(onmouseover&&onmouseover!="")onmouseover="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, tinyMCE.imgElement);")+"';";if(onmouseout&&onmouseout!="")onmouseout="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, tinyMCE.imgElement);")+"';";if(typeof(title)=="undefined")title=alt;if(width!=this.imgElement.getAttribute("width")||height!=this.imgElement.getAttribute("height")||align!=this.imgElement.getAttribute("align"))needsRepaint=true;tinyMCE.setAttrib(this.imgElement,'src',src);tinyMCE.setAttrib(this.imgElement,'mce_real_src',src);tinyMCE.setAttrib(this.imgElement,'alt',alt);tinyMCE.setAttrib(this.imgElement,'title',title);tinyMCE.setAttrib(this.imgElement,'align',align);tinyMCE.setAttrib(this.imgElement,'border',border,true);tinyMCE.setAttrib(this.imgElement,'hspace',hspace,true);tinyMCE.setAttrib(this.imgElement,'vspace',vspace,true);tinyMCE.setAttrib(this.imgElement,'width',width,true);tinyMCE.setAttrib(this.imgElement,'height',height,true);tinyMCE.setAttrib(this.imgElement,'onmouseover',onmouseover);tinyMCE.setAttrib(this.imgElement,'onmouseout',onmouseout);if(width&&width!="")this.imgElement.style.pixelWidth=width;if(height&&height!="")this.imgElement.style.pixelHeight=height;if(needsRepaint)tinyMCE.selectedInstance.repaint();}};TinyMCE.prototype.getElementByAttributeValue=function(node,element_name,attrib,value){var elements=this.getElementsByAttributeValue(node,element_name,attrib,value);if(elements.length==0)return null;return elements[0];};TinyMCE.prototype.getElementsByAttributeValue=function(node,element_name,attrib,value){var elements=new Array();if(node&&node.nodeName.toLowerCase()==element_name){if(node.getAttribute(attrib)&&node.getAttribute(attrib).indexOf(value)!=-1)elements[elements.length]=node;}if(node.hasChildNodes){for(var x=0,n=node.childNodes.length;x<n;x++){var childElements=this.getElementsByAttributeValue(node.childNodes[x],element_name,attrib,value);for(var i=0,m=childElements.length;i<m;i++)elements[elements.length]=childElements[i];}}return elements;};TinyMCE.prototype.isBlockElement=function(node){return node!=null&&node.nodeType==1&&this.blockRegExp.test(node.nodeName);};TinyMCE.prototype.getParentBlockElement=function(node){while(node){if(this.blockRegExp.test(node.nodeName))return node;node=node.parentNode;}return null;};TinyMCE.prototype.getNodeTree=function(node,node_array,type,node_name){if(typeof(type)=="undefined"||node.nodeType==type&&(typeof(node_name)=="undefined"||node.nodeName.toLowerCase()==node_name.toLowerCase()))node_array[node_array.length]=node;if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)tinyMCE.getNodeTree(node.childNodes[i],node_array,type,node_name);}return node_array;};TinyMCE.prototype.getParentElement=function(node,names,attrib_name,attrib_value){if(typeof(names)=="undefined"){if(node.nodeType==1)return node;while((node=node.parentNode)!=null&&node.nodeType!=1);return node;}var namesAr=names.split(',');if(node==null)return null;do{for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase()||names=="*"){if(typeof(attrib_name)=="undefined")return node;else if(node.getAttribute(attrib_name)){if(typeof(attrib_value)=="undefined"){if(node.getAttribute(attrib_name)!="")return node;}else if(node.getAttribute(attrib_name)==attrib_value)return node;}}}}while(node=node.parentNode);return null;};TinyMCE.prototype.convertURL=function(url,node,on_save){var prot=document.location.protocol;var host=document.location.hostname;var port=document.location.port;var fileProto=(prot=="file:");url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0)=="#")return url;if(!tinyMCE.isMSIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings['base_href']+url;if(!tinyMCE.settings['relative_urls']){var urlParts=tinyMCE.parseURL(url);var baseUrlParts=tinyMCE.parseURL(tinyMCE.settings['base_href']);if(urlParts['anchor']&&urlParts['path']==baseUrlParts['path'])return "#"+urlParts['anchor'];}if(on_save&&tinyMCE.settings['relative_urls']){var urlParts=tinyMCE.parseURL(url);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(!urlParts['port']||urlParts['port']==tmpUrlParts['port']))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],url);}if(!fileProto&&tinyMCE.settings['remove_script_host']){var start="",portPart="";if(port!="")portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1);if(!tinyMCE.settings['relative_urls']&&url.indexOf('://')==-1&&url.charAt(0)!='/')url='/'+url;}return url;};TinyMCE.prototype.parseURL=function(url_str){var urlParts=new Array();if(url_str){var pos,lastPos;pos=url_str.indexOf('://');if(pos!=-1){urlParts['protocol']=url_str.substring(0,pos);lastPos=pos+3;}for(var i=lastPos;i<url_str.length;i++){var chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break;}pos=i;urlParts['host']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts['port']=url_str.substring(lastPos+1,pos);}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts['query']=url_str.substring(lastPos+1,pos);}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts['anchor']=url_str.substring(lastPos+1,pos);}}return urlParts;};TinyMCE.prototype.convertAbsoluteURLToRelativeURL=function(base_url,url_to_relative){var strTok1;var strTok2;var breakPoint=0;var outputString="";base_url=base_url.substring(0,base_url.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=url_to_relative.split('/');if(strTok1.length>=strTok2.length){for(var i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length<strTok2.length){for(var i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return url_to_relative;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outputString+="../";for(var i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outputString+="/"+strTok2[i];else outputString+=strTok2[i];}return outputString;};TinyMCE.prototype.convertRelativeToAbsoluteURL=function(base_url,relative_url){var baseURL=TinyMCE.prototype.parseURL(base_url);var relURL=TinyMCE.prototype.parseURL(relative_url);if(relative_url==""||relative_url.charAt(0)=='/'||relative_url.indexOf('://')!=-1||relative_url.indexOf('mailto:')!=-1||relative_url.indexOf('javascript:')!=-1||tinyMCE.regexpReplace(relative_url,'[ \t\r\n\+]|%20','').charAt(0)=="#")return relative_url;baseURLParts=baseURL['path'].split('/');relURLParts=relURL['path'].split('/');var newBaseURLParts=new Array();for(var i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i];}baseURLParts=newBaseURLParts.reverse();var newRelURLParts=new Array();var numBack=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue;}if(numBack>0){numBack--;continue;}newRelURLParts[newRelURLParts.length]=relURLParts[i];}relURLParts=newRelURLParts.reverse();var len=baseURLParts.length-numBack;var absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');var start="",end="";if(baseURL['protocol'])start+=baseURL['protocol']+"://";if(baseURL['host'])start+=baseURL['host'];if(baseURL['port'])start+=":"+baseURL['port'];if(relURL['query'])end+="?"+relURL['query'];if(relURL['anchor'])end+="#"+relURL['anchor'];if(relative_url.charAt(relative_url.length-1)=="/")end+="/";return start+absPath+end;};TinyMCE.prototype.getParam=function(name,default_value,strip_whitespace,split_chr){var value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var outArray=new Array();for(var i=0;i<value.length;i++){if(value[i]&&value[i]!="")outArray[outArray.length]=value[i];}value=outArray;}return value;};TinyMCE.prototype.getLang=function(name,default_value,parse_entities){var value=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name];if(parse_entities){var el=document.createElement("div");el.innerHTML=value;value=el.innerHTML;}return value;};TinyMCE.prototype.replaceVar=function(replace_haystack,replace_var,replace_str){var re=new RegExp('{\\\$'+replace_var+'}','g');return replace_haystack.replace(re,replace_str);};TinyMCE.prototype.replaceVars=function(replace_haystack,replace_vars){for(var key in replace_vars){var value=replace_vars[key];replace_haystack=tinyMCE.replaceVar(replace_haystack,key,value);}return replace_haystack;};TinyMCE.prototype.triggerNodeChange=function(focus,setup_content){if(tinyMCE.settings['handleNodeChangeCallback']){if(tinyMCE.selectedInstance){var inst=tinyMCE.selectedInstance;var editorId=inst.editorId;var elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();var undoIndex=-1;var undoLevels=-1;var anySelection=false;var selectedText=inst.getSelectedText();if(tinyMCE.settings["auto_resize"]){var doc=inst.getDoc();inst.iframeElement.style.width=doc.body.offsetWidth+"px";inst.iframeElement.style.height=doc.body.offsetHeight+"px";}if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=inst.undoIndex;undoLevels=inst.undoLevels.length;}tinyMCE.executeCallback('handleNodeChangeCallback','_handleNodeChange',0,editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection);}}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus();};TinyMCE.prototype._customCleanup=function(type,content){var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content);");var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){if(eval("typeof(TinyMCE_"+plugins[i]+"_cleanup)")!="undefined")content=eval("TinyMCE_"+plugins[i]+"_cleanup(type, content);");}return content;};TinyMCE.prototype.getContent=function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.selectedInstance=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedInstance)return tinyMCE._cleanupHTML(this.selectedInstance.getDoc(),tinyMCE.settings,this.selectedInstance.getBody(),false,true);return null;};TinyMCE.prototype.setContent=function(html_content){if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceSetContent',false,html_content);};TinyMCE.prototype.importThemeLanguagePack=function(name){if(typeof(name)=="undefined")name=tinyMCE.settings['theme'];tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings['language']+'.js');};TinyMCE.prototype.importPluginLanguagePack=function(name,valid_languages){var lang="en";valid_languages=valid_languages.split(',');for(var i=0;i<valid_languages.length;i++){if(tinyMCE.settings['language']==valid_languages[i])lang=tinyMCE.settings['language'];}tinyMCE.loadScript(tinyMCE.baseURL+'/plugins/'+name+'/langs/'+lang+'.js');};TinyMCE.prototype.applyTemplate=function(html,args){html=tinyMCE.replaceVar(html,"themeurl",tinyMCE.themeURL);if(typeof(args)!="undefined")html=tinyMCE.replaceVars(html,args);html=tinyMCE.replaceVars(html,tinyMCE.settings);html=tinyMCE.replaceVars(html,tinyMCELang);return html;};TinyMCE.prototype.openWindow=function(template,args){var html,width,height,x,y,resizable,scrollbars,url;args['mce_template_file']=template['file'];tinyMCE.windowArgs=args;html=template['html'];if(!(width=template['width']))width=320;if(!(height=template['height']))height=200;if(tinyMCE.isMSIE)height+=30;x=parseInt(screen.width/2.0)-(width/2.0);y=parseInt(screen.height/2.0)-(height/2.0);resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];for(var name in args)url=tinyMCE.replaceVar(url,name,escape(args[name]));if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args);var win=window.open("","mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return;}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus();}else{if(tinyMCE.isMSIE&&resizable!='yes'&&tinyMCE.settings["dialog_type"]=="modal"){var features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features);}else{if(tinyMCE.settings["dialog_type"]=="window"||tinyMCE.settings["dialog_type"]=="modal"){var modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";var win=window.open(url,"mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return;}eval('try { win.resizeTo(width, height); } catch(e) { }');win.focus();}else{var div=document.createElement("div");var id="mceDialog"+(tinyMCE.dialogCounter++);height+=30;div.id=id;div.className="mceDialog";div.style.width=width+"px";div.style.height=height+"px";var html='<div class="mceDialogHeader"><div class="mceDialogTitle"></div><div class="mceDialogClose"><a href="javascript:tinyMCE.closeDialog();"></a></div></div>';html+='<div id="'+id+'IFrameWrapper" class="mceDialogIFrameWrapper"><iframe border="0" marginwidth="0" marginheight="0" frameborder="0" hspace="0" vspace="0" src="'+url+'" width="'+width+'" height="'+height+'"></iframe></div>';div.innerHTML=html;document.body.appendChild(div);tinyMCE._currentDialog=id;}}}};TinyMCE.prototype.closeDialog=function(){if(tinyMCE.settings["dialog_type"]=="div"){var div=document.getElementById(tinyMCE._currentDialog);if(div)div.parentNode.removeChild(div);}else window.close();};TinyMCE.prototype.getVisualAidClass=function(class_name,state){var aidClass=tinyMCE.settings['visual_table_class'];if(typeof(state)=="undefined")state=tinyMCE.settings['visual'];var classNames=new Array();var ar=class_name.split(' ');for(var i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!="")classNames[classNames.length]=ar[i];}if(state)classNames[classNames.length]=aidClass;var className="";for(var i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i];}return className;};TinyMCE.prototype.handleVisualAid=function(element,deep,state){if(!element)return;var tableElement=null;switch(element.nodeName.toLowerCase()){case "table":var oldW=element.style.width;var oldH=element.style.height;element.className=tinyMCE.getVisualAidClass(element.className,state&&element.getAttribute("border")==0);element.style.width=oldW;element.style.height=oldH;for(var y=0;y<element.rows.length;y++){for(var x=0;x<element.rows[y].cells.length;x++){var className=tinyMCE.getVisualAidClass(element.rows[y].cells[x].className,state&&element.getAttribute("border")==0);element.rows[y].cells[x].className=className;}}break;}if(deep&&element.hasChildNodes()){for(var i=0;i<element.childNodes.length;i++)tinyMCE.handleVisualAid(element.childNodes[i],deep,state);}};TinyMCE.prototype.getAttrib=function(elm,name,default_value){var v=elm.getAttribute(name);if(name=="class"&&!v)v=elm.className;if(typeof(default_value)=="undefined")default_value="";return(v&&v!="")?v:default_value;};TinyMCE.prototype.setAttrib=function(element,name,value,fix_value){if(typeof(value)=="number")value=""+value;if(fix_value){if(value==null)value="";var re=new RegExp('[^0-9%]','g');value=value.replace(re,'');}if(name=="class")element.className=value;if(value!=null&&value!=""&&value!=-1)element.setAttribute(name,value);else element.removeAttribute(name);};TinyMCE.prototype._setHTML=function(doc,html_content){if(tinyMCE.isMSIE){var re=new RegExp('<p><hr /></p>','g');html_content=html_content.replace(re,"<hr>");}try{doc.body.innerHTML=html_content;}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content);}if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<paras.length;i++){var node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName.toLowerCase()=="p")node.outerHTML=node.innerHTML;}}var html=doc.body.innerHTML;if(html.indexOf('="mso')!=-1){for(var i=0;i<doc.body.all.length;i++){var el=doc.body.all[i];el.removeAttribute("className","",0);el.removeAttribute("style","",0);}html=doc.body.innerHTML;html=tinyMCE.regexpReplace(html,"<o:p><\/o:p>","<br />");html=tinyMCE.regexpReplace(html,"<o:p> <\/o:p>","");html=tinyMCE.regexpReplace(html,"<st1:.*?>","");html=tinyMCE.regexpReplace(html,"<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p><\/p>\r\n<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p> <\/p>","<br />");html=tinyMCE.regexpReplace(html,"<p>\s*(<p>\s*)?","<p>");html=tinyMCE.regexpReplace(html,"<\/p>\s*(<\/p>\s*)?","</p>");}doc.body.innerHTML=html;}};TinyMCE.prototype.getImageSrc=function(str){var pos=-1;if(!str)return "";if((pos=str.indexOf('this.src='))!=-1){var src=str.substring(pos+10);src=src.substring(0,src.indexOf('\''));return src;}return "";};TinyMCE.prototype._getElementById=function(element_id){var elm=document.getElementById(element_id);if(!elm){for(var j=0;j<document.forms.length;j++){for(var k=0;k<document.forms[j].elements.length;k++){if(document.forms[j].elements[k].name==element_id){elm=document.forms[j].elements[k];break;}}}}return elm;};TinyMCE.prototype.getEditorId=function(form_element){var inst=this.getInstanceById(form_element);if(!inst)return null;return inst.editorId;};TinyMCE.prototype.getInstanceById=function(editor_id){var inst=this.instances[editor_id];if(!inst){for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(instance.formTargetElementId==editor_id){inst=instance;break;}}}return inst;};TinyMCE.prototype.queryInstanceCommandValue=function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandValue(command);return false;};TinyMCE.prototype.queryInstanceCommandState=function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandState(command);return null;};TinyMCE.prototype.setWindowArg=function(name,value){this.windowArgs[name]=value;};TinyMCE.prototype.getWindowArg=function(name,default_value){return(typeof(this.windowArgs[name])=="undefined")?default_value:this.windowArgs[name];};TinyMCE.prototype.getCSSClasses=function(editor_id,doc){var output=new Array();if(typeof(tinyMCE.cssClasses)!="undefined")return tinyMCE.cssClasses;if(typeof(editor_id)=="undefined"&&typeof(doc)=="undefined"){var instance;for(var instanceName in tinyMCE.instances){instance=tinyMCE.instances[instanceName];break;}doc=instance.getDoc();}if(typeof(doc)=="undefined"){var instance=tinyMCE.getInstanceById(editor_id);doc=instance.getDoc();}if(doc){var styles=tinyMCE.isMSIE?doc.styleSheets:doc.styleSheets;if(styles&&styles.length>0){var csses=null;eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(0).rules : doc.styleSheets[0].cssRules;} catch(e) {}");if(!csses)return new Array();for(var i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;if(selectorText){var rules=selectorText.split(',');for(var c=0;c<rules.length;c++){if(rules[c].indexOf(' ')!=-1||rules[c].indexOf(':')!=-1||rules[c].indexOf('mce_')==1)continue;if(rules[c]=="."+tinyMCE.settings['visual_table_class'])continue;if(rules[c].indexOf('.')!=-1){output[output.length]=rules[c].substring(rules[c].indexOf('.')+1);}}}}}}if(output.length>0)tinyMCE.cssClasses=output;return output;};TinyMCE.prototype.regexpReplace=function(in_str,reg_exp,replace_str,opts){if(typeof(opts)=="undefined")opts='g';var re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);};TinyMCE.prototype.cleanupEventStr=function(str){str=""+str;str=str.replace('function anonymous()\n{\n','');str=str.replace('\n}','');return str;};TinyMCE.prototype.getAbsPosition=function(node){var pos=new Object();pos.absLeft=pos.absTop=0;var parentNode=node;while(parentNode){pos.absLeft+=parentNode.offsetLeft;pos.absTop+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}return pos;};TinyMCE.prototype.openFileBrowser=function(field_name,url,type,win){var cb=tinyMCE.getParam("file_browser_callback");this.setWindowArg("window",win);if(eval('typeof('+cb+')')=="undefined")alert("Callback function: "+cb+" could not be found.");else eval(cb+"(field_name, url, type, win);");};TinyMCE.prototype.getControlHTML=function(control_name){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_getControlHTML";if(eval("typeof("+templateFunction+")")!='undefined'){var html=eval(templateFunction+"('"+control_name+"');");if(html!="")return tinyMCE.replaceVar(html,"pluginurl",tinyMCE.baseURL+"/plugins/"+themePlugins[i]);}}return eval('TinyMCE_'+tinyMCE.settings['theme']+"_getControlHTML"+"('"+control_name+"');");};TinyMCE.prototype._themeExecCommand=function(editor_id,element,command,user_interface,value){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined'){if(eval(templateFunction+"(editor_id, element, command, user_interface, value);"))return true;}}templateFunction='TinyMCE_'+tinyMCE.settings['theme']+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined')return eval(templateFunction+"(editor_id, element, command, user_interface, value);");return false;};TinyMCE.prototype._getThemeFunction=function(suffix,skip_plugins){if(skip_plugins)return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+suffix;if(eval("typeof("+templateFunction+")")!='undefined')return templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;};TinyMCE.prototype.isFunc=function(func_name){if(func_name==null||func_name=="")return false;return eval("typeof("+func_name+")")!="undefined";};TinyMCE.prototype.exec=function(func_name,args){var str=func_name+'(';for(var i=3;i<args.length;i++){str+='args['+i+']';if(i<args.length-1)str+=',';}str+=');';return eval(str);};TinyMCE.prototype.executeCallback=function(param,suffix,mode){switch(mode){case 0:var state=false;var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){var func="TinyMCE_"+plugins[i]+suffix;if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);state=true;}}var func='TinyMCE_'+tinyMCE.settings['theme']+suffix;if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);state=true;}var func=tinyMCE.getParam(param,'');if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);state=true;}return state;case 1:var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){var func="TinyMCE_"+plugins[i]+suffix;if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments))return true;}}var func='TinyMCE_'+tinyMCE.settings['theme']+suffix;if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments))return true;}var func=tinyMCE.getParam(param,'');if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments))return true;}return false;}};function TinyMCEControl(settings){this.undoLevels=new Array();this.undoIndex=0;this.isDirty=false;this.settings=settings;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);};TinyMCEControl.prototype.repaint=function(){if(tinyMCE.isMSIE)return;this.getBody().style.display='none';this.getBody().style.display='block';};TinyMCEControl.prototype.switchSettings=function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings['index']){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings['index'];}};TinyMCEControl.prototype.fixBrokenURLs=function(){var body=this.getBody();var elms=body.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=elms[i].getAttribute('mce_real_src');if(src&&src!="")elms[i].setAttribute("src",src);}var elms=body.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=elms[i].getAttribute('mce_real_href');if(href&&href!="")elms[i].setAttribute("href",href);}};TinyMCEControl.prototype.convertAllRelativeURLs=function(){var body=this.getBody();var elms=body.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=elms[i].getAttribute('src');if(src&&src!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);elms[i].setAttribute("src",src);elms[i].setAttribute("mce_real_src",src);}}var elms=body.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=elms[i].getAttribute('href');if(href&&href!=""){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],href);elms[i].setAttribute("href",href);elms[i].setAttribute("mce_real_href",href);}}};TinyMCEControl.prototype.getSelectedHTML=function(){if(tinyMCE.isSafari){return this.getRng().toString();}var elm=document.createElement("body");if(tinyMCE.isGecko)elm.appendChild(this.getRng().cloneContents());else elm.innerHTML=this.getRng().htmlText;return tinyMCE._cleanupHTML(this.contentDocument,this.settings,elm,this.visualAid);};TinyMCEControl.prototype.getBookmark=function(){var rng=this.getRng();if(tinyMCE.isSafari)return rng;if(tinyMCE.isMSIE)return rng.getBookmark();if(tinyMCE.isGecko)return rng.cloneRange();return null;};TinyMCEControl.prototype.moveToBookmark=function(bookmark){if(tinyMCE.isSafari){var sel=this.getSel().realSelection;sel.setBaseAndExtent(bookmark.startContainer,bookmark.startOffset,bookmark.endContainer,bookmark.endOffset);return true;}if(tinyMCE.isMSIE)return this.getRng().moveToBookmark(bookmark);if(tinyMCE.isGecko){var rng=this.getDoc().createRange();var sel=this.getSel();rng.setStart(bookmark.startContainer,bookmark.startOffset);rng.setEnd(bookmark.endContainer,bookmark.endOffset);sel.removeAllRanges();sel.addRange(rng);return true;}return false;};TinyMCEControl.prototype.getSelectedText=function(){if(tinyMCE.isMSIE){var doc=this.getDoc();if(doc.selection.type=="Text"){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText='';}else{var sel=this.getSel();if(sel&&sel.toString)selectedText=sel.toString();else selectedText='';}return selectedText;};TinyMCEControl.prototype.selectNode=function(node,collapse,select_text_node,to_start){if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(tinyMCE.isMSIE){var rng=this.getBody().createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select();}catch(e){}}else{var sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.realSelection.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.realSelection.collapseToStart();else sel.realSelection.collapseToEnd();}this.scrollToNode(node);return;}var rng=this.getDoc().createRange();if(select_text_node){var nodes=tinyMCE.getNodeTree(node,new Array(),3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node);}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length);}else rng.collapse(to_start);}sel.removeAllRanges();sel.addRange(rng);}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node;};TinyMCEControl.prototype.scrollToNode=function(node){var pos=tinyMCE.getAbsPosition(node);var doc=this.getDoc();var scrollX=doc.body.scrollLeft+doc.documentElement.scrollLeft;var scrollY=doc.body.scrollTop+doc.documentElement.scrollTop;var height=tinyMCE.isMSIE?document.getElementById(this.editorId).style.pixelHeight:this.targetElement.clientHeight;if(!tinyMCE.settings['auto_resize']&&!(node.absTop>scrollY&&node.absTop<(scrollY-25+height)))this.contentWindow.scrollTo(pos.absLeft,pos.absTop-height+25);};TinyMCEControl.prototype.getBody=function(){return this.getDoc().body;};TinyMCEControl.prototype.getDoc=function(){return this.contentWindow.document;};TinyMCEControl.prototype.getWin=function(){return this.contentWindow;};TinyMCEControl.prototype.getSel=function(){if(tinyMCE.isMSIE)return this.getDoc().selection;var sel=this.contentWindow.getSelection();if(tinyMCE.isSafari&&!sel.getRangeAt){var newSel=new Object();var doc=this.getDoc();function getRangeAt(idx){var rng=new Object();rng.startContainer=this.focusNode;rng.endContainer=this.anchorNode;rng.commonAncestorContainer=this.focusNode;rng.createContextualFragment=function(html){if(html.charAt(0)=='<'){var elm=doc.createElement("div");elm.innerHTML=html;return elm.firstChild;}return doc.createTextNode("UNSUPPORTED, DUE TO LIMITATIONS IN SAFARI!");};rng.deleteContents=function(){doc.execCommand("Delete",false,"");};return rng;}newSel.focusNode=sel.baseNode;newSel.focusOffset=sel.baseOffset;newSel.anchorNode=sel.extentNode;newSel.anchorOffset=sel.extentOffset;newSel.getRangeAt=getRangeAt;newSel.text=""+sel;newSel.realSelection=sel;newSel.toString=function(){return this.text;};return newSel;}return sel;};TinyMCEControl.prototype.getRng=function(){var sel=this.getSel();if(sel==null)return null;if(tinyMCE.isMSIE)return sel.createRange();if(tinyMCE.isSafari){var rng=this.getDoc().createRange();var sel=this.getSel().realSelection;rng.setStart(sel.baseNode,sel.baseOffset);rng.setEnd(sel.extentNode,sel.extentOffset);return rng;}return this.getSel().getRangeAt(0);};TinyMCEControl.prototype._insertPara=function(e){function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()=="";}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;var nodes=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false;}return true;}var doc=this.getDoc();var sel=this.getSel();var win=this.contentWindow;var rng=sel.getRangeAt(0);var body=doc.body;var rootElm=doc.documentElement;var self=this;var blockName="P";var rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);var rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);var direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;var startNode=direct?sel.anchorNode:sel.focusNode;var startOffset=direct?sel.anchorOffset:sel.focusOffset;var endNode=direct?sel.focusNode:sel.anchorNode;var endOffset=direct?sel.focusOffset:sel.anchorOffset;var startBlock=tinyMCE.getParentBlockElement(startNode);var endBlock=tinyMCE.getParentBlockElement(endNode);if(startBlock!=null){blockName=startBlock.nodeName.toUpperCase();if(blockName=="TD"||blockName=="TABLE")blockName="P";}if((startBlock!=null&&startBlock.nodeName.toLowerCase()=="li")||(endBlock!=null&&endBlock.nodeName.toLowerCase()=="li"))return false;if((startBlock!=null&&startBlock.nodeName.toLowerCase()=="table")||(endBlock!=null&&endBlock.nodeName.toLowerCase()=="table"))startBlock=endBlock=null;var paraBefore=(startBlock!=null&&startBlock.nodeName.toUpperCase()==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);var paraAfter=(endBlock!=null&&endBlock.nodeName.toUpperCase()==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);var startChop=startNode;var endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node;}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node;}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startBlock==null){rng.deleteContents();sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);var contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName.toLowerCase()=="body")){var nodes=contents.firstChild.childNodes;for(var i=0;i<nodes.length;i++){if(nodes[i].nodeName.toLowerCase()!="body")paraAfter.appendChild(nodes[i]);}}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore);}else{body.innerHTML="<"+blockName+"> </"+blockName+"><"+blockName+"> </"+blockName+">";paraAfter=body.childNodes[1];}this.selectNode(paraAfter,true,true);return true;}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);var contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){var nodes=contents.firstChild.childNodes;for(var i=0;i<nodes.length;i++){if(nodes[i].nodeName.toLowerCase()!="body")paraAfter.appendChild(nodes[i]);}}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";var rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode);}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset);}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();rng.insertNode(paraAfter);rng.insertNode(paraBefore);paraAfter.normalize();paraBefore.normalize();this.selectNode(paraAfter,true,true);return true;};TinyMCEControl.prototype._handleBackSpace=function(evt_type){var doc=this.getDoc();var sel=this.getSel();if(sel==null)return false;var rng=sel.getRangeAt(0);var node=rng.startContainer;var elm=node.nodeType==3?node.parentNode:node;if(node==null)return;if(elm&&elm.nodeName==""){var para=doc.createElement("p");while(elm.firstChild)para.appendChild(elm.firstChild);elm.parentNode.insertBefore(para,elm);elm.parentNode.removeChild(elm);var rng=rng.cloneRange();rng.setStartBefore(node.nextSibling);rng.setEndAfter(node.nextSibling);rng.extractContents();this.selectNode(node.nextSibling,true,true);}var para=tinyMCE.getParentBlockElement(node);if(para!=null&¶.nodeName.toLowerCase()=='p'&&evt_type=="keypress"){var htm=para.innerHTML;var block=tinyMCE.getParentBlockElement(node);if(htm==""||htm==" "||block.nodeName.toLowerCase()=="li"){var prevElm=para.previousSibling;while(prevElm!=null&&prevElm.nodeType!=1)prevElm=prevElm.previousSibling;if(prevElm==null)return false;var nodes=tinyMCE.getNodeTree(prevElm,new Array(),3);var lastTextNode=nodes.length==0?null:nodes[nodes.length-1];if(lastTextNode!=null)this.selectNode(lastTextNode,true,false,false);para.parentNode.removeChild(para);return true;}}return false;};TinyMCEControl.prototype._insertSpace=function(){return true;};TinyMCEControl.prototype.autoResetDesignMode=function(){if(!tinyMCE.isMSIE&&tinyMCE.settings['auto_reset_designmode']){var sel=this.getSel();if(!sel||!sel.rangeCount||sel.rangeCount==0)eval('try { this.getDoc().designMode = "On"; } catch(e) {}');}};TinyMCEControl.prototype.isDirty=function(){return this.isDirty;};TinyMCEControl.prototype.execCommand=function(command,user_interface,value){var doc=this.getDoc();var win=this.getWin();if(this.lastSafariSelection){this.moveToBookmark(this.lastSafariSelection);tinyMCE.selectedElement=this.lastSafariSelectedElement;}if(!tinyMCE.isMSIE&&!this.useCSS){doc.execCommand("useCSS",false,true);this.useCSS=true;}this.contentDocument=doc;if(tinyMCE._themeExecCommand(this.editorId,this.getBody(),command,user_interface,value))return;if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceImage"&&command!="mceLink"&&command!="mceToggleVisualAid"&&(command!="mceInsertTable"&&!user_interface))this.execCommand("mceAddUndoLevel");if(this.getFocusElement()&&this.getFocusElement().nodeName.toLowerCase()=="img"){var align=this.getFocusElement().getAttribute('align');switch(command){case "JustifyLeft":if(align=='left')this.getFocusElement().removeAttribute('align');else this.getFocusElement().setAttribute('align','left');tinyMCE.triggerNodeChange();return;case "JustifyCenter":if(align=='middle')this.getFocusElement().removeAttribute('align');else this.getFocusElement().setAttribute('align','middle');tinyMCE.triggerNodeChange();return;case "JustifyRight":if(align=='right')this.getFocusElement().removeAttribute('align');else this.getFocusElement().setAttribute('align','right');tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings['force_br_newlines']){var alignValue="";if(doc.selection.type!="Control"){switch(command){case "JustifyLeft":alignValue="left";break;case "JustifyCenter":alignValue="center";break;case "JustifyFull":alignValue="justify";break;case "JustifyRight":alignValue="right";break;}if(alignValue!=""){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return;}}}switch(command){case "mceStoreSelection":this.selectionBookmark=this.getBookmark();break;case "mceRestoreSelection":this.moveToBookmark(this.selectionBookmark);break;case "InsertUnorderedList":case "InsertOrderedList":var tag=(command=="InsertUnorderedList")?"ul":"ol";if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<"+tag+"><li> </li><"+tag+">");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case "Strikethrough":if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<strike>"+this.getSelectedHTML()+"</strike>");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case "mceSelectNode":this.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case "FormatBlock":if(value==null||value==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)this.execCommand("mceRemoveNode",false,elm);}else this.getDoc().execCommand("FormatBlock",false,value);tinyMCE.triggerNodeChange();break;case "mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isMSIE){value.outerHTML=value.innerHTML;}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML));}tinyMCE.triggerNodeChange();break;case "mceSelectNodeDepth":var parentNode=this.getFocusElement();for(var i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue;}if(i==value){this.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return;}parentNode=parentNode.parentNode;}break;case "HiliteColor":if(tinyMCE.isGecko){this.getDoc().execCommand("useCSS",false,false);this.getDoc().execCommand('hilitecolor',false,value);this.getDoc().execCommand("useCSS",false,true);}else this.getDoc().execCommand('BackColor',false,value);break;case "Cut":case "Copy":case "Paste":var cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.getLang('lang_clipboard_msg')))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return;}else tinyMCE.triggerNodeChange();break;case "mceSetContent":if(!value)value="";value=tinyMCE._customCleanup("insert_to_editor",value);tinyMCE._setHTML(doc,value);doc.body.innerHTML=tinyMCE._cleanupHTML(doc,tinyMCE.settings,doc.body);tinyMCE.handleVisualAid(doc.body,true,this.visualAid);return true;case "mceLink":var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText=this.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return;}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_real_href');if(mceRealHref!="")href=mceRealHref;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");action="update";}if(this.settings['insertlink_callback']){var returnVal=eval(this.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])tinyMCE.insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class']);}else{tinyMCE.openWindow(this.insertLinkTemplate,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class});}break;case "mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img;}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h);}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:"";}onmouseover=tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));onmouseout=tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));mceRealSrc=tinyMCE.getAttrib(img,'mce_real_src');if(mceRealSrc!="")src=mceRealSrc;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");if(onmouseover!="")onmouseover=eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, img, true);");if(onmouseout!="")onmouseout=eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, img, true);");action="update";}if(this.settings['insertimage_callback']){var returnVal=eval(this.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])tinyMCE.insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout']);}else tinyMCE.openWindow(this.insertImageTemplate,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action});break;case "mceCleanupWord":if(tinyMCE.isMSIE){var html=this.getBody().createTextRange().htmlText;if(html.indexOf('="mso')!=-1){tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);html=tinyMCE._cleanupHTML(this.contentDocument,this.settings,this.getBody(),this.visualAid);}this.getBody().innerHTML=html;}break;case "mceCleanup":tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);this.getBody().innerHTML=tinyMCE._cleanupHTML(this.contentDocument,this.settings,this.getBody(),this.visualAid);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid);this.repaint();tinyMCE.triggerNodeChange();break;case "mceAnchor":if(!user_interface){var aElm=tinyMCE.getParentElement(this.getFocusElement(),"a","name");if(aElm){if(value==null||value==""){if(tinyMCE.isMSIE){aElm.outerHTML=aElm.innerHTML;}else{var rng=aElm.ownerDocument.createRange();rng.setStartBefore(aElm);rng.setEndAfter(aElm);rng.deleteContents();rng.insertNode(rng.createContextualFragment(aElm.innerHTML));}}else aElm.setAttribute('name',value);}else{this.getDoc().execCommand("fontname",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];var aElm=this.getDoc().createElement("a");aElm.setAttribute('name',value);if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)aElm.appendChild(elm.childNodes[i].cloneNode(true));}elm.parentNode.replaceChild(aElm,elm);}}tinyMCE.triggerNodeChange();}break;case "mceReplaceContent":var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText=this.getSel().toString();if(selectedText.length>0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value);}tinyMCE.triggerNodeChange();break;case "mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange();}}break;case "mceSetCSSClass":var selectedText=false;if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=(rng.text&&rng.text.length>0);}else selectedText=(this.getSel().toString().length>0);if(tinyMCE.selectedNode)tinyMCE.selectedElement=tinyMCE.selectedNode;if(selectedText&&!tinyMCE.selectedNode){this.getDoc().execCommand("RemoveFormat",false,null);if(value==null)return this.execCommand("RemoveFormat",false,null);this.getDoc().execCommand("fontname",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=this.getDoc().createElement("span");spanElm.className=value;if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true));}elm.parentNode.replaceChild(spanElm,elm);}}}else{var targetElm=this.getFocusElement();if(tinyMCE.selectedElement.nodeName.toLowerCase()=="img"||tinyMCE.selectedElement.nodeName.toLowerCase()=="table")targetElm=tinyMCE.selectedElement;var targetNode=tinyMCE.getParentElement(targetElm,"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(tinyMCE.selectedElement.nodeType==1)targetNode=tinyMCE.selectedElement;if(!tinyMCE.isMSIE&&!targetNode)targetNode=tinyMCE.imgElement;if(targetNode){if(targetNode.nodeName.toLowerCase()=="span"&&(!value||value=="")){if(targetNode.hasChildNodes()){for(var i=0;i<targetNode.childNodes.length;i++)targetNode.parentNode.insertBefore(targetNode.childNodes[i].cloneNode(true),targetNode);}targetNode.parentNode.removeChild(targetNode);}else{if(value!=null&&value!="")targetNode.className=value;else{targetNode.removeAttribute("className");targetNode.removeAttribute("class");}}}}tinyMCE.triggerNodeChange();break;case "mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceInsertContent',false,key);var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)this.getBody().innerHTML=html.substring(0,pos)+value+html.substring(pos+key.length);break;case "mceInsertContent":if(!tinyMCE.isMSIE){var sel=this.getSel();var rng=this.getRng();var isHTML=value.indexOf('<')!=-1;if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value);}else value=rng.createContextualFragment(value);}else{var el=document.createElement("div");el.innerHTML=value;value=el.firstChild.nodeValue;value=doc.createTextNode(value);}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true;}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true;}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node);}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng);}else rng.collapse(false);}else{var rng=doc.selection.createRange();if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);}tinyMCE.triggerNodeChange();break;case "mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']){var customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];var newHTML=this.getBody().innerHTML;if(newHTML!=this.undoLevels[this.undoLevels.length-1]){tinyMCE.executeCallback('onchange_callback','_onchange',0,this);this.isDirty=true;if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(var i=0;i<this.undoLevels.length-1;i++){this.undoLevels[i]=this.undoLevels[i+1];}this.undoLevels.length--;this.undoIndex--;}this.undoLevels[this.undoIndex++]=newHTML;this.undoLevels.length=this.undoIndex;}tinyMCE.triggerNodeChange(false);}break;case "Undo":if(tinyMCE.settings['custom_undo_redo']){if(this.undoIndex==this.undoLevels.length){this.execCommand("mceAddUndoLevel");this.undoIndex--;}if(this.undoIndex>0){this.undoIndex--;this.getBody().innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else this.getDoc().execCommand(command,user_interface,value);break;case "Redo":if(tinyMCE.settings['custom_undo_redo']){if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;this.getBody().innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else this.getDoc().execCommand(command,user_interface,value);break;case "mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid);tinyMCE.triggerNodeChange();break;case "removeformat":var text=this.getSelectedText();if(tinyMCE.isMSIE){try{win.focus();var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null);rng.pasteHTML(rng.text);}catch(e){}}else this.getDoc().execCommand(command,user_interface,value);if(text.length==0)this.execCommand("mceSetCSSClass",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();}};TinyMCEControl.prototype.queryCommandValue=function(command){return this.getDoc().queryCommandValue(command);};TinyMCEControl.prototype.queryCommandState=function(command){return this.getDoc().queryCommandState(command);};TinyMCEControl.prototype.onAdd=function(replace_element,form_element_name,target_document){var targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings['theme'];this.settings['themeurl']=tinyMCE.themeURL;if(!replace_element){alert("Error: Could not find the target element.");return false;}var templateFunction=tinyMCE._getThemeFunction('_getInsertLinkTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertLinkTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getInsertImageTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertImageTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getEditorTemplate');if(eval("typeof("+templateFunction+")")=='undefined'){alert("Error: Could not find the template function: "+templateFunction);return false;}var editorTemplate=eval(templateFunction+'(this.settings, this.editorId);');var deltaWidth=editorTemplate['delta_width']?editorTemplate['delta_width']:0;var deltaHeight=editorTemplate['delta_height']?editorTemplate['delta_height']:0;var html='<span id="'+this.editorId+'_parent">'+editorTemplate['html'];var templateFunction=tinyMCE._getThemeFunction('_handleNodeChange',true);if(eval("typeof("+templateFunction+")")!='undefined')this.settings['handleNodeChangeCallback']=templateFunction;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);html=tinyMCE.replaceVar(html,"default_document",tinyMCE.baseURL+"/blank.htm");this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.settings['old_width']=this.settings['width'];this.settings['old_height']=this.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;if(this.settings['width']==0)this.settings['width']=replace_element.style.width;if(this.settings['height']==0)this.settings['height']=replace_element.style.height;if(this.settings['width']==0)this.settings['width']=320;if(this.settings['height']==0)this.settings['height']=240;this.settings['area_width']=parseInt(this.settings['width']);this.settings['area_height']=parseInt(this.settings['height']);this.settings['area_width']+=deltaWidth;this.settings['area_height']+=deltaHeight;if((""+this.settings['width']).indexOf('%')!=-1)this.settings['area_width']="100%";if((""+this.settings['height']).indexOf('%')!=-1)this.settings['area_height']="100%";if((""+replace_element.style.width).indexOf('%')!=-1){this.settings['width']=replace_element.style.width;this.settings['area_width']="100%";}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings['height']=replace_element.style.height;this.settings['area_height']="100%";}html=tinyMCE.applyTemplate(html);this.settings['width']=this.settings['old_width'];this.settings['height']=this.settings['old_height'];this.visualAid=this.settings['visual'];this.formTargetElementId=form_element_name;if(replace_element.nodeName.toLowerCase()=="textarea")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName.toLowerCase()!="textarea"){this.oldTargetElement=replace_element.cloneNode(true);if(tinyMCE.settings['debug'])html+='<textarea wrap="off" id="'+form_element_name+'" name="'+form_element_name+'" cols="100" rows="15"></textarea>';else html+='<input type="hidden" type="text" id="'+form_element_name+'" name="'+form_element_name+'" />';html+='</span>';if(!tinyMCE.isMSIE){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);replace_element.parentNode.replaceChild(fragment,replace_element);}else replace_element.outerHTML=html;}else{html+='</span>';this.oldTargetElement=replace_element;if(!tinyMCE.settings['debug'])this.oldTargetElement.style.display="none";if(!tinyMCE.isMSIE){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);replace_element.parentNode.insertBefore(fragment,replace_element);}else replace_element.insertAdjacentHTML("beforeBegin",html);}var dynamicIFrame=false;var tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isMSIE){if(tElm&&tElm.nodeName.toLowerCase()=="span"){tElm=tinyMCE._createIFrame(tElm);dynamicIFrame=true;}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName.toLowerCase()=="span")tElm=tinyMCE._createIFrame(tElm);else tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);this.contentDocument=tElm.window.document;this.contentWindow=tElm.window;this.getDoc().designMode="on";}var doc=this.contentDocument;if(dynamicIFrame){var html=""+'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'+'<html>'+'<head>'+'<base href="'+tinyMCE.settings['base_href']+'" />'+'<title>blank_page</title>'+'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'+'</head>'+'<body class="mceContentBody">'+'</body>'+'</html>';try{this.getDoc().designMode="on";doc.open();doc.write(html);doc.close();}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE)window.setTimeout("TinyMCE.prototype.addEventHandlers('"+this.editorId+"');",1);tinyMCE.setupContent(this.editorId,true);return true;};TinyMCEControl.prototype.getFocusElement=function(){if(tinyMCE.isMSIE){var doc=this.getDoc();var rng=doc.selection.createRange();if(rng.collapse)rng.collapse(true);var elm=rng.item?rng.item(0):rng.parentElement();}else{var sel=this.getSel();var elm=(sel&&sel.anchorNode)?sel.anchorNode:null;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img")elm=tinyMCE.selectedElement;}return elm;};var tinyMCE=new TinyMCE();var tinyMCELang=new Array();function debug(){var msg="";var elm=document.getElementById("tinymce_debug");if(!elm){var debugDiv=document.createElement("div");debugDiv.setAttribute("className","debugger");debugDiv.className="debugger";debugDiv.innerHTML='\ | |
| 10 | - Debug output:\ | |
| 11 | - <textarea id="tinymce_debug" style="width: 100%; height: 300px">\ | |
| 12 | - </textarea>';document.body.appendChild(debugDiv);elm=document.getElementById("tinymce_debug");}var args=this.debug.arguments;for(var i=0;i<args.length;i++){msg+=args[i];if(i<args.length-1)msg+=', ';}elm.value+=msg+"\n";}; | |
| 13 | 1 | \ No newline at end of file |
| 2 | +function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf("MSIE 5")!=-1);this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf("MSIE 5.0")!=-1);this.isGecko=navigator.userAgent.indexOf("Gecko")!=-1;this.isSafari=navigator.userAgent.indexOf("Safari")!=-1;this.isMac=navigator.userAgent.indexOf("Mac")!=-1;this.dialogCounter=0;this.idCounter=0;}TinyMCE.prototype.defParam=function(_1,_2){this.settings[_1]=tinyMCE.getParam(_1,_2);};TinyMCE.prototype.init=function(_3){var _4;this.settings=_3;if(typeof (document.execCommand)=="undefined"){return;}if(!tinyMCE.baseURL){var _5=document.getElementsByTagName("script");for(var i=0;i<_5.length;i++){if(_5[i].src&&(_5[i].src.indexOf("tiny_mce.js")!=-1||_5[i].src.indexOf("tiny_mce_src.js")!=-1||_5[i].src.indexOf("tiny_mce_gzip.php")!=-1)){var _7=_5[i].src;tinyMCE.srcMode=(_7.indexOf("_src")!=-1)?"_src":"";_7=_7.substring(0,_7.lastIndexOf("/"));tinyMCE.baseURL=_7;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf("?")!=-1){this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf("?"));}this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf("/"));if(tinyMCE.baseURL.indexOf("://")==-1&&tinyMCE.baseURL.charAt(0)!="/"){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.defParam("mode","none");this.defParam("theme","advanced");this.defParam("plugins","",true);this.defParam("language","en");this.defParam("docs_language",this.settings["language"]);this.defParam("elements","");this.defParam("textarea_trigger","mce_editable");this.defParam("valid_elements","+a[name|href|target|title|class],strong/b[class],em/i[class],strike[class],u[class],+p[dir|class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],div[dir|class|align],span[class|align],pre[class|align],address[class|align],h1[dir|class|align],h2[dir|class|align],h3[dir|class|align],h4[dir|class|align],h5[dir|class|align],h6[dir|class|align],hr");this.defParam("extended_valid_elements","");this.defParam("invalid_elements","");this.defParam("encoding","");this.defParam("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE.prototype.convertURL"));this.defParam("save_callback","");this.defParam("debug",false);this.defParam("force_br_newlines",false);this.defParam("force_p_newlines",true);this.defParam("add_form_submit_trigger",true);this.defParam("relative_urls",true);this.defParam("remove_script_host",true);this.defParam("focus_alert",true);this.defParam("document_base_url",this.documentURL);this.defParam("visual",true);this.defParam("visual_table_class","mceVisualAid");this.defParam("setupcontent_callback","");this.defParam("fix_content_duplication",true);this.defParam("custom_undo_redo",true);this.defParam("custom_undo_redo_levels",-1);this.defParam("custom_undo_redo_keyboard_shortcuts",true);this.defParam("verify_css_classes",false);this.defParam("trim_span_elements",true);this.defParam("verify_html",true);this.defParam("apply_source_formatting",false);this.defParam("directionality","ltr");this.defParam("auto_cleanup_word",false);this.defParam("cleanup_on_startup",false);this.defParam("inline_styles",false);this.defParam("convert_newlines_to_brs",false);this.defParam("auto_reset_designmode",false);this.defParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,202,Ecirc,203,Euml,204,Igrave,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,217,Ugrave,219,Ucirc,220,Uuml,376,Yuml,222,THORN,224,agrave,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,234,ecirc,235,euml,236,igrave,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,249,ugrave,251,ucirc,252,uuml,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy,233,eacute");this.defParam("entity_encoding","named");this.defParam("cleanup_callback","");this.defParam("add_unload_trigger",true);this.defParam("ask",false);this.defParam("nowrap",false);this.defParam("auto_resize",false);this.defParam("auto_focus",false);this.defParam("cleanup",true);this.defParam("remove_linebreaks",true);this.defParam("button_tile_map",false);this.defParam("submit_patch",true);this.defParam("browsers","msie,safari,gecko");this.defParam("dialog_type","window");if(this.isMSIE&&this.settings["browsers"].indexOf("msie")==-1){return;}if(this.isGecko&&this.settings["browsers"].indexOf("gecko")==-1){return;}if(this.isSafari&&this.settings["browsers"].indexOf("safari")==-1){return;}var _8=tinyMCE.settings["document_base_url"];if(_8.indexOf("?")!=-1){_8=_8.substring(0,_8.indexOf("?"));}this.settings["base_href"]=_8.substring(0,_8.lastIndexOf("/"))+"/";_4=this.settings["theme"];this.blockRegExp=new RegExp("^(h1|h2|h3|h4|h5|h6|p|div|address|pre|form|table|li|ol|ul|td)$","i");this.settings["theme_href"]=tinyMCE.baseURL+"/themes/"+_4;if(!tinyMCE.isMSIE){this.settings["force_br_newlines"]=false;}if(tinyMCE.getParam("content_css",false)){var _9=tinyMCE.getParam("content_css","");if(_9.indexOf("://")==-1&&_9.charAt(0)!="/"){this.settings["content_css"]=this.documentBasePath+"/"+_9;}else{this.settings["content_css"]=_9;}}else{this.settings["content_css"]=tinyMCE.baseURL+"/themes/"+_4+"/editor_content.css";}if(tinyMCE.getParam("popups_css",false)){var _a=tinyMCE.getParam("popups_css","");if(_a.indexOf("://")==-1&&_a.charAt(0)!="/"){this.settings["popups_css"]=this.documentBasePath+"/"+_a;}else{this.settings["popups_css"]=_a;}}else{this.settings["popups_css"]=tinyMCE.baseURL+"/themes/"+_4+"/editor_popup.css";}if(tinyMCE.getParam("editor_css",false)){var _b=tinyMCE.getParam("editor_css","");if(_b.indexOf("://")==-1&&_b.charAt(0)!="/"){this.settings["editor_css"]=this.documentBasePath+"/"+_b;}else{this.settings["editor_css"]=_b;}}else{this.settings["editor_css"]=tinyMCE.baseURL+"/themes/"+_4+"/editor_ui.css";}if(tinyMCE.settings["debug"]){var _c="Debug: \n";_c+="baseURL: "+this.baseURL+"\n";_c+="documentBasePath: "+this.documentBasePath+"\n";_c+="content_css: "+this.settings["content_css"]+"\n";_c+="popups_css: "+this.settings["popups_css"]+"\n";_c+="editor_css: "+this.settings["editor_css"]+"\n";alert(_c);}this._initCleanup();if(this.configs.length==0){if(this.isSafari){alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.");}tinyMCE.addEvent(window,"load",TinyMCE.prototype.onLoad);if(tinyMCE.isMSIE){if(tinyMCE.settings["add_unload_trigger"]){tinyMCE.addEvent(window,"unload",TinyMCE.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE.prototype.unloadHandler);}}else{if(tinyMCE.settings["add_unload_trigger"]){tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}}}this.loadScript(tinyMCE.baseURL+"/themes/"+this.settings["theme"]+"/editor_template"+tinyMCE.srcMode+".js");this.loadScript(tinyMCE.baseURL+"/langs/"+this.settings["language"]+".js");this.loadCSS(this.settings["editor_css"]);var _d=tinyMCE.getParam("plugins","",true,",");if(this.settings["plugins"]!=""){for(var i=0;i<_d.length;i++){this.loadScript(tinyMCE.baseURL+"/plugins/"+_d[i]+"/editor_plugin"+tinyMCE.srcMode+".js");}}_3["index"]=this.configs.length;this.configs[this.configs.length]=_3;};TinyMCE.prototype.loadScript=function(_f){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==_f){return;}}document.write("<sc"+"ript language=\"javascript\" type=\"text/javascript\" src=\""+_f+"\"></script>");this.loadedFiles[this.loadedFiles.length]=_f;};TinyMCE.prototype.loadCSS=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url){return;}}document.write("<link href=\""+url+"\" rel=\"stylesheet\" type=\"text/css\" />");this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.importCSS=function(doc,_14){if(tinyMCE.isMSIE){var _15=doc.createStyleSheet(_14);}else{var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=_14;if(headArr=doc.getElementsByTagName("head")){headArr[0].appendChild(elm);}}};TinyMCE.prototype.confirmAdd=function(e,_18){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var _1a=elm.name?elm.name:elm.id;tinyMCE.settings=_18;if(!elm.getAttribute("mce_noask")&&confirm(tinyMCELang["lang_edit_confirm"])){tinyMCE.addMCEControl(elm,_1a);}elm.setAttribute("mce_noask","true");};TinyMCE.prototype.updateContent=function(_1b){var _1c=document.getElementById(_1b);for(var n in tinyMCE.instances){var _1e=tinyMCE.instances[n];_1e.switchSettings();if(_1e.formElement==_1c){var doc=_1e.getDoc();tinyMCE._setHTML(doc,_1e.formElement.value);if(!tinyMCE.isMSIE){doc.body.innerHTML=tinyMCE._cleanupHTML(doc,this.settings,doc.body,_1e.visualAid);}}}};TinyMCE.prototype.addMCEControl=function(_20,_21,_22){var id="mce_editor_"+tinyMCE.idCounter++;var _24=new TinyMCEControl(tinyMCE.settings);_24.editorId=id;this.instances[id]=_24;_24.onAdd(_20,_21,_22);};TinyMCE.prototype.triggerSave=function(_25,_26){for(var n in tinyMCE.instances){var _28=tinyMCE.instances[n];_28.switchSettings();tinyMCE.settings["preformatted"]=false;if(typeof (_25)=="undefined"){_25=false;}if(typeof (_26)=="undefined"){_26=false;}tinyMCE._setHTML(_28.getDoc(),_28.getBody().innerHTML);var htm=_25?_28.getBody().innerHTML:tinyMCE._cleanupHTML(_28.getDoc(),this.settings,_28.getBody(),this.visualAid,true);if(tinyMCE.settings["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html"){htm=tinyMCE.convertStringToXML(htm);}if(!_26&&tinyMCE.settings["save_callback"]!=""){var _2a=eval(tinyMCE.settings["save_callback"]+"(inst.formTargetElementId,htm,inst.getBody());");}if((typeof (_2a)!="undefined")&&_2a!=null){htm=_2a;}htm=tinyMCE.regexpReplace(htm,"(","(","gi");htm=tinyMCE.regexpReplace(htm,")",")","gi");htm=tinyMCE.regexpReplace(htm,";",";","gi");htm=tinyMCE.regexpReplace(htm,""",""","gi");htm=tinyMCE.regexpReplace(htm,"^","^","gi");if(_28.formElement){_28.formElement.value=htm;}}};TinyMCE.prototype._convertOnClick=function(_2b){if(tinyMCE.isMSIE5){return;}var _2c=_2b.getElementsByTagName("a");for(var i=0;i<_2c.length;i++){var _2e=_2c[i].getAttribute("onclick");if(_2e&&_2e!=""){_2c[i].removeAttribute("onclick");_2c[i].setAttribute("mce_onclick",tinyMCE.cleanupEventStr(""+_2e));_2c[i].onclick=null;}}};TinyMCE.prototype.resetForm=function(_2f){var _30=document.forms[_2f];for(var n in tinyMCE.instances){var _32=tinyMCE.instances[n];_32.switchSettings();for(var i=0;i<_30.elements.length;i++){if(_32.formTargetElementId==_30.elements[i].name){_32.getBody().innerHTML=_30.elements[i].value;return;}}}};TinyMCE.prototype.execInstanceCommand=function(_34,_35,_36,_37,_38){var _39=tinyMCE.getInstanceById(_34);if(_39){if(typeof (_38)=="undefined"){_38=true;}if(_38){_39.contentWindow.focus();}_39.autoResetDesignMode();this.selectedElement=_39.getFocusElement();this.selectedInstance=_39;tinyMCE.execCommand(_35,_36,_37);}};TinyMCE.prototype.execCommand=function(_3a,_3b,_3c){_3b=_3b?_3b:false;_3c=_3c?_3c:null;if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();}switch(_3a){case "mceHelp":window.open(tinyMCE.themeURL+"/docs/"+this.settings["docs_language"]+"/index.htm","mceHelp","menubar=yes,toolbar=yes,scrollbars=yes,left=20,top=20,width=550,height=600");return;case "mceFocus":var _3d=tinyMCE.getInstanceById(_3c);if(_3d){_3d.contentWindow.focus();}return;case "mceAddControl":case "mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(_3c),_3c);return;case "mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(_3c),_3c["element"],_3c["document"]);return;case "mceRemoveControl":case "mceRemoveEditor":tinyMCE.removeMCEControl(_3c);return;case "mceResetDesignMode":if(!tinyMCE.isMSIE){for(var n in tinyMCE.instances){try{tinyMCE.instances[n].getDoc().designMode="on";}catch(e){}}}return;}if(this.selectedInstance){this.selectedInstance.execCommand(_3a,_3b,_3c);}else{if(tinyMCE.settings["focus_alert"]){alert(tinyMCELang["lang_focus_alert"]);}}};TinyMCE.prototype.eventPatch=function(_3f){if(typeof (tinyMCE)=="undefined"){return true;}for(var i=0;i<document.frames.length;i++){if(document.frames[i].event){var _41=document.frames[i].event;_41.target=_41.srcElement;_41.target.editor_id=document.frames[i].editor_id;TinyMCE.prototype.handleEvent(_41);return;}}};TinyMCE.prototype.unloadHandler=function(){tinyMCE.triggerSave(true,true);};TinyMCE.prototype.addEventHandlers=function(_42){if(tinyMCE.isMSIE){var doc=document.frames[_42].document;document.frames[_42].editor_id=_42;tinyMCE.addEvent(doc,"keypress",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"keyup",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"keydown",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"mouseup",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"click",TinyMCE.prototype.eventPatch);}else{var _44=tinyMCE.instances[_42];var doc=_44.getDoc();_44.switchSettings();doc.editor_id=_42;tinyMCE.addEvent(doc,"keypress",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keypress",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keydown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keyup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"click",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mouseup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mousedown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"focus",tinyMCE.handleEvent);eval("try { doc.designMode = \"On\"; } catch(e) {}");}};TinyMCE.prototype._createIFrame=function(_46){var _47=document.createElement("iframe");var id=_46.getAttribute("id");_47.setAttribute("id",id);_47.setAttribute("className","mceEditorArea");_47.setAttribute("border","0");_47.setAttribute("frameBorder","0");_47.setAttribute("marginWidth","0");_47.setAttribute("marginHeight","0");_47.setAttribute("leftMargin","0");_47.setAttribute("topMargin","0");_47.setAttribute("width",tinyMCE.settings["area_width"]);_47.setAttribute("height",tinyMCE.settings["area_height"]);_47.setAttribute("allowtransparency","true");if(tinyMCE.settings["auto_resize"]){_47.setAttribute("scrolling","no");}if(tinyMCE.isMSIE){_47.setAttribute("src",this.settings["default_document"]);}_47.style.width=tinyMCE.settings["area_width"];_47.style.height=tinyMCE.settings["area_height"];if(tinyMCE.isMSIE){_46.outerHTML=_47.outerHTML;}else{_46.parentNode.replaceChild(_47,_46);}if(tinyMCE.isMSIE){return window.frames[id];}else{return _47;}};TinyMCE.prototype.setupContent=function(_49){var _4a=tinyMCE.instances[_49];var doc=_4a.getDoc();var _4c=doc.getElementsByTagName("head").item(0);var _4d=_4a.startContent;_4a.switchSettings();if(!tinyMCE.isMSIE&&doc.title!="blank_page"){doc.location.href=tinyMCE.baseURL+"/blank.htm";window.setTimeout("tinyMCE.setupContent('"+_49+"');",1000);return;}if(!_4c){window.setTimeout("tinyMCE.setupContent('"+_49+"');",10);return;}tinyMCE.importCSS(_4a.getDoc(),_4a.settings["content_css"]);tinyMCE.executeCallback("init_instance_callback","_initInstance",0,_4a);if(tinyMCE.settings["nowrap"]){doc.body.style.whiteSpace="nowrap";}doc.body.dir=this.settings["directionality"];doc.editorId=_49;if(!tinyMCE.isMSIE){doc.documentElement.editorId=_49;}base=doc.createElement("base");base.setAttribute("href",tinyMCE.settings["base_href"]);_4c.appendChild(base);if(tinyMCE.settings["convert_newlines_to_brs"]){_4d=tinyMCE.regexpReplace(_4d,"\r\n","<br />","gi");_4d=tinyMCE.regexpReplace(_4d,"\r","<br />","gi");_4d=tinyMCE.regexpReplace(_4d,"\n","<br />","gi");}_4d=tinyMCE._customCleanup("insert_to_editor",_4d);if(tinyMCE.isMSIE){window.setInterval("try{tinyMCE.getCSSClasses(document.frames[\""+_49+"\"].document, \""+_49+"\");}catch(e){}",500);if(tinyMCE.settings["force_br_newlines"]){document.frames[_49].document.styleSheets[0].addRule("p","margin: 0px;");}var _4e=document.frames[_49].document.body;tinyMCE.addEvent(_4e,"beforepaste",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(_4e,"beforecut",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(_4e,"paste",TinyMCE.prototype.eventPatch);_4e.editorId=_49;}if(!tinyMCE.isMSIE){var _4f=_4a.getDoc().createElement("body");var doc=_4a.getDoc();_4f.innerHTML=_4d;if(tinyMCE.settings["force_p_newlines"]){_4d=_4d.replace(new RegExp("<>","g"),"");}if(tinyMCE.settings["cleanup_on_startup"]){_4a.getBody().innerHTML=tinyMCE._cleanupHTML(doc,this.settings,_4f);}else{_4d=tinyMCE.regexpReplace(_4d,"<strong","<b","gi");_4d=tinyMCE.regexpReplace(_4d,"<em","<i","gi");_4d=tinyMCE.regexpReplace(_4d,"</strong>","</b>","gi");_4d=tinyMCE.regexpReplace(_4d,"</em>","</i>","gi");_4a.getBody().innerHTML=_4d;}_4a.convertAllRelativeURLs();}else{if(tinyMCE.settings["cleanup_on_startup"]){tinyMCE._setHTML(_4a.getDoc(),_4d);eval("try {inst.getBody().innerHTML = tinyMCE._cleanupHTML(inst.contentDocument, this.settings, inst.getBody());} catch(e) {}");}else{tinyMCE._setHTML(_4a.getDoc(),_4d);}}tinyMCE._convertOnClick(_4a.getBody());var _51=document.getElementById(_4a.editorId+"_parent");if(_51.lastChild.nodeName.toLowerCase()=="input"){_4a.formElement=_51.lastChild;}else{_4a.formElement=_51.nextSibling;}tinyMCE.handleVisualAid(_4a.getBody(),true,tinyMCE.settings["visual"]);tinyMCE.executeCallback("setupcontent_callback","_setupContent",0,_49,_4a.getBody(),_4a.getDoc());if(!tinyMCE.isMSIE){TinyMCE.prototype.addEventHandlers(_49);}_4a.startContent=_4a.getBody().innerHTML;tinyMCE.selectedInstance=_4a;tinyMCE.selectedElement=_4a.contentWindow.document.body;tinyMCE.triggerNodeChange(false,true);tinyMCE._customCleanup("insert_to_editor_dom",_4a.contentWindow.document.body);};TinyMCE.prototype.cancelEvent=function(e){if(tinyMCE.isMSIE){e.returnValue=false;e.cancelBubble=true;}else{e.preventDefault();}};TinyMCE.prototype.removeTinyMCEFormElements=function(_53){for(var i=0;i<_53.elements.length;i++){var _55=_53.elements[i].name?_53.elements[i].name:_53.elements[i].id;if(_55.indexOf("mce_editor_")==0){_53.elements[i].disabled=true;}}};TinyMCE.prototype.handleEvent=function(e){if(typeof (tinyMCE)=="undefined"){return true;}switch(e.type){case "submit":tinyMCE.removeTinyMCEFormElements(tinyMCE.isMSIE?window.event.srcElement:e.target);tinyMCE.triggerSave();return;case "reset":var _57=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var i=0;i<document.forms.length;i++){if(document.forms[i]==_57){window.setTimeout("tinyMCE.resetForm("+i+");",10);}}return;case "paste":if(tinyMCE.settings["auto_cleanup_word"]){var _59=e.target.editorId;if(!_59){_59=e.target.ownerDocument.editorId;}if(_59){window.setTimeout("tinyMCE.execInstanceCommand('"+_59+"', 'mceCleanupWord', false, null);",1);}}break;case "beforecut":case "beforepaste":if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");}break;case "keypress":if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}else{if(e.target.ownerDocument.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.ownerDocument.editorId];}}if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();}if(tinyMCE.isGecko&&tinyMCE.settings["force_p_newlines"]&&e.keyCode==13&&!e.shiftKey){if(tinyMCE.selectedInstance._insertPara(e)){e.preventDefault();return false;}}if(tinyMCE.isGecko&&tinyMCE.settings["force_p_newlines"]&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){e.preventDefault();return false;}}if(!tinyMCE.isMSIE&&e.ctrlKey&&tinyMCE.settings["custom_undo_redo"]){if(e.charCode==120||e.charCode==118){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");return;}if(tinyMCE.settings["custom_undo_redo_keyboard_shortcuts"]){if(e.charCode==122){tinyMCE.selectedInstance.execCommand("Undo");e.preventDefault();return false;}if(e.charCode==121){tinyMCE.selectedInstance.execCommand("Redo");e.preventDefault();return false;}}if(e.charCode==98){tinyMCE.selectedInstance.execCommand("Bold");e.preventDefault();return false;}if(e.charCode==105){tinyMCE.selectedInstance.execCommand("Italic");e.preventDefault();return false;}if(e.charCode==117){tinyMCE.selectedInstance.execCommand("Underline");e.preventDefault();return false;}}if(tinyMCE.settings["custom_undo_redo"]){var _5a=new Array(13,45,36,35,33,34,37,38,39,40);var _5b=false;for(var i=0;i<_5a.length;i++){if(_5a[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;_5b=true;break;}}if(!tinyMCE.selectedInstance.typing&&!_5b){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;}}if(tinyMCE.isMSIE&&tinyMCE.settings["force_br_newlines"]&&e.keyCode==13){if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null){return false;}e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.triggerNodeChange(false);return false;}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false);}return false;break;case "keyup":case "keydown":if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}else{return;}if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();}if(tinyMCE.isGecko&&tinyMCE.settings["force_p_newlines"]&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){e.preventDefault();return false;}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9){tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings["visual"]);}if(tinyMCE.isGecko&&tinyMCE.settings["document_base_url"]!=""+document.location.href&&e.type=="keyup"&&e.ctrlKey&&e.keyCode==86){tinyMCE.selectedInstance.fixBrokenURLs();}if(tinyMCE.isMSIE&&tinyMCE.settings["custom_undo_redo"]){var _60=new Array(13,45,36,35,33,34,37,38,39,40);var _61=false;for(var i=0;i<_60.length;i++){if(_60[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;_61=true;break;}}if(!tinyMCE.selectedInstance.typing&&!_61&&(e.keyCode<16||e.keyCode>18&&e.keyCode!=255)){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;tinyMCE.triggerNodeChange(false);}if(_61&&e.type=="keyup"){tinyMCE.triggerNodeChange(false);}var _63=new Array(8,46);for(var i=0;i<_63.length;i++){if(_63[i]==e.keyCode){if(!tinyMCE.selectedInstance.typing){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;}if(e.type=="keyup"){tinyMCE.triggerNodeChange(false);}return true;}}var _65=new Array(66,73,85,86,88);for(var i=0;i<_63.length;i++){if(_65[i]==e.keyCode&&e.ctrlKey){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return true;}}if(tinyMCE.settings["custom_undo_redo_keyboard_shortcuts"]){if(e.keyCode==90&&e.ctrlKey&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Undo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return false;}if(e.keyCode==89&&e.ctrlKey&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Redo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return false;}}}var _67=new Array(13,45,36,35,33,34,37,38,39,40);var _68=false;for(var i=0;i<_67.length;i++){if(_67[i]==e.keyCode){_68=true;break;}}if(_68&&e.type=="keyup"){tinyMCE.triggerNodeChange(false);}break;case "mousedown":case "mouseup":case "click":case "focus":if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();}var _6a=tinyMCE.getParentElement(e.target,"body");for(var _6b in tinyMCE.instances){var _6c=tinyMCE.instances[_6b];_6c.autoResetDesignMode();if(_6c.getBody()==_6a){tinyMCE.selectedInstance=_6c;tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");tinyMCE.selectedInstance.typing=false;break;}}if(tinyMCE.isSafari){tinyMCE.selectedInstance.lastSafariSelection=tinyMCE.selectedInstance.getBookmark();tinyMCE.selectedInstance.lastSafariSelectedElement=tinyMCE.selectedElement;var lnk=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");if(lnk&&e.type=="mousedown"){lnk.setAttribute("mce_real_href",lnk.getAttribute("href"));lnk.setAttribute("href","javascript:void(0);");}if(lnk&&e.type=="click"){window.setTimeout(function(){lnk.setAttribute("href",lnk.getAttribute("mce_real_href"));lnk.removeAttribute("mce_real_href");},10);}}if(e.type!="focus"){tinyMCE.selectedNode=null;}tinyMCE.triggerNodeChange(false);if(!tinyMCE.selectedInstance&&e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}if(e.target.nodeName.toLowerCase()=="a"&&e.type=="click"&&e.altKey){var _6e=""+tinyMCE.cleanupEventStr(e.target.getAttribute("mce_onclick"));eval(_6e.replace("return false;",""));}if(tinyMCE.isGecko&&tinyMCE.settings["document_base_url"]!=""+document.location.href){window.setTimeout("tinyMCE.getInstanceById(\""+_6c.editorId+"\").fixBrokenURLs();",10);}return false;break;}};TinyMCE.prototype.switchClass=function(_6f,_70,_71){var _72=false;if(typeof (_71)!="undefined"&&_6f!=null){_6f.classLock=_71;_72=true;}if(_6f!=null&&(_72||!_6f.classLock)){_6f.oldClassName=_6f.className;_6f.className=_70;}};TinyMCE.prototype.restoreAndSwitchClass=function(_73,_74){if(_73!=null&&!_73.classLock){this.restoreClass(_73);this.switchClass(_73,_74);}};TinyMCE.prototype.switchClassSticky=function(_75,_76,_77){var _78,lockChanged=false;if(!this.stickyClassesLookup[_75]){this.stickyClassesLookup[_75]=document.getElementById(_75);}_78=this.stickyClassesLookup[_75];if(typeof (_77)!="undefined"&&_78!=null){_78.classLock=_77;lockChanged=true;}if(_78!=null&&(lockChanged||!_78.classLock)){_78.className=_76;_78.oldClassName=_76;}};TinyMCE.prototype.restoreClass=function(_79){if(_79!=null&&_79.oldClassName&&!_79.classLock){_79.className=_79.oldClassName;_79.oldClassName=null;}};TinyMCE.prototype.setClassLock=function(_7a,_7b){if(_7a!=null){_7a.classLock=_7b;}};TinyMCE.prototype.addEvent=function(obj,_7d,_7e){if(tinyMCE.isMSIE){obj.attachEvent("on"+_7d,_7e);}else{obj.addEventListener(_7d,_7e,false);}};TinyMCE.prototype.submitPatch=function(){tinyMCE.removeTinyMCEFormElements(this);tinyMCE.triggerSave();this.oldSubmit();};TinyMCE.prototype.onLoad=function(){for(var c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];var _80=new Array();if(document.forms&&tinyMCE.settings["add_form_submit_trigger"]&&!tinyMCE.submitTriggers){for(var i=0;i<document.forms.length;i++){var _82=document.forms[i];tinyMCE.addEvent(_82,"submit",TinyMCE.prototype.handleEvent);tinyMCE.addEvent(_82,"reset",TinyMCE.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings["submit_patch"]){try{_82.oldSubmit=_82.submit;_82.submit=TinyMCE.prototype.submitPatch;}catch(e){}}}}var _83=tinyMCE.settings["mode"];switch(_83){case "exact":var _84=tinyMCE.getParam("elements","",true,",");for(var i=0;i<_84.length;i++){var _86=tinyMCE._getElementById(_84[i]);var _87=_86?_86.getAttribute(tinyMCE.settings["textarea_trigger"]):"";if(_87=="false"){continue;}if(tinyMCE.settings["ask"]&&_86){_80[_80.length]=_86;continue;}if(_86){tinyMCE.addMCEControl(_86,_84[i]);}else{if(tinyMCE.settings["debug"]){alert("Error: Could not find element by id or name: "+_84[i]);}}}break;case "specific_textareas":case "textareas":var _88=document.getElementsByTagName("textarea");for(var i=0;i<_88.length;i++){var _8a=_88.item(i).getAttribute(tinyMCE.settings["textarea_trigger"]);if((_83=="specific_textareas"&&_8a=="true")||(_83=="textareas"&&_8a!="false")){_80[_80.length]=_88.item(i);}}break;}for(var i=0;i<_80.length;i++){var _8c=_80[i];var _8d=_8c.name?_8c.name:_8c.id;if(tinyMCE.settings["ask"]){if(tinyMCE.isGecko){var _8e=tinyMCE.settings;tinyMCE.addEvent(_8c,"focus",function(e){window.setTimeout(function(){TinyMCE.prototype.confirmAdd(e,_8e);},10);});}else{var _90=tinyMCE.settings;tinyMCE.addEvent(_8c,"focus",function(){TinyMCE.prototype.confirmAdd(null,_90);});}}else{tinyMCE.addMCEControl(_8c,_8d);}}if(tinyMCE.settings["auto_focus"]){window.setTimeout(function(){var _91=tinyMCE.getInstanceById(tinyMCE.settings["auto_focus"]);_91.selectNode(_91.getBody(),true,true);_91.contentWindow.focus();},10);}tinyMCE.executeCallback("oninit","_oninit",0);}};TinyMCE.prototype.removeMCEControl=function(_92){var _93=tinyMCE.getInstanceById(_92);if(_93){_93.switchSettings();_92=_93.editorId;var _94=tinyMCE.getContent(_92);var _95=new Array();for(var _96 in tinyMCE.instances){var _97=tinyMCE.instances[_96];if(_96!=_92){_95[_96]=_97;}}tinyMCE.instances=_95;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;var _98=document.getElementById(_92+"_parent");var _99=_93.oldTargetElement;var _9a=_99.nodeName.toLowerCase();if(_9a=="textarea"||_9a=="input"){_98.parentNode.removeChild(_98);_99.style.display="inline";_99.value=_94;}else{_99.innerHTML=_94;_98.parentNode.insertBefore(_99,_98);_98.parentNode.removeChild(_98);}}};TinyMCE.prototype._cleanupElementName=function(_9b,_9c){_9b=_9b.toLowerCase();if(_9b=="body"){return null;}if(tinyMCE.cleanup_verify_html){for(var i=0;i<tinyMCE.cleanup_invalidElements.length;i++){if(tinyMCE.cleanup_invalidElements[i]==_9b){return null;}}var _9e=false;var _9f=null;for(var i=0;i<tinyMCE.cleanup_validElements.length&&!_9f;i++){for(var x=0,n=tinyMCE.cleanup_validElements[i][0].length;x<n;x++){var _a2=tinyMCE.cleanup_validElements[i][0][x];if(_a2.charAt(0)=="+"){_a2=_a2.substring(1);}if(_a2.match(new RegExp("\\*|\\?|\\+","g"))!=null){_a2=_a2.replace(new RegExp("\\?","g"),"(\\S?)");_a2=_a2.replace(new RegExp("\\+","g"),"(\\S+)");_a2=_a2.replace(new RegExp("\\*","g"),"(\\S*)");_a2="^"+_a2+"$";if(_9b.match(new RegExp(_a2,"g"))){_9f=tinyMCE.cleanup_validElements[i];_9e=true;break;}}if(_9b==_a2){_9f=tinyMCE.cleanup_validElements[i];_9e=true;_9b=_9f[0][0];break;}}}if(!_9e){return null;}}if(!tinyMCE.isMSIE){if(_9b=="strong"&&!tinyMCE.cleanup_on_save){_9b="b";}else{if(_9b=="em"&&!tinyMCE.cleanup_on_save){_9b="i";}}}if(tinyMCE.isMSIE){if(_9b=="table"){var _a3=_9c.style.pixelWidth==0?_9c.getAttribute("width"):_9c.style.pixelWidth;_9c.setAttribute("width",_a3);_a3=_9c.style.pixelHeight==0?_9c.getAttribute("height"):_9c.style.pixelHeight;_9c.setAttribute("height",_a3);}}var _a4=new Object();_a4.element_name=_9b;_a4.valid_attribs=_9f;return _a4;};TinyMCE.prototype._fixInlineStyles=function(elm){var _a6=elm.nodeName;if(elm.nodeName=="FONT"){if((c=tinyMCE.getAttrib(elm,"color"))!=""){elm.style.color=c;}}if(_a6=="TABLE"||_a6=="TD"||_a6=="IMG"){var _a7;_a7=tinyMCE.isMSIE?elm.width:elm.getAttribute("width");if(_a7&&_a7!=""){if(typeof (_a7)!="string"||!_a7.indexOf("%")){_a7+="px";}elm.style.width=_a7;}_a7=tinyMCE.isMSIE?elm.height:elm.getAttribute("height");if(_a7&&_a7!=""){if(typeof (_a7)!="string"||!_a7.indexOf("%")){_a7+="px";}elm.style.height=_a7;}_a7=tinyMCE.isMSIE?elm.border:elm.getAttribute("border");if(_a7&&_a7!=""&&(_a7!="0"&&_a6!="TABLE")){elm.style.borderWidth=_a7+"px";}}_a7=elm.getAttribute("align");if(_a7&&_a7!=""){if(elm.nodeName.toLowerCase()=="img"){if(tinyMCE.isMSIE){elm.style.styleFloat=_a7;}else{elm.style.cssFloat=_a7;}}else{elm.style.textAlign=_a7;}}_a7=elm.getAttribute("vspace");if(_a7&&_a7!=""){elm.style.marginTop=_a7+"px";elm.style.marginBottom=_a7+"px";}_a7=elm.getAttribute("hspace");if(_a7&&_a7!=""){elm.style.marginLeft=_a7+"px";elm.style.marginRight=_a7+"px";}};TinyMCE.prototype._cleanupAttribute=function(_a8,_a9,_aa,_ab){var _ac=_aa.nodeName.toLowerCase();var _ad=_aa.nodeValue;var _ae=null;var _af=false;if(tinyMCE.cleanup_inline_styles&&(_a9=="table"||_a9=="td"||_a9=="img")){if(_ac=="width"||_ac=="height"||_ac=="border"||_ac=="align"||_ac=="valign"||_ac=="hspace"||_ac=="vspace"){return null;}}if(_ac.indexOf("moz_")!=-1){return null;}if(!tinyMCE.isMSIE&&(_ac=="mce_real_href"||_ac=="mce_real_src")){if(!tinyMCE.cleanup_on_save){var _b0=new Object();_b0.name=_ac;_b0.value=_ad;return _b0;}else{return null;}}if(_ac=="mce_onclick"){_af=true;}if(tinyMCE.cleanup_verify_html&&!_af){for(var i=1;i<_a8.length;i++){var _b2=_a8[i][0];var re=null;if(_b2.match(new RegExp("\\*|\\?|\\+","g"))!=null){_b2=_b2.replace(new RegExp("\\?","g"),"(\\S?)");_b2=_b2.replace(new RegExp("\\+","g"),"(\\S+)");_b2=_b2.replace(new RegExp("\\*","g"),"(\\S*)");_b2="^"+_b2+"$";re=new RegExp(_b2,"g");}if((re&&_ac.match(re)!=null)||_ac==_b2){_af=true;_ae=_a8[i][3];break;}}if((_a9=="table"||_a9=="td")&&_ac=="style"){_af=true;}if(!_af){return false;}}else{_af=true;}switch(_ac){case "size":if(tinyMCE.isMSIE5&&_a9=="font"){_ad=_ab.size;}break;case "color":if(tinyMCE.isMSIE5&&_a9=="font"){_ad=_ab.color;}break;case "width":if(tinyMCE.isMSIE){_ad=_ab.width;}break;case "height":if(tinyMCE.isMSIE){_ad=_ab.height;}break;case "border":if(tinyMCE.isMSIE){_ad=_ab.border;}break;case "class":if(_a9=="table"||_a9=="td"){if(tinyMCE.cleanup_visual_table_class!=""){_ad=tinyMCE.getVisualAidClass(_ad,!tinyMCE.cleanup_on_save);}}if(!tinyMCE._verifyClass(_ab)||_ad==""){return null;}break;case "style":_ad=_ab.style.cssText.toLowerCase();if(tinyMCE.isMSIE){var _b4=_ab.style.border;var bt=_ab.style.borderTop;var bl=_ab.style.borderLeft;var br=_ab.style.borderRight;var bb=_ab.style.borderBottom;if(_b4!=""&&(bt==_b4&&bl==_b4&&br==_b4&&bb==_b4)){_ad=tinyMCE.regexpReplace(_ad,"border-top: "+_b4+"?; ?","");_ad=tinyMCE.regexpReplace(_ad,"border-left: "+_b4+"?; ?","");_ad=tinyMCE.regexpReplace(_ad,"border-right: "+_b4+"?; ?","");_ad=tinyMCE.regexpReplace(_ad,"border-bottom: "+_b4+"?;( ?)","border: "+_b4+";$1");}}break;case "onclick":case "mce_onclick":if(tinyMCE.isMSIE5){break;}if(tinyMCE.cleanup_on_save){if(_ab.getAttribute("mce_onclick")){_ac="onclick";_ad=""+_ab.getAttribute("mce_onclick");}}else{if(_ac=="onclick"&&!tinyMCE.cleanup_on_save){return null;}}break;case "href":case "src":if(!tinyMCE.isMSIE&&_ac=="href"&&_ab.getAttribute("mce_real_href")){_ad=_ab.getAttribute("mce_real_href");}if(!tinyMCE.isMSIE&&_ac=="src"&&_ab.getAttribute("mce_real_src")){_ad=_ab.getAttribute("mce_real_src");}if(tinyMCE.isGecko&&!tinyMCE.settings["relative_urls"]){_ad=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings["base_href"],_ad);}_ad=eval(tinyMCE.cleanup_urlconverter_callback+"(attribValue, element_node, tinyMCE.cleanup_on_save);");break;case "colspan":case "rowspan":if(_ad=="1"){return null;}break;case "_moz-userdefined":case "editorid":case "editor_id":case "mce_real_href":case "mce_real_src":return null;}if(_ae!=null){var _b9=false;for(var i=0;i<_ae.length;i++){if(_ad==_ae[i]){_b9=true;break;}}if(!_b9){return null;}}var _bb=new Object();_bb.name=_ac;_bb.value=_ad;return _bb;};TinyMCE.prototype._verifyClass=function(_bc){if(tinyMCE.isGecko){var _bd=_bc.getAttribute("class");if(!_bd){return false;}}if(tinyMCE.isMSIE){var _be=_bc.getAttribute("className");}if(tinyMCE.cleanup_verify_css_classes&&tinyMCE.cleanup_on_save){var _bf=tinyMCE.getCSSClasses();nonDefinedCSS=true;for(var c=0;c<_bf.length;c++){if(_bf[c]==_be){nonDefinedCSS=false;break;}}if(nonDefinedCSS&&_be.indexOf("mce_")!=0){_bc.removeAttribute("className");_bc.removeAttribute("class");return false;}}return true;};TinyMCE.prototype.cleanupNode=function(_c1){var _c2="";switch(_c1.nodeType){case 1:var _c3=tinyMCE._cleanupElementName(_c1.nodeName,_c1);var _c4=_c3?_c3.element_name:null;var _c5=_c3?_c3.valid_attribs:null;var _c6="";var _c7=false;if(_c4!=null&&_c4.charAt(0)=="+"){_c4=_c4.substring(1);_c7=true;}if(tinyMCE.isMSIE&&tinyMCE.settings["fix_content_duplication"]){var _c8=tinyMCE.cleanup_elementLookupTable;for(var i=0;i<_c8.length;i++){if(_c8[i]==_c1){return _c2;}}_c8[_c8.length]=_c1;}if(!_c4){if(_c1.hasChildNodes()){for(var i=0;i<_c1.childNodes.length;i++){_c2+=this.cleanupNode(_c1.childNodes[i]);}}return _c2;}if(_c1.style&&(_c1.style.cssText.indexOf("mso-")!=-1&&tinyMCE.settings["auto_cleanup_word"])||_c1.style.cssText==""){_c1.style.cssText="";_c1.removeAttribute("style");}if(tinyMCE.cleanup_inline_styles){tinyMCE._fixInlineStyles(_c1);}if(_c5){for(var a=1;a<_c5.length;a++){var _cc,attribDefaultValue,attribForceValue,attribValue;_cc=_c5[a][0];attribDefaultValue=_c5[a][1];attribForceValue=_c5[a][2];if(attribDefaultValue!=null||attribForceValue!=null){var _cd=_c1.getAttribute(_cc);if(_c1.getAttribute(_cc)==null||_c1.getAttribute(_cc)==""){_cd=attribDefaultValue;}_cd=attribForceValue?attribForceValue:_cd;if(_cd=="{$uid}"){_cd="uid_"+(tinyMCE.cleanup_idCount++);}if(_cc=="class"){_cd=tinyMCE.getVisualAidClass(_cd,tinyMCE.cleanup_on_save);}_c1.setAttribute(_cc,_cd);}}}if(_c4=="span"&&tinyMCE.cleanup_trim_span_elements){var re=new RegExp("^[ \t]+","g");var _cf=true;for(var a=0;a<_c1.childNodes.length;a++){var _d1=_c1.childNodes[a];if((_d1.nodeType==3&&!_d1.nodeValue.match(re))||_d1.nodeName.toLowerCase()!="span"){_cf=false;break;}}tinyMCE._verifyClass(_c1);var _d2=0;for(var i=0;i<_c1.attributes.length;i++){if(_c1.attributes[i].specified){_d2++;}}if(_cf||_d2==0){if(_c1.hasChildNodes()){for(var i=0;i<_c1.childNodes.length;i++){_c2+=this.cleanupNode(_c1.childNodes[i]);}}return _c2;}}if(_c4=="table"&&!_c1.hasChildNodes()){return "";}if(tinyMCE.isGecko&&_c4=="img"){var w=_c1.style.width;if(w!=null&&w!=""){_c1.setAttribute("width",w);}var h=_c1.style.height;if(h!=null&&h!=""){_c1.setAttribute("height",h);}}if(_c1.attributes.length>0){for(var i=0;i<_c1.attributes.length;i++){if(_c1.attributes[i].specified){var _d8=tinyMCE._cleanupAttribute(_c5,_c4,_c1.attributes[i],_c1);if(_d8){_c6+=" "+_d8.name+"="+"\""+_d8.value+"\"";}}}}if(tinyMCE.isMSIE&&_c4=="input"){if(_c1.type){if(!_c6.match(/type=/g)){_c6+=" type="+"\""+_c1.type+"\"";}}if(_c1.value){if(!_c6.match(/value=/g)){_c6+=" value="+"\""+_c1.value+"\"";}}}if((_c4=="p"||_c4=="td")&&(_c1.innerHTML==""||_c1.innerHTML==" ")){return "<"+_c4+_c6+">"+this.convertStringToXML(String.fromCharCode(160))+"</"+_c4+">";}if(tinyMCE.isMSIE&&_c4=="script"){return "<"+_c4+_c6+">"+_c1.text+"</"+_c4+">";}if(_c1.hasChildNodes()){if(_c4=="p"&&tinyMCE.cleanup_force_br_newlines){_c2+="<div"+_c6+">";}else{_c2+="<"+_c4+_c6+">";}for(var i=0;i<_c1.childNodes.length;i++){_c2+=this.cleanupNode(_c1.childNodes[i]);}if(_c4=="p"&&tinyMCE.cleanup_force_br_newlines){_c2+="</div><br />";}else{_c2+="</"+_c4+">";}}else{if(_c7){_c2+="<"+_c4+_c6+"></"+_c4+">";}else{_c2+="<"+_c4+_c6+" />";}}return _c2;case 3:if(_c1.parentNode.nodeName.toLowerCase()=="script"){return _c1.nodeValue;}return this.convertStringToXML(_c1.nodeValue);case 8:return "<!--"+_c1.nodeValue+"-->";default:return "[UNKNOWN NODETYPE "+_c1.nodeType+"]";}};TinyMCE.prototype.convertStringToXML=function(_da){var _db="";for(var i=0;i<_da.length;i++){var chr=_da.charCodeAt(i);if(tinyMCE.settings["entity_encoding"]=="numeric"){if(chr>127){_db+="&#"+chr+";";}else{_db+=String.fromCharCode(chr);}continue;}if(tinyMCE.settings["entity_encoding"]=="raw"){_db+=String.fromCharCode(chr);continue;}if(typeof (tinyMCE.cleanup_entities["c"+chr])!="undefined"&&tinyMCE.cleanup_entities["c"+chr]!=""){_db+="&"+tinyMCE.cleanup_entities["c"+chr]+";";}else{_db+=""+String.fromCharCode(chr);}}return _db;};TinyMCE.prototype._getCleanupElementName=function(_de){var pos;if(_de.charAt(0)=="+"){_de=_de.substring(1);}if((pos=_de.indexOf("/"))!=-1){_de=_de.substring(0,pos);}if((pos=_de.indexOf("["))!=-1){_de=_de.substring(0,pos);}return _de;};TinyMCE.prototype._initCleanup=function(){var _e0=tinyMCE.settings["valid_elements"];_e0=_e0.split(",");var _e1=tinyMCE.settings["extended_valid_elements"];_e1=_e1.split(",");for(var i=0;i<_e1.length;i++){var _e3=this._getCleanupElementName(_e1[i]);var _e4=false;for(var x=0;x<_e0.length;x++){if(this._getCleanupElementName(_e0[x])==_e3){_e0[x]=_e1[i];_e4=true;break;}}if(!_e4){_e0[_e0.length]=_e1[i];}}for(var i=0;i<_e0.length;i++){var _e7=_e0[i];_e7=_e7.replace("[","|");_e7=_e7.replace("]","");var _e8=_e7.split("|");for(var x=0;x<_e8.length;x++){_e8[x]=_e8[x].toLowerCase();}_e8[0]=_e8[0].split("/");for(var x=1;x<_e8.length;x++){var _eb=_e8[x];var _ec=null;var _ed=null;var _ee=null;if((pos=_eb.indexOf("="))!=-1){_ec=_eb.substring(pos+1);_eb=_eb.substring(0,pos);}if((pos=_eb.indexOf(":"))!=-1){_ed=_eb.substring(pos+1);_eb=_eb.substring(0,pos);}if((pos=_eb.indexOf("<"))!=-1){_ee=_eb.substring(pos+1).split("?");_eb=_eb.substring(0,pos);}_e8[x]=new Array(_eb,_ec,_ed,_ee);}_e0[i]=_e8;}var _ef=tinyMCE.settings["invalid_elements"].split(",");for(var i=0;i<_ef.length;i++){_ef[i]=_ef[i].toLowerCase();}tinyMCE.settings["cleanup_validElements"]=_e0;tinyMCE.settings["cleanup_invalidElements"]=_ef;tinyMCE.settings["cleanup_entities"]=new Array();var _f1=tinyMCE.getParam("entities","",true,",");for(var i=0;i<_f1.length;i+=2){tinyMCE.settings["cleanup_entities"]["c"+_f1[i]]=_f1[i+1];}};TinyMCE.prototype._cleanupHTML=function(doc,_f4,_f5,_f6,_f7){if(!tinyMCE.settings["cleanup"]){return _f5.innerHTML;}tinyMCE._customCleanup(_f7?"get_from_editor_dom":"insert_to_editor_dom",doc.body);tinyMCE.cleanup_validElements=tinyMCE.settings["cleanup_validElements"];tinyMCE.cleanup_entities=tinyMCE.settings["cleanup_entities"];tinyMCE.cleanup_invalidElements=tinyMCE.settings["cleanup_invalidElements"];tinyMCE.cleanup_verify_html=tinyMCE.settings["verify_html"];tinyMCE.cleanup_force_br_newlines=tinyMCE.settings["force_br_newlines"];tinyMCE.cleanup_urlconverter_callback=tinyMCE.settings["urlconverter_callback"];tinyMCE.cleanup_verify_css_classes=tinyMCE.settings["verify_css_classes"];tinyMCE.cleanup_visual_table_class=tinyMCE.settings["visual_table_class"];tinyMCE.cleanup_apply_source_formatting=tinyMCE.settings["apply_source_formatting"];tinyMCE.cleanup_trim_span_elements=tinyMCE.settings["trim_span_elements"];tinyMCE.cleanup_inline_styles=tinyMCE.settings["inline_styles"];tinyMCE.cleanup_visual_aid=_f6;tinyMCE.cleanup_on_save=_f7;tinyMCE.cleanup_idCount=0;tinyMCE.cleanup_elementLookupTable=new Array();var _f8=new Date().getTime();tinyMCE._convertOnClick(_f5);if(tinyMCE.isMSIE){_f5.innerHTML=tinyMCE.regexpReplace(_f5.innerHTML,"<p>[ \n\r]*<hr id=null>[ \n\r]*</p>","<hr />","gi");_f5.innerHTML=tinyMCE.regexpReplace(_f5.innerHTML,"<!([^-(DOCTYPE)]* )|<!/[^-]*>","","gi");}var _f9=this.cleanupNode(_f5);if(tinyMCE.settings["debug"]){alert("Cleanup process executed in: "+(new Date().getTime()-_f8)+" ms.");}_f9=tinyMCE.regexpReplace(_f9,"<p><hr /></p>","<hr />");_f9=tinyMCE.regexpReplace(_f9,"<p> </p><hr /><p> </p>","<hr />");if(!tinyMCE.isMSIE){_f9=_f9.replace(new RegExp("<o:p _moz-userdefined=\"\" />","g"),"");}if(tinyMCE.settings["apply_source_formatting"]){_f9=_f9.replace(new RegExp("<(p|div)([^>]*)>","g"),"\n<$1$2>\n");_f9=_f9.replace(new RegExp("</(p|div)([^>]*)>","g"),"\n</$1$2>\n");_f9=_f9.replace(new RegExp("<br />","g"),"<br />\n");}if(tinyMCE.settings["force_br_newlines"]){var re=new RegExp("<p> </p>","g");_f9=_f9.replace(re,"<br />");}if(tinyMCE.settings["force_p_newlines"]){var re=new RegExp("<>","g");_f9=_f9.replace(re,"");}if(tinyMCE.settings["remove_linebreaks"]){_f9=_f9.replace(new RegExp("\r|\n","g")," ");}_f9=tinyMCE._customCleanup(_f7?"get_from_editor":"insert_to_editor",_f9);var chk=tinyMCE.regexpReplace(_f9,"[ \t\r\n]","").toLowerCase();if(chk=="<br/>"||chk=="<br>"||chk=="<p> </p>"||chk=="<p> </p>"||chk=="<p></p>"){_f9="";}if(tinyMCE.settings["preformatted"]){return "<pre>"+_f9+"</pre>";}return _f9;};TinyMCE.prototype.setAttrib=function(_fd,_fe,_ff,_100){if(!_100&&_ff!=null){var re=new RegExp("[^0-9%]","g");_ff=_ff.replace(re,"");}if(_ff!=null&&_ff!=""){_fd.setAttribute(_fe,_ff);}else{_fd.removeAttribute(_fe);}if(_ff!=null&&_ff!=""){_fd.setAttribute(_fe,_ff);}else{_fd.removeAttribute(_fe);}};TinyMCE.prototype.insertLink=function(href,_103,_104,_105,_106){this.execCommand("mceAddUndoLevel");if(this.selectedInstance&&this.selectedElement&&this.selectedElement.nodeName.toLowerCase()=="img"){var doc=this.selectedInstance.getDoc();var _108=tinyMCE.getParentElement(this.selectedElement,"a");var _109=false;if(!_108){_108=doc.createElement("a");_109=true;}href=eval(tinyMCE.settings["urlconverter_callback"]+"(href, linkElement);");tinyMCE.setAttrib(_108,"href",href);tinyMCE.setAttrib(_108,"target",_103);tinyMCE.setAttrib(_108,"title",_104);tinyMCE.setAttrib(_108,"mce_onclick",_105);tinyMCE.setAttrib(_108,"class",_106);if(_109){_108.appendChild(this.selectedElement.cloneNode(true));this.selectedElement.parentNode.replaceChild(_108,this.selectedElement);}return;}if(!this.linkElement&&this.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,"<a href=\"#mce_temp_url#\">"+this.selectedInstance.getSelectedHTML()+"</a>");}else{this.selectedInstance.contentDocument.execCommand("createlink",false,"#mce_temp_url#");}tinyMCE.linkElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");var _10a=this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");for(var i=0;i<_10a.length;i++){href=eval(tinyMCE.settings["urlconverter_callback"]+"(href, elementArray[i]);");tinyMCE.setAttrib(_10a[i],"href",href);tinyMCE.setAttrib(_10a[i],"mce_real_href",href);tinyMCE.setAttrib(_10a[i],"target",_103);tinyMCE.setAttrib(_10a[i],"title",_104);tinyMCE.setAttrib(_10a[i],"mce_onclick",_105);tinyMCE.setAttrib(_10a[i],"class",_106);}tinyMCE.linkElement=_10a[0];}if(this.linkElement){href=eval(tinyMCE.settings["urlconverter_callback"]+"(href, this.linkElement);");tinyMCE.setAttrib(this.linkElement,"href",href);tinyMCE.setAttrib(this.linkElement,"mce_real_href",href);tinyMCE.setAttrib(this.linkElement,"target",_103);tinyMCE.setAttrib(this.linkElement,"title",_104);tinyMCE.setAttrib(this.linkElement,"mce_onclick",_105);tinyMCE.setAttrib(this.linkElement,"class",_106);}};TinyMCE.prototype.insertImage=function(src,alt,_10e,_10f,_110,_111,_112,_113,_114,_115,_116){if(src==""){return;}this.execCommand("mceAddUndoLevel");if(!this.imgElement&&tinyMCE.isSafari){var html="";html+="<img src=\""+src+"\" alt=\""+alt+"\"";html+=" border=\""+_10e+"\" hspace=\""+_10f+"\"";html+=" vspace=\""+_110+"\" width=\""+_111+"\"";html+=" height=\""+_112+"\" align=\""+_113+"\" title=\""+_114+"\" onmouseover=\""+_115+"\" onmouseout=\""+_116+"\" />";tinyMCE.execCommand("mceInsertContent",false,html);}else{if(!this.imgElement&&this.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,"<img src=\"#mce_temp_url#\" />");}else{this.selectedInstance.contentDocument.execCommand("insertimage",false,"#mce_temp_url#");}tinyMCE.imgElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"img","src","#mce_temp_url#");}}if(this.imgElement){var _118=false;src=eval(tinyMCE.settings["urlconverter_callback"]+"(src, tinyMCE.imgElement);");if(_115&&_115!=""){_115="this.src='"+eval(tinyMCE.settings["urlconverter_callback"]+"(onmouseover, tinyMCE.imgElement);")+"';";}if(_116&&_116!=""){_116="this.src='"+eval(tinyMCE.settings["urlconverter_callback"]+"(onmouseout, tinyMCE.imgElement);")+"';";}if(typeof (_114)=="undefined"){_114=alt;}if(_111!=this.imgElement.getAttribute("width")||_112!=this.imgElement.getAttribute("height")||_113!=this.imgElement.getAttribute("align")){_118=true;}tinyMCE.setAttrib(this.imgElement,"src",src);tinyMCE.setAttrib(this.imgElement,"mce_real_src",src);tinyMCE.setAttrib(this.imgElement,"alt",alt);tinyMCE.setAttrib(this.imgElement,"title",_114);tinyMCE.setAttrib(this.imgElement,"align",_113);tinyMCE.setAttrib(this.imgElement,"border",_10e,true);tinyMCE.setAttrib(this.imgElement,"hspace",_10f,true);tinyMCE.setAttrib(this.imgElement,"vspace",_110,true);tinyMCE.setAttrib(this.imgElement,"width",_111,true);tinyMCE.setAttrib(this.imgElement,"height",_112,true);tinyMCE.setAttrib(this.imgElement,"onmouseover",_115);tinyMCE.setAttrib(this.imgElement,"onmouseout",_116);if(_111&&_111!=""){this.imgElement.style.pixelWidth=_111;}if(_112&&_112!=""){this.imgElement.style.pixelHeight=_112;}if(_118){tinyMCE.selectedInstance.repaint();}}};TinyMCE.prototype.getElementByAttributeValue=function(node,_11a,_11b,_11c){var _11d=this.getElementsByAttributeValue(node,_11a,_11b,_11c);if(_11d.length==0){return null;}return _11d[0];};TinyMCE.prototype.getElementsByAttributeValue=function(node,_11f,_120,_121){var _122=new Array();if(node&&node.nodeName.toLowerCase()==_11f){if(node.getAttribute(_120)&&node.getAttribute(_120).indexOf(_121)!=-1){_122[_122.length]=node;}}if(node.hasChildNodes){for(var x=0,n=node.childNodes.length;x<n;x++){var _124=this.getElementsByAttributeValue(node.childNodes[x],_11f,_120,_121);for(var i=0,m=_124.length;i<m;i++){_122[_122.length]=_124[i];}}}return _122;};TinyMCE.prototype.isBlockElement=function(node){return node!=null&&node.nodeType==1&&this.blockRegExp.test(node.nodeName);};TinyMCE.prototype.getParentBlockElement=function(node){while(node){if(this.blockRegExp.test(node.nodeName)){return node;}node=node.parentNode;}return null;};TinyMCE.prototype.getNodeTree=function(node,_129,type,_12b){if(typeof (type)=="undefined"||node.nodeType==type&&(typeof (_12b)=="undefined"||node.nodeName.toLowerCase()==_12b.toLowerCase())){_129[_129.length]=node;}if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++){tinyMCE.getNodeTree(node.childNodes[i],_129,type,_12b);}}return _129;};TinyMCE.prototype.getParentElement=function(node,_12e,_12f,_130){if(typeof (_12e)=="undefined"){if(node.nodeType==1){return node;}while((node=node.parentNode)!=null&&node.nodeType!=1){}return node;}var _131=_12e.split(",");if(node==null){return null;}do{for(var i=0;i<_131.length;i++){if(node.nodeName.toLowerCase()==_131[i].toLowerCase()||_12e=="*"){if(typeof (_12f)=="undefined"){return node;}else{if(node.getAttribute(_12f)){if(typeof (_130)=="undefined"){if(node.getAttribute(_12f)!=""){return node;}}else{if(node.getAttribute(_12f)==_130){return node;}}}}}}}while(node=node.parentNode);return null;};TinyMCE.prototype.convertURL=function(url,node,_135){var prot=document.location.protocol;var host=document.location.hostname;var port=document.location.port;var _139=(prot=="file:");url=tinyMCE.regexpReplace(url,"(http|https):///","/");if(url.indexOf("mailto:")!=-1||url.indexOf("javascript:")!=-1||tinyMCE.regexpReplace(url,"[ \t\r\n+]|%20","").charAt(0)=="#"){return url;}if(!tinyMCE.isMSIE&&!_135&&url.indexOf("://")==-1&&url.charAt(0)!="/"){return tinyMCE.settings["base_href"]+url;}if(!tinyMCE.settings["relative_urls"]){var _13a=tinyMCE.parseURL(url);var _13b=tinyMCE.parseURL(tinyMCE.settings["base_href"]);if(_13a["anchor"]&&_13a["path"]==_13b["path"]){return "#"+_13a["anchor"];}}if(_135&&tinyMCE.settings["relative_urls"]){var _13c=tinyMCE.parseURL(url);var _13d=tinyMCE.parseURL(tinyMCE.settings["document_base_url"]);if(_13c["host"]==_13d["host"]&&(!_13c["port"]||_13c["port"]==_13d["port"])){return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings["document_base_url"],url);}}if(!_139&&tinyMCE.settings["remove_script_host"]){var _13e="",portPart="";if(port!=""){portPart=":"+port;}_13e=prot+"//"+host+portPart+"/";if(url.indexOf(_13e)==0){url=url.substring(_13e.length-1);}if(!tinyMCE.settings["relative_urls"]&&url.indexOf("://")==-1&&url.charAt(0)!="/"){url="/"+url;}}return url;};TinyMCE.prototype.parseURL=function(_13f){var _140=new Array();if(_13f){var pos,lastPos;pos=_13f.indexOf("://");if(pos!=-1){_140["protocol"]=_13f.substring(0,pos);lastPos=pos+3;}for(var i=lastPos;i<_13f.length;i++){var chr=_13f.charAt(i);if(chr==":"){break;}if(chr=="/"){break;}}pos=i;_140["host"]=_13f.substring(lastPos,pos);lastPos=pos;if(_13f.charAt(pos)==":"){pos=_13f.indexOf("/",lastPos);_140["port"]=_13f.substring(lastPos+1,pos);}lastPos=pos;pos=_13f.indexOf("?",lastPos);if(pos==-1){pos=_13f.indexOf("#",lastPos);}if(pos==-1){pos=_13f.length;}_140["path"]=_13f.substring(lastPos,pos);lastPos=pos;if(_13f.charAt(pos)=="?"){pos=_13f.indexOf("#");pos=(pos==-1)?_13f.length:pos;_140["query"]=_13f.substring(lastPos+1,pos);}lastPos=pos;if(_13f.charAt(pos)=="#"){pos=_13f.length;_140["anchor"]=_13f.substring(lastPos+1,pos);}}return _140;};TinyMCE.prototype.convertAbsoluteURLToRelativeURL=function(_144,_145){var _146;var _147;var _148=0;var _149="";_144=_144.substring(0,_144.lastIndexOf("/"));_146=_144.split("/");_147=_145.split("/");if(_146.length>=_147.length){for(var i=0;i<_146.length;i++){if(i>=_147.length||_146[i]!=_147[i]){_148=i+1;break;}}}if(_146.length<_147.length){for(var i=0;i<_147.length;i++){if(i>=_146.length||_146[i]!=_147[i]){_148=i+1;break;}}}if(_148==1){return _145;}for(var i=0;i<(_146.length-(_148-1));i++){_149+="../";}for(var i=_148-1;i<_147.length;i++){if(i!=(_148-1)){_149+="/"+_147[i];}else{_149+=_147[i];}}return _149;};TinyMCE.prototype.convertRelativeToAbsoluteURL=function(_14e,_14f){var _150=TinyMCE.prototype.parseURL(_14e);var _151=TinyMCE.prototype.parseURL(_14f);if(_14f==""||_14f.charAt(0)=="/"||_14f.indexOf("://")!=-1||_14f.indexOf("mailto:")!=-1||_14f.indexOf("javascript:")!=-1||tinyMCE.regexpReplace(_14f,"[ \t\r\n+]|%20","").charAt(0)=="#"){return _14f;}baseURLParts=_150["path"].split("/");relURLParts=_151["path"].split("/");var _152=new Array();for(var i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0){continue;}_152[_152.length]=baseURLParts[i];}baseURLParts=_152.reverse();var _154=new Array();var _155=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]=="."){continue;}if(relURLParts[i]==".."){_155++;continue;}if(_155>0){_155--;continue;}_154[_154.length]=relURLParts[i];}relURLParts=_154.reverse();var len=baseURLParts.length-_155;var _158=(len<=0?"":"/")+baseURLParts.slice(0,len).join("/")+"/"+relURLParts.join("/");var _159="",end="";if(_150["protocol"]){_159+=_150["protocol"]+"://";}if(_150["host"]){_159+=_150["host"];}if(_150["port"]){_159+=":"+_150["port"];}if(_151["query"]){end+="?"+_151["query"];}if(_151["anchor"]){end+="#"+_151["anchor"];}if(_14f.charAt(_14f.length-1)=="/"){end+="/";}return _159+_158+end;};TinyMCE.prototype.getParam=function(name,_15b,_15c,_15d){var _15e=(typeof (this.settings[name])=="undefined")?_15b:this.settings[name];if(_15e=="true"||_15e=="false"){return (_15e=="true");}if(_15c){_15e=tinyMCE.regexpReplace(_15e,"[ \t\r\n]","");}if(typeof (_15d)!="undefined"&&_15d!=null){_15e=_15e.split(_15d);var _15f=new Array();for(var i=0;i<_15e.length;i++){if(_15e[i]&&_15e[i]!=""){_15f[_15f.length]=_15e[i];}}_15e=_15f;}return _15e;};TinyMCE.prototype.getLang=function(name,_162,_163){var _164=(typeof (tinyMCELang[name])=="undefined")?_162:tinyMCELang[name];if(_163){var el=document.createElement("div");el.innerHTML=_164;_164=el.innerHTML;}return _164;};TinyMCE.prototype.replaceVar=function(_166,_167,_168){var re=new RegExp("{\\$"+_167+"}","g");return _166.replace(re,_168);};TinyMCE.prototype.replaceVars=function(_16a,_16b){for(var key in _16b){var _16d=_16b[key];_16a=tinyMCE.replaceVar(_16a,key,_16d);}return _16a;};TinyMCE.prototype.triggerNodeChange=function(_16e,_16f){if(tinyMCE.settings["handleNodeChangeCallback"]){if(tinyMCE.selectedInstance){var inst=tinyMCE.selectedInstance;var _171=inst.editorId;var elm=(typeof (_16f)!="undefined"&&_16f)?tinyMCE.selectedElement:inst.getFocusElement();var _173=-1;var _174=-1;var _175=false;var _176=inst.getSelectedText();if(tinyMCE.settings["auto_resize"]){var doc=inst.getDoc();inst.iframeElement.style.width=doc.body.offsetWidth+"px";inst.iframeElement.style.height=doc.body.offsetHeight+"px";}if(tinyMCE.selectedElement){_175=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(_176&&_176.length>0);}if(tinyMCE.settings["custom_undo_redo"]){_173=inst.undoIndex;_174=inst.undoLevels.length;}tinyMCE.executeCallback("handleNodeChangeCallback","_handleNodeChange",0,_171,elm,_173,_174,inst.visualAid,_175);}}if(this.selectedInstance&&(typeof (_16e)=="undefined"||_16e)){this.selectedInstance.contentWindow.focus();}};TinyMCE.prototype._customCleanup=function(type,_179){var _17a=tinyMCE.settings["cleanup_callback"];if(_17a!=""&&eval("typeof("+_17a+")")!="undefined"){_179=eval(_17a+"(type, content);");}var _17b=tinyMCE.getParam("plugins","",true,",");for(var i=0;i<_17b.length;i++){if(eval("typeof(TinyMCE_"+_17b[i]+"_cleanup)")!="undefined"){_179=eval("TinyMCE_"+_17b[i]+"_cleanup(type, content);");}}return _179;};TinyMCE.prototype.getContent=function(_17d){if(typeof (_17d)!="undefined"){tinyMCE.selectedInstance=tinyMCE.getInstanceById(_17d);}if(tinyMCE.selectedInstance){return tinyMCE._cleanupHTML(this.selectedInstance.getDoc(),tinyMCE.settings,this.selectedInstance.getBody(),false,true);}return null;};TinyMCE.prototype.setContent=function(_17e){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand("mceSetContent",false,_17e);}};TinyMCE.prototype.importThemeLanguagePack=function(name){if(typeof (name)=="undefined"){name=tinyMCE.settings["theme"];}tinyMCE.loadScript(tinyMCE.baseURL+"/themes/"+name+"/langs/"+tinyMCE.settings["language"]+".js");};TinyMCE.prototype.importPluginLanguagePack=function(name,_181){var lang="en";_181=_181.split(",");for(var i=0;i<_181.length;i++){if(tinyMCE.settings["language"]==_181[i]){lang=tinyMCE.settings["language"];}}tinyMCE.loadScript(tinyMCE.baseURL+"/plugins/"+name+"/langs/"+lang+".js");};TinyMCE.prototype.applyTemplate=function(html,args){html=tinyMCE.replaceVar(html,"themeurl",tinyMCE.themeURL);if(typeof (args)!="undefined"){html=tinyMCE.replaceVars(html,args);}html=tinyMCE.replaceVars(html,tinyMCE.settings);html=tinyMCE.replaceVars(html,tinyMCELang);return html;};TinyMCE.prototype.openWindow=function(_186,args){var html,width,height,x,y,resizable,scrollbars,url;args["mce_template_file"]=_186["file"];tinyMCE.windowArgs=args;html=_186["html"];if(!(width=_186["width"])){width=320;}if(!(height=_186["height"])){height=200;}if(tinyMCE.isMSIE){height+=30;}x=parseInt(screen.width/2)-(width/2);y=parseInt(screen.height/2)-(height/2);resizable=(args&&args["resizable"])?args["resizable"]:"no";scrollbars=(args&&args["scrollbars"])?args["scrollbars"]:"no";if(_186["file"].charAt(0)!="/"&&_186["file"].indexOf("://")==-1){url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+_186["file"];}else{url=_186["file"];}for(var name in args){url=tinyMCE.replaceVar(url,name,escape(args[name]));}if(html){html=tinyMCE.replaceVar(html,"css",this.settings["popups_css"]);html=tinyMCE.applyTemplate(html,args);var win=window.open("","mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang["lang_popup_blocked"]);return;}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus();}else{if(tinyMCE.isMSIE&&resizable!="yes"&&tinyMCE.settings["dialog_type"]=="modal"){var _18b="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,_18b);}else{if(tinyMCE.settings["dialog_type"]=="window"||tinyMCE.settings["dialog_type"]=="modal"){var _18c=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac){_18c="no";}var win=window.open(url,"mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+_18c+",minimizable="+resizable+",modal="+_18c+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang["lang_popup_blocked"]);return;}eval("try { win.resizeTo(width, height); } catch(e) { }");win.focus();}else{var div=document.createElement("div");var id="mceDialog"+(tinyMCE.dialogCounter++);height+=30;div.id=id;div.className="mceDialog";div.style.width=width+"px";div.style.height=height+"px";var html="<div class=\"mceDialogHeader\"><div class=\"mceDialogTitle\"></div><div class=\"mceDialogClose\"><a href=\"javascript:tinyMCE.closeDialog();\"></a></div></div>";html+="<div id=\""+id+"IFrameWrapper\" class=\"mceDialogIFrameWrapper\"><iframe border=\"0\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" hspace=\"0\" vspace=\"0\" src=\""+url+"\" width=\""+width+"\" height=\""+height+"\"></iframe></div>";div.innerHTML=html;document.body.appendChild(div);tinyMCE._currentDialog=id;}}}};TinyMCE.prototype.closeDialog=function(){if(tinyMCE.settings["dialog_type"]=="div"){var div=document.getElementById(tinyMCE._currentDialog);if(div){div.parentNode.removeChild(div);}}else{window.close();}};TinyMCE.prototype.getVisualAidClass=function(_192,_193){var _194=tinyMCE.settings["visual_table_class"];if(typeof (_193)=="undefined"){_193=tinyMCE.settings["visual"];}var _195=new Array();var ar=_192.split(" ");for(var i=0;i<ar.length;i++){if(ar[i]==_194){ar[i]="";}if(ar[i]!=""){_195[_195.length]=ar[i];}}if(_193){_195[_195.length]=_194;}var _198="";for(var i=0;i<_195.length;i++){if(i>0){_198+=" ";}_198+=_195[i];}return _198;};TinyMCE.prototype.handleVisualAid=function(_19a,deep,_19c){if(!_19a){return;}var _19d=null;switch(_19a.nodeName.toLowerCase()){case "table":var oldW=_19a.style.width;var oldH=_19a.style.height;_19a.className=tinyMCE.getVisualAidClass(_19a.className,_19c&&_19a.getAttribute("border")==0);_19a.style.width=oldW;_19a.style.height=oldH;for(var y=0;y<_19a.rows.length;y++){for(var x=0;x<_19a.rows[y].cells.length;x++){var _1a2=tinyMCE.getVisualAidClass(_19a.rows[y].cells[x].className,_19c&&_19a.getAttribute("border")==0);_19a.rows[y].cells[x].className=_1a2;}}break;}if(deep&&_19a.hasChildNodes()){for(var i=0;i<_19a.childNodes.length;i++){tinyMCE.handleVisualAid(_19a.childNodes[i],deep,_19c);}}};TinyMCE.prototype.getAttrib=function(elm,name,_1a6){var v=elm.getAttribute(name);if(name=="class"&&!v){v=elm.className;}if(typeof (_1a6)=="undefined"){_1a6="";}return (v&&v!="")?v:_1a6;};TinyMCE.prototype.setAttrib=function(_1a8,name,_1aa,_1ab){if(typeof (_1aa)=="number"){_1aa=""+_1aa;}if(_1ab){if(_1aa==null){_1aa="";}var re=new RegExp("[^0-9%]","g");_1aa=_1aa.replace(re,"");}if(name=="class"){_1a8.className=_1aa;}if(_1aa!=null&&_1aa!=""&&_1aa!=-1){_1a8.setAttribute(name,_1aa);}else{_1a8.removeAttribute(name);}};TinyMCE.prototype._setHTML=function(doc,_1ae){if(tinyMCE.isMSIE){var re=new RegExp("<p><hr /></p>","g");_1ae=_1ae.replace(re,"<hr>");}try{doc.body.innerHTML=_1ae;}catch(e){if(this.isMSIE){doc.body.createTextRange().pasteHTML(_1ae);}}if(tinyMCE.isMSIE&&tinyMCE.settings["fix_content_duplication"]){var _1b0=doc.getElementsByTagName("P");for(var i=0;i<_1b0.length;i++){var node=_1b0[i];while((node=node.parentNode)!=null){if(node.nodeName.toLowerCase()=="p"){node.outerHTML=node.innerHTML;}}}var html=doc.body.innerHTML;if(html.indexOf("=\"mso")!=-1){for(var i=0;i<doc.body.all.length;i++){var el=doc.body.all[i];el.removeAttribute("className","",0);el.removeAttribute("style","",0);}html=doc.body.innerHTML;html=tinyMCE.regexpReplace(html,"<o:p></o:p>","<br />");html=tinyMCE.regexpReplace(html,"<o:p> </o:p>","");html=tinyMCE.regexpReplace(html,"<st1:.*?>","");html=tinyMCE.regexpReplace(html,"<p></p>","");html=tinyMCE.regexpReplace(html,"<p></p>\r\n<p></p>","");html=tinyMCE.regexpReplace(html,"<p> </p>","<br />");html=tinyMCE.regexpReplace(html,"<p>s*(<p>s*)?","<p>");html=tinyMCE.regexpReplace(html,"</p>s*(</p>s*)?","</p>");}doc.body.innerHTML=html;}};TinyMCE.prototype.getImageSrc=function(str){var pos=-1;if(!str){return "";}if((pos=str.indexOf("this.src="))!=-1){var src=str.substring(pos+10);src=src.substring(0,src.indexOf("'"));return src;}return "";};TinyMCE.prototype._getElementById=function(_1b9){var elm=document.getElementById(_1b9);if(!elm){for(var j=0;j<document.forms.length;j++){for(var k=0;k<document.forms[j].elements.length;k++){if(document.forms[j].elements[k].name==_1b9){elm=document.forms[j].elements[k];break;}}}}return elm;};TinyMCE.prototype.getEditorId=function(_1bd){var inst=this.getInstanceById(_1bd);if(!inst){return null;}return inst.editorId;};TinyMCE.prototype.getInstanceById=function(_1bf){var inst=this.instances[_1bf];if(!inst){for(var _1c1 in tinyMCE.instances){var _1c2=tinyMCE.instances[_1c1];if(_1c2.formTargetElementId==_1bf){inst=_1c2;break;}}}return inst;};TinyMCE.prototype.queryInstanceCommandValue=function(_1c3,_1c4){var inst=tinyMCE.getInstanceById(_1c3);if(inst){return inst.queryCommandValue(_1c4);}return false;};TinyMCE.prototype.queryInstanceCommandState=function(_1c6,_1c7){var inst=tinyMCE.getInstanceById(_1c6);if(inst){return inst.queryCommandState(_1c7);}return null;};TinyMCE.prototype.setWindowArg=function(name,_1ca){this.windowArgs[name]=_1ca;};TinyMCE.prototype.getWindowArg=function(name,_1cc){return (typeof (this.windowArgs[name])=="undefined")?_1cc:this.windowArgs[name];};TinyMCE.prototype.getCSSClasses=function(_1cd,doc){var _1cf=new Array();if(typeof (tinyMCE.cssClasses)!="undefined"){return tinyMCE.cssClasses;}if(typeof (_1cd)=="undefined"&&typeof (doc)=="undefined"){var _1d0;for(var _1d1 in tinyMCE.instances){_1d0=tinyMCE.instances[_1d1];break;}doc=_1d0.getDoc();}if(typeof (doc)=="undefined"){var _1d2=tinyMCE.getInstanceById(_1cd);doc=_1d2.getDoc();}if(doc){var _1d3=tinyMCE.isMSIE?doc.styleSheets:doc.styleSheets;if(_1d3&&_1d3.length>0){var _1d4=null;eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(0).rules : doc.styleSheets[0].cssRules;} catch(e) {}");if(!_1d4){return new Array();}for(var i=0;i<_1d4.length;i++){var _1d6=_1d4[i].selectorText;if(_1d6){var _1d7=_1d6.split(",");for(var c=0;c<_1d7.length;c++){if(_1d7[c].indexOf(" ")!=-1||_1d7[c].indexOf(":")!=-1||_1d7[c].indexOf("mce_")==1){continue;}if(_1d7[c]=="."+tinyMCE.settings["visual_table_class"]){continue;}if(_1d7[c].indexOf(".")!=-1){_1cf[_1cf.length]=_1d7[c].substring(_1d7[c].indexOf(".")+1);}}}}}}if(_1cf.length>0){tinyMCE.cssClasses=_1cf;}return _1cf;};TinyMCE.prototype.regexpReplace=function(_1d9,_1da,_1db,opts){if(typeof (opts)=="undefined"){opts="g";}var re=new RegExp(_1da,opts);return _1d9.replace(re,_1db);};TinyMCE.prototype.cleanupEventStr=function(str){str=""+str;str=str.replace("function anonymous()\n{\n","");str=str.replace("\n}","");return str;};TinyMCE.prototype.getAbsPosition=function(node){var pos=new Object();pos.absLeft=pos.absTop=0;var _1e1=node;while(_1e1){pos.absLeft+=_1e1.offsetLeft;pos.absTop+=_1e1.offsetTop;_1e1=_1e1.offsetParent;}return pos;};TinyMCE.prototype.openFileBrowser=function(_1e2,url,type,win){var cb=tinyMCE.getParam("file_browser_callback");this.setWindowArg("window",win);if(eval("typeof("+cb+")")=="undefined"){alert("Callback function: "+cb+" could not be found.");}else{eval(cb+"(field_name, url, type, win);");}};TinyMCE.prototype.getControlHTML=function(_1e7){var _1e8=tinyMCE.getParam("plugins","",true,",");var _1e9;for(var i=_1e8.length;i>=0;i--){_1e9="TinyMCE_"+_1e8[i]+"_getControlHTML";if(eval("typeof("+_1e9+")")!="undefined"){var html=eval(_1e9+"('"+_1e7+"');");if(html!=""){return tinyMCE.replaceVar(html,"pluginurl",tinyMCE.baseURL+"/plugins/"+_1e8[i]);}}}return eval("TinyMCE_"+tinyMCE.settings["theme"]+"_getControlHTML"+"('"+_1e7+"');");};TinyMCE.prototype._themeExecCommand=function(_1ec,_1ed,_1ee,_1ef,_1f0){var _1f1=tinyMCE.getParam("plugins","",true,",");var _1f2;for(var i=_1f1.length;i>=0;i--){_1f2="TinyMCE_"+_1f1[i]+"_execCommand";if(eval("typeof("+_1f2+")")!="undefined"){if(eval(_1f2+"(editor_id, element, command, user_interface, value);")){return true;}}}_1f2="TinyMCE_"+tinyMCE.settings["theme"]+"_execCommand";if(eval("typeof("+_1f2+")")!="undefined"){return eval(_1f2+"(editor_id, element, command, user_interface, value);");}return false;};TinyMCE.prototype._getThemeFunction=function(_1f4,_1f5){if(_1f5){return "TinyMCE_"+tinyMCE.settings["theme"]+_1f4;}var _1f6=tinyMCE.getParam("plugins","",true,",");var _1f7;for(var i=_1f6.length;i>=0;i--){_1f7="TinyMCE_"+_1f6[i]+_1f4;if(eval("typeof("+_1f7+")")!="undefined"){return _1f7;}}return "TinyMCE_"+tinyMCE.settings["theme"]+_1f4;};TinyMCE.prototype.isFunc=function(_1f9){if(_1f9==null||_1f9==""){return false;}return eval("typeof("+_1f9+")")!="undefined";};TinyMCE.prototype.exec=function(_1fa,args){var str=_1fa+"(";for(var i=3;i<args.length;i++){str+="args["+i+"]";if(i<args.length-1){str+=",";}}str+=");";return eval(str);};TinyMCE.prototype.executeCallback=function(_1fe,_1ff,mode){switch(mode){case 0:var _201=false;var _202=tinyMCE.getParam("plugins","",true,",");for(var i=0;i<_202.length;i++){var func="TinyMCE_"+_202[i]+_1ff;if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);_201=true;}}var func="TinyMCE_"+tinyMCE.settings["theme"]+_1ff;if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);_201=true;}var func=tinyMCE.getParam(_1fe,"");if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);_201=true;}return _201;case 1:var _207=tinyMCE.getParam("plugins","",true,",");for(var i=0;i<_207.length;i++){var func="TinyMCE_"+_207[i]+_1ff;if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments)){return true;}}}var func="TinyMCE_"+tinyMCE.settings["theme"]+_1ff;if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments)){return true;}}var func=tinyMCE.getParam(_1fe,"");if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments)){return true;}}return false;}};function TinyMCEControl(_20c){this.undoLevels=new Array();this.undoIndex=0;this.isDirty=false;this.settings=_20c;this.settings["theme"]=tinyMCE.getParam("theme","default");this.settings["width"]=tinyMCE.getParam("width",-1);this.settings["height"]=tinyMCE.getParam("height",-1);}TinyMCEControl.prototype.repaint=function(){if(tinyMCE.isMSIE){return;}this.getBody().style.display="none";this.getBody().style.display="block";};TinyMCEControl.prototype.switchSettings=function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings["index"]){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings["index"];}};TinyMCEControl.prototype.fixBrokenURLs=function(){var body=this.getBody();var elms=body.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=elms[i].getAttribute("mce_real_src");if(src&&src!=""){elms[i].setAttribute("src",src);}}var elms=body.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=elms[i].getAttribute("mce_real_href");if(href&&href!=""){elms[i].setAttribute("href",href);}}};TinyMCEControl.prototype.convertAllRelativeURLs=function(){var body=this.getBody();var elms=body.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=elms[i].getAttribute("src");if(src&&src!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings["base_href"],src);elms[i].setAttribute("src",src);elms[i].setAttribute("mce_real_src",src);}}var elms=body.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=elms[i].getAttribute("href");if(href&&href!=""){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings["base_href"],href);elms[i].setAttribute("href",href);elms[i].setAttribute("mce_real_href",href);}}};TinyMCEControl.prototype.getSelectedHTML=function(){if(tinyMCE.isSafari){return this.getRng().toString();}var elm=document.createElement("body");if(tinyMCE.isGecko){elm.appendChild(this.getRng().cloneContents());}else{elm.innerHTML=this.getRng().htmlText;}return tinyMCE._cleanupHTML(this.contentDocument,this.settings,elm,this.visualAid);};TinyMCEControl.prototype.getBookmark=function(){var rng=this.getRng();if(tinyMCE.isSafari){return rng;}if(tinyMCE.isMSIE){return rng.getBookmark();}if(tinyMCE.isGecko){return rng.cloneRange();}return null;};TinyMCEControl.prototype.moveToBookmark=function(_21d){if(tinyMCE.isSafari){var sel=this.getSel().realSelection;sel.setBaseAndExtent(_21d.startContainer,_21d.startOffset,_21d.endContainer,_21d.endOffset);return true;}if(tinyMCE.isMSIE){return this.getRng().moveToBookmark(_21d);}if(tinyMCE.isGecko){var rng=this.getDoc().createRange();var sel=this.getSel();rng.setStart(_21d.startContainer,_21d.startOffset);rng.setEnd(_21d.endContainer,_21d.endOffset);sel.removeAllRanges();sel.addRange(rng);return true;}return false;};TinyMCEControl.prototype.getSelectedText=function(){if(tinyMCE.isMSIE){var doc=this.getDoc();if(doc.selection.type=="Text"){var rng=doc.selection.createRange();selectedText=rng.text;}else{selectedText="";}}else{var sel=this.getSel();if(sel&&sel.toString){selectedText=sel.toString();}else{selectedText="";}}return selectedText;};TinyMCEControl.prototype.selectNode=function(node,_225,_226,_227){if(!node){return;}if(typeof (_225)=="undefined"){_225=true;}if(typeof (_226)=="undefined"){_226=false;}if(typeof (_227)=="undefined"){_227=true;}if(tinyMCE.isMSIE){var rng=this.getBody().createTextRange();try{rng.moveToElementText(node);if(_225){rng.collapse(_227);}rng.select();}catch(e){}}else{var sel=this.getSel();if(!sel){return;}if(tinyMCE.isSafari){sel.realSelection.setBaseAndExtent(node,0,node,node.innerText.length);if(_225){if(_227){sel.realSelection.collapseToStart();}else{sel.realSelection.collapseToEnd();}}this.scrollToNode(node);return;}var rng=this.getDoc().createRange();if(_226){var _22b=tinyMCE.getNodeTree(node,new Array(),3);if(_22b.length>0){rng.selectNodeContents(_22b[0]);}else{rng.selectNodeContents(node);}}else{rng.selectNode(node);}if(_225){if(!_227&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length);}else{rng.collapse(_227);}}sel.removeAllRanges();sel.addRange(rng);}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1){tinyMCE.selectedElement=node;}};TinyMCEControl.prototype.scrollToNode=function(node){var pos=tinyMCE.getAbsPosition(node);var doc=this.getDoc();var _22f=doc.body.scrollLeft+doc.documentElement.scrollLeft;var _230=doc.body.scrollTop+doc.documentElement.scrollTop;var _231=tinyMCE.isMSIE?document.getElementById(this.editorId).style.pixelHeight:this.targetElement.clientHeight;if(!tinyMCE.settings["auto_resize"]&&!(node.absTop>_230&&node.absTop<(_230-25+_231))){this.contentWindow.scrollTo(pos.absLeft,pos.absTop-_231+25);}};TinyMCEControl.prototype.getBody=function(){return this.getDoc().body;};TinyMCEControl.prototype.getDoc=function(){return this.contentWindow.document;};TinyMCEControl.prototype.getWin=function(){return this.contentWindow;};TinyMCEControl.prototype.getSel=function(){if(tinyMCE.isMSIE){return this.getDoc().selection;}var sel=this.contentWindow.getSelection();if(tinyMCE.isSafari&&!sel.getRangeAt){var _233=new Object();var doc=this.getDoc();function getRangeAt(idx){var rng=new Object();rng.startContainer=this.focusNode;rng.endContainer=this.anchorNode;rng.commonAncestorContainer=this.focusNode;rng.createContextualFragment=function(html){if(html.charAt(0)=="<"){var elm=doc.createElement("div");elm.innerHTML=html;return elm.firstChild;}return doc.createTextNode("UNSUPPORTED, DUE TO LIMITATIONS IN SAFARI!");};rng.deleteContents=function(){doc.execCommand("Delete",false,"");};return rng;}_233.focusNode=sel.baseNode;_233.focusOffset=sel.baseOffset;_233.anchorNode=sel.extentNode;_233.anchorOffset=sel.extentOffset;_233.getRangeAt=getRangeAt;_233.text=""+sel;_233.realSelection=sel;_233.toString=function(){return this.text;};return _233;}return sel;};TinyMCEControl.prototype.getRng=function(){var sel=this.getSel();if(sel==null){return null;}if(tinyMCE.isMSIE){return sel.createRange();}if(tinyMCE.isSafari){var rng=this.getDoc().createRange();var sel=this.getSel().realSelection;rng.setStart(sel.baseNode,sel.baseOffset);rng.setEnd(sel.extentNode,sel.extentOffset);return rng;}return this.getSel().getRangeAt(0);};TinyMCEControl.prototype._insertPara=function(e){function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp("[ \t\r\n]+","g"),"").toLowerCase()=="";}if(para.getElementsByTagName("img").length>0){return false;}if(para.getElementsByTagName("table").length>0){return false;}if(para.getElementsByTagName("hr").length>0){return false;}var _23f=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i<_23f.length;i++){if(!isEmptyHTML(_23f[i].nodeValue)){return false;}}return true;}var doc=this.getDoc();var sel=this.getSel();var win=this.contentWindow;var rng=sel.getRangeAt(0);var body=doc.body;var _246=doc.documentElement;var self=this;var _248="P";var _249=doc.createRange();_249.setStart(sel.anchorNode,sel.anchorOffset);_249.collapse(true);var _24a=doc.createRange();_24a.setStart(sel.focusNode,sel.focusOffset);_24a.collapse(true);var _24b=_249.compareBoundaryPoints(_249.START_TO_END,_24a)<0;var _24c=_24b?sel.anchorNode:sel.focusNode;var _24d=_24b?sel.anchorOffset:sel.focusOffset;var _24e=_24b?sel.focusNode:sel.anchorNode;var _24f=_24b?sel.focusOffset:sel.anchorOffset;var _250=tinyMCE.getParentBlockElement(_24c);var _251=tinyMCE.getParentBlockElement(_24e);if(_250!=null){_248=_250.nodeName.toUpperCase();if(_248=="TD"||_248=="TABLE"){_248="P";}}if((_250!=null&&_250.nodeName.toLowerCase()=="li")||(_251!=null&&_251.nodeName.toLowerCase()=="li")){return false;}if((_250!=null&&_250.nodeName.toLowerCase()=="table")||(_251!=null&&_251.nodeName.toLowerCase()=="table")){_250=_251=null;}var _252=(_250!=null&&_250.nodeName.toUpperCase()==_248)?_250.cloneNode(false):doc.createElement(_248);var _253=(_251!=null&&_251.nodeName.toUpperCase()==_248)?_251.cloneNode(false):doc.createElement(_248);var _254=_24c;var _255=_24e;node=_254;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node)){break;}_254=node;}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=_255;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node)){break;}_255=node;}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(_250==null){rng.deleteContents();sel.removeAllRanges();if(_254!=_246&&_255!=_246){_249=rng.cloneRange();if(_254==body){_249.setStart(_254,0);}else{_249.setStartBefore(_254);}_252.appendChild(_249.cloneContents());if(_255.parentNode.nodeName==_248){_255=_255.parentNode;}rng.setEndAfter(_255);var _256=rng.cloneContents();if(_256.firstChild&&(_256.firstChild.nodeName==_248||_256.firstChild.nodeName.toLowerCase()=="body")){var _257=_256.firstChild.childNodes;for(var i=0;i<_257.length;i++){if(_257[i].nodeName.toLowerCase()!="body"){_253.appendChild(_257[i]);}}}else{_253.appendChild(_256);}if(isEmpty(_252)){_252.innerHTML=" ";}if(isEmpty(_253)){_253.innerHTML=" ";}rng.deleteContents();_24a.deleteContents();_249.deleteContents();_253.normalize();_249.insertNode(_253);_252.normalize();_249.insertNode(_252);}else{body.innerHTML="<"+_248+"> </"+_248+"><"+_248+"> </"+_248+">";_253=body.childNodes[1];}this.selectNode(_253,true,true);return true;}if(_254.nodeName==_248){_249.setStart(_254,0);}else{_249.setStartBefore(_254);}_249.setEnd(_24c,_24d);_252.appendChild(_249.cloneContents());_24a.setEndAfter(_255);_24a.setStart(_24e,_24f);var _259=_24a.cloneContents();if(_259.firstChild&&_259.firstChild.nodeName==_248){var _25a=_259.firstChild.childNodes;for(var i=0;i<_25a.length;i++){if(_25a[i].nodeName.toLowerCase()!="body"){_253.appendChild(_25a[i]);}}}else{_253.appendChild(_259);}if(isEmpty(_252)){_252.innerHTML=" ";}if(isEmpty(_253)){_253.innerHTML=" ";}var rng=doc.createRange();if(!_254.previousSibling&&_254.parentNode.nodeName.toUpperCase()==_248){rng.setStartBefore(_254.parentNode);}else{if(_249.startContainer.nodeName.toUpperCase()==_248&&_249.startOffset==0){rng.setStartBefore(_249.startContainer);}else{rng.setStart(_249.startContainer,_249.startOffset);}}if(!_255.nextSibling&&_255.parentNode.nodeName.toUpperCase()==_248){rng.setEndAfter(_255.parentNode);}else{rng.setEnd(_24a.endContainer,_24a.endOffset);}rng.deleteContents();rng.insertNode(_253);rng.insertNode(_252);_253.normalize();_252.normalize();this.selectNode(_253,true,true);return true;};TinyMCEControl.prototype._handleBackSpace=function(_25d){var doc=this.getDoc();var sel=this.getSel();if(sel==null){return false;}var rng=sel.getRangeAt(0);var node=rng.startContainer;var elm=node.nodeType==3?node.parentNode:node;if(node==null){return;}if(elm&&elm.nodeName==""){var para=doc.createElement("p");while(elm.firstChild){para.appendChild(elm.firstChild);}elm.parentNode.insertBefore(para,elm);elm.parentNode.removeChild(elm);var rng=rng.cloneRange();rng.setStartBefore(node.nextSibling);rng.setEndAfter(node.nextSibling);rng.extractContents();this.selectNode(node.nextSibling,true,true);}var para=tinyMCE.getParentBlockElement(node);if(para!=null&¶.nodeName.toLowerCase()=="p"&&_25d=="keypress"){var htm=para.innerHTML;var _267=tinyMCE.getParentBlockElement(node);if(htm==""||htm==" "||_267.nodeName.toLowerCase()=="li"){var _268=para.previousSibling;while(_268!=null&&_268.nodeType!=1){_268=_268.previousSibling;}if(_268==null){return false;}var _269=tinyMCE.getNodeTree(_268,new Array(),3);var _26a=_269.length==0?null:_269[_269.length-1];if(_26a!=null){this.selectNode(_26a,true,false,false);}para.parentNode.removeChild(para);return true;}}return false;};TinyMCEControl.prototype._insertSpace=function(){return true;};TinyMCEControl.prototype.autoResetDesignMode=function(){if(!tinyMCE.isMSIE&&tinyMCE.settings["auto_reset_designmode"]){var sel=this.getSel();if(!sel||!sel.rangeCount||sel.rangeCount==0){eval("try { this.getDoc().designMode = \"On\"; } catch(e) {}");}}};TinyMCEControl.prototype.isDirty=function(){return this.isDirty;};TinyMCEControl.prototype.execCommand=function(_26c,_26d,_26e){var doc=this.getDoc();var win=this.getWin();if(this.lastSafariSelection){this.moveToBookmark(this.lastSafariSelection);tinyMCE.selectedElement=this.lastSafariSelectedElement;}if(!tinyMCE.isMSIE&&!this.useCSS){doc.execCommand("useCSS",false,true);this.useCSS=true;}this.contentDocument=doc;if(tinyMCE._themeExecCommand(this.editorId,this.getBody(),_26c,_26d,_26e)){return;}if(_26c!="mceAddUndoLevel"&&_26c!="Undo"&&_26c!="Redo"&&_26c!="mceImage"&&_26c!="mceLink"&&_26c!="mceToggleVisualAid"&&(_26c!="mceInsertTable"&&!_26d)){this.execCommand("mceAddUndoLevel");}if(this.getFocusElement()&&this.getFocusElement().nodeName.toLowerCase()=="img"){var _271=this.getFocusElement().getAttribute("align");switch(_26c){case "JustifyLeft":if(_271=="left"){this.getFocusElement().removeAttribute("align");}else{this.getFocusElement().setAttribute("align","left");}tinyMCE.triggerNodeChange();return;case "JustifyCenter":if(_271=="middle"){this.getFocusElement().removeAttribute("align");}else{this.getFocusElement().setAttribute("align","middle");}tinyMCE.triggerNodeChange();return;case "JustifyRight":if(_271=="right"){this.getFocusElement().removeAttribute("align");}else{this.getFocusElement().setAttribute("align","right");}tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings["force_br_newlines"]){var _272="";if(doc.selection.type!="Control"){switch(_26c){case "JustifyLeft":_272="left";break;case "JustifyCenter":_272="center";break;case "JustifyFull":_272="justify";break;case "JustifyRight":_272="right";break;}if(_272!=""){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null){divElm.setAttribute("align",_272);}else{if(rng.pasteHTML&&rng.htmlText.length>0){rng.pasteHTML("<div align=\""+_272+"\">"+rng.htmlText+"</div>");}}tinyMCE.triggerNodeChange();return;}}}switch(_26c){case "mceStoreSelection":this.selectionBookmark=this.getBookmark();break;case "mceRestoreSelection":this.moveToBookmark(this.selectionBookmark);break;case "InsertUnorderedList":case "InsertOrderedList":var tag=(_26c=="InsertUnorderedList")?"ul":"ol";if(tinyMCE.isSafari){this.execCommand("mceInsertContent",false,"<"+tag+"><li> </li><"+tag+">");}else{this.getDoc().execCommand(_26c,_26d,_26e);}tinyMCE.triggerNodeChange();break;case "Strikethrough":if(tinyMCE.isSafari){this.execCommand("mceInsertContent",false,"<strike>"+this.getSelectedHTML()+"</strike>");}else{this.getDoc().execCommand(_26c,_26d,_26e);}tinyMCE.triggerNodeChange();break;case "mceSelectNode":this.selectNode(_26e);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=_26e;break;case "FormatBlock":if(_26e==null||_26e==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm){this.execCommand("mceRemoveNode",false,elm);}}else{this.getDoc().execCommand("FormatBlock",false,_26e);}tinyMCE.triggerNodeChange();break;case "mceRemoveNode":if(!_26e){_26e=tinyMCE.getParentElement(this.getFocusElement());}if(tinyMCE.isMSIE){_26e.outerHTML=_26e.innerHTML;}else{var rng=_26e.ownerDocument.createRange();rng.setStartBefore(_26e);rng.setEndAfter(_26e);rng.deleteContents();rng.insertNode(rng.createContextualFragment(_26e.innerHTML));}tinyMCE.triggerNodeChange();break;case "mceSelectNodeDepth":var _277=this.getFocusElement();for(var i=0;_277;i++){if(_277.nodeName.toLowerCase()=="body"){break;}if(_277.nodeName.toLowerCase()=="#text"){i--;_277=_277.parentNode;continue;}if(i==_26e){this.selectNode(_277,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=_277;return;}_277=_277.parentNode;}break;case "HiliteColor":if(tinyMCE.isGecko){this.getDoc().execCommand("useCSS",false,false);this.getDoc().execCommand("hilitecolor",false,_26e);this.getDoc().execCommand("useCSS",false,true);}else{this.getDoc().execCommand("BackColor",false,_26e);}break;case "Cut":case "Copy":case "Paste":var _279=false;eval("try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}");if(tinyMCE.isGecko&&_279){if(confirm(tinyMCE.getLang("lang_clipboard_msg"))){window.open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","mceExternal");}return;}else{tinyMCE.triggerNodeChange();}break;case "mceSetContent":if(!_26e){_26e="";}_26e=tinyMCE._customCleanup("insert_to_editor",_26e);tinyMCE._setHTML(doc,_26e);doc.body.innerHTML=tinyMCE._cleanupHTML(doc,tinyMCE.settings,doc.body);tinyMCE.handleVisualAid(doc.body,true,this.visualAid);return true;case "mceLink":var _27a="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();_27a=rng.text;}else{_27a=this.getSel().toString();}if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(_27a.length<=0)){return;}}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a"){tinyMCE.linkElement=tinyMCE.selectedElement;}if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,"href")==""){tinyMCE.linkElement=null;}if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,"href");target=tinyMCE.getAttrib(tinyMCE.linkElement,"target");title=tinyMCE.getAttrib(tinyMCE.linkElement,"title");onclick=tinyMCE.getAttrib(tinyMCE.linkElement,"mce_onclick");style_class=tinyMCE.getAttrib(tinyMCE.linkElement,"class");if(onclick==""){onclick=tinyMCE.getAttrib(tinyMCE.linkElement,"onclick");}onclick=tinyMCE.cleanupEventStr(onclick);mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,"mce_real_href");if(mceRealHref!=""){href=mceRealHref;}href=eval(tinyMCE.settings["urlconverter_callback"]+"(href, tinyMCE.linkElement, true);");action="update";}if(this.settings["insertlink_callback"]){var _27d=eval(this.settings["insertlink_callback"]+"(href, target, title, onclick, action, style_class);");if(_27d&&_27d["href"]){tinyMCE.insertLink(_27d["href"],_27d["target"],_27d["title"],_27d["onclick"],_27d["style_class"]);}}else{tinyMCE.openWindow(this.insertLinkTemplate,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class});}break;case "mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",_271="";var _27f="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img;}if(img){if(tinyMCE.getAttrib(img,"name").indexOf("mce_")==0){return;}src=tinyMCE.getAttrib(img,"src");alt=tinyMCE.getAttrib(img,"alt");if(alt==""){alt=tinyMCE.getAttrib(img,"title");}if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!=""){img.setAttribute("width",w);}var h=img.style.height;if(h!=null&&h!=""){img.setAttribute("height",h);}}border=tinyMCE.getAttrib(img,"border");hspace=tinyMCE.getAttrib(img,"hspace");vspace=tinyMCE.getAttrib(img,"vspace");width=tinyMCE.getAttrib(img,"width");height=tinyMCE.getAttrib(img,"height");_271=tinyMCE.getAttrib(img,"align");onmouseover=tinyMCE.getAttrib(img,"onmouseover");onmouseout=tinyMCE.getAttrib(img,"onmouseout");_27f=tinyMCE.getAttrib(img,"title");if(tinyMCE.isMSIE){width=img.attributes["width"].specified?width:"";height=img.attributes["height"].specified?height:"";}onmouseover=tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));onmouseout=tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));mceRealSrc=tinyMCE.getAttrib(img,"mce_real_src");if(mceRealSrc!=""){src=mceRealSrc;}src=eval(tinyMCE.settings["urlconverter_callback"]+"(src, img, true);");if(onmouseover!=""){onmouseover=eval(tinyMCE.settings["urlconverter_callback"]+"(onmouseover, img, true);");}if(onmouseout!=""){onmouseout=eval(tinyMCE.settings["urlconverter_callback"]+"(onmouseout, img, true);");}action="update";}if(this.settings["insertimage_callback"]){var _283=eval(this.settings["insertimage_callback"]+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(_283&&_283["src"]){tinyMCE.insertImage(_283["src"],_283["alt"],_283["border"],_283["hspace"],_283["vspace"],_283["width"],_283["height"],_283["align"],_283["title"],_283["onmouseover"],_283["onmouseout"]);}}else{tinyMCE.openWindow(this.insertImageTemplate,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:_271,title:_27f,onmouseover:onmouseover,onmouseout:onmouseout,action:action});}break;case "mceCleanupWord":if(tinyMCE.isMSIE){var html=this.getBody().createTextRange().htmlText;if(html.indexOf("=\"mso")!=-1){tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);html=tinyMCE._cleanupHTML(this.contentDocument,this.settings,this.getBody(),this.visualAid);}this.getBody().innerHTML=html;}break;case "mceCleanup":tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);this.getBody().innerHTML=tinyMCE._cleanupHTML(this.contentDocument,this.settings,this.getBody(),this.visualAid);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid);this.repaint();tinyMCE.triggerNodeChange();break;case "mceAnchor":if(!_26d){var aElm=tinyMCE.getParentElement(this.getFocusElement(),"a","name");if(aElm){if(_26e==null||_26e==""){if(tinyMCE.isMSIE){aElm.outerHTML=aElm.innerHTML;}else{var rng=aElm.ownerDocument.createRange();rng.setStartBefore(aElm);rng.setEndAfter(aElm);rng.deleteContents();rng.insertNode(rng.createContextualFragment(aElm.innerHTML));}}else{aElm.setAttribute("name",_26e);}}else{this.getDoc().execCommand("fontname",false,"#mce_temp_font#");var _287=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<_287.length;x++){elm=_287[x];var aElm=this.getDoc().createElement("a");aElm.setAttribute("name",_26e);if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++){aElm.appendChild(elm.childNodes[i].cloneNode(true));}}elm.parentNode.replaceChild(aElm,elm);}}tinyMCE.triggerNodeChange();}break;case "mceReplaceContent":var _28b="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();_28b=rng.text;}else{_28b=this.getSel().toString();}if(_28b.length>0){_26e=tinyMCE.replaceVar(_26e,"selection",_28b);tinyMCE.execCommand("mceInsertContent",false,_26e);}tinyMCE.triggerNodeChange();break;case "mceSetAttribute":if(typeof (_26e)=="object"){var _28d=(typeof (_26e["targets"])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":_26e["targets"];var _28e=tinyMCE.getParentElement(this.getFocusElement(),_28d);if(_28e){_28e.setAttribute(_26e["name"],_26e["value"]);tinyMCE.triggerNodeChange();}}break;case "mceSetCSSClass":var _28f=false;if(tinyMCE.isMSIE){var rng=doc.selection.createRange();_28f=(rng.text&&rng.text.length>0);}else{_28f=(this.getSel().toString().length>0);}if(tinyMCE.selectedNode){tinyMCE.selectedElement=tinyMCE.selectedNode;}if(_28f&&!tinyMCE.selectedNode){this.getDoc().execCommand("RemoveFormat",false,null);if(_26e==null){return this.execCommand("RemoveFormat",false,null);}this.getDoc().execCommand("fontname",false,"#mce_temp_font#");var _291=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<_291.length;x++){elm=_291[x];if(elm){var _293=this.getDoc().createElement("span");_293.className=_26e;if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++){_293.appendChild(elm.childNodes[i].cloneNode(true));}}elm.parentNode.replaceChild(_293,elm);}}}else{var _295=this.getFocusElement();if(tinyMCE.selectedElement.nodeName.toLowerCase()=="img"||tinyMCE.selectedElement.nodeName.toLowerCase()=="table"){_295=tinyMCE.selectedElement;}var _296=tinyMCE.getParentElement(_295,"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(tinyMCE.selectedElement.nodeType==1){_296=tinyMCE.selectedElement;}if(!tinyMCE.isMSIE&&!_296){_296=tinyMCE.imgElement;}if(_296){if(_296.nodeName.toLowerCase()=="span"&&(!_26e||_26e=="")){if(_296.hasChildNodes()){for(var i=0;i<_296.childNodes.length;i++){_296.parentNode.insertBefore(_296.childNodes[i].cloneNode(true),_296);}}_296.parentNode.removeChild(_296);}else{if(_26e!=null&&_26e!=""){_296.className=_26e;}else{_296.removeAttribute("className");_296.removeAttribute("class");}}}}tinyMCE.triggerNodeChange();break;case "mceInsertRawHTML":var key="tiny_mce_marker";this.execCommand("mceInsertContent",false,key);var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1){this.getBody().innerHTML=html.substring(0,pos)+_26e+html.substring(pos+key.length);}break;case "mceInsertContent":if(!tinyMCE.isMSIE){var sel=this.getSel();var rng=this.getRng();var _29c=_26e.indexOf("<")!=-1;if(_29c){if(tinyMCE.isSafari){var _29d=this.getDoc().createRange();_29d.setStart(this.getBody(),0);_29d.setEnd(this.getBody(),0);_26e=_29d.createContextualFragment(_26e);}else{_26e=rng.createContextualFragment(_26e);}}else{var el=document.createElement("div");el.innerHTML=_26e;_26e=el.firstChild.nodeValue;_26e=doc.createTextNode(_26e);}if(tinyMCE.isSafari&&!_29c){this.execCommand("InsertText",false,_26e.nodeValue);tinyMCE.triggerNodeChange();return true;}else{if(tinyMCE.isSafari&&_29c){rng.deleteContents();rng.insertNode(_26e);tinyMCE.triggerNodeChange();return true;}}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(_26e,node);}else{rng.insertNode(_26e);}if(!_29c){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(_26e);rng.collapse(false);sel.addRange(rng);}else{rng.collapse(false);}}else{var rng=doc.selection.createRange();if(rng.item){rng.item(0).outerHTML=_26e;}else{rng.pasteHTML(_26e);}}tinyMCE.triggerNodeChange();break;case "mceAddUndoLevel":if(tinyMCE.settings["custom_undo_redo"]){var _2a2=tinyMCE.settings["custom_undo_redo_levels"];var _2a3=this.getBody().innerHTML;if(_2a3!=this.undoLevels[this.undoLevels.length-1]){tinyMCE.executeCallback("onchange_callback","_onchange",0,this);this.isDirty=true;if(_2a2!=-1&&this.undoLevels.length>_2a2){for(var i=0;i<this.undoLevels.length-1;i++){this.undoLevels[i]=this.undoLevels[i+1];}this.undoLevels.length--;this.undoIndex--;}this.undoLevels[this.undoIndex++]=_2a3;this.undoLevels.length=this.undoIndex;}tinyMCE.triggerNodeChange(false);}break;case "Undo":if(tinyMCE.settings["custom_undo_redo"]){if(this.undoIndex==this.undoLevels.length){this.execCommand("mceAddUndoLevel");this.undoIndex--;}if(this.undoIndex>0){this.undoIndex--;this.getBody().innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else{this.getDoc().execCommand(_26c,_26d,_26e);}break;case "Redo":if(tinyMCE.settings["custom_undo_redo"]){if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;this.getBody().innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else{this.getDoc().execCommand(_26c,_26d,_26e);}break;case "mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid);tinyMCE.triggerNodeChange();break;case "removeformat":var text=this.getSelectedText();if(tinyMCE.isMSIE){try{win.focus();var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null);rng.pasteHTML(rng.text);}catch(e){}}else{this.getDoc().execCommand(_26c,_26d,_26e);}if(text.length==0){this.execCommand("mceSetCSSClass",false,"");}tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(_26c,_26d,_26e);tinyMCE.triggerNodeChange();}};TinyMCEControl.prototype.queryCommandValue=function(_2a7){return this.getDoc().queryCommandValue(_2a7);};TinyMCEControl.prototype.queryCommandState=function(_2a8){return this.getDoc().queryCommandState(_2a8);};TinyMCEControl.prototype.onAdd=function(_2a9,_2aa,_2ab){var _2ac=_2ab?_2ab:document;this.targetDoc=_2ac;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings["theme"];this.settings["themeurl"]=tinyMCE.themeURL;if(!_2a9){alert("Error: Could not find the target element.");return false;}var _2ad=tinyMCE._getThemeFunction("_getInsertLinkTemplate");if(eval("typeof("+_2ad+")")!="undefined"){this.insertLinkTemplate=eval(_2ad+"(this.settings);");}var _2ae=tinyMCE._getThemeFunction("_getInsertImageTemplate");if(eval("typeof("+_2ae+")")!="undefined"){this.insertImageTemplate=eval(_2ae+"(this.settings);");}var _2af=tinyMCE._getThemeFunction("_getEditorTemplate");if(eval("typeof("+_2af+")")=="undefined"){alert("Error: Could not find the template function: "+_2af);return false;}var _2b0=eval(_2af+"(this.settings, this.editorId);");var _2b1=_2b0["delta_width"]?_2b0["delta_width"]:0;var _2b2=_2b0["delta_height"]?_2b0["delta_height"]:0;var html="<span id=\""+this.editorId+"_parent\">"+_2b0["html"];var _2b4=tinyMCE._getThemeFunction("_handleNodeChange",true);if(eval("typeof("+_2b4+")")!="undefined"){this.settings["handleNodeChangeCallback"]=_2b4;}html=tinyMCE.replaceVar(html,"editor_id",this.editorId);html=tinyMCE.replaceVar(html,"default_document",tinyMCE.baseURL+"/blank.htm");this.settings["default_document"]=tinyMCE.baseURL+"/blank.htm";this.settings["old_width"]=this.settings["width"];this.settings["old_height"]=this.settings["height"];if(this.settings["width"]==-1){this.settings["width"]=_2a9.offsetWidth;}if(this.settings["height"]==-1){this.settings["height"]=_2a9.offsetHeight;}if(this.settings["width"]==0){this.settings["width"]=_2a9.style.width;}if(this.settings["height"]==0){this.settings["height"]=_2a9.style.height;}if(this.settings["width"]==0){this.settings["width"]=320;}if(this.settings["height"]==0){this.settings["height"]=240;}this.settings["area_width"]=parseInt(this.settings["width"]);this.settings["area_height"]=parseInt(this.settings["height"]);this.settings["area_width"]+=_2b1;this.settings["area_height"]+=_2b2;if((""+this.settings["width"]).indexOf("%")!=-1){this.settings["area_width"]="100%";}if((""+this.settings["height"]).indexOf("%")!=-1){this.settings["area_height"]="100%";}if((""+_2a9.style.width).indexOf("%")!=-1){this.settings["width"]=_2a9.style.width;this.settings["area_width"]="100%";}if((""+_2a9.style.height).indexOf("%")!=-1){this.settings["height"]=_2a9.style.height;this.settings["area_height"]="100%";}html=tinyMCE.applyTemplate(html);this.settings["width"]=this.settings["old_width"];this.settings["height"]=this.settings["old_height"];this.visualAid=this.settings["visual"];this.formTargetElementId=_2aa;if(_2a9.nodeName.toLowerCase()=="textarea"){this.startContent=_2a9.value;}else{this.startContent=_2a9.innerHTML;}if(_2a9.nodeName.toLowerCase()!="textarea"){this.oldTargetElement=_2a9.cloneNode(true);if(tinyMCE.settings["debug"]){html+="<textarea wrap=\"off\" id=\""+_2aa+"\" name=\""+_2aa+"\" cols=\"100\" rows=\"15\"></textarea>";}else{html+="<input type=\"hidden\" type=\"text\" id=\""+_2aa+"\" name=\""+_2aa+"\" />";}html+="</span>";if(!tinyMCE.isMSIE){var rng=_2a9.ownerDocument.createRange();rng.setStartBefore(_2a9);var _2b6=rng.createContextualFragment(html);_2a9.parentNode.replaceChild(_2b6,_2a9);}else{_2a9.outerHTML=html;}}else{html+="</span>";this.oldTargetElement=_2a9;if(!tinyMCE.settings["debug"]){this.oldTargetElement.style.display="none";}if(!tinyMCE.isMSIE){var rng=_2a9.ownerDocument.createRange();rng.setStartBefore(_2a9);var _2b8=rng.createContextualFragment(html);_2a9.parentNode.insertBefore(_2b8,_2a9);}else{_2a9.insertAdjacentHTML("beforeBegin",html);}}var _2b9=false;var tElm=_2ac.getElementById(this.editorId);if(!tinyMCE.isMSIE){if(tElm&&tElm.nodeName.toLowerCase()=="span"){tElm=tinyMCE._createIFrame(tElm);_2b9=true;}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName.toLowerCase()=="span"){tElm=tinyMCE._createIFrame(tElm);}else{tElm=_2ac.frames[this.editorId];}this.targetElement=tElm;this.iframeElement=_2ac.getElementById(this.editorId);this.contentDocument=tElm.window.document;this.contentWindow=tElm.window;this.getDoc().designMode="on";}var doc=this.contentDocument;if(_2b9){var html=""+"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"+"<html>"+"<head>"+"<base href=\""+tinyMCE.settings["base_href"]+"\" />"+"<title>blank_page</title>"+"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"+"</head>"+"<body class=\"mceContentBody\">"+"</body>"+"</html>";try{this.getDoc().designMode="on";doc.open();doc.write(html);doc.close();}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE){window.setTimeout("TinyMCE.prototype.addEventHandlers('"+this.editorId+"');",1);}tinyMCE.setupContent(this.editorId,true);return true;};TinyMCEControl.prototype.getFocusElement=function(){if(tinyMCE.isMSIE){var doc=this.getDoc();var rng=doc.selection.createRange();if(rng.collapse){rng.collapse(true);}var elm=rng.item?rng.item(0):rng.parentElement();}else{var sel=this.getSel();var elm=(sel&&sel.anchorNode)?sel.anchorNode:null;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){elm=tinyMCE.selectedElement;}}return elm;};var tinyMCE=new TinyMCE();var tinyMCELang=new Array();function debug(){var msg="";var elm=document.getElementById("tinymce_debug");if(!elm){var _2c4=document.createElement("div");_2c4.setAttribute("className","debugger");_2c4.className="debugger";_2c4.innerHTML="\t\t\tDebug output:\t\t\t<textarea id=\"tinymce_debug\" style=\"width: 100%; height: 300px\">\t\t\t</textarea>";document.body.appendChild(_2c4);elm=document.getElementById("tinymce_debug");}var args=this.debug.arguments;for(var i=0;i<args.length;i++){msg+=args[i];if(i<args.length-1){msg+=", ";}}elm.value+=msg+"\n";} | |
| 14 | 3 | \ No newline at end of file | ... | ... |
thirdpartyjs/yui/dom/dom.js
| 1 | -/* | |
| 2 | -Copyright (c) 2006, Yahoo! Inc. All rights reserved. | |
| 3 | -Code licensed under the BSD License: | |
| 4 | -http://developer.yahoo.net/yui/license.txt | |
| 5 | -version: 0.12.0 | |
| 6 | -*/ | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * The dom module provides helper methods for manipulating Dom elements. | |
| 10 | - * @module dom | |
| 11 | - * | |
| 12 | - */ | |
| 13 | - | |
| 14 | -(function() { | |
| 15 | - var Y = YAHOO.util, // internal shorthand | |
| 16 | - getStyle, // for load time browser branching | |
| 17 | - setStyle, // ditto | |
| 18 | - id_counter = 0, // for use with generateId | |
| 19 | - propertyCache = {}; // for faster hyphen converts | |
| 20 | - | |
| 21 | - // brower detection | |
| 22 | - var ua = navigator.userAgent.toLowerCase(), | |
| 23 | - isOpera = (ua.indexOf('opera') > -1), | |
| 24 | - isSafari = (ua.indexOf('safari') > -1), | |
| 25 | - isGecko = (!isOpera && !isSafari && ua.indexOf('gecko') > -1), | |
| 26 | - isIE = (!isOpera && ua.indexOf('msie') > -1); | |
| 27 | - | |
| 28 | - // regex cache | |
| 29 | - var patterns = { | |
| 30 | - HYPHEN: /(-[a-z])/i | |
| 31 | - }; | |
| 32 | - | |
| 33 | - | |
| 34 | - var toCamel = function(property) { | |
| 35 | - if ( !patterns.HYPHEN.test(property) ) { | |
| 36 | - return property; // no hyphens | |
| 37 | - } | |
| 38 | - | |
| 39 | - if (propertyCache[property]) { // already converted | |
| 40 | - return propertyCache[property]; | |
| 41 | - } | |
| 42 | - | |
| 43 | - while( patterns.HYPHEN.exec(property) ) { | |
| 44 | - property = property.replace(RegExp.$1, | |
| 45 | - RegExp.$1.substr(1).toUpperCase()); | |
| 46 | - } | |
| 47 | - | |
| 48 | - propertyCache[property] = property; | |
| 49 | - return property; | |
| 50 | - //return property.replace(/-([a-z])/gi, function(m0, m1) {return m1.toUpperCase()}) // cant use function as 2nd arg yet due to safari bug | |
| 51 | - }; | |
| 52 | - | |
| 53 | - // branching at load instead of runtime | |
| 54 | - if (document.defaultView && document.defaultView.getComputedStyle) { // W3C DOM method | |
| 55 | - getStyle = function(el, property) { | |
| 56 | - var value = null; | |
| 57 | - | |
| 58 | - var computed = document.defaultView.getComputedStyle(el, ''); | |
| 59 | - if (computed) { // test computed before touching for safari | |
| 60 | - value = computed[toCamel(property)]; | |
| 61 | - } | |
| 62 | - | |
| 63 | - return el.style[property] || value; | |
| 64 | - }; | |
| 65 | - } else if (document.documentElement.currentStyle && isIE) { // IE method | |
| 66 | - getStyle = function(el, property) { | |
| 67 | - switch( toCamel(property) ) { | |
| 68 | - case 'opacity' :// IE opacity uses filter | |
| 69 | - var val = 100; | |
| 70 | - try { // will error if no DXImageTransform | |
| 71 | - val = el.filters['DXImageTransform.Microsoft.Alpha'].opacity; | |
| 72 | - | |
| 73 | - } catch(e) { | |
| 74 | - try { // make sure its in the document | |
| 75 | - val = el.filters('alpha').opacity; | |
| 76 | - } catch(e) { | |
| 77 | - } | |
| 78 | - } | |
| 79 | - return val / 100; | |
| 80 | - break; | |
| 81 | - default: | |
| 82 | - // test currentStyle before touching | |
| 83 | - var value = el.currentStyle ? el.currentStyle[property] : null; | |
| 84 | - return ( el.style[property] || value ); | |
| 85 | - } | |
| 86 | - }; | |
| 87 | - } else { // default to inline only | |
| 88 | - getStyle = function(el, property) { return el.style[property]; }; | |
| 89 | - } | |
| 90 | - | |
| 91 | - if (isIE) { | |
| 92 | - setStyle = function(el, property, val) { | |
| 93 | - switch (property) { | |
| 94 | - case 'opacity': | |
| 95 | - if ( typeof el.style.filter == 'string' ) { // in case not appended | |
| 96 | - el.style.filter = 'alpha(opacity=' + val * 100 + ')'; | |
| 97 | - | |
| 98 | - if (!el.currentStyle || !el.currentStyle.hasLayout) { | |
| 99 | - el.style.zoom = 1; // when no layout or cant tell | |
| 100 | - } | |
| 101 | - } | |
| 102 | - break; | |
| 103 | - default: | |
| 104 | - el.style[property] = val; | |
| 105 | - } | |
| 106 | - }; | |
| 107 | - } else { | |
| 108 | - setStyle = function(el, property, val) { | |
| 109 | - el.style[property] = val; | |
| 110 | - }; | |
| 111 | - } | |
| 112 | - | |
| 113 | - /** | |
| 114 | - * Provides helper methods for DOM elements. | |
| 115 | - * @namespace YAHOO.util | |
| 116 | - * @class Dom | |
| 117 | - */ | |
| 118 | - YAHOO.util.Dom = { | |
| 119 | - /** | |
| 120 | - * Returns an HTMLElement reference. | |
| 121 | - * @method get | |
| 122 | - * @param {String | HTMLElement |Array} el Accepts a string to use as an ID for getting a DOM reference, an actual DOM reference, or an Array of IDs and/or HTMLElements. | |
| 123 | - * @return {HTMLElement | Array} A DOM reference to an HTML element or an array of HTMLElements. | |
| 124 | - */ | |
| 125 | - get: function(el) { | |
| 126 | - if (!el) { return null; } // nothing to work with | |
| 127 | - | |
| 128 | - if (typeof el != 'string' && !(el instanceof Array) ) { // assuming HTMLElement or HTMLCollection, so pass back as is | |
| 129 | - return el; | |
| 130 | - } | |
| 131 | - | |
| 132 | - if (typeof el == 'string') { // ID | |
| 133 | - return document.getElementById(el); | |
| 134 | - } | |
| 135 | - else { // array of ID's and/or elements | |
| 136 | - var collection = []; | |
| 137 | - for (var i = 0, len = el.length; i < len; ++i) { | |
| 138 | - collection[collection.length] = Y.Dom.get(el[i]); | |
| 139 | - } | |
| 140 | - | |
| 141 | - return collection; | |
| 142 | - } | |
| 143 | - | |
| 144 | - return null; // safety, should never happen | |
| 145 | - }, | |
| 146 | - | |
| 147 | - /** | |
| 148 | - * Normalizes currentStyle and ComputedStyle. | |
| 149 | - * @method getStyle | |
| 150 | - * @param {String | HTMLElement |Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements. | |
| 151 | - * @param {String} property The style property whose value is returned. | |
| 152 | - * @return {String | Array} The current value of the style property for the element(s). | |
| 153 | - */ | |
| 154 | - getStyle: function(el, property) { | |
| 155 | - property = toCamel(property); | |
| 156 | - | |
| 157 | - var f = function(element) { | |
| 158 | - return getStyle(element, property); | |
| 159 | - }; | |
| 160 | - | |
| 161 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 162 | - }, | |
| 163 | - | |
| 164 | - /** | |
| 165 | - * Wrapper for setting style properties of HTMLElements. Normalizes "opacity" across modern browsers. | |
| 166 | - * @method setStyle | |
| 167 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements. | |
| 168 | - * @param {String} property The style property to be set. | |
| 169 | - * @param {String} val The value to apply to the given property. | |
| 170 | - */ | |
| 171 | - setStyle: function(el, property, val) { | |
| 172 | - property = toCamel(property); | |
| 173 | - | |
| 174 | - var f = function(element) { | |
| 175 | - setStyle(element, property, val); | |
| 176 | - | |
| 177 | - }; | |
| 178 | - | |
| 179 | - Y.Dom.batch(el, f, Y.Dom, true); | |
| 180 | - }, | |
| 181 | - | |
| 182 | - /** | |
| 183 | - * Gets the current position of an element based on page coordinates. Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false). | |
| 184 | - * @method getXY | |
| 185 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements | |
| 186 | - * @return {Array} The XY position of the element(s) | |
| 187 | - */ | |
| 188 | - getXY: function(el) { | |
| 189 | - var f = function(el) { | |
| 190 | - | |
| 191 | - // has to be part of document to have pageXY | |
| 192 | - if (el.parentNode === null || el.offsetParent === null || | |
| 193 | - this.getStyle(el, 'display') == 'none') { | |
| 194 | - return false; | |
| 195 | - } | |
| 196 | - | |
| 197 | - var parentNode = null; | |
| 198 | - var pos = []; | |
| 199 | - var box; | |
| 200 | - | |
| 201 | - if (el.getBoundingClientRect) { // IE | |
| 202 | - box = el.getBoundingClientRect(); | |
| 203 | - var doc = document; | |
| 204 | - if ( !this.inDocument(el) && parent.document != document) {// might be in a frame, need to get its scroll | |
| 205 | - doc = parent.document; | |
| 206 | - | |
| 207 | - if ( !this.isAncestor(doc.documentElement, el) ) { | |
| 208 | - return false; | |
| 209 | - } | |
| 210 | - | |
| 211 | - } | |
| 212 | - | |
| 213 | - var scrollTop = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop); | |
| 214 | - var scrollLeft = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft); | |
| 215 | - | |
| 216 | - return [box.left + scrollLeft, box.top + scrollTop]; | |
| 217 | - } | |
| 218 | - else { // safari, opera, & gecko | |
| 219 | - pos = [el.offsetLeft, el.offsetTop]; | |
| 220 | - parentNode = el.offsetParent; | |
| 221 | - if (parentNode != el) { | |
| 222 | - while (parentNode) { | |
| 223 | - pos[0] += parentNode.offsetLeft; | |
| 224 | - pos[1] += parentNode.offsetTop; | |
| 225 | - parentNode = parentNode.offsetParent; | |
| 226 | - } | |
| 227 | - } | |
| 228 | - if (isSafari && this.getStyle(el, 'position') == 'absolute' ) { // safari doubles in some cases | |
| 229 | - pos[0] -= document.body.offsetLeft; | |
| 230 | - pos[1] -= document.body.offsetTop; | |
| 231 | - } | |
| 232 | - } | |
| 233 | - | |
| 234 | - if (el.parentNode) { parentNode = el.parentNode; } | |
| 235 | - else { parentNode = null; } | |
| 236 | - | |
| 237 | - while (parentNode && parentNode.tagName.toUpperCase() != 'BODY' && parentNode.tagName.toUpperCase() != 'HTML') | |
| 238 | - { // account for any scrolled ancestors | |
| 239 | - if (Y.Dom.getStyle(parentNode, 'display') != 'inline') { // work around opera inline scrollLeft/Top bug | |
| 240 | - pos[0] -= parentNode.scrollLeft; | |
| 241 | - pos[1] -= parentNode.scrollTop; | |
| 242 | - } | |
| 243 | - | |
| 244 | - if (parentNode.parentNode) { | |
| 245 | - parentNode = parentNode.parentNode; | |
| 246 | - } else { parentNode = null; } | |
| 247 | - } | |
| 248 | - | |
| 249 | - | |
| 250 | - return pos; | |
| 251 | - }; | |
| 252 | - | |
| 253 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 254 | - }, | |
| 255 | - | |
| 256 | - /** | |
| 257 | - * Gets the current X position of an element based on page coordinates. The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false). | |
| 258 | - * @method getX | |
| 259 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements | |
| 260 | - * @return {String | Array} The X position of the element(s) | |
| 261 | - */ | |
| 262 | - getX: function(el) { | |
| 263 | - var f = function(el) { | |
| 264 | - return Y.Dom.getXY(el)[0]; | |
| 265 | - }; | |
| 266 | - | |
| 267 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 268 | - }, | |
| 269 | - | |
| 270 | - /** | |
| 271 | - * Gets the current Y position of an element based on page coordinates. Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false). | |
| 272 | - * @method getY | |
| 273 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements | |
| 274 | - * @return {String | Array} The Y position of the element(s) | |
| 275 | - */ | |
| 276 | - getY: function(el) { | |
| 277 | - var f = function(el) { | |
| 278 | - return Y.Dom.getXY(el)[1]; | |
| 279 | - }; | |
| 280 | - | |
| 281 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 282 | - }, | |
| 283 | - | |
| 284 | - /** | |
| 285 | - * Set the position of an html element in page coordinates, regardless of how the element is positioned. | |
| 286 | - * The element(s) must be part of the DOM tree to have page coordinates (display:none or elements not appended return false). | |
| 287 | - * @method setXY | |
| 288 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements | |
| 289 | - * @param {Array} pos Contains X & Y values for new position (coordinates are page-based) | |
| 290 | - * @param {Boolean} noRetry By default we try and set the position a second time if the first fails | |
| 291 | - */ | |
| 292 | - setXY: function(el, pos, noRetry) { | |
| 293 | - var f = function(el) { | |
| 294 | - var style_pos = this.getStyle(el, 'position'); | |
| 295 | - if (style_pos == 'static') { // default to relative | |
| 296 | - this.setStyle(el, 'position', 'relative'); | |
| 297 | - style_pos = 'relative'; | |
| 298 | - } | |
| 299 | - | |
| 300 | - var pageXY = this.getXY(el); | |
| 301 | - if (pageXY === false) { // has to be part of doc to have pageXY | |
| 302 | - return false; | |
| 303 | - } | |
| 304 | - | |
| 305 | - var delta = [ // assuming pixels; if not we will have to retry | |
| 306 | - parseInt( this.getStyle(el, 'left'), 10 ), | |
| 307 | - parseInt( this.getStyle(el, 'top'), 10 ) | |
| 308 | - ]; | |
| 309 | - | |
| 310 | - if ( isNaN(delta[0]) ) {// in case of 'auto' | |
| 311 | - delta[0] = (style_pos == 'relative') ? 0 : el.offsetLeft; | |
| 312 | - } | |
| 313 | - if ( isNaN(delta[1]) ) { // in case of 'auto' | |
| 314 | - delta[1] = (style_pos == 'relative') ? 0 : el.offsetTop; | |
| 315 | - } | |
| 316 | - | |
| 317 | - if (pos[0] !== null) { el.style.left = pos[0] - pageXY[0] + delta[0] + 'px'; } | |
| 318 | - if (pos[1] !== null) { el.style.top = pos[1] - pageXY[1] + delta[1] + 'px'; } | |
| 319 | - | |
| 320 | - var newXY = this.getXY(el); | |
| 321 | - | |
| 322 | - // if retry is true, try one more time if we miss | |
| 323 | - if (!noRetry && (newXY[0] != pos[0] || newXY[1] != pos[1]) ) { | |
| 324 | - this.setXY(el, pos, true); | |
| 325 | - } | |
| 326 | - | |
| 327 | - }; | |
| 328 | - | |
| 329 | - Y.Dom.batch(el, f, Y.Dom, true); | |
| 330 | - }, | |
| 331 | - | |
| 332 | - /** | |
| 333 | - * Set the X position of an html element in page coordinates, regardless of how the element is positioned. | |
| 334 | - * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false). | |
| 335 | - * @method setX | |
| 336 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements. | |
| 337 | - * @param {Int} x The value to use as the X coordinate for the element(s). | |
| 338 | - */ | |
| 339 | - setX: function(el, x) { | |
| 340 | - Y.Dom.setXY(el, [x, null]); | |
| 341 | - }, | |
| 342 | - | |
| 343 | - /** | |
| 344 | - * Set the Y position of an html element in page coordinates, regardless of how the element is positioned. | |
| 345 | - * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false). | |
| 346 | - * @method setY | |
| 347 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements. | |
| 348 | - * @param {Int} x To use as the Y coordinate for the element(s). | |
| 349 | - */ | |
| 350 | - setY: function(el, y) { | |
| 351 | - Y.Dom.setXY(el, [null, y]); | |
| 352 | - }, | |
| 353 | - | |
| 354 | - /** | |
| 355 | - * Returns the region position of the given element. | |
| 356 | - * The element must be part of the DOM tree to have a region (display:none or elements not appended return false). | |
| 357 | - * @method getRegion | |
| 358 | - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements. | |
| 359 | - * @return {Region | Array} A Region or array of Region instances containing "top, left, bottom, right" member data. | |
| 360 | - */ | |
| 361 | - getRegion: function(el) { | |
| 362 | - var f = function(el) { | |
| 363 | - var region = new Y.Region.getRegion(el); | |
| 364 | - return region; | |
| 365 | - }; | |
| 366 | - | |
| 367 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 368 | - }, | |
| 369 | - | |
| 370 | - /** | |
| 371 | - * Returns the width of the client (viewport). | |
| 372 | - * @method getClientWidth | |
| 373 | - * @deprecated Now using getViewportWidth. This interface left intact for back compat. | |
| 374 | - * @return {Int} The width of the viewable area of the page. | |
| 375 | - */ | |
| 376 | - getClientWidth: function() { | |
| 377 | - return Y.Dom.getViewportWidth(); | |
| 378 | - }, | |
| 379 | - | |
| 380 | - /** | |
| 381 | - * Returns the height of the client (viewport). | |
| 382 | - * @method getClientHeight | |
| 383 | - * @deprecated Now using getViewportHeight. This interface left intact for back compat. | |
| 384 | - * @return {Int} The height of the viewable area of the page. | |
| 385 | - */ | |
| 386 | - getClientHeight: function() { | |
| 387 | - return Y.Dom.getViewportHeight(); | |
| 388 | - }, | |
| 389 | - | |
| 390 | - /** | |
| 391 | - * Returns a array of HTMLElements with the given class. | |
| 392 | - * For optimized performance, include a tag and/or root node when possible. | |
| 393 | - * @method getElementsByClassName | |
| 394 | - * @param {String} className The class name to match against | |
| 395 | - * @param {String} tag (optional) The tag name of the elements being collected | |
| 396 | - * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point | |
| 397 | - * @return {Array} An array of elements that have the given class name | |
| 398 | - */ | |
| 399 | - getElementsByClassName: function(className, tag, root) { | |
| 400 | - var method = function(el) { return Y.Dom.hasClass(el, className); }; | |
| 401 | - return Y.Dom.getElementsBy(method, tag, root); | |
| 402 | - }, | |
| 403 | - | |
| 404 | - /** | |
| 405 | - * Determines whether an HTMLElement has the given className. | |
| 406 | - * @method hasClass | |
| 407 | - * @param {String | HTMLElement | Array} el The element or collection to test | |
| 408 | - * @param {String} className the class name to search for | |
| 409 | - * @return {Boolean | Array} A boolean value or array of boolean values | |
| 410 | - */ | |
| 411 | - hasClass: function(el, className) { | |
| 412 | - var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)'); | |
| 413 | - | |
| 414 | - var f = function(el) { | |
| 415 | - return re.test(el['className']); | |
| 416 | - }; | |
| 417 | - | |
| 418 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 419 | - }, | |
| 420 | - | |
| 421 | - /** | |
| 422 | - * Adds a class name to a given element or collection of elements. | |
| 423 | - * @method addClass | |
| 424 | - * @param {String | HTMLElement | Array} el The element or collection to add the class to | |
| 425 | - * @param {String} className the class name to add to the class attribute | |
| 426 | - */ | |
| 427 | - addClass: function(el, className) { | |
| 428 | - var f = function(el) { | |
| 429 | - if (this.hasClass(el, className)) { return; } // already present | |
| 430 | - | |
| 431 | - | |
| 432 | - el['className'] = [el['className'], className].join(' '); | |
| 433 | - }; | |
| 434 | - | |
| 435 | - Y.Dom.batch(el, f, Y.Dom, true); | |
| 436 | - }, | |
| 437 | - | |
| 438 | - /** | |
| 439 | - * Removes a class name from a given element or collection of elements. | |
| 440 | - * @method removeClass | |
| 441 | - * @param {String | HTMLElement | Array} el The element or collection to remove the class from | |
| 442 | - * @param {String} className the class name to remove from the class attribute | |
| 443 | - */ | |
| 444 | - removeClass: function(el, className) { | |
| 445 | - var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', 'g'); | |
| 446 | - | |
| 447 | - var f = function(el) { | |
| 448 | - if (!this.hasClass(el, className)) { return; } // not present | |
| 449 | - | |
| 450 | - | |
| 451 | - var c = el['className']; | |
| 452 | - el['className'] = c.replace(re, ' '); | |
| 453 | - if ( this.hasClass(el, className) ) { // in case of multiple adjacent | |
| 454 | - this.removeClass(el, className); | |
| 455 | - } | |
| 456 | - | |
| 457 | - }; | |
| 458 | - | |
| 459 | - Y.Dom.batch(el, f, Y.Dom, true); | |
| 460 | - }, | |
| 461 | - | |
| 462 | - /** | |
| 463 | - * Replace a class with another class for a given element or collection of elements. | |
| 464 | - * If no oldClassName is present, the newClassName is simply added. | |
| 465 | - * @method replaceClass | |
| 466 | - * @param {String | HTMLElement | Array} el The element or collection to remove the class from | |
| 467 | - * @param {String} oldClassName the class name to be replaced | |
| 468 | - * @param {String} newClassName the class name that will be replacing the old class name | |
| 469 | - */ | |
| 470 | - replaceClass: function(el, oldClassName, newClassName) { | |
| 471 | - if (oldClassName === newClassName) { // avoid infinite loop | |
| 472 | - return false; | |
| 473 | - } | |
| 474 | - | |
| 475 | - var re = new RegExp('(?:^|\\s+)' + oldClassName + '(?:\\s+|$)', 'g'); | |
| 476 | - | |
| 477 | - var f = function(el) { | |
| 478 | - | |
| 479 | - if ( !this.hasClass(el, oldClassName) ) { | |
| 480 | - this.addClass(el, newClassName); // just add it if nothing to replace | |
| 481 | - return; // note return | |
| 482 | - } | |
| 483 | - | |
| 484 | - el['className'] = el['className'].replace(re, ' ' + newClassName + ' '); | |
| 485 | - | |
| 486 | - if ( this.hasClass(el, oldClassName) ) { // in case of multiple adjacent | |
| 487 | - this.replaceClass(el, oldClassName, newClassName); | |
| 488 | - } | |
| 489 | - }; | |
| 490 | - | |
| 491 | - Y.Dom.batch(el, f, Y.Dom, true); | |
| 492 | - }, | |
| 493 | - | |
| 494 | - /** | |
| 495 | - * Generates a unique ID | |
| 496 | - * @method generateId | |
| 497 | - * @param {String | HTMLElement | Array} el (optional) An optional element array of elements to add an ID to (no ID is added if one is already present). | |
| 498 | - * @param {String} prefix (optional) an optional prefix to use (defaults to "yui-gen"). | |
| 499 | - * @return {String | Array} The generated ID, or array of generated IDs (or original ID if already present on an element) | |
| 500 | - */ | |
| 501 | - generateId: function(el, prefix) { | |
| 502 | - prefix = prefix || 'yui-gen'; | |
| 503 | - el = el || {}; | |
| 504 | - | |
| 505 | - var f = function(el) { | |
| 506 | - if (el) { | |
| 507 | - el = Y.Dom.get(el); | |
| 508 | - } else { | |
| 509 | - el = {}; // just generating ID in this case | |
| 510 | - } | |
| 511 | - | |
| 512 | - if (!el.id) { | |
| 513 | - el.id = prefix + id_counter++; | |
| 514 | - } // dont override existing | |
| 515 | - | |
| 516 | - | |
| 517 | - return el.id; | |
| 518 | - }; | |
| 519 | - | |
| 520 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 521 | - }, | |
| 522 | - | |
| 523 | - /** | |
| 524 | - * Determines whether an HTMLElement is an ancestor of another HTML element in the DOM hierarchy. | |
| 525 | - * @method isAncestor | |
| 526 | - * @param {String | HTMLElement} haystack The possible ancestor | |
| 527 | - * @param {String | HTMLElement} needle The possible descendent | |
| 528 | - * @return {Boolean} Whether or not the haystack is an ancestor of needle | |
| 529 | - */ | |
| 530 | - isAncestor: function(haystack, needle) { | |
| 531 | - haystack = Y.Dom.get(haystack); | |
| 532 | - if (!haystack || !needle) { return false; } | |
| 533 | - | |
| 534 | - var f = function(needle) { | |
| 535 | - if (haystack.contains && !isSafari) { // safari "contains" is broken | |
| 536 | - return haystack.contains(needle); | |
| 537 | - } | |
| 538 | - else if ( haystack.compareDocumentPosition ) { | |
| 539 | - return !!(haystack.compareDocumentPosition(needle) & 16); | |
| 540 | - } | |
| 541 | - else { // loop up and test each parent | |
| 542 | - var parent = needle.parentNode; | |
| 543 | - | |
| 544 | - while (parent) { | |
| 545 | - if (parent == haystack) { | |
| 546 | - return true; | |
| 547 | - } | |
| 548 | - else if (!parent.tagName || parent.tagName.toUpperCase() == 'HTML') { | |
| 549 | - return false; | |
| 550 | - } | |
| 551 | - | |
| 552 | - parent = parent.parentNode; | |
| 553 | - } | |
| 554 | - return false; | |
| 555 | - } | |
| 556 | - }; | |
| 557 | - | |
| 558 | - return Y.Dom.batch(needle, f, Y.Dom, true); | |
| 559 | - }, | |
| 560 | - | |
| 561 | - /** | |
| 562 | - * Determines whether an HTMLElement is present in the current document. | |
| 563 | - * @method inDocument | |
| 564 | - * @param {String | HTMLElement} el The element to search for | |
| 565 | - * @return {Boolean} Whether or not the element is present in the current document | |
| 566 | - */ | |
| 567 | - inDocument: function(el) { | |
| 568 | - var f = function(el) { | |
| 569 | - return this.isAncestor(document.documentElement, el); | |
| 570 | - }; | |
| 571 | - | |
| 572 | - return Y.Dom.batch(el, f, Y.Dom, true); | |
| 573 | - }, | |
| 574 | - | |
| 575 | - /** | |
| 576 | - * Returns a array of HTMLElements that pass the test applied by supplied boolean method. | |
| 577 | - * For optimized performance, include a tag and/or root node when possible. | |
| 578 | - * @method getElementsBy | |
| 579 | - * @param {Function} method - A boolean method for testing elements which receives the element as its only argument. | |
| 580 | - | |
| 581 | - * @param {String} tag (optional) The tag name of the elements being collected | |
| 582 | - * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point | |
| 583 | - */ | |
| 584 | - getElementsBy: function(method, tag, root) { | |
| 585 | - tag = tag || '*'; | |
| 586 | - root = Y.Dom.get(root) || document; | |
| 587 | - | |
| 588 | - var nodes = []; | |
| 589 | - var elements = root.getElementsByTagName(tag); | |
| 590 | - | |
| 591 | - if ( !elements.length && (tag == '*' && root.all) ) { | |
| 592 | - elements = root.all; // IE < 6 | |
| 593 | - } | |
| 594 | - | |
| 595 | - for (var i = 0, len = elements.length; i < len; ++i) { | |
| 596 | - if ( method(elements[i]) ) { nodes[nodes.length] = elements[i]; } | |
| 597 | - } | |
| 598 | - | |
| 599 | - | |
| 600 | - return nodes; | |
| 601 | - }, | |
| 602 | - | |
| 603 | - /** | |
| 604 | - * Returns an array of elements that have had the supplied method applied. | |
| 605 | - * The method is called with the element(s) as the first arg, and the optional param as the second ( method(el, o) ). | |
| 606 | - * @method batch | |
| 607 | - * @param {String | HTMLElement | Array} el (optional) An element or array of elements to apply the method to | |
| 608 | - * @param {Function} method The method to apply to the element(s) | |
| 609 | - * @param {Any} o (optional) An optional arg that is passed to the supplied method | |
| 610 | - * @param {Boolean} override (optional) Whether or not to override the scope of "method" with "o" | |
| 611 | - * @return {HTMLElement | Array} The element(s) with the method applied | |
| 612 | - */ | |
| 613 | - batch: function(el, method, o, override) { | |
| 614 | - var id = el; | |
| 615 | - el = Y.Dom.get(el); | |
| 616 | - | |
| 617 | - var scope = (override) ? o : window; | |
| 618 | - | |
| 619 | - if (!el || el.tagName || !el.length) { // is null or not a collection (tagName for SELECT and others that can be both an element and a collection) | |
| 620 | - if (!el) { | |
| 621 | - return false; | |
| 622 | - } | |
| 623 | - return method.call(scope, el, o); | |
| 624 | - } | |
| 625 | - | |
| 626 | - var collection = []; | |
| 627 | - | |
| 628 | - for (var i = 0, len = el.length; i < len; ++i) { | |
| 629 | - if (!el[i]) { | |
| 630 | - id = el[i]; | |
| 631 | - } | |
| 632 | - collection[collection.length] = method.call(scope, el[i], o); | |
| 633 | - } | |
| 634 | - | |
| 635 | - return collection; | |
| 636 | - }, | |
| 637 | - | |
| 638 | - /** | |
| 639 | - * Returns the height of the document. | |
| 640 | - * @method getDocumentHeight | |
| 641 | - * @return {Int} The height of the actual document (which includes the body and its margin). | |
| 642 | - */ | |
| 643 | - getDocumentHeight: function() { | |
| 644 | - var scrollHeight = (document.compatMode != 'CSS1Compat') ? document.body.scrollHeight : document.documentElement.scrollHeight; | |
| 645 | - | |
| 646 | - var h = Math.max(scrollHeight, Y.Dom.getViewportHeight()); | |
| 647 | - return h; | |
| 648 | - }, | |
| 649 | - | |
| 650 | - /** | |
| 651 | - * Returns the width of the document. | |
| 652 | - * @method getDocumentWidth | |
| 653 | - * @return {Int} The width of the actual document (which includes the body and its margin). | |
| 654 | - */ | |
| 655 | - getDocumentWidth: function() { | |
| 656 | - var scrollWidth = (document.compatMode != 'CSS1Compat') ? document.body.scrollWidth : document.documentElement.scrollWidth; | |
| 657 | - var w = Math.max(scrollWidth, Y.Dom.getViewportWidth()); | |
| 658 | - return w; | |
| 659 | - }, | |
| 660 | - | |
| 661 | - /** | |
| 662 | - * Returns the current height of the viewport. | |
| 663 | - * @method getViewportHeight | |
| 664 | - * @return {Int} The height of the viewable area of the page (excludes scrollbars). | |
| 665 | - */ | |
| 666 | - getViewportHeight: function() { | |
| 667 | - var height = self.innerHeight; // Safari, Opera | |
| 668 | - var mode = document.compatMode; | |
| 669 | - | |
| 670 | - if ( (mode || isIE) && !isOpera ) { // IE, Gecko | |
| 671 | - height = (mode == 'CSS1Compat') ? | |
| 672 | - document.documentElement.clientHeight : // Standards | |
| 673 | - document.body.clientHeight; // Quirks | |
| 674 | - } | |
| 675 | - | |
| 676 | - return height; | |
| 677 | - }, | |
| 678 | - | |
| 679 | - /** | |
| 680 | - * Returns the current width of the viewport. | |
| 681 | - * @method getViewportWidth | |
| 682 | - * @return {Int} The width of the viewable area of the page (excludes scrollbars). | |
| 683 | - */ | |
| 684 | - | |
| 685 | - getViewportWidth: function() { | |
| 686 | - var width = self.innerWidth; // Safari | |
| 687 | - var mode = document.compatMode; | |
| 688 | - | |
| 689 | - if (mode || isIE) { // IE, Gecko, Opera | |
| 690 | - width = (mode == 'CSS1Compat') ? | |
| 691 | - document.documentElement.clientWidth : // Standards | |
| 692 | - document.body.clientWidth; // Quirks | |
| 693 | - } | |
| 694 | - return width; | |
| 695 | - } | |
| 696 | - }; | |
| 697 | -})(); | |
| 698 | -/** | |
| 699 | - * A region is a representation of an object on a grid. It is defined | |
| 700 | - * by the top, right, bottom, left extents, so is rectangular by default. If | |
| 701 | - * other shapes are required, this class could be extended to support it. | |
| 702 | - * @namespace YAHOO.util | |
| 703 | - * @class Region | |
| 704 | - * @param {Int} t the top extent | |
| 705 | - * @param {Int} r the right extent | |
| 706 | - * @param {Int} b the bottom extent | |
| 707 | - * @param {Int} l the left extent | |
| 708 | - * @constructor | |
| 709 | - */ | |
| 710 | -YAHOO.util.Region = function(t, r, b, l) { | |
| 711 | - | |
| 712 | - /** | |
| 713 | - * The region's top extent | |
| 714 | - * @property top | |
| 715 | - * @type Int | |
| 716 | - */ | |
| 717 | - this.top = t; | |
| 718 | - | |
| 719 | - /** | |
| 720 | - * The region's top extent as index, for symmetry with set/getXY | |
| 721 | - * @property 1 | |
| 722 | - * @type Int | |
| 723 | - */ | |
| 724 | - this[1] = t; | |
| 725 | - | |
| 726 | - /** | |
| 727 | - * The region's right extent | |
| 728 | - * @property right | |
| 729 | - * @type int | |
| 730 | - */ | |
| 731 | - this.right = r; | |
| 732 | - | |
| 733 | - /** | |
| 734 | - * The region's bottom extent | |
| 735 | - * @property bottom | |
| 736 | - * @type Int | |
| 737 | - */ | |
| 738 | - this.bottom = b; | |
| 739 | - | |
| 740 | - /** | |
| 741 | - * The region's left extent | |
| 742 | - * @property left | |
| 743 | - * @type Int | |
| 744 | - */ | |
| 745 | - this.left = l; | |
| 746 | - | |
| 747 | - /** | |
| 748 | - * The region's left extent as index, for symmetry with set/getXY | |
| 749 | - * @property 0 | |
| 750 | - * @type Int | |
| 751 | - */ | |
| 752 | - this[0] = l; | |
| 753 | -}; | |
| 754 | - | |
| 755 | -/** | |
| 756 | - * Returns true if this region contains the region passed in | |
| 757 | - * @method contains | |
| 758 | - * @param {Region} region The region to evaluate | |
| 759 | - * @return {Boolean} True if the region is contained with this region, | |
| 760 | - * else false | |
| 761 | - */ | |
| 762 | -YAHOO.util.Region.prototype.contains = function(region) { | |
| 763 | - return ( region.left >= this.left && | |
| 764 | - region.right <= this.right && | |
| 765 | - region.top >= this.top && | |
| 766 | - region.bottom <= this.bottom ); | |
| 767 | - | |
| 768 | -}; | |
| 769 | - | |
| 770 | -/** | |
| 771 | - * Returns the area of the region | |
| 772 | - * @method getArea | |
| 773 | - * @return {Int} the region's area | |
| 774 | - */ | |
| 775 | -YAHOO.util.Region.prototype.getArea = function() { | |
| 776 | - return ( (this.bottom - this.top) * (this.right - this.left) ); | |
| 777 | -}; | |
| 778 | - | |
| 779 | -/** | |
| 780 | - * Returns the region where the passed in region overlaps with this one | |
| 781 | - * @method intersect | |
| 782 | - * @param {Region} region The region that intersects | |
| 783 | - * @return {Region} The overlap region, or null if there is no overlap | |
| 784 | - */ | |
| 785 | -YAHOO.util.Region.prototype.intersect = function(region) { | |
| 786 | - var t = Math.max( this.top, region.top ); | |
| 787 | - var r = Math.min( this.right, region.right ); | |
| 788 | - var b = Math.min( this.bottom, region.bottom ); | |
| 789 | - var l = Math.max( this.left, region.left ); | |
| 790 | - | |
| 791 | - if (b >= t && r >= l) { | |
| 792 | - return new YAHOO.util.Region(t, r, b, l); | |
| 793 | - } else { | |
| 794 | - return null; | |
| 795 | - } | |
| 796 | -}; | |
| 797 | - | |
| 798 | -/** | |
| 799 | - * Returns the region representing the smallest region that can contain both | |
| 800 | - * the passed in region and this region. | |
| 801 | - * @method union | |
| 802 | - * @param {Region} region The region that to create the union with | |
| 803 | - * @return {Region} The union region | |
| 804 | - */ | |
| 805 | -YAHOO.util.Region.prototype.union = function(region) { | |
| 806 | - var t = Math.min( this.top, region.top ); | |
| 807 | - var r = Math.max( this.right, region.right ); | |
| 808 | - var b = Math.max( this.bottom, region.bottom ); | |
| 809 | - var l = Math.min( this.left, region.left ); | |
| 810 | - | |
| 811 | - return new YAHOO.util.Region(t, r, b, l); | |
| 812 | -}; | |
| 813 | - | |
| 814 | -/** | |
| 815 | - * toString | |
| 816 | - * @method toString | |
| 817 | - * @return string the region properties | |
| 818 | - */ | |
| 819 | -YAHOO.util.Region.prototype.toString = function() { | |
| 820 | - return ( "Region {" + | |
| 821 | - "top: " + this.top + | |
| 822 | - ", right: " + this.right + | |
| 823 | - ", bottom: " + this.bottom + | |
| 824 | - ", left: " + this.left + | |
| 825 | - "}" ); | |
| 826 | -}; | |
| 827 | - | |
| 828 | -/** | |
| 829 | - * Returns a region that is occupied by the DOM element | |
| 830 | - * @method getRegion | |
| 831 | - * @param {HTMLElement} el The element | |
| 832 | - * @return {Region} The region that the element occupies | |
| 833 | - * @static | |
| 834 | - */ | |
| 835 | -YAHOO.util.Region.getRegion = function(el) { | |
| 836 | - var p = YAHOO.util.Dom.getXY(el); | |
| 837 | - | |
| 838 | - var t = p[1]; | |
| 839 | - var r = p[0] + el.offsetWidth; | |
| 840 | - var b = p[1] + el.offsetHeight; | |
| 841 | - var l = p[0]; | |
| 842 | - | |
| 843 | - return new YAHOO.util.Region(t, r, b, l); | |
| 844 | -}; | |
| 845 | - | |
| 846 | -///////////////////////////////////////////////////////////////////////////// | |
| 847 | - | |
| 848 | -/** | |
| 849 | - * A point is a region that is special in that it represents a single point on | |
| 850 | - * the grid. | |
| 851 | - * @namespace YAHOO.util | |
| 852 | - * @class Point | |
| 853 | - * @param {Int} x The X position of the point | |
| 854 | - * @param {Int} y The Y position of the point | |
| 855 | - * @constructor | |
| 856 | - * @extends YAHOO.util.Region | |
| 857 | - */ | |
| 858 | -YAHOO.util.Point = function(x, y) { | |
| 859 | - if (x instanceof Array) { // accept output from Dom.getXY | |
| 860 | - y = x[1]; | |
| 861 | - x = x[0]; | |
| 862 | - } | |
| 863 | - | |
| 864 | - /** | |
| 865 | - * The X position of the point, which is also the right, left and index zero (for Dom.getXY symmetry) | |
| 866 | - * @property x | |
| 867 | - * @type Int | |
| 868 | - */ | |
| 869 | - | |
| 870 | - this.x = this.right = this.left = this[0] = x; | |
| 871 | - | |
| 872 | - /** | |
| 873 | - * The Y position of the point, which is also the top, bottom and index one (for Dom.getXY symmetry) | |
| 874 | - * @property y | |
| 875 | - * @type Int | |
| 876 | - */ | |
| 877 | - this.y = this.top = this.bottom = this[1] = y; | |
| 878 | -}; | |
| 879 | - | |
| 880 | -YAHOO.util.Point.prototype = new YAHOO.util.Region(); | |
| 881 | - | |
| 1 | +(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf("opera")>-1),isSafari=(ua.indexOf("safari")>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf("gecko")>-1),isIE=(!isOpera&&ua.indexOf("msie")>-1);var _3={HYPHEN:/(-[a-z])/i};var _4=function(_5){if(!_3.HYPHEN.test(_5)){return _5;}if(propertyCache[_5]){return propertyCache[_5];}while(_3.HYPHEN.exec(_5)){_5=_5.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}propertyCache[_5]=_5;return _5;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,_7){var _8=null;var _9=document.defaultView.getComputedStyle(el,"");if(_9){_8=_9[_4(_7)];}return el.style[_7]||_8;};}else{if(document.documentElement.currentStyle&&isIE){getStyle=function(el,_b){switch(_4(_b)){case "opacity":var _c=100;try{_c=el.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(e){try{_c=el.filters("alpha").opacity;}catch(e){}}return _c/100;break;default:var _d=el.currentStyle?el.currentStyle[_b]:null;return (el.style[_b]||_d);}};}else{getStyle=function(el,_f){return el.style[_f];};}}if(isIE){setStyle=function(el,_11,val){switch(_11){case "opacity":if(typeof el.style.filter=="string"){el.style.filter="alpha(opacity="+val*100+")";if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}break;default:el.style[_11]=val;}};}else{setStyle=function(el,_14,val){el.style[_14]=val;};}YAHOO.util.Dom={get:function(el){if(!el){return null;}if(typeof el!="string"&&!(el instanceof Array)){return el;}if(typeof el=="string"){return document.getElementById(el);}else{var _17=[];for(var i=0,len=el.length;i<len;++i){_17[_17.length]=Y.Dom.get(el[i]);}return _17;}return null;},getStyle:function(el,_1a){_1a=_4(_1a);var f=function(_1c){return getStyle(_1c,_1a);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,_1e,val){_1e=_4(_1e);var f=function(_21){setStyle(_21,_1e,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,"display")=="none"){return false;}var _25=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var _29=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var _2a=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return [box.left+_2a,box.top+_29];}else{pos=[el.offsetLeft,el.offsetTop];_25=el.offsetParent;if(_25!=el){while(_25){pos[0]+=_25.offsetLeft;pos[1]+=_25.offsetTop;_25=_25.offsetParent;}}if(isSafari&&this.getStyle(el,"position")=="absolute"){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){_25=el.parentNode;}else{_25=null;}while(_25&&_25.tagName.toUpperCase()!="BODY"&&_25.tagName.toUpperCase()!="HTML"){if(Y.Dom.getStyle(_25,"display")!="inline"){pos[0]-=_25.scrollLeft;pos[1]-=_25.scrollTop;}if(_25.parentNode){_25=_25.parentNode;}else{_25=null;}}return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,_33){var f=function(el){var _36=this.getStyle(el,"position");if(_36=="static"){this.setStyle(el,"position","relative");_36="relative";}var _37=this.getXY(el);if(_37===false){return false;}var _38=[parseInt(this.getStyle(el,"left"),10),parseInt(this.getStyle(el,"top"),10)];if(isNaN(_38[0])){_38[0]=(_36=="relative")?0:el.offsetLeft;}if(isNaN(_38[1])){_38[1]=(_36=="relative")?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-_37[0]+_38[0]+"px";}if(pos[1]!==null){el.style.top=pos[1]-_37[1]+_38[1]+"px";}var _39=this.getXY(el);if(!_33&&(_39[0]!=pos[0]||_39[1]!=pos[1])){this.setXY(el,pos,true);}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var _41=new Y.Region.getRegion(el);return _41;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(_42,tag,_44){var _45=function(el){return Y.Dom.hasClass(el,_42);};return Y.Dom.getElementsBy(_45,tag,_44);},hasClass:function(el,_48){var re=new RegExp("(?:^|\\s+)"+_48+"(?:\\s+|$)");var f=function(el){return re.test(el["className"]);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,_4d){var f=function(el){if(this.hasClass(el,_4d)){return;}el["className"]=[el["className"],_4d].join(" ");};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,_51){var re=new RegExp("(?:^|\\s+)"+_51+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_51)){return;}var c=el["className"];el["className"]=c.replace(re," ");if(this.hasClass(el,_51)){this.removeClass(el,_51);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,_57,_58){if(_57===_58){return false;}var re=new RegExp("(?:^|\\s+)"+_57+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_57)){this.addClass(el,_58);return;}el["className"]=el["className"].replace(re," "+_58+" ");if(this.hasClass(el,_57)){this.replaceClass(el,_57,_58);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,_5d){_5d=_5d||"yui-gen";el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}if(!el.id){el.id=_5d+id_counter++;}return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(_60,_61){_60=Y.Dom.get(_60);if(!_60||!_61){return false;}var f=function(_63){if(_60.contains&&!isSafari){return _60.contains(_63);}else{if(_60.compareDocumentPosition){return !!(_60.compareDocumentPosition(_63)&16);}else{var _64=_63.parentNode;while(_64){if(_64==_60){return true;}else{if(!_64.tagName||_64.tagName.toUpperCase()=="HTML"){return false;}}_64=_64.parentNode;}return false;}}};return Y.Dom.batch(_61,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(_68,tag,_6a){tag=tag||"*";_6a=Y.Dom.get(_6a)||document;var _6b=[];var _6c=_6a.getElementsByTagName(tag);if(!_6c.length&&(tag=="*"&&_6a.all)){_6c=_6a.all;}for(var i=0,len=_6c.length;i<len;++i){if(_68(_6c[i])){_6b[_6b.length]=_6c[i];}}return _6b;},batch:function(el,_6f,o,_71){var id=el;el=Y.Dom.get(el);var _73=(_71)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return _6f.call(_73,el,o);}var _74=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}_74[_74.length]=_6f.call(_73,el[i],o);}return _74;},getDocumentHeight:function(){var _76=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(_76,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var _78=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(_78,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var _7a=self.innerHeight;var _7b=document.compatMode;if((_7b||isIE)&&!isOpera){_7a=(_7b=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;}return _7a;},getViewportWidth:function(){var _7c=self.innerWidth;var _7d=document.compatMode;if(_7d||isIE){_7c=(_7d=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;}return _7c;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(_82){return (_82.left>=this.left&&_82.right<=this.right&&_82.top>=this.top&&_82.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return ((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(_83){var t=Math.max(this.top,_83.top);var r=Math.min(this.right,_83.right);var b=Math.min(this.bottom,_83.bottom);var l=Math.max(this.left,_83.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(_88){var t=Math.min(this.top,_88.top);var r=Math.max(this.right,_88.right);var b=Math.max(this.bottom,_88.bottom);var l=Math.min(this.left,_88.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return ("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region(); | |
| 882 | 2 | \ No newline at end of file | ... | ... |
thirdpartyjs/yui/dragdrop/dragdrop.js
| 1 | -/* | |
| 2 | -Copyright (c) 2006, Yahoo! Inc. All rights reserved. | |
| 3 | -Code licensed under the BSD License: | |
| 4 | -http://developer.yahoo.net/yui/license.txt | |
| 5 | -version: 0.12.0 | |
| 6 | -*/ | |
| 7 | - | |
| 8 | -(function() { | |
| 9 | - | |
| 10 | -var Event=YAHOO.util.Event; | |
| 11 | -var Dom=YAHOO.util.Dom; | |
| 12 | - | |
| 13 | -/** | |
| 14 | - * Defines the interface and base operation of items that that can be | |
| 15 | - * dragged or can be drop targets. It was designed to be extended, overriding | |
| 16 | - * the event handlers for startDrag, onDrag, onDragOver, onDragOut. | |
| 17 | - * Up to three html elements can be associated with a DragDrop instance: | |
| 18 | - * <ul> | |
| 19 | - * <li>linked element: the element that is passed into the constructor. | |
| 20 | - * This is the element which defines the boundaries for interaction with | |
| 21 | - * other DragDrop objects.</li> | |
| 22 | - * <li>handle element(s): The drag operation only occurs if the element that | |
| 23 | - * was clicked matches a handle element. By default this is the linked | |
| 24 | - * element, but there are times that you will want only a portion of the | |
| 25 | - * linked element to initiate the drag operation, and the setHandleElId() | |
| 26 | - * method provides a way to define this.</li> | |
| 27 | - * <li>drag element: this represents an the element that would be moved along | |
| 28 | - * with the cursor during a drag operation. By default, this is the linked | |
| 29 | - * element itself as in {@link YAHOO.util.DD}. setDragElId() lets you define | |
| 30 | - * a separate element that would be moved, as in {@link YAHOO.util.DDProxy} | |
| 31 | - * </li> | |
| 32 | - * </ul> | |
| 33 | - * This class should not be instantiated until the onload event to ensure that | |
| 34 | - * the associated elements are available. | |
| 35 | - * The following would define a DragDrop obj that would interact with any | |
| 36 | - * other DragDrop obj in the "group1" group: | |
| 37 | - * <pre> | |
| 38 | - * dd = new YAHOO.util.DragDrop("div1", "group1"); | |
| 39 | - * </pre> | |
| 40 | - * Since none of the event handlers have been implemented, nothing would | |
| 41 | - * actually happen if you were to run the code above. Normally you would | |
| 42 | - * override this class or one of the default implementations, but you can | |
| 43 | - * also override the methods you want on an instance of the class... | |
| 44 | - * <pre> | |
| 45 | - * dd.onDragDrop = function(e, id) { | |
| 46 | - * alert("dd was dropped on " + id); | |
| 47 | - * } | |
| 48 | - * </pre> | |
| 49 | - * @namespace YAHOO.util | |
| 50 | - * @class DragDrop | |
| 51 | - * @constructor | |
| 52 | - * @param {String} id of the element that is linked to this instance | |
| 53 | - * @param {String} sGroup the group of related DragDrop objects | |
| 54 | - * @param {object} config an object containing configurable attributes | |
| 55 | - * Valid properties for DragDrop: | |
| 56 | - * padding, isTarget, maintainOffset, primaryButtonOnly | |
| 57 | - */ | |
| 58 | -YAHOO.util.DragDrop = function(id, sGroup, config) { | |
| 59 | - if (id) { | |
| 60 | - this.init(id, sGroup, config); | |
| 61 | - } | |
| 62 | -}; | |
| 63 | - | |
| 64 | -YAHOO.util.DragDrop.prototype = { | |
| 65 | - | |
| 66 | - /** | |
| 67 | - * The id of the element associated with this object. This is what we | |
| 68 | - * refer to as the "linked element" because the size and position of | |
| 69 | - * this element is used to determine when the drag and drop objects have | |
| 70 | - * interacted. | |
| 71 | - * @property id | |
| 72 | - * @type String | |
| 73 | - */ | |
| 74 | - id: null, | |
| 75 | - | |
| 76 | - /** | |
| 77 | - * Configuration attributes passed into the constructor | |
| 78 | - * @property config | |
| 79 | - * @type object | |
| 80 | - */ | |
| 81 | - config: null, | |
| 82 | - | |
| 83 | - /** | |
| 84 | - * The id of the element that will be dragged. By default this is same | |
| 85 | - * as the linked element , but could be changed to another element. Ex: | |
| 86 | - * YAHOO.util.DDProxy | |
| 87 | - * @property dragElId | |
| 88 | - * @type String | |
| 89 | - * @private | |
| 90 | - */ | |
| 91 | - dragElId: null, | |
| 92 | - | |
| 93 | - /** | |
| 94 | - * the id of the element that initiates the drag operation. By default | |
| 95 | - * this is the linked element, but could be changed to be a child of this | |
| 96 | - * element. This lets us do things like only starting the drag when the | |
| 97 | - * header element within the linked html element is clicked. | |
| 98 | - * @property handleElId | |
| 99 | - * @type String | |
| 100 | - * @private | |
| 101 | - */ | |
| 102 | - handleElId: null, | |
| 103 | - | |
| 104 | - /** | |
| 105 | - * An associative array of HTML tags that will be ignored if clicked. | |
| 106 | - * @property invalidHandleTypes | |
| 107 | - * @type {string: string} | |
| 108 | - */ | |
| 109 | - invalidHandleTypes: null, | |
| 110 | - | |
| 111 | - /** | |
| 112 | - * An associative array of ids for elements that will be ignored if clicked | |
| 113 | - * @property invalidHandleIds | |
| 114 | - * @type {string: string} | |
| 115 | - */ | |
| 116 | - invalidHandleIds: null, | |
| 117 | - | |
| 118 | - /** | |
| 119 | - * An indexted array of css class names for elements that will be ignored | |
| 120 | - * if clicked. | |
| 121 | - * @property invalidHandleClasses | |
| 122 | - * @type string[] | |
| 123 | - */ | |
| 124 | - invalidHandleClasses: null, | |
| 125 | - | |
| 126 | - /** | |
| 127 | - * The linked element's absolute X position at the time the drag was | |
| 128 | - * started | |
| 129 | - * @property startPageX | |
| 130 | - * @type int | |
| 131 | - * @private | |
| 132 | - */ | |
| 133 | - startPageX: 0, | |
| 134 | - | |
| 135 | - /** | |
| 136 | - * The linked element's absolute X position at the time the drag was | |
| 137 | - * started | |
| 138 | - * @property startPageY | |
| 139 | - * @type int | |
| 140 | - * @private | |
| 141 | - */ | |
| 142 | - startPageY: 0, | |
| 143 | - | |
| 144 | - /** | |
| 145 | - * The group defines a logical collection of DragDrop objects that are | |
| 146 | - * related. Instances only get events when interacting with other | |
| 147 | - * DragDrop object in the same group. This lets us define multiple | |
| 148 | - * groups using a single DragDrop subclass if we want. | |
| 149 | - * @property groups | |
| 150 | - * @type {string: string} | |
| 151 | - */ | |
| 152 | - groups: null, | |
| 153 | - | |
| 154 | - /** | |
| 155 | - * Individual drag/drop instances can be locked. This will prevent | |
| 156 | - * onmousedown start drag. | |
| 157 | - * @property locked | |
| 158 | - * @type boolean | |
| 159 | - * @private | |
| 160 | - */ | |
| 161 | - locked: false, | |
| 162 | - | |
| 163 | - /** | |
| 164 | - * Lock this instance | |
| 165 | - * @method lock | |
| 166 | - */ | |
| 167 | - lock: function() { this.locked = true; }, | |
| 168 | - | |
| 169 | - /** | |
| 170 | - * Unlock this instace | |
| 171 | - * @method unlock | |
| 172 | - */ | |
| 173 | - unlock: function() { this.locked = false; }, | |
| 174 | - | |
| 175 | - /** | |
| 176 | - * By default, all insances can be a drop target. This can be disabled by | |
| 177 | - * setting isTarget to false. | |
| 178 | - * @method isTarget | |
| 179 | - * @type boolean | |
| 180 | - */ | |
| 181 | - isTarget: true, | |
| 182 | - | |
| 183 | - /** | |
| 184 | - * The padding configured for this drag and drop object for calculating | |
| 185 | - * the drop zone intersection with this object. | |
| 186 | - * @method padding | |
| 187 | - * @type int[] | |
| 188 | - */ | |
| 189 | - padding: null, | |
| 190 | - | |
| 191 | - /** | |
| 192 | - * Cached reference to the linked element | |
| 193 | - * @property _domRef | |
| 194 | - * @private | |
| 195 | - */ | |
| 196 | - _domRef: null, | |
| 197 | - | |
| 198 | - /** | |
| 199 | - * Internal typeof flag | |
| 200 | - * @property __ygDragDrop | |
| 201 | - * @private | |
| 202 | - */ | |
| 203 | - __ygDragDrop: true, | |
| 204 | - | |
| 205 | - /** | |
| 206 | - * Set to true when horizontal contraints are applied | |
| 207 | - * @property constrainX | |
| 208 | - * @type boolean | |
| 209 | - * @private | |
| 210 | - */ | |
| 211 | - constrainX: false, | |
| 212 | - | |
| 213 | - /** | |
| 214 | - * Set to true when vertical contraints are applied | |
| 215 | - * @property constrainY | |
| 216 | - * @type boolean | |
| 217 | - * @private | |
| 218 | - */ | |
| 219 | - constrainY: false, | |
| 220 | - | |
| 221 | - /** | |
| 222 | - * The left constraint | |
| 223 | - * @property minX | |
| 224 | - * @type int | |
| 225 | - * @private | |
| 226 | - */ | |
| 227 | - minX: 0, | |
| 228 | - | |
| 229 | - /** | |
| 230 | - * The right constraint | |
| 231 | - * @property maxX | |
| 232 | - * @type int | |
| 233 | - * @private | |
| 234 | - */ | |
| 235 | - maxX: 0, | |
| 236 | - | |
| 237 | - /** | |
| 238 | - * The up constraint | |
| 239 | - * @property minY | |
| 240 | - * @type int | |
| 241 | - * @type int | |
| 242 | - * @private | |
| 243 | - */ | |
| 244 | - minY: 0, | |
| 245 | - | |
| 246 | - /** | |
| 247 | - * The down constraint | |
| 248 | - * @property maxY | |
| 249 | - * @type int | |
| 250 | - * @private | |
| 251 | - */ | |
| 252 | - maxY: 0, | |
| 253 | - | |
| 254 | - /** | |
| 255 | - * Maintain offsets when we resetconstraints. Set to true when you want | |
| 256 | - * the position of the element relative to its parent to stay the same | |
| 257 | - * when the page changes | |
| 258 | - * | |
| 259 | - * @property maintainOffset | |
| 260 | - * @type boolean | |
| 261 | - */ | |
| 262 | - maintainOffset: false, | |
| 263 | - | |
| 264 | - /** | |
| 265 | - * Array of pixel locations the element will snap to if we specified a | |
| 266 | - * horizontal graduation/interval. This array is generated automatically | |
| 267 | - * when you define a tick interval. | |
| 268 | - * @property xTicks | |
| 269 | - * @type int[] | |
| 270 | - */ | |
| 271 | - xTicks: null, | |
| 272 | - | |
| 273 | - /** | |
| 274 | - * Array of pixel locations the element will snap to if we specified a | |
| 275 | - * vertical graduation/interval. This array is generated automatically | |
| 276 | - * when you define a tick interval. | |
| 277 | - * @property yTicks | |
| 278 | - * @type int[] | |
| 279 | - */ | |
| 280 | - yTicks: null, | |
| 281 | - | |
| 282 | - /** | |
| 283 | - * By default the drag and drop instance will only respond to the primary | |
| 284 | - * button click (left button for a right-handed mouse). Set to true to | |
| 285 | - * allow drag and drop to start with any mouse click that is propogated | |
| 286 | - * by the browser | |
| 287 | - * @property primaryButtonOnly | |
| 288 | - * @type boolean | |
| 289 | - */ | |
| 290 | - primaryButtonOnly: true, | |
| 291 | - | |
| 292 | - /** | |
| 293 | - * The availabe property is false until the linked dom element is accessible. | |
| 294 | - * @property available | |
| 295 | - * @type boolean | |
| 296 | - */ | |
| 297 | - available: false, | |
| 298 | - | |
| 299 | - /** | |
| 300 | - * By default, drags can only be initiated if the mousedown occurs in the | |
| 301 | - * region the linked element is. This is done in part to work around a | |
| 302 | - * bug in some browsers that mis-report the mousedown if the previous | |
| 303 | - * mouseup happened outside of the window. This property is set to true | |
| 304 | - * if outer handles are defined. | |
| 305 | - * | |
| 306 | - * @property hasOuterHandles | |
| 307 | - * @type boolean | |
| 308 | - * @default false | |
| 309 | - */ | |
| 310 | - hasOuterHandles: false, | |
| 311 | - | |
| 312 | - /** | |
| 313 | - * Code that executes immediately before the startDrag event | |
| 314 | - * @method b4StartDrag | |
| 315 | - * @private | |
| 316 | - */ | |
| 317 | - b4StartDrag: function(x, y) { }, | |
| 318 | - | |
| 319 | - /** | |
| 320 | - * Abstract method called after a drag/drop object is clicked | |
| 321 | - * and the drag or mousedown time thresholds have beeen met. | |
| 322 | - * @method startDrag | |
| 323 | - * @param {int} X click location | |
| 324 | - * @param {int} Y click location | |
| 325 | - */ | |
| 326 | - startDrag: function(x, y) { /* override this */ }, | |
| 327 | - | |
| 328 | - /** | |
| 329 | - * Code that executes immediately before the onDrag event | |
| 330 | - * @method b4Drag | |
| 331 | - * @private | |
| 332 | - */ | |
| 333 | - b4Drag: function(e) { }, | |
| 334 | - | |
| 335 | - /** | |
| 336 | - * Abstract method called during the onMouseMove event while dragging an | |
| 337 | - * object. | |
| 338 | - * @method onDrag | |
| 339 | - * @param {Event} e the mousemove event | |
| 340 | - */ | |
| 341 | - onDrag: function(e) { /* override this */ }, | |
| 342 | - | |
| 343 | - /** | |
| 344 | - * Abstract method called when this element fist begins hovering over | |
| 345 | - * another DragDrop obj | |
| 346 | - * @method onDragEnter | |
| 347 | - * @param {Event} e the mousemove event | |
| 348 | - * @param {String|DragDrop[]} id In POINT mode, the element | |
| 349 | - * id this is hovering over. In INTERSECT mode, an array of one or more | |
| 350 | - * dragdrop items being hovered over. | |
| 351 | - */ | |
| 352 | - onDragEnter: function(e, id) { /* override this */ }, | |
| 353 | - | |
| 354 | - /** | |
| 355 | - * Code that executes immediately before the onDragOver event | |
| 356 | - * @method b4DragOver | |
| 357 | - * @private | |
| 358 | - */ | |
| 359 | - b4DragOver: function(e) { }, | |
| 360 | - | |
| 361 | - /** | |
| 362 | - * Abstract method called when this element is hovering over another | |
| 363 | - * DragDrop obj | |
| 364 | - * @method onDragOver | |
| 365 | - * @param {Event} e the mousemove event | |
| 366 | - * @param {String|DragDrop[]} id In POINT mode, the element | |
| 367 | - * id this is hovering over. In INTERSECT mode, an array of dd items | |
| 368 | - * being hovered over. | |
| 369 | - */ | |
| 370 | - onDragOver: function(e, id) { /* override this */ }, | |
| 371 | - | |
| 372 | - /** | |
| 373 | - * Code that executes immediately before the onDragOut event | |
| 374 | - * @method b4DragOut | |
| 375 | - * @private | |
| 376 | - */ | |
| 377 | - b4DragOut: function(e) { }, | |
| 378 | - | |
| 379 | - /** | |
| 380 | - * Abstract method called when we are no longer hovering over an element | |
| 381 | - * @method onDragOut | |
| 382 | - * @param {Event} e the mousemove event | |
| 383 | - * @param {String|DragDrop[]} id In POINT mode, the element | |
| 384 | - * id this was hovering over. In INTERSECT mode, an array of dd items | |
| 385 | - * that the mouse is no longer over. | |
| 386 | - */ | |
| 387 | - onDragOut: function(e, id) { /* override this */ }, | |
| 388 | - | |
| 389 | - /** | |
| 390 | - * Code that executes immediately before the onDragDrop event | |
| 391 | - * @method b4DragDrop | |
| 392 | - * @private | |
| 393 | - */ | |
| 394 | - b4DragDrop: function(e) { }, | |
| 395 | - | |
| 396 | - /** | |
| 397 | - * Abstract method called when this item is dropped on another DragDrop | |
| 398 | - * obj | |
| 399 | - * @method onDragDrop | |
| 400 | - * @param {Event} e the mouseup event | |
| 401 | - * @param {String|DragDrop[]} id In POINT mode, the element | |
| 402 | - * id this was dropped on. In INTERSECT mode, an array of dd items this | |
| 403 | - * was dropped on. | |
| 404 | - */ | |
| 405 | - onDragDrop: function(e, id) { /* override this */ }, | |
| 406 | - | |
| 407 | - /** | |
| 408 | - * Abstract method called when this item is dropped on an area with no | |
| 409 | - * drop target | |
| 410 | - * @method onInvalidDrop | |
| 411 | - * @param {Event} e the mouseup event | |
| 412 | - */ | |
| 413 | - onInvalidDrop: function(e) { /* override this */ }, | |
| 414 | - | |
| 415 | - /** | |
| 416 | - * Code that executes immediately before the endDrag event | |
| 417 | - * @method b4EndDrag | |
| 418 | - * @private | |
| 419 | - */ | |
| 420 | - b4EndDrag: function(e) { }, | |
| 421 | - | |
| 422 | - /** | |
| 423 | - * Fired when we are done dragging the object | |
| 424 | - * @method endDrag | |
| 425 | - * @param {Event} e the mouseup event | |
| 426 | - */ | |
| 427 | - endDrag: function(e) { /* override this */ }, | |
| 428 | - | |
| 429 | - /** | |
| 430 | - * Code executed immediately before the onMouseDown event | |
| 431 | - * @method b4MouseDown | |
| 432 | - * @param {Event} e the mousedown event | |
| 433 | - * @private | |
| 434 | - */ | |
| 435 | - b4MouseDown: function(e) { }, | |
| 436 | - | |
| 437 | - /** | |
| 438 | - * Event handler that fires when a drag/drop obj gets a mousedown | |
| 439 | - * @method onMouseDown | |
| 440 | - * @param {Event} e the mousedown event | |
| 441 | - */ | |
| 442 | - onMouseDown: function(e) { /* override this */ }, | |
| 443 | - | |
| 444 | - /** | |
| 445 | - * Event handler that fires when a drag/drop obj gets a mouseup | |
| 446 | - * @method onMouseUp | |
| 447 | - * @param {Event} e the mouseup event | |
| 448 | - */ | |
| 449 | - onMouseUp: function(e) { /* override this */ }, | |
| 450 | - | |
| 451 | - /** | |
| 452 | - * Override the onAvailable method to do what is needed after the initial | |
| 453 | - * position was determined. | |
| 454 | - * @method onAvailable | |
| 455 | - */ | |
| 456 | - onAvailable: function () { | |
| 457 | - }, | |
| 458 | - | |
| 459 | - /** | |
| 460 | - * Returns a reference to the linked element | |
| 461 | - * @method getEl | |
| 462 | - * @return {HTMLElement} the html element | |
| 463 | - */ | |
| 464 | - getEl: function() { | |
| 465 | - if (!this._domRef) { | |
| 466 | - this._domRef = Dom.get(this.id); | |
| 467 | - } | |
| 468 | - | |
| 469 | - return this._domRef; | |
| 470 | - }, | |
| 471 | - | |
| 472 | - /** | |
| 473 | - * Returns a reference to the actual element to drag. By default this is | |
| 474 | - * the same as the html element, but it can be assigned to another | |
| 475 | - * element. An example of this can be found in YAHOO.util.DDProxy | |
| 476 | - * @method getDragEl | |
| 477 | - * @return {HTMLElement} the html element | |
| 478 | - */ | |
| 479 | - getDragEl: function() { | |
| 480 | - return Dom.get(this.dragElId); | |
| 481 | - }, | |
| 482 | - | |
| 483 | - /** | |
| 484 | - * Sets up the DragDrop object. Must be called in the constructor of any | |
| 485 | - * YAHOO.util.DragDrop subclass | |
| 486 | - * @method init | |
| 487 | - * @param id the id of the linked element | |
| 488 | - * @param {String} sGroup the group of related items | |
| 489 | - * @param {object} config configuration attributes | |
| 490 | - */ | |
| 491 | - init: function(id, sGroup, config) { | |
| 492 | - this.initTarget(id, sGroup, config); | |
| 493 | - Event.on(this.id, "mousedown", this.handleMouseDown, this, true); | |
| 494 | - // Event.on(this.id, "selectstart", Event.preventDefault); | |
| 495 | - }, | |
| 496 | - | |
| 497 | - /** | |
| 498 | - * Initializes Targeting functionality only... the object does not | |
| 499 | - * get a mousedown handler. | |
| 500 | - * @method initTarget | |
| 501 | - * @param id the id of the linked element | |
| 502 | - * @param {String} sGroup the group of related items | |
| 503 | - * @param {object} config configuration attributes | |
| 504 | - */ | |
| 505 | - initTarget: function(id, sGroup, config) { | |
| 506 | - | |
| 507 | - // configuration attributes | |
| 508 | - this.config = config || {}; | |
| 509 | - | |
| 510 | - // create a local reference to the drag and drop manager | |
| 511 | - this.DDM = YAHOO.util.DDM; | |
| 512 | - // initialize the groups array | |
| 513 | - this.groups = {}; | |
| 514 | - | |
| 515 | - // assume that we have an element reference instead of an id if the | |
| 516 | - // parameter is not a string | |
| 517 | - if (typeof id !== "string") { | |
| 518 | - YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 519 | - id = Dom.generateId(id); | |
| 520 | - } | |
| 521 | - | |
| 522 | - // set the id | |
| 523 | - this.id = id; | |
| 524 | - | |
| 525 | - // add to an interaction group | |
| 526 | - this.addToGroup((sGroup) ? sGroup : "default"); | |
| 527 | - | |
| 528 | - // We don't want to register this as the handle with the manager | |
| 529 | - // so we just set the id rather than calling the setter. | |
| 530 | - this.handleElId = id; | |
| 531 | - | |
| 532 | - Event.onAvailable(id, this.handleOnAvailable, this, true); | |
| 533 | - | |
| 534 | - | |
| 535 | - // the linked element is the element that gets dragged by default | |
| 536 | - this.setDragElId(id); | |
| 537 | - | |
| 538 | - // by default, clicked anchors will not start drag operations. | |
| 539 | - // @TODO what else should be here? Probably form fields. | |
| 540 | - this.invalidHandleTypes = { A: "A" }; | |
| 541 | - this.invalidHandleIds = {}; | |
| 542 | - this.invalidHandleClasses = []; | |
| 543 | - | |
| 544 | - this.applyConfig(); | |
| 545 | - }, | |
| 546 | - | |
| 547 | - /** | |
| 548 | - * Applies the configuration parameters that were passed into the constructor. | |
| 549 | - * This is supposed to happen at each level through the inheritance chain. So | |
| 550 | - * a DDProxy implentation will execute apply config on DDProxy, DD, and | |
| 551 | - * DragDrop in order to get all of the parameters that are available in | |
| 552 | - * each object. | |
| 553 | - * @method applyConfig | |
| 554 | - */ | |
| 555 | - applyConfig: function() { | |
| 556 | - | |
| 557 | - // configurable properties: | |
| 558 | - // padding, isTarget, maintainOffset, primaryButtonOnly | |
| 559 | - this.padding = this.config.padding || [0, 0, 0, 0]; | |
| 560 | - this.isTarget = (this.config.isTarget !== false); | |
| 561 | - this.maintainOffset = (this.config.maintainOffset); | |
| 562 | - this.primaryButtonOnly = (this.config.primaryButtonOnly !== false); | |
| 563 | - | |
| 564 | - }, | |
| 565 | - | |
| 566 | - /** | |
| 567 | - * Executed when the linked element is available | |
| 568 | - * @method handleOnAvailable | |
| 569 | - * @private | |
| 570 | - */ | |
| 571 | - handleOnAvailable: function() { | |
| 572 | - this.available = true; | |
| 573 | - this.resetConstraints(); | |
| 574 | - this.onAvailable(); | |
| 575 | - }, | |
| 576 | - | |
| 577 | - /** | |
| 578 | - * Configures the padding for the target zone in px. Effectively expands | |
| 579 | - * (or reduces) the virtual object size for targeting calculations. | |
| 580 | - * Supports css-style shorthand; if only one parameter is passed, all sides | |
| 581 | - * will have that padding, and if only two are passed, the top and bottom | |
| 582 | - * will have the first param, the left and right the second. | |
| 583 | - * @method setPadding | |
| 584 | - * @param {int} iTop Top pad | |
| 585 | - * @param {int} iRight Right pad | |
| 586 | - * @param {int} iBot Bot pad | |
| 587 | - * @param {int} iLeft Left pad | |
| 588 | - */ | |
| 589 | - setPadding: function(iTop, iRight, iBot, iLeft) { | |
| 590 | - // this.padding = [iLeft, iRight, iTop, iBot]; | |
| 591 | - if (!iRight && 0 !== iRight) { | |
| 592 | - this.padding = [iTop, iTop, iTop, iTop]; | |
| 593 | - } else if (!iBot && 0 !== iBot) { | |
| 594 | - this.padding = [iTop, iRight, iTop, iRight]; | |
| 595 | - } else { | |
| 596 | - this.padding = [iTop, iRight, iBot, iLeft]; | |
| 597 | - } | |
| 598 | - }, | |
| 599 | - | |
| 600 | - /** | |
| 601 | - * Stores the initial placement of the linked element. | |
| 602 | - * @method setInitialPosition | |
| 603 | - * @param {int} diffX the X offset, default 0 | |
| 604 | - * @param {int} diffY the Y offset, default 0 | |
| 605 | - */ | |
| 606 | - setInitPosition: function(diffX, diffY) { | |
| 607 | - var el = this.getEl(); | |
| 608 | - | |
| 609 | - if (!this.DDM.verifyEl(el)) { | |
| 610 | - return; | |
| 611 | - } | |
| 612 | - | |
| 613 | - var dx = diffX || 0; | |
| 614 | - var dy = diffY || 0; | |
| 615 | - | |
| 616 | - var p = Dom.getXY( el ); | |
| 617 | - | |
| 618 | - this.initPageX = p[0] - dx; | |
| 619 | - this.initPageY = p[1] - dy; | |
| 620 | - | |
| 621 | - this.lastPageX = p[0]; | |
| 622 | - this.lastPageY = p[1]; | |
| 623 | - | |
| 624 | - | |
| 625 | - this.setStartPosition(p); | |
| 626 | - }, | |
| 627 | - | |
| 628 | - /** | |
| 629 | - * Sets the start position of the element. This is set when the obj | |
| 630 | - * is initialized, the reset when a drag is started. | |
| 631 | - * @method setStartPosition | |
| 632 | - * @param pos current position (from previous lookup) | |
| 633 | - * @private | |
| 634 | - */ | |
| 635 | - setStartPosition: function(pos) { | |
| 636 | - var p = pos || Dom.getXY( this.getEl() ); | |
| 637 | - this.deltaSetXY = null; | |
| 638 | - | |
| 639 | - this.startPageX = p[0]; | |
| 640 | - this.startPageY = p[1]; | |
| 641 | - }, | |
| 642 | - | |
| 643 | - /** | |
| 644 | - * Add this instance to a group of related drag/drop objects. All | |
| 645 | - * instances belong to at least one group, and can belong to as many | |
| 646 | - * groups as needed. | |
| 647 | - * @method addToGroup | |
| 648 | - * @param sGroup {string} the name of the group | |
| 649 | - */ | |
| 650 | - addToGroup: function(sGroup) { | |
| 651 | - this.groups[sGroup] = true; | |
| 652 | - this.DDM.regDragDrop(this, sGroup); | |
| 653 | - }, | |
| 654 | - | |
| 655 | - /** | |
| 656 | - * Remove's this instance from the supplied interaction group | |
| 657 | - * @method removeFromGroup | |
| 658 | - * @param {string} sGroup The group to drop | |
| 659 | - */ | |
| 660 | - removeFromGroup: function(sGroup) { | |
| 661 | - if (this.groups[sGroup]) { | |
| 662 | - delete this.groups[sGroup]; | |
| 663 | - } | |
| 664 | - | |
| 665 | - this.DDM.removeDDFromGroup(this, sGroup); | |
| 666 | - }, | |
| 667 | - | |
| 668 | - /** | |
| 669 | - * Allows you to specify that an element other than the linked element | |
| 670 | - * will be moved with the cursor during a drag | |
| 671 | - * @method setDragElId | |
| 672 | - * @param id {string} the id of the element that will be used to initiate the drag | |
| 673 | - */ | |
| 674 | - setDragElId: function(id) { | |
| 675 | - this.dragElId = id; | |
| 676 | - }, | |
| 677 | - | |
| 678 | - /** | |
| 679 | - * Allows you to specify a child of the linked element that should be | |
| 680 | - * used to initiate the drag operation. An example of this would be if | |
| 681 | - * you have a content div with text and links. Clicking anywhere in the | |
| 682 | - * content area would normally start the drag operation. Use this method | |
| 683 | - * to specify that an element inside of the content div is the element | |
| 684 | - * that starts the drag operation. | |
| 685 | - * @method setHandleElId | |
| 686 | - * @param id {string} the id of the element that will be used to | |
| 687 | - * initiate the drag. | |
| 688 | - */ | |
| 689 | - setHandleElId: function(id) { | |
| 690 | - if (typeof id !== "string") { | |
| 691 | - YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 692 | - id = Dom.generateId(id); | |
| 693 | - } | |
| 694 | - this.handleElId = id; | |
| 695 | - this.DDM.regHandle(this.id, id); | |
| 696 | - }, | |
| 697 | - | |
| 698 | - /** | |
| 699 | - * Allows you to set an element outside of the linked element as a drag | |
| 700 | - * handle | |
| 701 | - * @method setOuterHandleElId | |
| 702 | - * @param id the id of the element that will be used to initiate the drag | |
| 703 | - */ | |
| 704 | - setOuterHandleElId: function(id) { | |
| 705 | - if (typeof id !== "string") { | |
| 706 | - YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 707 | - id = Dom.generateId(id); | |
| 708 | - } | |
| 709 | - Event.on(id, "mousedown", | |
| 710 | - this.handleMouseDown, this, true); | |
| 711 | - this.setHandleElId(id); | |
| 712 | - | |
| 713 | - this.hasOuterHandles = true; | |
| 714 | - }, | |
| 715 | - | |
| 716 | - /** | |
| 717 | - * Remove all drag and drop hooks for this element | |
| 718 | - * @method unreg | |
| 719 | - */ | |
| 720 | - unreg: function() { | |
| 721 | - Event.removeListener(this.id, "mousedown", | |
| 722 | - this.handleMouseDown); | |
| 723 | - this._domRef = null; | |
| 724 | - this.DDM._remove(this); | |
| 725 | - }, | |
| 726 | - | |
| 727 | - /** | |
| 728 | - * Returns true if this instance is locked, or the drag drop mgr is locked | |
| 729 | - * (meaning that all drag/drop is disabled on the page.) | |
| 730 | - * @method isLocked | |
| 731 | - * @return {boolean} true if this obj or all drag/drop is locked, else | |
| 732 | - * false | |
| 733 | - */ | |
| 734 | - isLocked: function() { | |
| 735 | - return (this.DDM.isLocked() || this.locked); | |
| 736 | - }, | |
| 737 | - | |
| 738 | - /** | |
| 739 | - * Fired when this object is clicked | |
| 740 | - * @method handleMouseDown | |
| 741 | - * @param {Event} e | |
| 742 | - * @param {YAHOO.util.DragDrop} oDD the clicked dd object (this dd obj) | |
| 743 | - * @private | |
| 744 | - */ | |
| 745 | - handleMouseDown: function(e, oDD) { | |
| 746 | - | |
| 747 | - var button = e.which || e.button; | |
| 748 | - | |
| 749 | - if (this.primaryButtonOnly && button > 1) { | |
| 750 | - return; | |
| 751 | - } | |
| 752 | - | |
| 753 | - if (this.isLocked()) { | |
| 754 | - return; | |
| 755 | - } | |
| 756 | - | |
| 757 | - this.DDM.refreshCache(this.groups); | |
| 758 | - // var self = this; | |
| 759 | - // setTimeout( function() { self.DDM.refreshCache(self.groups); }, 0); | |
| 760 | - | |
| 761 | - // Only process the event if we really clicked within the linked | |
| 762 | - // element. The reason we make this check is that in the case that | |
| 763 | - // another element was moved between the clicked element and the | |
| 764 | - // cursor in the time between the mousedown and mouseup events. When | |
| 765 | - // this happens, the element gets the next mousedown event | |
| 766 | - // regardless of where on the screen it happened. | |
| 767 | - var pt = new YAHOO.util.Point(Event.getPageX(e), Event.getPageY(e)); | |
| 768 | - if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) ) { | |
| 769 | - } else { | |
| 770 | - if (this.clickValidator(e)) { | |
| 771 | - // set the initial element position | |
| 772 | - this.setStartPosition(); | |
| 773 | - | |
| 774 | - | |
| 775 | - this.b4MouseDown(e); | |
| 776 | - this.onMouseDown(e); | |
| 777 | - this.DDM.handleMouseDown(e, this); | |
| 778 | - | |
| 779 | - this.DDM.stopEvent(e); | |
| 780 | - } else { | |
| 781 | - | |
| 782 | - | |
| 783 | - } | |
| 784 | - } | |
| 785 | - }, | |
| 786 | - | |
| 787 | - clickValidator: function(e) { | |
| 788 | - var target = Event.getTarget(e); | |
| 789 | - return ( this.isValidHandleChild(target) && | |
| 790 | - (this.id == this.handleElId || | |
| 791 | - this.DDM.handleWasClicked(target, this.id)) ); | |
| 792 | - }, | |
| 793 | - | |
| 794 | - /** | |
| 795 | - * Allows you to specify a tag name that should not start a drag operation | |
| 796 | - * when clicked. This is designed to facilitate embedding links within a | |
| 797 | - * drag handle that do something other than start the drag. | |
| 798 | - * @method addInvalidHandleType | |
| 799 | - * @param {string} tagName the type of element to exclude | |
| 800 | - */ | |
| 801 | - addInvalidHandleType: function(tagName) { | |
| 802 | - var type = tagName.toUpperCase(); | |
| 803 | - this.invalidHandleTypes[type] = type; | |
| 804 | - }, | |
| 805 | - | |
| 806 | - /** | |
| 807 | - * Lets you to specify an element id for a child of a drag handle | |
| 808 | - * that should not initiate a drag | |
| 809 | - * @method addInvalidHandleId | |
| 810 | - * @param {string} id the element id of the element you wish to ignore | |
| 811 | - */ | |
| 812 | - addInvalidHandleId: function(id) { | |
| 813 | - if (typeof id !== "string") { | |
| 814 | - YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 815 | - id = Dom.generateId(id); | |
| 816 | - } | |
| 817 | - this.invalidHandleIds[id] = id; | |
| 818 | - }, | |
| 819 | - | |
| 820 | - /** | |
| 821 | - * Lets you specify a css class of elements that will not initiate a drag | |
| 822 | - * @method addInvalidHandleClass | |
| 823 | - * @param {string} cssClass the class of the elements you wish to ignore | |
| 824 | - */ | |
| 825 | - addInvalidHandleClass: function(cssClass) { | |
| 826 | - this.invalidHandleClasses.push(cssClass); | |
| 827 | - }, | |
| 828 | - | |
| 829 | - /** | |
| 830 | - * Unsets an excluded tag name set by addInvalidHandleType | |
| 831 | - * @method removeInvalidHandleType | |
| 832 | - * @param {string} tagName the type of element to unexclude | |
| 833 | - */ | |
| 834 | - removeInvalidHandleType: function(tagName) { | |
| 835 | - var type = tagName.toUpperCase(); | |
| 836 | - // this.invalidHandleTypes[type] = null; | |
| 837 | - delete this.invalidHandleTypes[type]; | |
| 838 | - }, | |
| 839 | - | |
| 840 | - /** | |
| 841 | - * Unsets an invalid handle id | |
| 842 | - * @method removeInvalidHandleId | |
| 843 | - * @param {string} id the id of the element to re-enable | |
| 844 | - */ | |
| 845 | - removeInvalidHandleId: function(id) { | |
| 846 | - if (typeof id !== "string") { | |
| 847 | - YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 848 | - id = Dom.generateId(id); | |
| 849 | - } | |
| 850 | - delete this.invalidHandleIds[id]; | |
| 851 | - }, | |
| 852 | - | |
| 853 | - /** | |
| 854 | - * Unsets an invalid css class | |
| 855 | - * @method removeInvalidHandleClass | |
| 856 | - * @param {string} cssClass the class of the element(s) you wish to | |
| 857 | - * re-enable | |
| 858 | - */ | |
| 859 | - removeInvalidHandleClass: function(cssClass) { | |
| 860 | - for (var i=0, len=this.invalidHandleClasses.length; i<len; ++i) { | |
| 861 | - if (this.invalidHandleClasses[i] == cssClass) { | |
| 862 | - delete this.invalidHandleClasses[i]; | |
| 863 | - } | |
| 864 | - } | |
| 865 | - }, | |
| 866 | - | |
| 867 | - /** | |
| 868 | - * Checks the tag exclusion list to see if this click should be ignored | |
| 869 | - * @method isValidHandleChild | |
| 870 | - * @param {HTMLElement} node the HTMLElement to evaluate | |
| 871 | - * @return {boolean} true if this is a valid tag type, false if not | |
| 872 | - */ | |
| 873 | - isValidHandleChild: function(node) { | |
| 874 | - | |
| 875 | - var valid = true; | |
| 876 | - // var n = (node.nodeName == "#text") ? node.parentNode : node; | |
| 877 | - var nodeName; | |
| 878 | - try { | |
| 879 | - nodeName = node.nodeName.toUpperCase(); | |
| 880 | - } catch(e) { | |
| 881 | - nodeName = node.nodeName; | |
| 882 | - } | |
| 883 | - valid = valid && !this.invalidHandleTypes[nodeName]; | |
| 884 | - valid = valid && !this.invalidHandleIds[node.id]; | |
| 885 | - | |
| 886 | - for (var i=0, len=this.invalidHandleClasses.length; valid && i<len; ++i) { | |
| 887 | - valid = !Dom.hasClass(node, this.invalidHandleClasses[i]); | |
| 888 | - } | |
| 889 | - | |
| 890 | - if(node.className !== 'dashboard_block_handle'){ | |
| 891 | - valid = false; | |
| 892 | - } | |
| 893 | - | |
| 894 | - | |
| 895 | - return valid; | |
| 896 | - | |
| 897 | - }, | |
| 898 | - | |
| 899 | - /** | |
| 900 | - * Create the array of horizontal tick marks if an interval was specified | |
| 901 | - * in setXConstraint(). | |
| 902 | - * @method setXTicks | |
| 903 | - * @private | |
| 904 | - */ | |
| 905 | - setXTicks: function(iStartX, iTickSize) { | |
| 906 | - this.xTicks = []; | |
| 907 | - this.xTickSize = iTickSize; | |
| 908 | - | |
| 909 | - var tickMap = {}; | |
| 910 | - | |
| 911 | - for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) { | |
| 912 | - if (!tickMap[i]) { | |
| 913 | - this.xTicks[this.xTicks.length] = i; | |
| 914 | - tickMap[i] = true; | |
| 915 | - } | |
| 916 | - } | |
| 917 | - | |
| 918 | - for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) { | |
| 919 | - if (!tickMap[i]) { | |
| 920 | - this.xTicks[this.xTicks.length] = i; | |
| 921 | - tickMap[i] = true; | |
| 922 | - } | |
| 923 | - } | |
| 924 | - | |
| 925 | - this.xTicks.sort(this.DDM.numericSort) ; | |
| 926 | - }, | |
| 927 | - | |
| 928 | - /** | |
| 929 | - * Create the array of vertical tick marks if an interval was specified in | |
| 930 | - * setYConstraint(). | |
| 931 | - * @method setYTicks | |
| 932 | - * @private | |
| 933 | - */ | |
| 934 | - setYTicks: function(iStartY, iTickSize) { | |
| 935 | - this.yTicks = []; | |
| 936 | - this.yTickSize = iTickSize; | |
| 937 | - | |
| 938 | - var tickMap = {}; | |
| 939 | - | |
| 940 | - for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) { | |
| 941 | - if (!tickMap[i]) { | |
| 942 | - this.yTicks[this.yTicks.length] = i; | |
| 943 | - tickMap[i] = true; | |
| 944 | - } | |
| 945 | - } | |
| 946 | - | |
| 947 | - for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) { | |
| 948 | - if (!tickMap[i]) { | |
| 949 | - this.yTicks[this.yTicks.length] = i; | |
| 950 | - tickMap[i] = true; | |
| 951 | - } | |
| 952 | - } | |
| 953 | - | |
| 954 | - this.yTicks.sort(this.DDM.numericSort) ; | |
| 955 | - }, | |
| 956 | - | |
| 957 | - /** | |
| 958 | - * By default, the element can be dragged any place on the screen. Use | |
| 959 | - * this method to limit the horizontal travel of the element. Pass in | |
| 960 | - * 0,0 for the parameters if you want to lock the drag to the y axis. | |
| 961 | - * @method setXConstraint | |
| 962 | - * @param {int} iLeft the number of pixels the element can move to the left | |
| 963 | - * @param {int} iRight the number of pixels the element can move to the | |
| 964 | - * right | |
| 965 | - * @param {int} iTickSize optional parameter for specifying that the | |
| 966 | - * element | |
| 967 | - * should move iTickSize pixels at a time. | |
| 968 | - */ | |
| 969 | - setXConstraint: function(iLeft, iRight, iTickSize) { | |
| 970 | - this.leftConstraint = iLeft; | |
| 971 | - this.rightConstraint = iRight; | |
| 972 | - | |
| 973 | - this.minX = this.initPageX - iLeft; | |
| 974 | - this.maxX = this.initPageX + iRight; | |
| 975 | - if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); } | |
| 976 | - | |
| 977 | - this.constrainX = true; | |
| 978 | - }, | |
| 979 | - | |
| 980 | - /** | |
| 981 | - * Clears any constraints applied to this instance. Also clears ticks | |
| 982 | - * since they can't exist independent of a constraint at this time. | |
| 983 | - * @method clearConstraints | |
| 984 | - */ | |
| 985 | - clearConstraints: function() { | |
| 986 | - this.constrainX = false; | |
| 987 | - this.constrainY = false; | |
| 988 | - this.clearTicks(); | |
| 989 | - }, | |
| 990 | - | |
| 991 | - /** | |
| 992 | - * Clears any tick interval defined for this instance | |
| 993 | - * @method clearTicks | |
| 994 | - */ | |
| 995 | - clearTicks: function() { | |
| 996 | - this.xTicks = null; | |
| 997 | - this.yTicks = null; | |
| 998 | - this.xTickSize = 0; | |
| 999 | - this.yTickSize = 0; | |
| 1000 | - }, | |
| 1001 | - | |
| 1002 | - /** | |
| 1003 | - * By default, the element can be dragged any place on the screen. Set | |
| 1004 | - * this to limit the vertical travel of the element. Pass in 0,0 for the | |
| 1005 | - * parameters if you want to lock the drag to the x axis. | |
| 1006 | - * @method setYConstraint | |
| 1007 | - * @param {int} iUp the number of pixels the element can move up | |
| 1008 | - * @param {int} iDown the number of pixels the element can move down | |
| 1009 | - * @param {int} iTickSize optional parameter for specifying that the | |
| 1010 | - * element should move iTickSize pixels at a time. | |
| 1011 | - */ | |
| 1012 | - setYConstraint: function(iUp, iDown, iTickSize) { | |
| 1013 | - this.topConstraint = iUp; | |
| 1014 | - this.bottomConstraint = iDown; | |
| 1015 | - | |
| 1016 | - this.minY = this.initPageY - iUp; | |
| 1017 | - this.maxY = this.initPageY + iDown; | |
| 1018 | - if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); } | |
| 1019 | - | |
| 1020 | - this.constrainY = true; | |
| 1021 | - | |
| 1022 | - }, | |
| 1023 | - | |
| 1024 | - /** | |
| 1025 | - * resetConstraints must be called if you manually reposition a dd element. | |
| 1026 | - * @method resetConstraints | |
| 1027 | - * @param {boolean} maintainOffset | |
| 1028 | - */ | |
| 1029 | - resetConstraints: function() { | |
| 1030 | - | |
| 1031 | - | |
| 1032 | - // Maintain offsets if necessary | |
| 1033 | - if (this.initPageX || this.initPageX === 0) { | |
| 1034 | - // figure out how much this thing has moved | |
| 1035 | - var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0; | |
| 1036 | - var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0; | |
| 1037 | - | |
| 1038 | - this.setInitPosition(dx, dy); | |
| 1039 | - | |
| 1040 | - // This is the first time we have detected the element's position | |
| 1041 | - } else { | |
| 1042 | - this.setInitPosition(); | |
| 1043 | - } | |
| 1044 | - | |
| 1045 | - if (this.constrainX) { | |
| 1046 | - this.setXConstraint( this.leftConstraint, | |
| 1047 | - this.rightConstraint, | |
| 1048 | - this.xTickSize ); | |
| 1049 | - } | |
| 1050 | - | |
| 1051 | - if (this.constrainY) { | |
| 1052 | - this.setYConstraint( this.topConstraint, | |
| 1053 | - this.bottomConstraint, | |
| 1054 | - this.yTickSize ); | |
| 1055 | - } | |
| 1056 | - }, | |
| 1057 | - | |
| 1058 | - /** | |
| 1059 | - * Normally the drag element is moved pixel by pixel, but we can specify | |
| 1060 | - * that it move a number of pixels at a time. This method resolves the | |
| 1061 | - * location when we have it set up like this. | |
| 1062 | - * @method getTick | |
| 1063 | - * @param {int} val where we want to place the object | |
| 1064 | - * @param {int[]} tickArray sorted array of valid points | |
| 1065 | - * @return {int} the closest tick | |
| 1066 | - * @private | |
| 1067 | - */ | |
| 1068 | - getTick: function(val, tickArray) { | |
| 1069 | - | |
| 1070 | - if (!tickArray) { | |
| 1071 | - // If tick interval is not defined, it is effectively 1 pixel, | |
| 1072 | - // so we return the value passed to us. | |
| 1073 | - return val; | |
| 1074 | - } else if (tickArray[0] >= val) { | |
| 1075 | - // The value is lower than the first tick, so we return the first | |
| 1076 | - // tick. | |
| 1077 | - return tickArray[0]; | |
| 1078 | - } else { | |
| 1079 | - for (var i=0, len=tickArray.length; i<len; ++i) { | |
| 1080 | - var next = i + 1; | |
| 1081 | - if (tickArray[next] && tickArray[next] >= val) { | |
| 1082 | - var diff1 = val - tickArray[i]; | |
| 1083 | - var diff2 = tickArray[next] - val; | |
| 1084 | - return (diff2 > diff1) ? tickArray[i] : tickArray[next]; | |
| 1085 | - } | |
| 1086 | - } | |
| 1087 | - | |
| 1088 | - // The value is larger than the last tick, so we return the last | |
| 1089 | - // tick. | |
| 1090 | - return tickArray[tickArray.length - 1]; | |
| 1091 | - } | |
| 1092 | - }, | |
| 1093 | - | |
| 1094 | - /** | |
| 1095 | - * toString method | |
| 1096 | - * @method toString | |
| 1097 | - * @return {string} string representation of the dd obj | |
| 1098 | - */ | |
| 1099 | - toString: function() { | |
| 1100 | - return ("DragDrop " + this.id); | |
| 1101 | - } | |
| 1102 | - | |
| 1103 | -}; | |
| 1104 | - | |
| 1105 | -})(); | |
| 1106 | -/** | |
| 1107 | - * The drag and drop utility provides a framework for building drag and drop | |
| 1108 | - * applications. In addition to enabling drag and drop for specific elements, | |
| 1109 | - * the drag and drop elements are tracked by the manager class, and the | |
| 1110 | - * interactions between the various elements are tracked during the drag and | |
| 1111 | - * the implementing code is notified about these important moments. | |
| 1112 | - * @module dragdrop | |
| 1113 | - * @title Drag and Drop | |
| 1114 | - * @requires yahoo,dom,event | |
| 1115 | - * @namespace YAHOO.util | |
| 1116 | - */ | |
| 1117 | - | |
| 1118 | -// Only load the library once. Rewriting the manager class would orphan | |
| 1119 | -// existing drag and drop instances. | |
| 1120 | -if (!YAHOO.util.DragDropMgr) { | |
| 1121 | - | |
| 1122 | -/** | |
| 1123 | - * DragDropMgr is a singleton that tracks the element interaction for | |
| 1124 | - * all DragDrop items in the window. Generally, you will not call | |
| 1125 | - * this class directly, but it does have helper methods that could | |
| 1126 | - * be useful in your DragDrop implementations. | |
| 1127 | - * @class DragDropMgr | |
| 1128 | - * @static | |
| 1129 | - */ | |
| 1130 | -YAHOO.util.DragDropMgr = function() { | |
| 1131 | - | |
| 1132 | - var Event = YAHOO.util.Event; | |
| 1133 | - | |
| 1134 | - return { | |
| 1135 | - | |
| 1136 | - /** | |
| 1137 | - * Two dimensional Array of registered DragDrop objects. The first | |
| 1138 | - * dimension is the DragDrop item group, the second the DragDrop | |
| 1139 | - * object. | |
| 1140 | - * @property ids | |
| 1141 | - * @type {string: string} | |
| 1142 | - * @private | |
| 1143 | - * @static | |
| 1144 | - */ | |
| 1145 | - ids: {}, | |
| 1146 | - | |
| 1147 | - /** | |
| 1148 | - * Array of element ids defined as drag handles. Used to determine | |
| 1149 | - * if the element that generated the mousedown event is actually the | |
| 1150 | - * handle and not the html element itself. | |
| 1151 | - * @property handleIds | |
| 1152 | - * @type {string: string} | |
| 1153 | - * @private | |
| 1154 | - * @static | |
| 1155 | - */ | |
| 1156 | - handleIds: {}, | |
| 1157 | - | |
| 1158 | - /** | |
| 1159 | - * the DragDrop object that is currently being dragged | |
| 1160 | - * @property dragCurrent | |
| 1161 | - * @type DragDrop | |
| 1162 | - * @private | |
| 1163 | - * @static | |
| 1164 | - **/ | |
| 1165 | - dragCurrent: null, | |
| 1166 | - | |
| 1167 | - /** | |
| 1168 | - * the DragDrop object(s) that are being hovered over | |
| 1169 | - * @property dragOvers | |
| 1170 | - * @type Array | |
| 1171 | - * @private | |
| 1172 | - * @static | |
| 1173 | - */ | |
| 1174 | - dragOvers: {}, | |
| 1175 | - | |
| 1176 | - /** | |
| 1177 | - * the X distance between the cursor and the object being dragged | |
| 1178 | - * @property deltaX | |
| 1179 | - * @type int | |
| 1180 | - * @private | |
| 1181 | - * @static | |
| 1182 | - */ | |
| 1183 | - deltaX: 0, | |
| 1184 | - | |
| 1185 | - /** | |
| 1186 | - * the Y distance between the cursor and the object being dragged | |
| 1187 | - * @property deltaY | |
| 1188 | - * @type int | |
| 1189 | - * @private | |
| 1190 | - * @static | |
| 1191 | - */ | |
| 1192 | - deltaY: 0, | |
| 1193 | - | |
| 1194 | - /** | |
| 1195 | - * Flag to determine if we should prevent the default behavior of the | |
| 1196 | - * events we define. By default this is true, but this can be set to | |
| 1197 | - * false if you need the default behavior (not recommended) | |
| 1198 | - * @property preventDefault | |
| 1199 | - * @type boolean | |
| 1200 | - * @static | |
| 1201 | - */ | |
| 1202 | - preventDefault: true, | |
| 1203 | - | |
| 1204 | - /** | |
| 1205 | - * Flag to determine if we should stop the propagation of the events | |
| 1206 | - * we generate. This is true by default but you may want to set it to | |
| 1207 | - * false if the html element contains other features that require the | |
| 1208 | - * mouse click. | |
| 1209 | - * @property stopPropagation | |
| 1210 | - * @type boolean | |
| 1211 | - * @static | |
| 1212 | - */ | |
| 1213 | - stopPropagation: true, | |
| 1214 | - | |
| 1215 | - /** | |
| 1216 | - * Internal flag that is set to true when drag and drop has been | |
| 1217 | - * intialized | |
| 1218 | - * @property initialized | |
| 1219 | - * @private | |
| 1220 | - * @static | |
| 1221 | - */ | |
| 1222 | - initalized: false, | |
| 1223 | - | |
| 1224 | - /** | |
| 1225 | - * All drag and drop can be disabled. | |
| 1226 | - * @property locked | |
| 1227 | - * @private | |
| 1228 | - * @static | |
| 1229 | - */ | |
| 1230 | - locked: false, | |
| 1231 | - | |
| 1232 | - /** | |
| 1233 | - * Called the first time an element is registered. | |
| 1234 | - * @method init | |
| 1235 | - * @private | |
| 1236 | - * @static | |
| 1237 | - */ | |
| 1238 | - init: function() { | |
| 1239 | - this.initialized = true; | |
| 1240 | - }, | |
| 1241 | - | |
| 1242 | - /** | |
| 1243 | - * In point mode, drag and drop interaction is defined by the | |
| 1244 | - * location of the cursor during the drag/drop | |
| 1245 | - * @property POINT | |
| 1246 | - * @type int | |
| 1247 | - * @static | |
| 1248 | - */ | |
| 1249 | - POINT: 0, | |
| 1250 | - | |
| 1251 | - /** | |
| 1252 | - * In intersect mode, drag and drop interactio nis defined by the | |
| 1253 | - * overlap of two or more drag and drop objects. | |
| 1254 | - * @property INTERSECT | |
| 1255 | - * @type int | |
| 1256 | - * @static | |
| 1257 | - */ | |
| 1258 | - INTERSECT: 1, | |
| 1259 | - | |
| 1260 | - /** | |
| 1261 | - * The current drag and drop mode. Default: POINT | |
| 1262 | - * @property mode | |
| 1263 | - * @type int | |
| 1264 | - * @static | |
| 1265 | - */ | |
| 1266 | - mode: 0, | |
| 1267 | - | |
| 1268 | - /** | |
| 1269 | - * Runs method on all drag and drop objects | |
| 1270 | - * @method _execOnAll | |
| 1271 | - * @private | |
| 1272 | - * @static | |
| 1273 | - */ | |
| 1274 | - _execOnAll: function(sMethod, args) { | |
| 1275 | - for (var i in this.ids) { | |
| 1276 | - for (var j in this.ids[i]) { | |
| 1277 | - var oDD = this.ids[i][j]; | |
| 1278 | - if (! this.isTypeOfDD(oDD)) { | |
| 1279 | - continue; | |
| 1280 | - } | |
| 1281 | - oDD[sMethod].apply(oDD, args); | |
| 1282 | - } | |
| 1283 | - } | |
| 1284 | - }, | |
| 1285 | - | |
| 1286 | - /** | |
| 1287 | - * Drag and drop initialization. Sets up the global event handlers | |
| 1288 | - * @method _onLoad | |
| 1289 | - * @private | |
| 1290 | - * @static | |
| 1291 | - */ | |
| 1292 | - _onLoad: function() { | |
| 1293 | - | |
| 1294 | - this.init(); | |
| 1295 | - | |
| 1296 | - | |
| 1297 | - Event.on(document, "mouseup", this.handleMouseUp, this, true); | |
| 1298 | - Event.on(document, "mousemove", this.handleMouseMove, this, true); | |
| 1299 | - Event.on(window, "unload", this._onUnload, this, true); | |
| 1300 | - Event.on(window, "resize", this._onResize, this, true); | |
| 1301 | - // Event.on(window, "mouseout", this._test); | |
| 1302 | - | |
| 1303 | - }, | |
| 1304 | - | |
| 1305 | - /** | |
| 1306 | - * Reset constraints on all drag and drop objs | |
| 1307 | - * @method _onResize | |
| 1308 | - * @private | |
| 1309 | - * @static | |
| 1310 | - */ | |
| 1311 | - _onResize: function(e) { | |
| 1312 | - this._execOnAll("resetConstraints", []); | |
| 1313 | - }, | |
| 1314 | - | |
| 1315 | - /** | |
| 1316 | - * Lock all drag and drop functionality | |
| 1317 | - * @method lock | |
| 1318 | - * @static | |
| 1319 | - */ | |
| 1320 | - lock: function() { this.locked = true; }, | |
| 1321 | - | |
| 1322 | - /** | |
| 1323 | - * Unlock all drag and drop functionality | |
| 1324 | - * @method unlock | |
| 1325 | - * @static | |
| 1326 | - */ | |
| 1327 | - unlock: function() { this.locked = false; }, | |
| 1328 | - | |
| 1329 | - /** | |
| 1330 | - * Is drag and drop locked? | |
| 1331 | - * @method isLocked | |
| 1332 | - * @return {boolean} True if drag and drop is locked, false otherwise. | |
| 1333 | - * @static | |
| 1334 | - */ | |
| 1335 | - isLocked: function() { return this.locked; }, | |
| 1336 | - | |
| 1337 | - /** | |
| 1338 | - * Location cache that is set for all drag drop objects when a drag is | |
| 1339 | - * initiated, cleared when the drag is finished. | |
| 1340 | - * @property locationCache | |
| 1341 | - * @private | |
| 1342 | - * @static | |
| 1343 | - */ | |
| 1344 | - locationCache: {}, | |
| 1345 | - | |
| 1346 | - /** | |
| 1347 | - * Set useCache to false if you want to force object the lookup of each | |
| 1348 | - * drag and drop linked element constantly during a drag. | |
| 1349 | - * @property useCache | |
| 1350 | - * @type boolean | |
| 1351 | - * @static | |
| 1352 | - */ | |
| 1353 | - useCache: true, | |
| 1354 | - | |
| 1355 | - /** | |
| 1356 | - * The number of pixels that the mouse needs to move after the | |
| 1357 | - * mousedown before the drag is initiated. Default=3; | |
| 1358 | - * @property clickPixelThresh | |
| 1359 | - * @type int | |
| 1360 | - * @static | |
| 1361 | - */ | |
| 1362 | - clickPixelThresh: 3, | |
| 1363 | - | |
| 1364 | - /** | |
| 1365 | - * The number of milliseconds after the mousedown event to initiate the | |
| 1366 | - * drag if we don't get a mouseup event. Default=1000 | |
| 1367 | - * @property clickTimeThresh | |
| 1368 | - * @type int | |
| 1369 | - * @static | |
| 1370 | - */ | |
| 1371 | - clickTimeThresh: 1000, | |
| 1372 | - | |
| 1373 | - /** | |
| 1374 | - * Flag that indicates that either the drag pixel threshold or the | |
| 1375 | - * mousdown time threshold has been met | |
| 1376 | - * @property dragThreshMet | |
| 1377 | - * @type boolean | |
| 1378 | - * @private | |
| 1379 | - * @static | |
| 1380 | - */ | |
| 1381 | - dragThreshMet: false, | |
| 1382 | - | |
| 1383 | - /** | |
| 1384 | - * Timeout used for the click time threshold | |
| 1385 | - * @property clickTimeout | |
| 1386 | - * @type Object | |
| 1387 | - * @private | |
| 1388 | - * @static | |
| 1389 | - */ | |
| 1390 | - clickTimeout: null, | |
| 1391 | - | |
| 1392 | - /** | |
| 1393 | - * The X position of the mousedown event stored for later use when a | |
| 1394 | - * drag threshold is met. | |
| 1395 | - * @property startX | |
| 1396 | - * @type int | |
| 1397 | - * @private | |
| 1398 | - * @static | |
| 1399 | - */ | |
| 1400 | - startX: 0, | |
| 1401 | - | |
| 1402 | - /** | |
| 1403 | - * The Y position of the mousedown event stored for later use when a | |
| 1404 | - * drag threshold is met. | |
| 1405 | - * @property startY | |
| 1406 | - * @type int | |
| 1407 | - * @private | |
| 1408 | - * @static | |
| 1409 | - */ | |
| 1410 | - startY: 0, | |
| 1411 | - | |
| 1412 | - /** | |
| 1413 | - * Each DragDrop instance must be registered with the DragDropMgr. | |
| 1414 | - * This is executed in DragDrop.init() | |
| 1415 | - * @method regDragDrop | |
| 1416 | - * @param {DragDrop} oDD the DragDrop object to register | |
| 1417 | - * @param {String} sGroup the name of the group this element belongs to | |
| 1418 | - * @static | |
| 1419 | - */ | |
| 1420 | - regDragDrop: function(oDD, sGroup) { | |
| 1421 | - if (!this.initialized) { this.init(); } | |
| 1422 | - | |
| 1423 | - if (!this.ids[sGroup]) { | |
| 1424 | - this.ids[sGroup] = {}; | |
| 1425 | - } | |
| 1426 | - this.ids[sGroup][oDD.id] = oDD; | |
| 1427 | - }, | |
| 1428 | - | |
| 1429 | - /** | |
| 1430 | - * Removes the supplied dd instance from the supplied group. Executed | |
| 1431 | - * by DragDrop.removeFromGroup, so don't call this function directly. | |
| 1432 | - * @method removeDDFromGroup | |
| 1433 | - * @private | |
| 1434 | - * @static | |
| 1435 | - */ | |
| 1436 | - removeDDFromGroup: function(oDD, sGroup) { | |
| 1437 | - if (!this.ids[sGroup]) { | |
| 1438 | - this.ids[sGroup] = {}; | |
| 1439 | - } | |
| 1440 | - | |
| 1441 | - var obj = this.ids[sGroup]; | |
| 1442 | - if (obj && obj[oDD.id]) { | |
| 1443 | - delete obj[oDD.id]; | |
| 1444 | - } | |
| 1445 | - }, | |
| 1446 | - | |
| 1447 | - /** | |
| 1448 | - * Unregisters a drag and drop item. This is executed in | |
| 1449 | - * DragDrop.unreg, use that method instead of calling this directly. | |
| 1450 | - * @method _remove | |
| 1451 | - * @private | |
| 1452 | - * @static | |
| 1453 | - */ | |
| 1454 | - _remove: function(oDD) { | |
| 1455 | - for (var g in oDD.groups) { | |
| 1456 | - if (g && this.ids[g][oDD.id]) { | |
| 1457 | - delete this.ids[g][oDD.id]; | |
| 1458 | - } | |
| 1459 | - } | |
| 1460 | - delete this.handleIds[oDD.id]; | |
| 1461 | - }, | |
| 1462 | - | |
| 1463 | - /** | |
| 1464 | - * Each DragDrop handle element must be registered. This is done | |
| 1465 | - * automatically when executing DragDrop.setHandleElId() | |
| 1466 | - * @method regHandle | |
| 1467 | - * @param {String} sDDId the DragDrop id this element is a handle for | |
| 1468 | - * @param {String} sHandleId the id of the element that is the drag | |
| 1469 | - * handle | |
| 1470 | - * @static | |
| 1471 | - */ | |
| 1472 | - regHandle: function(sDDId, sHandleId) { | |
| 1473 | - if (!this.handleIds[sDDId]) { | |
| 1474 | - this.handleIds[sDDId] = {}; | |
| 1475 | - } | |
| 1476 | - this.handleIds[sDDId][sHandleId] = sHandleId; | |
| 1477 | - }, | |
| 1478 | - | |
| 1479 | - /** | |
| 1480 | - * Utility function to determine if a given element has been | |
| 1481 | - * registered as a drag drop item. | |
| 1482 | - * @method isDragDrop | |
| 1483 | - * @param {String} id the element id to check | |
| 1484 | - * @return {boolean} true if this element is a DragDrop item, | |
| 1485 | - * false otherwise | |
| 1486 | - * @static | |
| 1487 | - */ | |
| 1488 | - isDragDrop: function(id) { | |
| 1489 | - return ( this.getDDById(id) ) ? true : false; | |
| 1490 | - }, | |
| 1491 | - | |
| 1492 | - /** | |
| 1493 | - * Returns the drag and drop instances that are in all groups the | |
| 1494 | - * passed in instance belongs to. | |
| 1495 | - * @method getRelated | |
| 1496 | - * @param {DragDrop} p_oDD the obj to get related data for | |
| 1497 | - * @param {boolean} bTargetsOnly if true, only return targetable objs | |
| 1498 | - * @return {DragDrop[]} the related instances | |
| 1499 | - * @static | |
| 1500 | - */ | |
| 1501 | - getRelated: function(p_oDD, bTargetsOnly) { | |
| 1502 | - var oDDs = []; | |
| 1503 | - for (var i in p_oDD.groups) { | |
| 1504 | - for (j in this.ids[i]) { | |
| 1505 | - var dd = this.ids[i][j]; | |
| 1506 | - if (! this.isTypeOfDD(dd)) { | |
| 1507 | - continue; | |
| 1508 | - } | |
| 1509 | - if (!bTargetsOnly || dd.isTarget) { | |
| 1510 | - oDDs[oDDs.length] = dd; | |
| 1511 | - } | |
| 1512 | - } | |
| 1513 | - } | |
| 1514 | - | |
| 1515 | - return oDDs; | |
| 1516 | - }, | |
| 1517 | - | |
| 1518 | - /** | |
| 1519 | - * Returns true if the specified dd target is a legal target for | |
| 1520 | - * the specifice drag obj | |
| 1521 | - * @method isLegalTarget | |
| 1522 | - * @param {DragDrop} the drag obj | |
| 1523 | - * @param {DragDrop} the target | |
| 1524 | - * @return {boolean} true if the target is a legal target for the | |
| 1525 | - * dd obj | |
| 1526 | - * @static | |
| 1527 | - */ | |
| 1528 | - isLegalTarget: function (oDD, oTargetDD) { | |
| 1529 | - var targets = this.getRelated(oDD, true); | |
| 1530 | - for (var i=0, len=targets.length;i<len;++i) { | |
| 1531 | - if (targets[i].id == oTargetDD.id) { | |
| 1532 | - return true; | |
| 1533 | - } | |
| 1534 | - } | |
| 1535 | - | |
| 1536 | - return false; | |
| 1537 | - }, | |
| 1538 | - | |
| 1539 | - /** | |
| 1540 | - * My goal is to be able to transparently determine if an object is | |
| 1541 | - * typeof DragDrop, and the exact subclass of DragDrop. typeof | |
| 1542 | - * returns "object", oDD.constructor.toString() always returns | |
| 1543 | - * "DragDrop" and not the name of the subclass. So for now it just | |
| 1544 | - * evaluates a well-known variable in DragDrop. | |
| 1545 | - * @method isTypeOfDD | |
| 1546 | - * @param {Object} the object to evaluate | |
| 1547 | - * @return {boolean} true if typeof oDD = DragDrop | |
| 1548 | - * @static | |
| 1549 | - */ | |
| 1550 | - isTypeOfDD: function (oDD) { | |
| 1551 | - return (oDD && oDD.__ygDragDrop); | |
| 1552 | - }, | |
| 1553 | - | |
| 1554 | - /** | |
| 1555 | - * Utility function to determine if a given element has been | |
| 1556 | - * registered as a drag drop handle for the given Drag Drop object. | |
| 1557 | - * @method isHandle | |
| 1558 | - * @param {String} id the element id to check | |
| 1559 | - * @return {boolean} true if this element is a DragDrop handle, false | |
| 1560 | - * otherwise | |
| 1561 | - * @static | |
| 1562 | - */ | |
| 1563 | - isHandle: function(sDDId, sHandleId) { | |
| 1564 | - return ( this.handleIds[sDDId] && | |
| 1565 | - this.handleIds[sDDId][sHandleId] ); | |
| 1566 | - }, | |
| 1567 | - | |
| 1568 | - /** | |
| 1569 | - * Returns the DragDrop instance for a given id | |
| 1570 | - * @method getDDById | |
| 1571 | - * @param {String} id the id of the DragDrop object | |
| 1572 | - * @return {DragDrop} the drag drop object, null if it is not found | |
| 1573 | - * @static | |
| 1574 | - */ | |
| 1575 | - getDDById: function(id) { | |
| 1576 | - for (var i in this.ids) { | |
| 1577 | - if (this.ids[i][id]) { | |
| 1578 | - return this.ids[i][id]; | |
| 1579 | - } | |
| 1580 | - } | |
| 1581 | - return null; | |
| 1582 | - }, | |
| 1583 | - | |
| 1584 | - /** | |
| 1585 | - * Fired after a registered DragDrop object gets the mousedown event. | |
| 1586 | - * Sets up the events required to track the object being dragged | |
| 1587 | - * @method handleMouseDown | |
| 1588 | - * @param {Event} e the event | |
| 1589 | - * @param oDD the DragDrop object being dragged | |
| 1590 | - * @private | |
| 1591 | - * @static | |
| 1592 | - */ | |
| 1593 | - handleMouseDown: function(e, oDD) { | |
| 1594 | - | |
| 1595 | - this.currentTarget = YAHOO.util.Event.getTarget(e); | |
| 1596 | - | |
| 1597 | - this.dragCurrent = oDD; | |
| 1598 | - | |
| 1599 | - var el = oDD.getEl(); | |
| 1600 | - | |
| 1601 | - // track start position | |
| 1602 | - this.startX = YAHOO.util.Event.getPageX(e); | |
| 1603 | - this.startY = YAHOO.util.Event.getPageY(e); | |
| 1604 | - | |
| 1605 | - this.deltaX = this.startX - el.offsetLeft; | |
| 1606 | - this.deltaY = this.startY - el.offsetTop; | |
| 1607 | - | |
| 1608 | - this.dragThreshMet = false; | |
| 1609 | - | |
| 1610 | - this.clickTimeout = setTimeout( | |
| 1611 | - function() { | |
| 1612 | - var DDM = YAHOO.util.DDM; | |
| 1613 | - DDM.startDrag(DDM.startX, DDM.startY); | |
| 1614 | - }, | |
| 1615 | - this.clickTimeThresh ); | |
| 1616 | - }, | |
| 1617 | - | |
| 1618 | - /** | |
| 1619 | - * Fired when either the drag pixel threshol or the mousedown hold | |
| 1620 | - * time threshold has been met. | |
| 1621 | - * @method startDrag | |
| 1622 | - * @param x {int} the X position of the original mousedown | |
| 1623 | - * @param y {int} the Y position of the original mousedown | |
| 1624 | - * @static | |
| 1625 | - */ | |
| 1626 | - startDrag: function(x, y) { | |
| 1627 | - clearTimeout(this.clickTimeout); | |
| 1628 | - if (this.dragCurrent) { | |
| 1629 | - this.dragCurrent.b4StartDrag(x, y); | |
| 1630 | - this.dragCurrent.startDrag(x, y); | |
| 1631 | - } | |
| 1632 | - this.dragThreshMet = true; | |
| 1633 | - }, | |
| 1634 | - | |
| 1635 | - /** | |
| 1636 | - * Internal function to handle the mouseup event. Will be invoked | |
| 1637 | - * from the context of the document. | |
| 1638 | - * @method handleMouseUp | |
| 1639 | - * @param {Event} e the event | |
| 1640 | - * @private | |
| 1641 | - * @static | |
| 1642 | - */ | |
| 1643 | - handleMouseUp: function(e) { | |
| 1644 | - | |
| 1645 | - if (! this.dragCurrent) { | |
| 1646 | - return; | |
| 1647 | - } | |
| 1648 | - | |
| 1649 | - clearTimeout(this.clickTimeout); | |
| 1650 | - | |
| 1651 | - if (this.dragThreshMet) { | |
| 1652 | - this.fireEvents(e, true); | |
| 1653 | - } else { | |
| 1654 | - } | |
| 1655 | - | |
| 1656 | - this.stopDrag(e); | |
| 1657 | - | |
| 1658 | - this.stopEvent(e); | |
| 1659 | - }, | |
| 1660 | - | |
| 1661 | - /** | |
| 1662 | - * Utility to stop event propagation and event default, if these | |
| 1663 | - * features are turned on. | |
| 1664 | - * @method stopEvent | |
| 1665 | - * @param {Event} e the event as returned by this.getEvent() | |
| 1666 | - * @static | |
| 1667 | - */ | |
| 1668 | - stopEvent: function(e) { | |
| 1669 | - if (this.stopPropagation) { | |
| 1670 | - YAHOO.util.Event.stopPropagation(e); | |
| 1671 | - } | |
| 1672 | - | |
| 1673 | - if (this.preventDefault) { | |
| 1674 | - YAHOO.util.Event.preventDefault(e); | |
| 1675 | - } | |
| 1676 | - }, | |
| 1677 | - | |
| 1678 | - /** | |
| 1679 | - * Internal function to clean up event handlers after the drag | |
| 1680 | - * operation is complete | |
| 1681 | - * @method stopDrag | |
| 1682 | - * @param {Event} e the event | |
| 1683 | - * @private | |
| 1684 | - * @static | |
| 1685 | - */ | |
| 1686 | - stopDrag: function(e) { | |
| 1687 | - | |
| 1688 | - // Fire the drag end event for the item that was dragged | |
| 1689 | - if (this.dragCurrent) { | |
| 1690 | - if (this.dragThreshMet) { | |
| 1691 | - this.dragCurrent.b4EndDrag(e); | |
| 1692 | - this.dragCurrent.endDrag(e); | |
| 1693 | - } | |
| 1694 | - | |
| 1695 | - this.dragCurrent.onMouseUp(e); | |
| 1696 | - } | |
| 1697 | - | |
| 1698 | - this.dragCurrent = null; | |
| 1699 | - this.dragOvers = {}; | |
| 1700 | - }, | |
| 1701 | - | |
| 1702 | - /** | |
| 1703 | - * Internal function to handle the mousemove event. Will be invoked | |
| 1704 | - * from the context of the html element. | |
| 1705 | - * | |
| 1706 | - * @TODO figure out what we can do about mouse events lost when the | |
| 1707 | - * user drags objects beyond the window boundary. Currently we can | |
| 1708 | - * detect this in internet explorer by verifying that the mouse is | |
| 1709 | - * down during the mousemove event. Firefox doesn't give us the | |
| 1710 | - * button state on the mousemove event. | |
| 1711 | - * @method handleMouseMove | |
| 1712 | - * @param {Event} e the event | |
| 1713 | - * @private | |
| 1714 | - * @static | |
| 1715 | - */ | |
| 1716 | - handleMouseMove: function(e) { | |
| 1717 | - if (! this.dragCurrent) { | |
| 1718 | - return true; | |
| 1719 | - } | |
| 1720 | - | |
| 1721 | - // var button = e.which || e.button; | |
| 1722 | - | |
| 1723 | - // check for IE mouseup outside of page boundary | |
| 1724 | - if (YAHOO.util.Event.isIE && !e.button) { | |
| 1725 | - this.stopEvent(e); | |
| 1726 | - return this.handleMouseUp(e); | |
| 1727 | - } | |
| 1728 | - | |
| 1729 | - if (!this.dragThreshMet) { | |
| 1730 | - var diffX = Math.abs(this.startX - YAHOO.util.Event.getPageX(e)); | |
| 1731 | - var diffY = Math.abs(this.startY - YAHOO.util.Event.getPageY(e)); | |
| 1732 | - if (diffX > this.clickPixelThresh || | |
| 1733 | - diffY > this.clickPixelThresh) { | |
| 1734 | - this.startDrag(this.startX, this.startY); | |
| 1735 | - } | |
| 1736 | - } | |
| 1737 | - | |
| 1738 | - if (this.dragThreshMet) { | |
| 1739 | - this.dragCurrent.b4Drag(e); | |
| 1740 | - this.dragCurrent.onDrag(e); | |
| 1741 | - this.fireEvents(e, false); | |
| 1742 | - } | |
| 1743 | - | |
| 1744 | - this.stopEvent(e); | |
| 1745 | - | |
| 1746 | - return true; | |
| 1747 | - }, | |
| 1748 | - | |
| 1749 | - /** | |
| 1750 | - * Iterates over all of the DragDrop elements to find ones we are | |
| 1751 | - * hovering over or dropping on | |
| 1752 | - * @method fireEvents | |
| 1753 | - * @param {Event} e the event | |
| 1754 | - * @param {boolean} isDrop is this a drop op or a mouseover op? | |
| 1755 | - * @private | |
| 1756 | - * @static | |
| 1757 | - */ | |
| 1758 | - fireEvents: function(e, isDrop) { | |
| 1759 | - var dc = this.dragCurrent; | |
| 1760 | - | |
| 1761 | - // If the user did the mouse up outside of the window, we could | |
| 1762 | - // get here even though we have ended the drag. | |
| 1763 | - if (!dc || dc.isLocked()) { | |
| 1764 | - return; | |
| 1765 | - } | |
| 1766 | - | |
| 1767 | - var x = YAHOO.util.Event.getPageX(e); | |
| 1768 | - var y = YAHOO.util.Event.getPageY(e); | |
| 1769 | - var pt = new YAHOO.util.Point(x,y); | |
| 1770 | - | |
| 1771 | - // cache the previous dragOver array | |
| 1772 | - var oldOvers = []; | |
| 1773 | - | |
| 1774 | - var outEvts = []; | |
| 1775 | - var overEvts = []; | |
| 1776 | - var dropEvts = []; | |
| 1777 | - var enterEvts = []; | |
| 1778 | - | |
| 1779 | - // Check to see if the object(s) we were hovering over is no longer | |
| 1780 | - // being hovered over so we can fire the onDragOut event | |
| 1781 | - for (var i in this.dragOvers) { | |
| 1782 | - | |
| 1783 | - var ddo = this.dragOvers[i]; | |
| 1784 | - | |
| 1785 | - if (! this.isTypeOfDD(ddo)) { | |
| 1786 | - continue; | |
| 1787 | - } | |
| 1788 | - | |
| 1789 | - if (! this.isOverTarget(pt, ddo, this.mode)) { | |
| 1790 | - outEvts.push( ddo ); | |
| 1791 | - } | |
| 1792 | - | |
| 1793 | - oldOvers[i] = true; | |
| 1794 | - delete this.dragOvers[i]; | |
| 1795 | - } | |
| 1796 | - | |
| 1797 | - for (var sGroup in dc.groups) { | |
| 1798 | - | |
| 1799 | - if ("string" != typeof sGroup) { | |
| 1800 | - continue; | |
| 1801 | - } | |
| 1802 | - | |
| 1803 | - for (i in this.ids[sGroup]) { | |
| 1804 | - var oDD = this.ids[sGroup][i]; | |
| 1805 | - if (! this.isTypeOfDD(oDD)) { | |
| 1806 | - continue; | |
| 1807 | - } | |
| 1808 | - | |
| 1809 | - if (oDD.isTarget && !oDD.isLocked() && oDD != dc) { | |
| 1810 | - if (this.isOverTarget(pt, oDD, this.mode)) { | |
| 1811 | - // look for drop interactions | |
| 1812 | - if (isDrop) { | |
| 1813 | - dropEvts.push( oDD ); | |
| 1814 | - // look for drag enter and drag over interactions | |
| 1815 | - } else { | |
| 1816 | - | |
| 1817 | - // initial drag over: dragEnter fires | |
| 1818 | - if (!oldOvers[oDD.id]) { | |
| 1819 | - enterEvts.push( oDD ); | |
| 1820 | - // subsequent drag overs: dragOver fires | |
| 1821 | - } else { | |
| 1822 | - overEvts.push( oDD ); | |
| 1823 | - } | |
| 1824 | - | |
| 1825 | - this.dragOvers[oDD.id] = oDD; | |
| 1826 | - } | |
| 1827 | - } | |
| 1828 | - } | |
| 1829 | - } | |
| 1830 | - } | |
| 1831 | - | |
| 1832 | - if (this.mode) { | |
| 1833 | - if (outEvts.length) { | |
| 1834 | - dc.b4DragOut(e, outEvts); | |
| 1835 | - dc.onDragOut(e, outEvts); | |
| 1836 | - } | |
| 1837 | - | |
| 1838 | - if (enterEvts.length) { | |
| 1839 | - dc.onDragEnter(e, enterEvts); | |
| 1840 | - } | |
| 1841 | - | |
| 1842 | - if (overEvts.length) { | |
| 1843 | - dc.b4DragOver(e, overEvts); | |
| 1844 | - dc.onDragOver(e, overEvts); | |
| 1845 | - } | |
| 1846 | - | |
| 1847 | - if (dropEvts.length) { | |
| 1848 | - dc.b4DragDrop(e, dropEvts); | |
| 1849 | - dc.onDragDrop(e, dropEvts); | |
| 1850 | - } | |
| 1851 | - | |
| 1852 | - } else { | |
| 1853 | - // fire dragout events | |
| 1854 | - var len = 0; | |
| 1855 | - for (i=0, len=outEvts.length; i<len; ++i) { | |
| 1856 | - dc.b4DragOut(e, outEvts[i].id); | |
| 1857 | - dc.onDragOut(e, outEvts[i].id); | |
| 1858 | - } | |
| 1859 | - | |
| 1860 | - // fire enter events | |
| 1861 | - for (i=0,len=enterEvts.length; i<len; ++i) { | |
| 1862 | - // dc.b4DragEnter(e, oDD.id); | |
| 1863 | - dc.onDragEnter(e, enterEvts[i].id); | |
| 1864 | - } | |
| 1865 | - | |
| 1866 | - // fire over events | |
| 1867 | - for (i=0,len=overEvts.length; i<len; ++i) { | |
| 1868 | - dc.b4DragOver(e, overEvts[i].id); | |
| 1869 | - dc.onDragOver(e, overEvts[i].id); | |
| 1870 | - } | |
| 1871 | - | |
| 1872 | - // fire drop events | |
| 1873 | - for (i=0, len=dropEvts.length; i<len; ++i) { | |
| 1874 | - dc.b4DragDrop(e, dropEvts[i].id); | |
| 1875 | - dc.onDragDrop(e, dropEvts[i].id); | |
| 1876 | - } | |
| 1877 | - | |
| 1878 | - } | |
| 1879 | - | |
| 1880 | - // notify about a drop that did not find a target | |
| 1881 | - if (isDrop && !dropEvts.length) { | |
| 1882 | - dc.onInvalidDrop(e); | |
| 1883 | - } | |
| 1884 | - | |
| 1885 | - }, | |
| 1886 | - | |
| 1887 | - /** | |
| 1888 | - * Helper function for getting the best match from the list of drag | |
| 1889 | - * and drop objects returned by the drag and drop events when we are | |
| 1890 | - * in INTERSECT mode. It returns either the first object that the | |
| 1891 | - * cursor is over, or the object that has the greatest overlap with | |
| 1892 | - * the dragged element. | |
| 1893 | - * @method getBestMatch | |
| 1894 | - * @param {DragDrop[]} dds The array of drag and drop objects | |
| 1895 | - * targeted | |
| 1896 | - * @return {DragDrop} The best single match | |
| 1897 | - * @static | |
| 1898 | - */ | |
| 1899 | - getBestMatch: function(dds) { | |
| 1900 | - var winner = null; | |
| 1901 | - // Return null if the input is not what we expect | |
| 1902 | - //if (!dds || !dds.length || dds.length == 0) { | |
| 1903 | - // winner = null; | |
| 1904 | - // If there is only one item, it wins | |
| 1905 | - //} else if (dds.length == 1) { | |
| 1906 | - | |
| 1907 | - var len = dds.length; | |
| 1908 | - | |
| 1909 | - if (len == 1) { | |
| 1910 | - winner = dds[0]; | |
| 1911 | - } else { | |
| 1912 | - // Loop through the targeted items | |
| 1913 | - for (var i=0; i<len; ++i) { | |
| 1914 | - var dd = dds[i]; | |
| 1915 | - // If the cursor is over the object, it wins. If the | |
| 1916 | - // cursor is over multiple matches, the first one we come | |
| 1917 | - // to wins. | |
| 1918 | - if (dd.cursorIsOver) { | |
| 1919 | - winner = dd; | |
| 1920 | - break; | |
| 1921 | - // Otherwise the object with the most overlap wins | |
| 1922 | - } else { | |
| 1923 | - if (!winner || | |
| 1924 | - winner.overlap.getArea() < dd.overlap.getArea()) { | |
| 1925 | - winner = dd; | |
| 1926 | - } | |
| 1927 | - } | |
| 1928 | - } | |
| 1929 | - } | |
| 1930 | - | |
| 1931 | - return winner; | |
| 1932 | - }, | |
| 1933 | - | |
| 1934 | - /** | |
| 1935 | - * Refreshes the cache of the top-left and bottom-right points of the | |
| 1936 | - * drag and drop objects in the specified group(s). This is in the | |
| 1937 | - * format that is stored in the drag and drop instance, so typical | |
| 1938 | - * usage is: | |
| 1939 | - * <code> | |
| 1940 | - * YAHOO.util.DragDropMgr.refreshCache(ddinstance.groups); | |
| 1941 | - * </code> | |
| 1942 | - * Alternatively: | |
| 1943 | - * <code> | |
| 1944 | - * YAHOO.util.DragDropMgr.refreshCache({group1:true, group2:true}); | |
| 1945 | - * </code> | |
| 1946 | - * @TODO this really should be an indexed array. Alternatively this | |
| 1947 | - * method could accept both. | |
| 1948 | - * @method refreshCache | |
| 1949 | - * @param {Object} groups an associative array of groups to refresh | |
| 1950 | - * @static | |
| 1951 | - */ | |
| 1952 | - refreshCache: function(groups) { | |
| 1953 | - for (var sGroup in groups) { | |
| 1954 | - if ("string" != typeof sGroup) { | |
| 1955 | - continue; | |
| 1956 | - } | |
| 1957 | - for (var i in this.ids[sGroup]) { | |
| 1958 | - var oDD = this.ids[sGroup][i]; | |
| 1959 | - | |
| 1960 | - if (this.isTypeOfDD(oDD)) { | |
| 1961 | - // if (this.isTypeOfDD(oDD) && oDD.isTarget) { | |
| 1962 | - var loc = this.getLocation(oDD); | |
| 1963 | - if (loc) { | |
| 1964 | - this.locationCache[oDD.id] = loc; | |
| 1965 | - } else { | |
| 1966 | - delete this.locationCache[oDD.id]; | |
| 1967 | - // this will unregister the drag and drop object if | |
| 1968 | - // the element is not in a usable state | |
| 1969 | - // oDD.unreg(); | |
| 1970 | - } | |
| 1971 | - } | |
| 1972 | - } | |
| 1973 | - } | |
| 1974 | - }, | |
| 1975 | - | |
| 1976 | - /** | |
| 1977 | - * This checks to make sure an element exists and is in the DOM. The | |
| 1978 | - * main purpose is to handle cases where innerHTML is used to remove | |
| 1979 | - * drag and drop objects from the DOM. IE provides an 'unspecified | |
| 1980 | - * error' when trying to access the offsetParent of such an element | |
| 1981 | - * @method verifyEl | |
| 1982 | - * @param {HTMLElement} el the element to check | |
| 1983 | - * @return {boolean} true if the element looks usable | |
| 1984 | - * @static | |
| 1985 | - */ | |
| 1986 | - verifyEl: function(el) { | |
| 1987 | - try { | |
| 1988 | - if (el) { | |
| 1989 | - var parent = el.offsetParent; | |
| 1990 | - if (parent) { | |
| 1991 | - return true; | |
| 1992 | - } | |
| 1993 | - } | |
| 1994 | - } catch(e) { | |
| 1995 | - } | |
| 1996 | - | |
| 1997 | - return false; | |
| 1998 | - }, | |
| 1999 | - | |
| 2000 | - /** | |
| 2001 | - * Returns a Region object containing the drag and drop element's position | |
| 2002 | - * and size, including the padding configured for it | |
| 2003 | - * @method getLocation | |
| 2004 | - * @param {DragDrop} oDD the drag and drop object to get the | |
| 2005 | - * location for | |
| 2006 | - * @return {YAHOO.util.Region} a Region object representing the total area | |
| 2007 | - * the element occupies, including any padding | |
| 2008 | - * the instance is configured for. | |
| 2009 | - * @static | |
| 2010 | - */ | |
| 2011 | - getLocation: function(oDD) { | |
| 2012 | - if (! this.isTypeOfDD(oDD)) { | |
| 2013 | - return null; | |
| 2014 | - } | |
| 2015 | - | |
| 2016 | - var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l; | |
| 2017 | - | |
| 2018 | - try { | |
| 2019 | - pos= YAHOO.util.Dom.getXY(el); | |
| 2020 | - } catch (e) { } | |
| 2021 | - | |
| 2022 | - if (!pos) { | |
| 2023 | - return null; | |
| 2024 | - } | |
| 2025 | - | |
| 2026 | - x1 = pos[0]; | |
| 2027 | - x2 = x1 + el.offsetWidth; | |
| 2028 | - y1 = pos[1]; | |
| 2029 | - y2 = y1 + el.offsetHeight; | |
| 2030 | - | |
| 2031 | - t = y1 - oDD.padding[0]; | |
| 2032 | - r = x2 + oDD.padding[1]; | |
| 2033 | - b = y2 + oDD.padding[2]; | |
| 2034 | - l = x1 - oDD.padding[3]; | |
| 2035 | - | |
| 2036 | - return new YAHOO.util.Region( t, r, b, l ); | |
| 2037 | - }, | |
| 2038 | - | |
| 2039 | - /** | |
| 2040 | - * Checks the cursor location to see if it over the target | |
| 2041 | - * @method isOverTarget | |
| 2042 | - * @param {YAHOO.util.Point} pt The point to evaluate | |
| 2043 | - * @param {DragDrop} oTarget the DragDrop object we are inspecting | |
| 2044 | - * @return {boolean} true if the mouse is over the target | |
| 2045 | - * @private | |
| 2046 | - * @static | |
| 2047 | - */ | |
| 2048 | - isOverTarget: function(pt, oTarget, intersect) { | |
| 2049 | - // use cache if available | |
| 2050 | - var loc = this.locationCache[oTarget.id]; | |
| 2051 | - if (!loc || !this.useCache) { | |
| 2052 | - loc = this.getLocation(oTarget); | |
| 2053 | - this.locationCache[oTarget.id] = loc; | |
| 2054 | - | |
| 2055 | - } | |
| 2056 | - | |
| 2057 | - if (!loc) { | |
| 2058 | - return false; | |
| 2059 | - } | |
| 2060 | - | |
| 2061 | - oTarget.cursorIsOver = loc.contains( pt ); | |
| 2062 | - | |
| 2063 | - // DragDrop is using this as a sanity check for the initial mousedown | |
| 2064 | - // in this case we are done. In POINT mode, if the drag obj has no | |
| 2065 | - // contraints, we are also done. Otherwise we need to evaluate the | |
| 2066 | - // location of the target as related to the actual location of the | |
| 2067 | - // dragged element. | |
| 2068 | - var dc = this.dragCurrent; | |
| 2069 | - if (!dc || !dc.getTargetCoord || | |
| 2070 | - (!intersect && !dc.constrainX && !dc.constrainY)) { | |
| 2071 | - return oTarget.cursorIsOver; | |
| 2072 | - } | |
| 2073 | - | |
| 2074 | - oTarget.overlap = null; | |
| 2075 | - | |
| 2076 | - // Get the current location of the drag element, this is the | |
| 2077 | - // location of the mouse event less the delta that represents | |
| 2078 | - // where the original mousedown happened on the element. We | |
| 2079 | - // need to consider constraints and ticks as well. | |
| 2080 | - var pos = dc.getTargetCoord(pt.x, pt.y); | |
| 2081 | - | |
| 2082 | - var el = dc.getDragEl(); | |
| 2083 | - var curRegion = new YAHOO.util.Region( pos.y, | |
| 2084 | - pos.x + el.offsetWidth, | |
| 2085 | - pos.y + el.offsetHeight, | |
| 2086 | - pos.x ); | |
| 2087 | - | |
| 2088 | - var overlap = curRegion.intersect(loc); | |
| 2089 | - | |
| 2090 | - if (overlap) { | |
| 2091 | - oTarget.overlap = overlap; | |
| 2092 | - return (intersect) ? true : oTarget.cursorIsOver; | |
| 2093 | - } else { | |
| 2094 | - return false; | |
| 2095 | - } | |
| 2096 | - }, | |
| 2097 | - | |
| 2098 | - /** | |
| 2099 | - * unload event handler | |
| 2100 | - * @method _onUnload | |
| 2101 | - * @private | |
| 2102 | - * @static | |
| 2103 | - */ | |
| 2104 | - _onUnload: function(e, me) { | |
| 2105 | - this.unregAll(); | |
| 2106 | - }, | |
| 2107 | - | |
| 2108 | - /** | |
| 2109 | - * Cleans up the drag and drop events and objects. | |
| 2110 | - * @method unregAll | |
| 2111 | - * @private | |
| 2112 | - * @static | |
| 2113 | - */ | |
| 2114 | - unregAll: function() { | |
| 2115 | - | |
| 2116 | - if (this.dragCurrent) { | |
| 2117 | - this.stopDrag(); | |
| 2118 | - this.dragCurrent = null; | |
| 2119 | - } | |
| 2120 | - | |
| 2121 | - this._execOnAll("unreg", []); | |
| 2122 | - | |
| 2123 | - for (i in this.elementCache) { | |
| 2124 | - delete this.elementCache[i]; | |
| 2125 | - } | |
| 2126 | - | |
| 2127 | - this.elementCache = {}; | |
| 2128 | - this.ids = {}; | |
| 2129 | - }, | |
| 2130 | - | |
| 2131 | - /** | |
| 2132 | - * A cache of DOM elements | |
| 2133 | - * @property elementCache | |
| 2134 | - * @private | |
| 2135 | - * @static | |
| 2136 | - */ | |
| 2137 | - elementCache: {}, | |
| 2138 | - | |
| 2139 | - /** | |
| 2140 | - * Get the wrapper for the DOM element specified | |
| 2141 | - * @method getElWrapper | |
| 2142 | - * @param {String} id the id of the element to get | |
| 2143 | - * @return {YAHOO.util.DDM.ElementWrapper} the wrapped element | |
| 2144 | - * @private | |
| 2145 | - * @deprecated This wrapper isn't that useful | |
| 2146 | - * @static | |
| 2147 | - */ | |
| 2148 | - getElWrapper: function(id) { | |
| 2149 | - var oWrapper = this.elementCache[id]; | |
| 2150 | - if (!oWrapper || !oWrapper.el) { | |
| 2151 | - oWrapper = this.elementCache[id] = | |
| 2152 | - new this.ElementWrapper(YAHOO.util.Dom.get(id)); | |
| 2153 | - } | |
| 2154 | - return oWrapper; | |
| 2155 | - }, | |
| 2156 | - | |
| 2157 | - /** | |
| 2158 | - * Returns the actual DOM element | |
| 2159 | - * @method getElement | |
| 2160 | - * @param {String} id the id of the elment to get | |
| 2161 | - * @return {Object} The element | |
| 2162 | - * @deprecated use YAHOO.util.Dom.get instead | |
| 2163 | - * @static | |
| 2164 | - */ | |
| 2165 | - getElement: function(id) { | |
| 2166 | - return YAHOO.util.Dom.get(id); | |
| 2167 | - }, | |
| 2168 | - | |
| 2169 | - /** | |
| 2170 | - * Returns the style property for the DOM element (i.e., | |
| 2171 | - * document.getElById(id).style) | |
| 2172 | - * @method getCss | |
| 2173 | - * @param {String} id the id of the elment to get | |
| 2174 | - * @return {Object} The style property of the element | |
| 2175 | - * @deprecated use YAHOO.util.Dom instead | |
| 2176 | - * @static | |
| 2177 | - */ | |
| 2178 | - getCss: function(id) { | |
| 2179 | - var el = YAHOO.util.Dom.get(id); | |
| 2180 | - return (el) ? el.style : null; | |
| 2181 | - }, | |
| 2182 | - | |
| 2183 | - /** | |
| 2184 | - * Inner class for cached elements | |
| 2185 | - * @class DragDropMgr.ElementWrapper | |
| 2186 | - * @for DragDropMgr | |
| 2187 | - * @private | |
| 2188 | - * @deprecated | |
| 2189 | - */ | |
| 2190 | - ElementWrapper: function(el) { | |
| 2191 | - /** | |
| 2192 | - * The element | |
| 2193 | - * @property el | |
| 2194 | - */ | |
| 2195 | - this.el = el || null; | |
| 2196 | - /** | |
| 2197 | - * The element id | |
| 2198 | - * @property id | |
| 2199 | - */ | |
| 2200 | - this.id = this.el && el.id; | |
| 2201 | - /** | |
| 2202 | - * A reference to the style property | |
| 2203 | - * @property css | |
| 2204 | - */ | |
| 2205 | - this.css = this.el && el.style; | |
| 2206 | - }, | |
| 2207 | - | |
| 2208 | - /** | |
| 2209 | - * Returns the X position of an html element | |
| 2210 | - * @method getPosX | |
| 2211 | - * @param el the element for which to get the position | |
| 2212 | - * @return {int} the X coordinate | |
| 2213 | - * @for DragDropMgr | |
| 2214 | - * @deprecated use YAHOO.util.Dom.getX instead | |
| 2215 | - * @static | |
| 2216 | - */ | |
| 2217 | - getPosX: function(el) { | |
| 2218 | - return YAHOO.util.Dom.getX(el); | |
| 2219 | - }, | |
| 2220 | - | |
| 2221 | - /** | |
| 2222 | - * Returns the Y position of an html element | |
| 2223 | - * @method getPosY | |
| 2224 | - * @param el the element for which to get the position | |
| 2225 | - * @return {int} the Y coordinate | |
| 2226 | - * @deprecated use YAHOO.util.Dom.getY instead | |
| 2227 | - * @static | |
| 2228 | - */ | |
| 2229 | - getPosY: function(el) { | |
| 2230 | - return YAHOO.util.Dom.getY(el); | |
| 2231 | - }, | |
| 2232 | - | |
| 2233 | - /** | |
| 2234 | - * Swap two nodes. In IE, we use the native method, for others we | |
| 2235 | - * emulate the IE behavior | |
| 2236 | - * @method swapNode | |
| 2237 | - * @param n1 the first node to swap | |
| 2238 | - * @param n2 the other node to swap | |
| 2239 | - * @static | |
| 2240 | - */ | |
| 2241 | - swapNode: function(n1, n2) { | |
| 2242 | - if (n1.swapNode) { | |
| 2243 | - n1.swapNode(n2); | |
| 2244 | - } else { | |
| 2245 | - var p = n2.parentNode; | |
| 2246 | - var s = n2.nextSibling; | |
| 2247 | - | |
| 2248 | - if (s == n1) { | |
| 2249 | - p.insertBefore(n1, n2); | |
| 2250 | - } else if (n2 == n1.nextSibling) { | |
| 2251 | - p.insertBefore(n2, n1); | |
| 2252 | - } else { | |
| 2253 | - n1.parentNode.replaceChild(n2, n1); | |
| 2254 | - p.insertBefore(n1, s); | |
| 2255 | - } | |
| 2256 | - } | |
| 2257 | - }, | |
| 2258 | - | |
| 2259 | - /** | |
| 2260 | - * Returns the current scroll position | |
| 2261 | - * @method getScroll | |
| 2262 | - * @private | |
| 2263 | - * @static | |
| 2264 | - */ | |
| 2265 | - getScroll: function () { | |
| 2266 | - var t, l, dde=document.documentElement, db=document.body; | |
| 2267 | - if (dde && (dde.scrollTop || dde.scrollLeft)) { | |
| 2268 | - t = dde.scrollTop; | |
| 2269 | - l = dde.scrollLeft; | |
| 2270 | - } else if (db) { | |
| 2271 | - t = db.scrollTop; | |
| 2272 | - l = db.scrollLeft; | |
| 2273 | - } else { | |
| 2274 | - YAHOO.log("could not get scroll property"); | |
| 2275 | - } | |
| 2276 | - return { top: t, left: l }; | |
| 2277 | - }, | |
| 2278 | - | |
| 2279 | - /** | |
| 2280 | - * Returns the specified element style property | |
| 2281 | - * @method getStyle | |
| 2282 | - * @param {HTMLElement} el the element | |
| 2283 | - * @param {string} styleProp the style property | |
| 2284 | - * @return {string} The value of the style property | |
| 2285 | - * @deprecated use YAHOO.util.Dom.getStyle | |
| 2286 | - * @static | |
| 2287 | - */ | |
| 2288 | - getStyle: function(el, styleProp) { | |
| 2289 | - return YAHOO.util.Dom.getStyle(el, styleProp); | |
| 2290 | - }, | |
| 2291 | - | |
| 2292 | - /** | |
| 2293 | - * Gets the scrollTop | |
| 2294 | - * @method getScrollTop | |
| 2295 | - * @return {int} the document's scrollTop | |
| 2296 | - * @static | |
| 2297 | - */ | |
| 2298 | - getScrollTop: function () { return this.getScroll().top; }, | |
| 2299 | - | |
| 2300 | - /** | |
| 2301 | - * Gets the scrollLeft | |
| 2302 | - * @method getScrollLeft | |
| 2303 | - * @return {int} the document's scrollTop | |
| 2304 | - * @static | |
| 2305 | - */ | |
| 2306 | - getScrollLeft: function () { return this.getScroll().left; }, | |
| 2307 | - | |
| 2308 | - /** | |
| 2309 | - * Sets the x/y position of an element to the location of the | |
| 2310 | - * target element. | |
| 2311 | - * @method moveToEl | |
| 2312 | - * @param {HTMLElement} moveEl The element to move | |
| 2313 | - * @param {HTMLElement} targetEl The position reference element | |
| 2314 | - * @static | |
| 2315 | - */ | |
| 2316 | - moveToEl: function (moveEl, targetEl) { | |
| 2317 | - var aCoord = YAHOO.util.Dom.getXY(targetEl); | |
| 2318 | - YAHOO.util.Dom.setXY(moveEl, aCoord); | |
| 2319 | - }, | |
| 2320 | - | |
| 2321 | - /** | |
| 2322 | - * Gets the client height | |
| 2323 | - * @method getClientHeight | |
| 2324 | - * @return {int} client height in px | |
| 2325 | - * @deprecated use YAHOO.util.Dom.getViewportHeight instead | |
| 2326 | - * @static | |
| 2327 | - */ | |
| 2328 | - getClientHeight: function() { | |
| 2329 | - return YAHOO.util.Dom.getViewportHeight(); | |
| 2330 | - }, | |
| 2331 | - | |
| 2332 | - /** | |
| 2333 | - * Gets the client width | |
| 2334 | - * @method getClientWidth | |
| 2335 | - * @return {int} client width in px | |
| 2336 | - * @deprecated use YAHOO.util.Dom.getViewportWidth instead | |
| 2337 | - * @static | |
| 2338 | - */ | |
| 2339 | - getClientWidth: function() { | |
| 2340 | - return YAHOO.util.Dom.getViewportWidth(); | |
| 2341 | - }, | |
| 2342 | - | |
| 2343 | - /** | |
| 2344 | - * Numeric array sort function | |
| 2345 | - * @method numericSort | |
| 2346 | - * @static | |
| 2347 | - */ | |
| 2348 | - numericSort: function(a, b) { return (a - b); }, | |
| 2349 | - | |
| 2350 | - /** | |
| 2351 | - * Internal counter | |
| 2352 | - * @property _timeoutCount | |
| 2353 | - * @private | |
| 2354 | - * @static | |
| 2355 | - */ | |
| 2356 | - _timeoutCount: 0, | |
| 2357 | - | |
| 2358 | - /** | |
| 2359 | - * Trying to make the load order less important. Without this we get | |
| 2360 | - * an error if this file is loaded before the Event Utility. | |
| 2361 | - * @method _addListeners | |
| 2362 | - * @private | |
| 2363 | - * @static | |
| 2364 | - */ | |
| 2365 | - _addListeners: function() { | |
| 2366 | - var DDM = YAHOO.util.DDM; | |
| 2367 | - if ( YAHOO.util.Event && document ) { | |
| 2368 | - DDM._onLoad(); | |
| 2369 | - } else { | |
| 2370 | - if (DDM._timeoutCount > 2000) { | |
| 2371 | - } else { | |
| 2372 | - setTimeout(DDM._addListeners, 10); | |
| 2373 | - if (document && document.body) { | |
| 2374 | - DDM._timeoutCount += 1; | |
| 2375 | - } | |
| 2376 | - } | |
| 2377 | - } | |
| 2378 | - }, | |
| 2379 | - | |
| 2380 | - /** | |
| 2381 | - * Recursively searches the immediate parent and all child nodes for | |
| 2382 | - * the handle element in order to determine wheter or not it was | |
| 2383 | - * clicked. | |
| 2384 | - * @method handleWasClicked | |
| 2385 | - * @param node the html element to inspect | |
| 2386 | - * @static | |
| 2387 | - */ | |
| 2388 | - handleWasClicked: function(node, id) { | |
| 2389 | - if (this.isHandle(id, node.id)) { | |
| 2390 | - return true; | |
| 2391 | - } else { | |
| 2392 | - // check to see if this is a text node child of the one we want | |
| 2393 | - var p = node.parentNode; | |
| 2394 | - | |
| 2395 | - while (p) { | |
| 2396 | - if (this.isHandle(id, p.id)) { | |
| 2397 | - return true; | |
| 2398 | - } else { | |
| 2399 | - p = p.parentNode; | |
| 2400 | - } | |
| 2401 | - } | |
| 2402 | - } | |
| 2403 | - | |
| 2404 | - return false; | |
| 2405 | - } | |
| 2406 | - | |
| 2407 | - }; | |
| 2408 | - | |
| 1 | +(function(){ | |
| 2 | +var _1=YAHOO.util.Event; | |
| 3 | +var _2=YAHOO.util.Dom; | |
| 4 | +YAHOO.util.DragDrop=function(id,_4,_5){ | |
| 5 | +if(id){ | |
| 6 | +this.init(id,_4,_5); | |
| 7 | +} | |
| 8 | +}; | |
| 9 | +YAHOO.util.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){ | |
| 10 | +this.locked=true; | |
| 11 | +},unlock:function(){ | |
| 12 | +this.locked=false; | |
| 13 | +},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(x,y){ | |
| 14 | +},startDrag:function(x,y){ | |
| 15 | +},b4Drag:function(e){ | |
| 16 | +},onDrag:function(e){ | |
| 17 | +},onDragEnter:function(e,id){ | |
| 18 | +},b4DragOver:function(e){ | |
| 19 | +},onDragOver:function(e,id){ | |
| 20 | +},b4DragOut:function(e){ | |
| 21 | +},onDragOut:function(e,id){ | |
| 22 | +},b4DragDrop:function(e){ | |
| 23 | +},onDragDrop:function(e,id){ | |
| 24 | +},onInvalidDrop:function(e){ | |
| 25 | +},b4EndDrag:function(e){ | |
| 26 | +},endDrag:function(e){ | |
| 27 | +},b4MouseDown:function(e){ | |
| 28 | +},onMouseDown:function(e){ | |
| 29 | +},onMouseUp:function(e){ | |
| 30 | +},onAvailable:function(){ | |
| 31 | +},getEl:function(){ | |
| 32 | +if(!this._domRef){ | |
| 33 | +this._domRef=_2.get(this.id); | |
| 34 | +} | |
| 35 | +return this._domRef; | |
| 36 | +},getDragEl:function(){ | |
| 37 | +return _2.get(this.dragElId); | |
| 38 | +},init:function(id,_1e,_1f){ | |
| 39 | +this.initTarget(id,_1e,_1f); | |
| 40 | +_1.on(this.id,"mousedown",this.handleMouseDown,this,true); | |
| 41 | +},initTarget:function(id,_21,_22){ | |
| 42 | +this.config=_22||{}; | |
| 43 | +this.DDM=YAHOO.util.DDM; | |
| 44 | +this.groups={}; | |
| 45 | +if(typeof id!=="string"){ | |
| 46 | +YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 47 | +id=_2.generateId(id); | |
| 48 | +} | |
| 49 | +this.id=id; | |
| 50 | +this.addToGroup((_21)?_21:"default"); | |
| 51 | +this.handleElId=id; | |
| 52 | +_1.onAvailable(id,this.handleOnAvailable,this,true); | |
| 53 | +this.setDragElId(id); | |
| 54 | +this.invalidHandleTypes={A:"A"}; | |
| 55 | +this.invalidHandleIds={}; | |
| 56 | +this.invalidHandleClasses=[]; | |
| 57 | +this.applyConfig(); | |
| 58 | +},applyConfig:function(){ | |
| 59 | +this.padding=this.config.padding||[0,0,0,0]; | |
| 60 | +this.isTarget=(this.config.isTarget!==false); | |
| 61 | +this.maintainOffset=(this.config.maintainOffset); | |
| 62 | +this.primaryButtonOnly=(this.config.primaryButtonOnly!==false); | |
| 63 | +},handleOnAvailable:function(){ | |
| 64 | +this.available=true; | |
| 65 | +this.resetConstraints(); | |
| 66 | +this.onAvailable(); | |
| 67 | +},setPadding:function(_23,_24,_25,_26){ | |
| 68 | +if(!_24&&0!==_24){ | |
| 69 | +this.padding=[_23,_23,_23,_23]; | |
| 70 | +}else{ | |
| 71 | +if(!_25&&0!==_25){ | |
| 72 | +this.padding=[_23,_24,_23,_24]; | |
| 73 | +}else{ | |
| 74 | +this.padding=[_23,_24,_25,_26]; | |
| 75 | +} | |
| 76 | +} | |
| 77 | +},setInitPosition:function(_27,_28){ | |
| 78 | +var el=this.getEl(); | |
| 79 | +if(!this.DDM.verifyEl(el)){ | |
| 80 | +return; | |
| 81 | +} | |
| 82 | +var dx=_27||0; | |
| 83 | +var dy=_28||0; | |
| 84 | +var p=_2.getXY(el); | |
| 85 | +this.initPageX=p[0]-dx; | |
| 86 | +this.initPageY=p[1]-dy; | |
| 87 | +this.lastPageX=p[0]; | |
| 88 | +this.lastPageY=p[1]; | |
| 89 | +this.setStartPosition(p); | |
| 90 | +},setStartPosition:function(pos){ | |
| 91 | +var p=pos||_2.getXY(this.getEl()); | |
| 92 | +this.deltaSetXY=null; | |
| 93 | +this.startPageX=p[0]; | |
| 94 | +this.startPageY=p[1]; | |
| 95 | +},addToGroup:function(_2f){ | |
| 96 | +this.groups[_2f]=true; | |
| 97 | +this.DDM.regDragDrop(this,_2f); | |
| 98 | +},removeFromGroup:function(_30){ | |
| 99 | +if(this.groups[_30]){ | |
| 100 | +delete this.groups[_30]; | |
| 101 | +} | |
| 102 | +this.DDM.removeDDFromGroup(this,_30); | |
| 103 | +},setDragElId:function(id){ | |
| 104 | +this.dragElId=id; | |
| 105 | +},setHandleElId:function(id){ | |
| 106 | +if(typeof id!=="string"){ | |
| 107 | +YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 108 | +id=_2.generateId(id); | |
| 109 | +} | |
| 110 | +this.handleElId=id; | |
| 111 | +this.DDM.regHandle(this.id,id); | |
| 112 | +},setOuterHandleElId:function(id){ | |
| 113 | +if(typeof id!=="string"){ | |
| 114 | +YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 115 | +id=_2.generateId(id); | |
| 116 | +} | |
| 117 | +_1.on(id,"mousedown",this.handleMouseDown,this,true); | |
| 118 | +this.setHandleElId(id); | |
| 119 | +this.hasOuterHandles=true; | |
| 120 | +},unreg:function(){ | |
| 121 | +_1.removeListener(this.id,"mousedown",this.handleMouseDown); | |
| 122 | +this._domRef=null; | |
| 123 | +this.DDM._remove(this); | |
| 124 | +},isLocked:function(){ | |
| 125 | +return (this.DDM.isLocked()||this.locked); | |
| 126 | +},handleMouseDown:function(e,oDD){ | |
| 127 | +var _36=e.which||e.button; | |
| 128 | +if(this.primaryButtonOnly&&_36>1){ | |
| 129 | +return; | |
| 130 | +} | |
| 131 | +if(this.isLocked()){ | |
| 132 | +return; | |
| 133 | +} | |
| 134 | +this.DDM.refreshCache(this.groups); | |
| 135 | +var pt=new YAHOO.util.Point(_1.getPageX(e),_1.getPageY(e)); | |
| 136 | +if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){ | |
| 137 | +}else{ | |
| 138 | +if(this.clickValidator(e)){ | |
| 139 | +this.setStartPosition(); | |
| 140 | +this.b4MouseDown(e); | |
| 141 | +this.onMouseDown(e); | |
| 142 | +this.DDM.handleMouseDown(e,this); | |
| 143 | +this.DDM.stopEvent(e); | |
| 144 | +}else{ | |
| 145 | +} | |
| 146 | +} | |
| 147 | +},clickValidator:function(e){ | |
| 148 | +var _39=_1.getTarget(e); | |
| 149 | +return (this.isValidHandleChild(_39)&&(this.id==this.handleElId||this.DDM.handleWasClicked(_39,this.id))); | |
| 150 | +},addInvalidHandleType:function(_3a){ | |
| 151 | +var _3b=_3a.toUpperCase(); | |
| 152 | +this.invalidHandleTypes[_3b]=_3b; | |
| 153 | +},addInvalidHandleId:function(id){ | |
| 154 | +if(typeof id!=="string"){ | |
| 155 | +YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 156 | +id=_2.generateId(id); | |
| 157 | +} | |
| 158 | +this.invalidHandleIds[id]=id; | |
| 159 | +},addInvalidHandleClass:function(_3d){ | |
| 160 | +this.invalidHandleClasses.push(_3d); | |
| 161 | +},removeInvalidHandleType:function(_3e){ | |
| 162 | +var _3f=_3e.toUpperCase(); | |
| 163 | +delete this.invalidHandleTypes[_3f]; | |
| 164 | +},removeInvalidHandleId:function(id){ | |
| 165 | +if(typeof id!=="string"){ | |
| 166 | +YAHOO.log("id is not a string, assuming it is an HTMLElement"); | |
| 167 | +id=_2.generateId(id); | |
| 168 | +} | |
| 169 | +delete this.invalidHandleIds[id]; | |
| 170 | +},removeInvalidHandleClass:function(_41){ | |
| 171 | +for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){ | |
| 172 | +if(this.invalidHandleClasses[i]==_41){ | |
| 173 | +delete this.invalidHandleClasses[i]; | |
| 174 | +} | |
| 175 | +} | |
| 176 | +},isValidHandleChild:function(_43){ | |
| 177 | +var _44=true; | |
| 178 | +var _45; | |
| 179 | +try{ | |
| 180 | +_45=_43.nodeName.toUpperCase(); | |
| 181 | +} | |
| 182 | +catch(e){ | |
| 183 | +_45=_43.nodeName; | |
| 184 | +} | |
| 185 | +_44=_44&&!this.invalidHandleTypes[_45]; | |
| 186 | +_44=_44&&!this.invalidHandleIds[_43.id]; | |
| 187 | +for(var i=0,len=this.invalidHandleClasses.length;_44&&i<len;++i){ | |
| 188 | +_44=!_2.hasClass(_43,this.invalidHandleClasses[i]); | |
| 189 | +} | |
| 190 | +if(_43.className!=="dashboard_block_handle"){ | |
| 191 | +_44=false; | |
| 192 | +} | |
| 193 | +return _44; | |
| 194 | +},setXTicks:function(_47,_48){ | |
| 195 | +this.xTicks=[]; | |
| 196 | +this.xTickSize=_48; | |
| 197 | +var _49={}; | |
| 198 | +for(var i=this.initPageX;i>=this.minX;i=i-_48){ | |
| 199 | +if(!_49[i]){ | |
| 200 | +this.xTicks[this.xTicks.length]=i; | |
| 201 | +_49[i]=true; | |
| 202 | +} | |
| 203 | +} | |
| 204 | +for(i=this.initPageX;i<=this.maxX;i=i+_48){ | |
| 205 | +if(!_49[i]){ | |
| 206 | +this.xTicks[this.xTicks.length]=i; | |
| 207 | +_49[i]=true; | |
| 208 | +} | |
| 209 | +} | |
| 210 | +this.xTicks.sort(this.DDM.numericSort); | |
| 211 | +},setYTicks:function(_4b,_4c){ | |
| 212 | +this.yTicks=[]; | |
| 213 | +this.yTickSize=_4c; | |
| 214 | +var _4d={}; | |
| 215 | +for(var i=this.initPageY;i>=this.minY;i=i-_4c){ | |
| 216 | +if(!_4d[i]){ | |
| 217 | +this.yTicks[this.yTicks.length]=i; | |
| 218 | +_4d[i]=true; | |
| 219 | +} | |
| 220 | +} | |
| 221 | +for(i=this.initPageY;i<=this.maxY;i=i+_4c){ | |
| 222 | +if(!_4d[i]){ | |
| 223 | +this.yTicks[this.yTicks.length]=i; | |
| 224 | +_4d[i]=true; | |
| 225 | +} | |
| 226 | +} | |
| 227 | +this.yTicks.sort(this.DDM.numericSort); | |
| 228 | +},setXConstraint:function(_4f,_50,_51){ | |
| 229 | +this.leftConstraint=_4f; | |
| 230 | +this.rightConstraint=_50; | |
| 231 | +this.minX=this.initPageX-_4f; | |
| 232 | +this.maxX=this.initPageX+_50; | |
| 233 | +if(_51){ | |
| 234 | +this.setXTicks(this.initPageX,_51); | |
| 235 | +} | |
| 236 | +this.constrainX=true; | |
| 237 | +},clearConstraints:function(){ | |
| 238 | +this.constrainX=false; | |
| 239 | +this.constrainY=false; | |
| 240 | +this.clearTicks(); | |
| 241 | +},clearTicks:function(){ | |
| 242 | +this.xTicks=null; | |
| 243 | +this.yTicks=null; | |
| 244 | +this.xTickSize=0; | |
| 245 | +this.yTickSize=0; | |
| 246 | +},setYConstraint:function(iUp,_53,_54){ | |
| 247 | +this.topConstraint=iUp; | |
| 248 | +this.bottomConstraint=_53; | |
| 249 | +this.minY=this.initPageY-iUp; | |
| 250 | +this.maxY=this.initPageY+_53; | |
| 251 | +if(_54){ | |
| 252 | +this.setYTicks(this.initPageY,_54); | |
| 253 | +} | |
| 254 | +this.constrainY=true; | |
| 255 | +},resetConstraints:function(){ | |
| 256 | +if(this.initPageX||this.initPageX===0){ | |
| 257 | +var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0; | |
| 258 | +var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0; | |
| 259 | +this.setInitPosition(dx,dy); | |
| 260 | +}else{ | |
| 261 | +this.setInitPosition(); | |
| 262 | +} | |
| 263 | +if(this.constrainX){ | |
| 264 | +this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize); | |
| 265 | +} | |
| 266 | +if(this.constrainY){ | |
| 267 | +this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize); | |
| 268 | +} | |
| 269 | +},getTick:function(val,_58){ | |
| 270 | +if(!_58){ | |
| 271 | +return val; | |
| 272 | +}else{ | |
| 273 | +if(_58[0]>=val){ | |
| 274 | +return _58[0]; | |
| 275 | +}else{ | |
| 276 | +for(var i=0,len=_58.length;i<len;++i){ | |
| 277 | +var _5a=i+1; | |
| 278 | +if(_58[_5a]&&_58[_5a]>=val){ | |
| 279 | +var _5b=val-_58[i]; | |
| 280 | +var _5c=_58[_5a]-val; | |
| 281 | +return (_5c>_5b)?_58[i]:_58[_5a]; | |
| 282 | +} | |
| 283 | +} | |
| 284 | +return _58[_58.length-1]; | |
| 285 | +} | |
| 286 | +} | |
| 287 | +},toString:function(){ | |
| 288 | +return ("DragDrop "+this.id); | |
| 289 | +}}; | |
| 290 | +})(); | |
| 291 | +if(!YAHOO.util.DragDropMgr){ | |
| 292 | +YAHOO.util.DragDropMgr=function(){ | |
| 293 | +var _5d=YAHOO.util.Event; | |
| 294 | +return {ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){ | |
| 295 | +this.initialized=true; | |
| 296 | +},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(_5e,_5f){ | |
| 297 | +for(var i in this.ids){ | |
| 298 | +for(var j in this.ids[i]){ | |
| 299 | +var oDD=this.ids[i][j]; | |
| 300 | +if(!this.isTypeOfDD(oDD)){ | |
| 301 | +continue; | |
| 302 | +} | |
| 303 | +oDD[_5e].apply(oDD,_5f); | |
| 304 | +} | |
| 305 | +} | |
| 306 | +},_onLoad:function(){ | |
| 307 | +this.init(); | |
| 308 | +_5d.on(document,"mouseup",this.handleMouseUp,this,true); | |
| 309 | +_5d.on(document,"mousemove",this.handleMouseMove,this,true); | |
| 310 | +_5d.on(window,"unload",this._onUnload,this,true); | |
| 311 | +_5d.on(window,"resize",this._onResize,this,true); | |
| 312 | +},_onResize:function(e){ | |
| 313 | +this._execOnAll("resetConstraints",[]); | |
| 314 | +},lock:function(){ | |
| 315 | +this.locked=true; | |
| 316 | +},unlock:function(){ | |
| 317 | +this.locked=false; | |
| 318 | +},isLocked:function(){ | |
| 319 | +return this.locked; | |
| 320 | +},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,_65){ | |
| 321 | +if(!this.initialized){ | |
| 322 | +this.init(); | |
| 323 | +} | |
| 324 | +if(!this.ids[_65]){ | |
| 325 | +this.ids[_65]={}; | |
| 326 | +} | |
| 327 | +this.ids[_65][oDD.id]=oDD; | |
| 328 | +},removeDDFromGroup:function(oDD,_67){ | |
| 329 | +if(!this.ids[_67]){ | |
| 330 | +this.ids[_67]={}; | |
| 331 | +} | |
| 332 | +var obj=this.ids[_67]; | |
| 333 | +if(obj&&obj[oDD.id]){ | |
| 334 | +delete obj[oDD.id]; | |
| 335 | +} | |
| 336 | +},_remove:function(oDD){ | |
| 337 | +for(var g in oDD.groups){ | |
| 338 | +if(g&&this.ids[g][oDD.id]){ | |
| 339 | +delete this.ids[g][oDD.id]; | |
| 340 | +} | |
| 341 | +} | |
| 342 | +delete this.handleIds[oDD.id]; | |
| 343 | +},regHandle:function(_6b,_6c){ | |
| 344 | +if(!this.handleIds[_6b]){ | |
| 345 | +this.handleIds[_6b]={}; | |
| 346 | +} | |
| 347 | +this.handleIds[_6b][_6c]=_6c; | |
| 348 | +},isDragDrop:function(id){ | |
| 349 | +return (this.getDDById(id))?true:false; | |
| 350 | +},getRelated:function(_6e,_6f){ | |
| 351 | +var _70=[]; | |
| 352 | +for(var i in _6e.groups){ | |
| 353 | +for(j in this.ids[i]){ | |
| 354 | +var dd=this.ids[i][j]; | |
| 355 | +if(!this.isTypeOfDD(dd)){ | |
| 356 | +continue; | |
| 357 | +} | |
| 358 | +if(!_6f||dd.isTarget){ | |
| 359 | +_70[_70.length]=dd; | |
| 360 | +} | |
| 361 | +} | |
| 362 | +} | |
| 363 | +return _70; | |
| 364 | +},isLegalTarget:function(oDD,_74){ | |
| 365 | +var _75=this.getRelated(oDD,true); | |
| 366 | +for(var i=0,len=_75.length;i<len;++i){ | |
| 367 | +if(_75[i].id==_74.id){ | |
| 368 | +return true; | |
| 369 | +} | |
| 370 | +} | |
| 371 | +return false; | |
| 372 | +},isTypeOfDD:function(oDD){ | |
| 373 | +return (oDD&&oDD.__ygDragDrop); | |
| 374 | +},isHandle:function(_78,_79){ | |
| 375 | +return (this.handleIds[_78]&&this.handleIds[_78][_79]); | |
| 376 | +},getDDById:function(id){ | |
| 377 | +for(var i in this.ids){ | |
| 378 | +if(this.ids[i][id]){ | |
| 379 | +return this.ids[i][id]; | |
| 380 | +} | |
| 381 | +} | |
| 382 | +return null; | |
| 383 | +},handleMouseDown:function(e,oDD){ | |
| 384 | +this.currentTarget=YAHOO.util.Event.getTarget(e); | |
| 385 | +this.dragCurrent=oDD; | |
| 386 | +var el=oDD.getEl(); | |
| 387 | +this.startX=YAHOO.util.Event.getPageX(e); | |
| 388 | +this.startY=YAHOO.util.Event.getPageY(e); | |
| 389 | +this.deltaX=this.startX-el.offsetLeft; | |
| 390 | +this.deltaY=this.startY-el.offsetTop; | |
| 391 | +this.dragThreshMet=false; | |
| 392 | +this.clickTimeout=setTimeout(function(){ | |
| 393 | +var DDM=YAHOO.util.DDM; | |
| 394 | +DDM.startDrag(DDM.startX,DDM.startY); | |
| 395 | +},this.clickTimeThresh); | |
| 396 | +},startDrag:function(x,y){ | |
| 397 | +clearTimeout(this.clickTimeout); | |
| 398 | +if(this.dragCurrent){ | |
| 399 | +this.dragCurrent.b4StartDrag(x,y); | |
| 400 | +this.dragCurrent.startDrag(x,y); | |
| 401 | +} | |
| 402 | +this.dragThreshMet=true; | |
| 403 | +},handleMouseUp:function(e){ | |
| 404 | +if(!this.dragCurrent){ | |
| 405 | +return; | |
| 406 | +} | |
| 407 | +clearTimeout(this.clickTimeout); | |
| 408 | +if(this.dragThreshMet){ | |
| 409 | +this.fireEvents(e,true); | |
| 410 | +}else{ | |
| 411 | +} | |
| 412 | +this.stopDrag(e); | |
| 413 | +this.stopEvent(e); | |
| 414 | +},stopEvent:function(e){ | |
| 415 | +if(this.stopPropagation){ | |
| 416 | +YAHOO.util.Event.stopPropagation(e); | |
| 417 | +} | |
| 418 | +if(this.preventDefault){ | |
| 419 | +YAHOO.util.Event.preventDefault(e); | |
| 420 | +} | |
| 421 | +},stopDrag:function(e){ | |
| 422 | +if(this.dragCurrent){ | |
| 423 | +if(this.dragThreshMet){ | |
| 424 | +this.dragCurrent.b4EndDrag(e); | |
| 425 | +this.dragCurrent.endDrag(e); | |
| 426 | +} | |
| 427 | +this.dragCurrent.onMouseUp(e); | |
| 428 | +} | |
| 429 | +this.dragCurrent=null; | |
| 430 | +this.dragOvers={}; | |
| 431 | +},handleMouseMove:function(e){ | |
| 432 | +if(!this.dragCurrent){ | |
| 433 | +return true; | |
| 434 | +} | |
| 435 | +if(YAHOO.util.Event.isIE&&!e.button){ | |
| 436 | +this.stopEvent(e); | |
| 437 | +return this.handleMouseUp(e); | |
| 438 | +} | |
| 439 | +if(!this.dragThreshMet){ | |
| 440 | +var _86=Math.abs(this.startX-YAHOO.util.Event.getPageX(e)); | |
| 441 | +var _87=Math.abs(this.startY-YAHOO.util.Event.getPageY(e)); | |
| 442 | +if(_86>this.clickPixelThresh||_87>this.clickPixelThresh){ | |
| 443 | +this.startDrag(this.startX,this.startY); | |
| 444 | +} | |
| 445 | +} | |
| 446 | +if(this.dragThreshMet){ | |
| 447 | +this.dragCurrent.b4Drag(e); | |
| 448 | +this.dragCurrent.onDrag(e); | |
| 449 | +this.fireEvents(e,false); | |
| 450 | +} | |
| 451 | +this.stopEvent(e); | |
| 452 | +return true; | |
| 453 | +},fireEvents:function(e,_89){ | |
| 454 | +var dc=this.dragCurrent; | |
| 455 | +if(!dc||dc.isLocked()){ | |
| 456 | +return; | |
| 457 | +} | |
| 458 | +var x=YAHOO.util.Event.getPageX(e); | |
| 459 | +var y=YAHOO.util.Event.getPageY(e); | |
| 460 | +var pt=new YAHOO.util.Point(x,y); | |
| 461 | +var _8e=[]; | |
| 462 | +var _8f=[]; | |
| 463 | +var _90=[]; | |
| 464 | +var _91=[]; | |
| 465 | +var _92=[]; | |
| 466 | +for(var i in this.dragOvers){ | |
| 467 | +var ddo=this.dragOvers[i]; | |
| 468 | +if(!this.isTypeOfDD(ddo)){ | |
| 469 | +continue; | |
| 470 | +} | |
| 471 | +if(!this.isOverTarget(pt,ddo,this.mode)){ | |
| 472 | +_8f.push(ddo); | |
| 473 | +} | |
| 474 | +_8e[i]=true; | |
| 475 | +delete this.dragOvers[i]; | |
| 476 | +} | |
| 477 | +for(var _95 in dc.groups){ | |
| 478 | +if("string"!=typeof _95){ | |
| 479 | +continue; | |
| 480 | +} | |
| 481 | +for(i in this.ids[_95]){ | |
| 482 | +var oDD=this.ids[_95][i]; | |
| 483 | +if(!this.isTypeOfDD(oDD)){ | |
| 484 | +continue; | |
| 485 | +} | |
| 486 | +if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){ | |
| 487 | +if(this.isOverTarget(pt,oDD,this.mode)){ | |
| 488 | +if(_89){ | |
| 489 | +_91.push(oDD); | |
| 490 | +}else{ | |
| 491 | +if(!_8e[oDD.id]){ | |
| 492 | +_92.push(oDD); | |
| 493 | +}else{ | |
| 494 | +_90.push(oDD); | |
| 495 | +} | |
| 496 | +this.dragOvers[oDD.id]=oDD; | |
| 497 | +} | |
| 498 | +} | |
| 499 | +} | |
| 500 | +} | |
| 501 | +} | |
| 502 | +if(this.mode){ | |
| 503 | +if(_8f.length){ | |
| 504 | +dc.b4DragOut(e,_8f); | |
| 505 | +dc.onDragOut(e,_8f); | |
| 506 | +} | |
| 507 | +if(_92.length){ | |
| 508 | +dc.onDragEnter(e,_92); | |
| 509 | +} | |
| 510 | +if(_90.length){ | |
| 511 | +dc.b4DragOver(e,_90); | |
| 512 | +dc.onDragOver(e,_90); | |
| 513 | +} | |
| 514 | +if(_91.length){ | |
| 515 | +dc.b4DragDrop(e,_91); | |
| 516 | +dc.onDragDrop(e,_91); | |
| 517 | +} | |
| 518 | +}else{ | |
| 519 | +var len=0; | |
| 520 | +for(i=0,len=_8f.length;i<len;++i){ | |
| 521 | +dc.b4DragOut(e,_8f[i].id); | |
| 522 | +dc.onDragOut(e,_8f[i].id); | |
| 523 | +} | |
| 524 | +for(i=0,len=_92.length;i<len;++i){ | |
| 525 | +dc.onDragEnter(e,_92[i].id); | |
| 526 | +} | |
| 527 | +for(i=0,len=_90.length;i<len;++i){ | |
| 528 | +dc.b4DragOver(e,_90[i].id); | |
| 529 | +dc.onDragOver(e,_90[i].id); | |
| 530 | +} | |
| 531 | +for(i=0,len=_91.length;i<len;++i){ | |
| 532 | +dc.b4DragDrop(e,_91[i].id); | |
| 533 | +dc.onDragDrop(e,_91[i].id); | |
| 534 | +} | |
| 535 | +} | |
| 536 | +if(_89&&!_91.length){ | |
| 537 | +dc.onInvalidDrop(e); | |
| 538 | +} | |
| 539 | +},getBestMatch:function(dds){ | |
| 540 | +var _99=null; | |
| 541 | +var len=dds.length; | |
| 542 | +if(len==1){ | |
| 543 | +_99=dds[0]; | |
| 544 | +}else{ | |
| 545 | +for(var i=0;i<len;++i){ | |
| 546 | +var dd=dds[i]; | |
| 547 | +if(dd.cursorIsOver){ | |
| 548 | +_99=dd; | |
| 549 | +break; | |
| 550 | +}else{ | |
| 551 | +if(!_99||_99.overlap.getArea()<dd.overlap.getArea()){ | |
| 552 | +_99=dd; | |
| 553 | +} | |
| 554 | +} | |
| 555 | +} | |
| 556 | +} | |
| 557 | +return _99; | |
| 558 | +},refreshCache:function(_9d){ | |
| 559 | +for(var _9e in _9d){ | |
| 560 | +if("string"!=typeof _9e){ | |
| 561 | +continue; | |
| 562 | +} | |
| 563 | +for(var i in this.ids[_9e]){ | |
| 564 | +var oDD=this.ids[_9e][i]; | |
| 565 | +if(this.isTypeOfDD(oDD)){ | |
| 566 | +var loc=this.getLocation(oDD); | |
| 567 | +if(loc){ | |
| 568 | +this.locationCache[oDD.id]=loc; | |
| 569 | +}else{ | |
| 570 | +delete this.locationCache[oDD.id]; | |
| 571 | +} | |
| 572 | +} | |
| 573 | +} | |
| 574 | +} | |
| 575 | +},verifyEl:function(el){ | |
| 576 | +try{ | |
| 577 | +if(el){ | |
| 578 | +var _a3=el.offsetParent; | |
| 579 | +if(_a3){ | |
| 580 | +return true; | |
| 581 | +} | |
| 582 | +} | |
| 583 | +} | |
| 584 | +catch(e){ | |
| 585 | +} | |
| 586 | +return false; | |
| 587 | +},getLocation:function(oDD){ | |
| 588 | +if(!this.isTypeOfDD(oDD)){ | |
| 589 | +return null; | |
| 590 | +} | |
| 591 | +var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l; | |
| 592 | +try{ | |
| 593 | +pos=YAHOO.util.Dom.getXY(el); | |
| 594 | +} | |
| 595 | +catch(e){ | |
| 596 | +} | |
| 597 | +if(!pos){ | |
| 598 | +return null; | |
| 599 | +} | |
| 600 | +x1=pos[0]; | |
| 601 | +x2=x1+el.offsetWidth; | |
| 602 | +y1=pos[1]; | |
| 603 | +y2=y1+el.offsetHeight; | |
| 604 | +t=y1-oDD.padding[0]; | |
| 605 | +r=x2+oDD.padding[1]; | |
| 606 | +b=y2+oDD.padding[2]; | |
| 607 | +l=x1-oDD.padding[3]; | |
| 608 | +return new YAHOO.util.Region(t,r,b,l); | |
| 609 | +},isOverTarget:function(pt,_a7,_a8){ | |
| 610 | +var loc=this.locationCache[_a7.id]; | |
| 611 | +if(!loc||!this.useCache){ | |
| 612 | +loc=this.getLocation(_a7); | |
| 613 | +this.locationCache[_a7.id]=loc; | |
| 614 | +} | |
| 615 | +if(!loc){ | |
| 616 | +return false; | |
| 617 | +} | |
| 618 | +_a7.cursorIsOver=loc.contains(pt); | |
| 619 | +var dc=this.dragCurrent; | |
| 620 | +if(!dc||!dc.getTargetCoord||(!_a8&&!dc.constrainX&&!dc.constrainY)){ | |
| 621 | +return _a7.cursorIsOver; | |
| 622 | +} | |
| 623 | +_a7.overlap=null; | |
| 624 | +var pos=dc.getTargetCoord(pt.x,pt.y); | |
| 625 | +var el=dc.getDragEl(); | |
| 626 | +var _ad=new YAHOO.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x); | |
| 627 | +var _ae=_ad.intersect(loc); | |
| 628 | +if(_ae){ | |
| 629 | +_a7.overlap=_ae; | |
| 630 | +return (_a8)?true:_a7.cursorIsOver; | |
| 631 | +}else{ | |
| 632 | +return false; | |
| 633 | +} | |
| 634 | +},_onUnload:function(e,me){ | |
| 635 | +this.unregAll(); | |
| 636 | +},unregAll:function(){ | |
| 637 | +if(this.dragCurrent){ | |
| 638 | +this.stopDrag(); | |
| 639 | +this.dragCurrent=null; | |
| 640 | +} | |
| 641 | +this._execOnAll("unreg",[]); | |
| 642 | +for(i in this.elementCache){ | |
| 643 | +delete this.elementCache[i]; | |
| 644 | +} | |
| 645 | +this.elementCache={}; | |
| 646 | +this.ids={}; | |
| 647 | +},elementCache:{},getElWrapper:function(id){ | |
| 648 | +var _b2=this.elementCache[id]; | |
| 649 | +if(!_b2||!_b2.el){ | |
| 650 | +_b2=this.elementCache[id]=new this.ElementWrapper(YAHOO.util.Dom.get(id)); | |
| 651 | +} | |
| 652 | +return _b2; | |
| 653 | +},getElement:function(id){ | |
| 654 | +return YAHOO.util.Dom.get(id); | |
| 655 | +},getCss:function(id){ | |
| 656 | +var el=YAHOO.util.Dom.get(id); | |
| 657 | +return (el)?el.style:null; | |
| 658 | +},ElementWrapper:function(el){ | |
| 659 | +this.el=el||null; | |
| 660 | +this.id=this.el&&el.id; | |
| 661 | +this.css=this.el&&el.style; | |
| 662 | +},getPosX:function(el){ | |
| 663 | +return YAHOO.util.Dom.getX(el); | |
| 664 | +},getPosY:function(el){ | |
| 665 | +return YAHOO.util.Dom.getY(el); | |
| 666 | +},swapNode:function(n1,n2){ | |
| 667 | +if(n1.swapNode){ | |
| 668 | +n1.swapNode(n2); | |
| 669 | +}else{ | |
| 670 | +var p=n2.parentNode; | |
| 671 | +var s=n2.nextSibling; | |
| 672 | +if(s==n1){ | |
| 673 | +p.insertBefore(n1,n2); | |
| 674 | +}else{ | |
| 675 | +if(n2==n1.nextSibling){ | |
| 676 | +p.insertBefore(n2,n1); | |
| 677 | +}else{ | |
| 678 | +n1.parentNode.replaceChild(n2,n1); | |
| 679 | +p.insertBefore(n1,s); | |
| 680 | +} | |
| 681 | +} | |
| 682 | +} | |
| 683 | +},getScroll:function(){ | |
| 684 | +var t,l,dde=document.documentElement,db=document.body; | |
| 685 | +if(dde&&(dde.scrollTop||dde.scrollLeft)){ | |
| 686 | +t=dde.scrollTop; | |
| 687 | +l=dde.scrollLeft; | |
| 688 | +}else{ | |
| 689 | +if(db){ | |
| 690 | +t=db.scrollTop; | |
| 691 | +l=db.scrollLeft; | |
| 692 | +}else{ | |
| 693 | +YAHOO.log("could not get scroll property"); | |
| 694 | +} | |
| 695 | +} | |
| 696 | +return {top:t,left:l}; | |
| 697 | +},getStyle:function(el,_bf){ | |
| 698 | +return YAHOO.util.Dom.getStyle(el,_bf); | |
| 699 | +},getScrollTop:function(){ | |
| 700 | +return this.getScroll().top; | |
| 701 | +},getScrollLeft:function(){ | |
| 702 | +return this.getScroll().left; | |
| 703 | +},moveToEl:function(_c0,_c1){ | |
| 704 | +var _c2=YAHOO.util.Dom.getXY(_c1); | |
| 705 | +YAHOO.util.Dom.setXY(_c0,_c2); | |
| 706 | +},getClientHeight:function(){ | |
| 707 | +return YAHOO.util.Dom.getViewportHeight(); | |
| 708 | +},getClientWidth:function(){ | |
| 709 | +return YAHOO.util.Dom.getViewportWidth(); | |
| 710 | +},numericSort:function(a,b){ | |
| 711 | +return (a-b); | |
| 712 | +},_timeoutCount:0,_addListeners:function(){ | |
| 713 | +var DDM=YAHOO.util.DDM; | |
| 714 | +if(YAHOO.util.Event&&document){ | |
| 715 | +DDM._onLoad(); | |
| 716 | +}else{ | |
| 717 | +if(DDM._timeoutCount>2000){ | |
| 718 | +}else{ | |
| 719 | +setTimeout(DDM._addListeners,10); | |
| 720 | +if(document&&document.body){ | |
| 721 | +DDM._timeoutCount+=1; | |
| 722 | +} | |
| 723 | +} | |
| 724 | +} | |
| 725 | +},handleWasClicked:function(_c6,id){ | |
| 726 | +if(this.isHandle(id,_c6.id)){ | |
| 727 | +return true; | |
| 728 | +}else{ | |
| 729 | +var p=_c6.parentNode; | |
| 730 | +while(p){ | |
| 731 | +if(this.isHandle(id,p.id)){ | |
| 732 | +return true; | |
| 733 | +}else{ | |
| 734 | +p=p.parentNode; | |
| 735 | +} | |
| 736 | +} | |
| 737 | +} | |
| 738 | +return false; | |
| 739 | +}}; | |
| 2409 | 740 | }(); |
| 2410 | - | |
| 2411 | -// shorter alias, save a few bytes | |
| 2412 | -YAHOO.util.DDM = YAHOO.util.DragDropMgr; | |
| 741 | +YAHOO.util.DDM=YAHOO.util.DragDropMgr; | |
| 2413 | 742 | YAHOO.util.DDM._addListeners(); |
| 2414 | - | |
| 2415 | 743 | } |
| 2416 | - | |
| 2417 | -/** | |
| 2418 | - * A DragDrop implementation where the linked element follows the | |
| 2419 | - * mouse cursor during a drag. | |
| 2420 | - * @class DD | |
| 2421 | - * @extends YAHOO.util.DragDrop | |
| 2422 | - * @constructor | |
| 2423 | - * @param {String} id the id of the linked element | |
| 2424 | - * @param {String} sGroup the group of related DragDrop items | |
| 2425 | - * @param {object} config an object containing configurable attributes | |
| 2426 | - * Valid properties for DD: | |
| 2427 | - * scroll | |
| 2428 | - */ | |
| 2429 | -YAHOO.util.DD = function(id, sGroup, config) { | |
| 2430 | - if (id) { | |
| 2431 | - this.init(id, sGroup, config); | |
| 2432 | - } | |
| 744 | +YAHOO.util.DD=function(id,_ca,_cb){ | |
| 745 | +if(id){ | |
| 746 | +this.init(id,_ca,_cb); | |
| 747 | +} | |
| 2433 | 748 | }; |
| 2434 | - | |
| 2435 | -YAHOO.extend(YAHOO.util.DD, YAHOO.util.DragDrop, { | |
| 2436 | - | |
| 2437 | - /** | |
| 2438 | - * When set to true, the utility automatically tries to scroll the browser | |
| 2439 | - * window wehn a drag and drop element is dragged near the viewport boundary. | |
| 2440 | - * Defaults to true. | |
| 2441 | - * @property scroll | |
| 2442 | - * @type boolean | |
| 2443 | - */ | |
| 2444 | - scroll: true, | |
| 2445 | - | |
| 2446 | - /** | |
| 2447 | - * Sets the pointer offset to the distance between the linked element's top | |
| 2448 | - * left corner and the location the element was clicked | |
| 2449 | - * @method autoOffset | |
| 2450 | - * @param {int} iPageX the X coordinate of the click | |
| 2451 | - * @param {int} iPageY the Y coordinate of the click | |
| 2452 | - */ | |
| 2453 | - autoOffset: function(iPageX, iPageY) { | |
| 2454 | - var x = iPageX - this.startPageX; | |
| 2455 | - var y = iPageY - this.startPageY; | |
| 2456 | - this.setDelta(x, y); | |
| 2457 | - }, | |
| 2458 | - | |
| 2459 | - /** | |
| 2460 | - * Sets the pointer offset. You can call this directly to force the | |
| 2461 | - * offset to be in a particular location (e.g., pass in 0,0 to set it | |
| 2462 | - * to the center of the object, as done in YAHOO.widget.Slider) | |
| 2463 | - * @method setDelta | |
| 2464 | - * @param {int} iDeltaX the distance from the left | |
| 2465 | - * @param {int} iDeltaY the distance from the top | |
| 2466 | - */ | |
| 2467 | - setDelta: function(iDeltaX, iDeltaY) { | |
| 2468 | - this.deltaX = iDeltaX; | |
| 2469 | - this.deltaY = iDeltaY; | |
| 2470 | - }, | |
| 2471 | - | |
| 2472 | - /** | |
| 2473 | - * Sets the drag element to the location of the mousedown or click event, | |
| 2474 | - * maintaining the cursor location relative to the location on the element | |
| 2475 | - * that was clicked. Override this if you want to place the element in a | |
| 2476 | - * location other than where the cursor is. | |
| 2477 | - * @method setDragElPos | |
| 2478 | - * @param {int} iPageX the X coordinate of the mousedown or drag event | |
| 2479 | - * @param {int} iPageY the Y coordinate of the mousedown or drag event | |
| 2480 | - */ | |
| 2481 | - setDragElPos: function(iPageX, iPageY) { | |
| 2482 | - // the first time we do this, we are going to check to make sure | |
| 2483 | - // the element has css positioning | |
| 2484 | - | |
| 2485 | - var el = this.getDragEl(); | |
| 2486 | - this.alignElWithMouse(el, iPageX, iPageY); | |
| 2487 | - }, | |
| 2488 | - | |
| 2489 | - /** | |
| 2490 | - * Sets the element to the location of the mousedown or click event, | |
| 2491 | - * maintaining the cursor location relative to the location on the element | |
| 2492 | - * that was clicked. Override this if you want to place the element in a | |
| 2493 | - * location other than where the cursor is. | |
| 2494 | - * @method alignElWithMouse | |
| 2495 | - * @param {HTMLElement} el the element to move | |
| 2496 | - * @param {int} iPageX the X coordinate of the mousedown or drag event | |
| 2497 | - * @param {int} iPageY the Y coordinate of the mousedown or drag event | |
| 2498 | - */ | |
| 2499 | - alignElWithMouse: function(el, iPageX, iPageY) { | |
| 2500 | - var oCoord = this.getTargetCoord(iPageX, iPageY); | |
| 2501 | - | |
| 2502 | - if (!this.deltaSetXY) { | |
| 2503 | - var aCoord = [oCoord.x, oCoord.y]; | |
| 2504 | - YAHOO.util.Dom.setXY(el, aCoord); | |
| 2505 | - var newLeft = parseInt( YAHOO.util.Dom.getStyle(el, "left"), 10 ); | |
| 2506 | - var newTop = parseInt( YAHOO.util.Dom.getStyle(el, "top" ), 10 ); | |
| 2507 | - | |
| 2508 | - this.deltaSetXY = [ newLeft - oCoord.x, newTop - oCoord.y ]; | |
| 2509 | - } else { | |
| 2510 | - YAHOO.util.Dom.setStyle(el, "left", (oCoord.x + this.deltaSetXY[0]) + "px"); | |
| 2511 | - YAHOO.util.Dom.setStyle(el, "top", (oCoord.y + this.deltaSetXY[1]) + "px"); | |
| 2512 | - } | |
| 2513 | - | |
| 2514 | - this.cachePosition(oCoord.x, oCoord.y); | |
| 2515 | - this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth); | |
| 2516 | - }, | |
| 2517 | - | |
| 2518 | - /** | |
| 2519 | - * Saves the most recent position so that we can reset the constraints and | |
| 2520 | - * tick marks on-demand. We need to know this so that we can calculate the | |
| 2521 | - * number of pixels the element is offset from its original position. | |
| 2522 | - * @method cachePosition | |
| 2523 | - * @param iPageX the current x position (optional, this just makes it so we | |
| 2524 | - * don't have to look it up again) | |
| 2525 | - * @param iPageY the current y position (optional, this just makes it so we | |
| 2526 | - * don't have to look it up again) | |
| 2527 | - */ | |
| 2528 | - cachePosition: function(iPageX, iPageY) { | |
| 2529 | - if (iPageX) { | |
| 2530 | - this.lastPageX = iPageX; | |
| 2531 | - this.lastPageY = iPageY; | |
| 2532 | - } else { | |
| 2533 | - var aCoord = YAHOO.util.Dom.getXY(this.getEl()); | |
| 2534 | - this.lastPageX = aCoord[0]; | |
| 2535 | - this.lastPageY = aCoord[1]; | |
| 2536 | - } | |
| 2537 | - }, | |
| 2538 | - | |
| 2539 | - /** | |
| 2540 | - * Auto-scroll the window if the dragged object has been moved beyond the | |
| 2541 | - * visible window boundary. | |
| 2542 | - * @method autoScroll | |
| 2543 | - * @param {int} x the drag element's x position | |
| 2544 | - * @param {int} y the drag element's y position | |
| 2545 | - * @param {int} h the height of the drag element | |
| 2546 | - * @param {int} w the width of the drag element | |
| 2547 | - * @private | |
| 2548 | - */ | |
| 2549 | - autoScroll: function(x, y, h, w) { | |
| 2550 | - | |
| 2551 | - if (this.scroll) { | |
| 2552 | - // The client height | |
| 2553 | - var clientH = this.DDM.getClientHeight(); | |
| 2554 | - | |
| 2555 | - // The client width | |
| 2556 | - var clientW = this.DDM.getClientWidth(); | |
| 2557 | - | |
| 2558 | - // The amt scrolled down | |
| 2559 | - var st = this.DDM.getScrollTop(); | |
| 2560 | - | |
| 2561 | - // The amt scrolled right | |
| 2562 | - var sl = this.DDM.getScrollLeft(); | |
| 2563 | - | |
| 2564 | - // Location of the bottom of the element | |
| 2565 | - var bot = h + y; | |
| 2566 | - | |
| 2567 | - // Location of the right of the element | |
| 2568 | - var right = w + x; | |
| 2569 | - | |
| 2570 | - // The distance from the cursor to the bottom of the visible area, | |
| 2571 | - // adjusted so that we don't scroll if the cursor is beyond the | |
| 2572 | - // element drag constraints | |
| 2573 | - var toBot = (clientH + st - y - this.deltaY); | |
| 2574 | - | |
| 2575 | - // The distance from the cursor to the right of the visible area | |
| 2576 | - var toRight = (clientW + sl - x - this.deltaX); | |
| 2577 | - | |
| 2578 | - | |
| 2579 | - // How close to the edge the cursor must be before we scroll | |
| 2580 | - // var thresh = (document.all) ? 100 : 40; | |
| 2581 | - var thresh = 40; | |
| 2582 | - | |
| 2583 | - // How many pixels to scroll per autoscroll op. This helps to reduce | |
| 2584 | - // clunky scrolling. IE is more sensitive about this ... it needs this | |
| 2585 | - // value to be higher. | |
| 2586 | - var scrAmt = (document.all) ? 80 : 30; | |
| 2587 | - | |
| 2588 | - // Scroll down if we are near the bottom of the visible page and the | |
| 2589 | - // obj extends below the crease | |
| 2590 | - if ( bot > clientH && toBot < thresh ) { | |
| 2591 | - window.scrollTo(sl, st + scrAmt); | |
| 2592 | - } | |
| 2593 | - | |
| 2594 | - // Scroll up if the window is scrolled down and the top of the object | |
| 2595 | - // goes above the top border | |
| 2596 | - if ( y < st && st > 0 && y - st < thresh ) { | |
| 2597 | - window.scrollTo(sl, st - scrAmt); | |
| 2598 | - } | |
| 2599 | - | |
| 2600 | - // Scroll right if the obj is beyond the right border and the cursor is | |
| 2601 | - // near the border. | |
| 2602 | - if ( right > clientW && toRight < thresh ) { | |
| 2603 | - window.scrollTo(sl + scrAmt, st); | |
| 2604 | - } | |
| 2605 | - | |
| 2606 | - // Scroll left if the window has been scrolled to the right and the obj | |
| 2607 | - // extends past the left border | |
| 2608 | - if ( x < sl && sl > 0 && x - sl < thresh ) { | |
| 2609 | - window.scrollTo(sl - scrAmt, st); | |
| 2610 | - } | |
| 2611 | - } | |
| 2612 | - }, | |
| 2613 | - | |
| 2614 | - /** | |
| 2615 | - * Finds the location the element should be placed if we want to move | |
| 2616 | - * it to where the mouse location less the click offset would place us. | |
| 2617 | - * @method getTargetCoord | |
| 2618 | - * @param {int} iPageX the X coordinate of the click | |
| 2619 | - * @param {int} iPageY the Y coordinate of the click | |
| 2620 | - * @return an object that contains the coordinates (Object.x and Object.y) | |
| 2621 | - * @private | |
| 2622 | - */ | |
| 2623 | - getTargetCoord: function(iPageX, iPageY) { | |
| 2624 | - | |
| 2625 | - | |
| 2626 | - var x = iPageX - this.deltaX; | |
| 2627 | - var y = iPageY - this.deltaY; | |
| 2628 | - | |
| 2629 | - if (this.constrainX) { | |
| 2630 | - if (x < this.minX) { x = this.minX; } | |
| 2631 | - if (x > this.maxX) { x = this.maxX; } | |
| 2632 | - } | |
| 2633 | - | |
| 2634 | - if (this.constrainY) { | |
| 2635 | - if (y < this.minY) { y = this.minY; } | |
| 2636 | - if (y > this.maxY) { y = this.maxY; } | |
| 2637 | - } | |
| 2638 | - | |
| 2639 | - x = this.getTick(x, this.xTicks); | |
| 2640 | - y = this.getTick(y, this.yTicks); | |
| 2641 | - | |
| 2642 | - | |
| 2643 | - return {x:x, y:y}; | |
| 2644 | - }, | |
| 2645 | - | |
| 2646 | - /* | |
| 2647 | - * Sets up config options specific to this class. Overrides | |
| 2648 | - * YAHOO.util.DragDrop, but all versions of this method through the | |
| 2649 | - * inheritance chain are called | |
| 2650 | - */ | |
| 2651 | - applyConfig: function() { | |
| 2652 | - YAHOO.util.DD.superclass.applyConfig.call(this); | |
| 2653 | - this.scroll = (this.config.scroll !== false); | |
| 2654 | - }, | |
| 2655 | - | |
| 2656 | - /* | |
| 2657 | - * Event that fires prior to the onMouseDown event. Overrides | |
| 2658 | - * YAHOO.util.DragDrop. | |
| 2659 | - */ | |
| 2660 | - b4MouseDown: function(e) { | |
| 2661 | - // this.resetConstraints(); | |
| 2662 | - this.autoOffset(YAHOO.util.Event.getPageX(e), | |
| 2663 | - YAHOO.util.Event.getPageY(e)); | |
| 2664 | - }, | |
| 2665 | - | |
| 2666 | - /* | |
| 2667 | - * Event that fires prior to the onDrag event. Overrides | |
| 2668 | - * YAHOO.util.DragDrop. | |
| 2669 | - */ | |
| 2670 | - b4Drag: function(e) { | |
| 2671 | - this.setDragElPos(YAHOO.util.Event.getPageX(e), | |
| 2672 | - YAHOO.util.Event.getPageY(e)); | |
| 2673 | - }, | |
| 2674 | - | |
| 2675 | - toString: function() { | |
| 2676 | - return ("DD " + this.id); | |
| 2677 | - } | |
| 2678 | - | |
| 2679 | - ////////////////////////////////////////////////////////////////////////// | |
| 2680 | - // Debugging ygDragDrop events that can be overridden | |
| 2681 | - ////////////////////////////////////////////////////////////////////////// | |
| 2682 | - /* | |
| 2683 | - startDrag: function(x, y) { | |
| 2684 | - }, | |
| 2685 | - | |
| 2686 | - onDrag: function(e) { | |
| 2687 | - }, | |
| 2688 | - | |
| 2689 | - onDragEnter: function(e, id) { | |
| 2690 | - }, | |
| 2691 | - | |
| 2692 | - onDragOver: function(e, id) { | |
| 2693 | - }, | |
| 2694 | - | |
| 2695 | - onDragOut: function(e, id) { | |
| 2696 | - }, | |
| 2697 | - | |
| 2698 | - onDragDrop: function(e, id) { | |
| 2699 | - }, | |
| 2700 | - | |
| 2701 | - endDrag: function(e) { | |
| 2702 | - } | |
| 2703 | - | |
| 2704 | - */ | |
| 2705 | - | |
| 2706 | -}); | |
| 2707 | -/** | |
| 2708 | - * A DragDrop implementation that inserts an empty, bordered div into | |
| 2709 | - * the document that follows the cursor during drag operations. At the time of | |
| 2710 | - * the click, the frame div is resized to the dimensions of the linked html | |
| 2711 | - * element, and moved to the exact location of the linked element. | |
| 2712 | - * | |
| 2713 | - * References to the "frame" element refer to the single proxy element that | |
| 2714 | - * was created to be dragged in place of all DDProxy elements on the | |
| 2715 | - * page. | |
| 2716 | - * | |
| 2717 | - * @class DDProxy | |
| 2718 | - * @extends YAHOO.util.DD | |
| 2719 | - * @constructor | |
| 2720 | - * @param {String} id the id of the linked html element | |
| 2721 | - * @param {String} sGroup the group of related DragDrop objects | |
| 2722 | - * @param {object} config an object containing configurable attributes | |
| 2723 | - * Valid properties for DDProxy in addition to those in DragDrop: | |
| 2724 | - * resizeFrame, centerFrame, dragElId | |
| 2725 | - */ | |
| 2726 | -YAHOO.util.DDProxy = function(id, sGroup, config) { | |
| 2727 | - if (id) { | |
| 2728 | - this.init(id, sGroup, config); | |
| 2729 | - this.initFrame(); | |
| 2730 | - } | |
| 749 | +YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(_cc,_cd){ | |
| 750 | +var x=_cc-this.startPageX; | |
| 751 | +var y=_cd-this.startPageY; | |
| 752 | +this.setDelta(x,y); | |
| 753 | +},setDelta:function(_d0,_d1){ | |
| 754 | +this.deltaX=_d0; | |
| 755 | +this.deltaY=_d1; | |
| 756 | +},setDragElPos:function(_d2,_d3){ | |
| 757 | +var el=this.getDragEl(); | |
| 758 | +this.alignElWithMouse(el,_d2,_d3); | |
| 759 | +},alignElWithMouse:function(el,_d6,_d7){ | |
| 760 | +var _d8=this.getTargetCoord(_d6,_d7); | |
| 761 | +if(!this.deltaSetXY){ | |
| 762 | +var _d9=[_d8.x,_d8.y]; | |
| 763 | +YAHOO.util.Dom.setXY(el,_d9); | |
| 764 | +var _da=parseInt(YAHOO.util.Dom.getStyle(el,"left"),10); | |
| 765 | +var _db=parseInt(YAHOO.util.Dom.getStyle(el,"top"),10); | |
| 766 | +this.deltaSetXY=[_da-_d8.x,_db-_d8.y]; | |
| 767 | +}else{ | |
| 768 | +YAHOO.util.Dom.setStyle(el,"left",(_d8.x+this.deltaSetXY[0])+"px"); | |
| 769 | +YAHOO.util.Dom.setStyle(el,"top",(_d8.y+this.deltaSetXY[1])+"px"); | |
| 770 | +} | |
| 771 | +this.cachePosition(_d8.x,_d8.y); | |
| 772 | +this.autoScroll(_d8.x,_d8.y,el.offsetHeight,el.offsetWidth); | |
| 773 | +},cachePosition:function(_dc,_dd){ | |
| 774 | +if(_dc){ | |
| 775 | +this.lastPageX=_dc; | |
| 776 | +this.lastPageY=_dd; | |
| 777 | +}else{ | |
| 778 | +var _de=YAHOO.util.Dom.getXY(this.getEl()); | |
| 779 | +this.lastPageX=_de[0]; | |
| 780 | +this.lastPageY=_de[1]; | |
| 781 | +} | |
| 782 | +},autoScroll:function(x,y,h,w){ | |
| 783 | +if(this.scroll){ | |
| 784 | +var _e3=this.DDM.getClientHeight(); | |
| 785 | +var _e4=this.DDM.getClientWidth(); | |
| 786 | +var st=this.DDM.getScrollTop(); | |
| 787 | +var sl=this.DDM.getScrollLeft(); | |
| 788 | +var bot=h+y; | |
| 789 | +var _e8=w+x; | |
| 790 | +var _e9=(_e3+st-y-this.deltaY); | |
| 791 | +var _ea=(_e4+sl-x-this.deltaX); | |
| 792 | +var _eb=40; | |
| 793 | +var _ec=(document.all)?80:30; | |
| 794 | +if(bot>_e3&&_e9<_eb){ | |
| 795 | +window.scrollTo(sl,st+_ec); | |
| 796 | +} | |
| 797 | +if(y<st&&st>0&&y-st<_eb){ | |
| 798 | +window.scrollTo(sl,st-_ec); | |
| 799 | +} | |
| 800 | +if(_e8>_e4&&_ea<_eb){ | |
| 801 | +window.scrollTo(sl+_ec,st); | |
| 802 | +} | |
| 803 | +if(x<sl&&sl>0&&x-sl<_eb){ | |
| 804 | +window.scrollTo(sl-_ec,st); | |
| 805 | +} | |
| 806 | +} | |
| 807 | +},getTargetCoord:function(_ed,_ee){ | |
| 808 | +var x=_ed-this.deltaX; | |
| 809 | +var y=_ee-this.deltaY; | |
| 810 | +if(this.constrainX){ | |
| 811 | +if(x<this.minX){ | |
| 812 | +x=this.minX; | |
| 813 | +} | |
| 814 | +if(x>this.maxX){ | |
| 815 | +x=this.maxX; | |
| 816 | +} | |
| 817 | +} | |
| 818 | +if(this.constrainY){ | |
| 819 | +if(y<this.minY){ | |
| 820 | +y=this.minY; | |
| 821 | +} | |
| 822 | +if(y>this.maxY){ | |
| 823 | +y=this.maxY; | |
| 824 | +} | |
| 825 | +} | |
| 826 | +x=this.getTick(x,this.xTicks); | |
| 827 | +y=this.getTick(y,this.yTicks); | |
| 828 | +return {x:x,y:y}; | |
| 829 | +},applyConfig:function(){ | |
| 830 | +YAHOO.util.DD.superclass.applyConfig.call(this); | |
| 831 | +this.scroll=(this.config.scroll!==false); | |
| 832 | +},b4MouseDown:function(e){ | |
| 833 | +this.autoOffset(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e)); | |
| 834 | +},b4Drag:function(e){ | |
| 835 | +this.setDragElPos(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e)); | |
| 836 | +},toString:function(){ | |
| 837 | +return ("DD "+this.id); | |
| 838 | +}}); | |
| 839 | +YAHOO.util.DDProxy=function(id,_f4,_f5){ | |
| 840 | +if(id){ | |
| 841 | +this.init(id,_f4,_f5); | |
| 842 | +this.initFrame(); | |
| 843 | +} | |
| 2731 | 844 | }; |
| 2732 | - | |
| 2733 | -/** | |
| 2734 | - * The default drag frame div id | |
| 2735 | - * @property YAHOO.util.DDProxy.dragElId | |
| 2736 | - * @type String | |
| 2737 | - * @static | |
| 2738 | - */ | |
| 2739 | -YAHOO.util.DDProxy.dragElId = "ygddfdiv"; | |
| 2740 | - | |
| 2741 | -YAHOO.extend(YAHOO.util.DDProxy, YAHOO.util.DD, { | |
| 2742 | - | |
| 2743 | - /** | |
| 2744 | - * By default we resize the drag frame to be the same size as the element | |
| 2745 | - * we want to drag (this is to get the frame effect). We can turn it off | |
| 2746 | - * if we want a different behavior. | |
| 2747 | - * @property resizeFrame | |
| 2748 | - * @type boolean | |
| 2749 | - */ | |
| 2750 | - resizeFrame: true, | |
| 2751 | - | |
| 2752 | - /** | |
| 2753 | - * By default the frame is positioned exactly where the drag element is, so | |
| 2754 | - * we use the cursor offset provided by YAHOO.util.DD. Another option that works only if | |
| 2755 | - * you do not have constraints on the obj is to have the drag frame centered | |
| 2756 | - * around the cursor. Set centerFrame to true for this effect. | |
| 2757 | - * @property centerFrame | |
| 2758 | - * @type boolean | |
| 2759 | - */ | |
| 2760 | - centerFrame: false, | |
| 2761 | - | |
| 2762 | - /** | |
| 2763 | - * Creates the proxy element if it does not yet exist | |
| 2764 | - * @method createFrame | |
| 2765 | - */ | |
| 2766 | - createFrame: function() { | |
| 2767 | - var self = this; | |
| 2768 | - var body = document.body; | |
| 2769 | - | |
| 2770 | - if (!body || !body.firstChild) { | |
| 2771 | - setTimeout( function() { self.createFrame(); }, 50 ); | |
| 2772 | - return; | |
| 2773 | - } | |
| 2774 | - | |
| 2775 | - var div = this.getDragEl(); | |
| 2776 | - | |
| 2777 | - if (!div) { | |
| 2778 | - div = document.createElement("div"); | |
| 2779 | - div.id = this.dragElId; | |
| 2780 | - var s = div.style; | |
| 2781 | - | |
| 2782 | - s.position = "absolute"; | |
| 2783 | - s.visibility = "hidden"; | |
| 2784 | - s.cursor = "move"; | |
| 2785 | - s.border = "2px solid #aaa"; | |
| 2786 | - s.zIndex = 999; | |
| 2787 | - | |
| 2788 | - // appendChild can blow up IE if invoked prior to the window load event | |
| 2789 | - // while rendering a table. It is possible there are other scenarios | |
| 2790 | - // that would cause this to happen as well. | |
| 2791 | - body.insertBefore(div, body.firstChild); | |
| 2792 | - } | |
| 2793 | - }, | |
| 2794 | - | |
| 2795 | - /** | |
| 2796 | - * Initialization for the drag frame element. Must be called in the | |
| 2797 | - * constructor of all subclasses | |
| 2798 | - * @method initFrame | |
| 2799 | - */ | |
| 2800 | - initFrame: function() { | |
| 2801 | - this.createFrame(); | |
| 2802 | - }, | |
| 2803 | - | |
| 2804 | - applyConfig: function() { | |
| 2805 | - YAHOO.util.DDProxy.superclass.applyConfig.call(this); | |
| 2806 | - | |
| 2807 | - this.resizeFrame = (this.config.resizeFrame !== false); | |
| 2808 | - this.centerFrame = (this.config.centerFrame); | |
| 2809 | - this.setDragElId(this.config.dragElId || YAHOO.util.DDProxy.dragElId); | |
| 2810 | - }, | |
| 2811 | - | |
| 2812 | - /** | |
| 2813 | - * Resizes the drag frame to the dimensions of the clicked object, positions | |
| 2814 | - * it over the object, and finally displays it | |
| 2815 | - * @method showFrame | |
| 2816 | - * @param {int} iPageX X click position | |
| 2817 | - * @param {int} iPageY Y click position | |
| 2818 | - * @private | |
| 2819 | - */ | |
| 2820 | - showFrame: function(iPageX, iPageY) { | |
| 2821 | - var el = this.getEl(); | |
| 2822 | - var dragEl = this.getDragEl(); | |
| 2823 | - var s = dragEl.style; | |
| 2824 | - | |
| 2825 | - this._resizeProxy(); | |
| 2826 | - | |
| 2827 | - if (this.centerFrame) { | |
| 2828 | - this.setDelta( Math.round(parseInt(s.width, 10)/2), | |
| 2829 | - Math.round(parseInt(s.height, 10)/2) ); | |
| 2830 | - } | |
| 2831 | - | |
| 2832 | - this.setDragElPos(iPageX, iPageY); | |
| 2833 | - | |
| 2834 | - YAHOO.util.Dom.setStyle(dragEl, "visibility", "visible"); | |
| 2835 | - }, | |
| 2836 | - | |
| 2837 | - /** | |
| 2838 | - * The proxy is automatically resized to the dimensions of the linked | |
| 2839 | - * element when a drag is initiated, unless resizeFrame is set to false | |
| 2840 | - * @method _resizeProxy | |
| 2841 | - * @private | |
| 2842 | - */ | |
| 2843 | - _resizeProxy: function() { | |
| 2844 | - if (this.resizeFrame) { | |
| 2845 | - var DOM = YAHOO.util.Dom; | |
| 2846 | - var el = this.getEl(); | |
| 2847 | - var dragEl = this.getDragEl(); | |
| 2848 | - | |
| 2849 | - var bt = parseInt( DOM.getStyle(dragEl, "borderTopWidth" ), 10); | |
| 2850 | - var br = parseInt( DOM.getStyle(dragEl, "borderRightWidth" ), 10); | |
| 2851 | - var bb = parseInt( DOM.getStyle(dragEl, "borderBottomWidth" ), 10); | |
| 2852 | - var bl = parseInt( DOM.getStyle(dragEl, "borderLeftWidth" ), 10); | |
| 2853 | - | |
| 2854 | - if (isNaN(bt)) { bt = 0; } | |
| 2855 | - if (isNaN(br)) { br = 0; } | |
| 2856 | - if (isNaN(bb)) { bb = 0; } | |
| 2857 | - if (isNaN(bl)) { bl = 0; } | |
| 2858 | - | |
| 2859 | - | |
| 2860 | - var newWidth = Math.max(0, el.offsetWidth - br - bl); | |
| 2861 | - var newHeight = Math.max(0, el.offsetHeight - bt - bb); | |
| 2862 | - | |
| 2863 | - | |
| 2864 | - DOM.setStyle( dragEl, "width", newWidth + "px" ); | |
| 2865 | - DOM.setStyle( dragEl, "height", newHeight + "px" ); | |
| 2866 | - } | |
| 2867 | - }, | |
| 2868 | - | |
| 2869 | - // overrides YAHOO.util.DragDrop | |
| 2870 | - b4MouseDown: function(e) { | |
| 2871 | - var x = YAHOO.util.Event.getPageX(e); | |
| 2872 | - var y = YAHOO.util.Event.getPageY(e); | |
| 2873 | - this.autoOffset(x, y); | |
| 2874 | - this.setDragElPos(x, y); | |
| 2875 | - }, | |
| 2876 | - | |
| 2877 | - // overrides YAHOO.util.DragDrop | |
| 2878 | - b4StartDrag: function(x, y) { | |
| 2879 | - // show the drag frame | |
| 2880 | - this.showFrame(x, y); | |
| 2881 | - }, | |
| 2882 | - | |
| 2883 | - // overrides YAHOO.util.DragDrop | |
| 2884 | - b4EndDrag: function(e) { | |
| 2885 | - YAHOO.util.Dom.setStyle(this.getDragEl(), "visibility", "hidden"); | |
| 2886 | - }, | |
| 2887 | - | |
| 2888 | - // overrides YAHOO.util.DragDrop | |
| 2889 | - // By default we try to move the element to the last location of the frame. | |
| 2890 | - // This is so that the default behavior mirrors that of YAHOO.util.DD. | |
| 2891 | - endDrag: function(e) { | |
| 2892 | - var DOM = YAHOO.util.Dom; | |
| 2893 | - var lel = this.getEl(); | |
| 2894 | - var del = this.getDragEl(); | |
| 2895 | - | |
| 2896 | - // Show the drag frame briefly so we can get its position | |
| 2897 | - // del.style.visibility = ""; | |
| 2898 | - DOM.setStyle(del, "visibility", ""); | |
| 2899 | - | |
| 2900 | - // Hide the linked element before the move to get around a Safari | |
| 2901 | - // rendering bug. | |
| 2902 | - //lel.style.visibility = "hidden"; | |
| 2903 | - DOM.setStyle(lel, "visibility", "hidden"); | |
| 2904 | - YAHOO.util.DDM.moveToEl(lel, del); | |
| 2905 | - //del.style.visibility = "hidden"; | |
| 2906 | - DOM.setStyle(del, "visibility", "hidden"); | |
| 2907 | - //lel.style.visibility = ""; | |
| 2908 | - DOM.setStyle(lel, "visibility", ""); | |
| 2909 | - }, | |
| 2910 | - | |
| 2911 | - toString: function() { | |
| 2912 | - return ("DDProxy " + this.id); | |
| 2913 | - } | |
| 2914 | - | |
| 2915 | -}); | |
| 2916 | -/** | |
| 2917 | - * A DragDrop implementation that does not move, but can be a drop | |
| 2918 | - * target. You would get the same result by simply omitting implementation | |
| 2919 | - * for the event callbacks, but this way we reduce the processing cost of the | |
| 2920 | - * event listener and the callbacks. | |
| 2921 | - * @class DDTarget | |
| 2922 | - * @extends YAHOO.util.DragDrop | |
| 2923 | - * @constructor | |
| 2924 | - * @param {String} id the id of the element that is a drop target | |
| 2925 | - * @param {String} sGroup the group of related DragDrop objects | |
| 2926 | - * @param {object} config an object containing configurable attributes | |
| 2927 | - * Valid properties for DDTarget in addition to those in | |
| 2928 | - * DragDrop: | |
| 2929 | - * none | |
| 2930 | - */ | |
| 2931 | -YAHOO.util.DDTarget = function(id, sGroup, config) { | |
| 2932 | - if (id) { | |
| 2933 | - this.initTarget(id, sGroup, config); | |
| 2934 | - } | |
| 845 | +YAHOO.util.DDProxy.dragElId="ygddfdiv"; | |
| 846 | +YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){ | |
| 847 | +var _f6=this; | |
| 848 | +var _f7=document.body; | |
| 849 | +if(!_f7||!_f7.firstChild){ | |
| 850 | +setTimeout(function(){ | |
| 851 | +_f6.createFrame(); | |
| 852 | +},50); | |
| 853 | +return; | |
| 854 | +} | |
| 855 | +var div=this.getDragEl(); | |
| 856 | +if(!div){ | |
| 857 | +div=document.createElement("div"); | |
| 858 | +div.id=this.dragElId; | |
| 859 | +var s=div.style; | |
| 860 | +s.position="absolute"; | |
| 861 | +s.visibility="hidden"; | |
| 862 | +s.cursor="move"; | |
| 863 | +s.border="2px solid #aaa"; | |
| 864 | +s.zIndex=999; | |
| 865 | +_f7.insertBefore(div,_f7.firstChild); | |
| 866 | +} | |
| 867 | +},initFrame:function(){ | |
| 868 | +this.createFrame(); | |
| 869 | +},applyConfig:function(){ | |
| 870 | +YAHOO.util.DDProxy.superclass.applyConfig.call(this); | |
| 871 | +this.resizeFrame=(this.config.resizeFrame!==false); | |
| 872 | +this.centerFrame=(this.config.centerFrame); | |
| 873 | +this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId); | |
| 874 | +},showFrame:function(_fa,_fb){ | |
| 875 | +var el=this.getEl(); | |
| 876 | +var _fd=this.getDragEl(); | |
| 877 | +var s=_fd.style; | |
| 878 | +this._resizeProxy(); | |
| 879 | +if(this.centerFrame){ | |
| 880 | +this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2)); | |
| 881 | +} | |
| 882 | +this.setDragElPos(_fa,_fb); | |
| 883 | +YAHOO.util.Dom.setStyle(_fd,"visibility","visible"); | |
| 884 | +},_resizeProxy:function(){ | |
| 885 | +if(this.resizeFrame){ | |
| 886 | +var DOM=YAHOO.util.Dom; | |
| 887 | +var el=this.getEl(); | |
| 888 | +var _101=this.getDragEl(); | |
| 889 | +var bt=parseInt(DOM.getStyle(_101,"borderTopWidth"),10); | |
| 890 | +var br=parseInt(DOM.getStyle(_101,"borderRightWidth"),10); | |
| 891 | +var bb=parseInt(DOM.getStyle(_101,"borderBottomWidth"),10); | |
| 892 | +var bl=parseInt(DOM.getStyle(_101,"borderLeftWidth"),10); | |
| 893 | +if(isNaN(bt)){ | |
| 894 | +bt=0; | |
| 895 | +} | |
| 896 | +if(isNaN(br)){ | |
| 897 | +br=0; | |
| 898 | +} | |
| 899 | +if(isNaN(bb)){ | |
| 900 | +bb=0; | |
| 901 | +} | |
| 902 | +if(isNaN(bl)){ | |
| 903 | +bl=0; | |
| 904 | +} | |
| 905 | +var _106=Math.max(0,el.offsetWidth-br-bl); | |
| 906 | +var _107=Math.max(0,el.offsetHeight-bt-bb); | |
| 907 | +DOM.setStyle(_101,"width",_106+"px"); | |
| 908 | +DOM.setStyle(_101,"height",_107+"px"); | |
| 909 | +} | |
| 910 | +},b4MouseDown:function(e){ | |
| 911 | +var x=YAHOO.util.Event.getPageX(e); | |
| 912 | +var y=YAHOO.util.Event.getPageY(e); | |
| 913 | +this.autoOffset(x,y); | |
| 914 | +this.setDragElPos(x,y); | |
| 915 | +},b4StartDrag:function(x,y){ | |
| 916 | +this.showFrame(x,y); | |
| 917 | +},b4EndDrag:function(e){ | |
| 918 | +YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden"); | |
| 919 | +},endDrag:function(e){ | |
| 920 | +var DOM=YAHOO.util.Dom; | |
| 921 | +var lel=this.getEl(); | |
| 922 | +var del=this.getDragEl(); | |
| 923 | +DOM.setStyle(del,"visibility",""); | |
| 924 | +DOM.setStyle(lel,"visibility","hidden"); | |
| 925 | +YAHOO.util.DDM.moveToEl(lel,del); | |
| 926 | +DOM.setStyle(del,"visibility","hidden"); | |
| 927 | +DOM.setStyle(lel,"visibility",""); | |
| 928 | +},toString:function(){ | |
| 929 | +return ("DDProxy "+this.id); | |
| 930 | +}}); | |
| 931 | +YAHOO.util.DDTarget=function(id,_113,_114){ | |
| 932 | +if(id){ | |
| 933 | +this.initTarget(id,_113,_114); | |
| 934 | +} | |
| 2935 | 935 | }; |
| 936 | +YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){ | |
| 937 | +return ("DDTarget "+this.id); | |
| 938 | +}}); | |
| 2936 | 939 | |
| 2937 | -// YAHOO.util.DDTarget.prototype = new YAHOO.util.DragDrop(); | |
| 2938 | -YAHOO.extend(YAHOO.util.DDTarget, YAHOO.util.DragDrop, { | |
| 2939 | - toString: function() { | |
| 2940 | - return ("DDTarget " + this.id); | |
| 2941 | - } | |
| 2942 | -}); | ... | ... |
thirdpartyjs/yui/event/event.js
| 1 | -/* | |
| 2 | -Copyright (c) 2006, Yahoo! Inc. All rights reserved. | |
| 3 | -Code licensed under the BSD License: | |
| 4 | -http://developer.yahoo.net/yui/license.txt | |
| 5 | -version: 0.12.0 | |
| 6 | -*/ | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * The CustomEvent class lets you define events for your application | |
| 10 | - * that can be subscribed to by one or more independent component. | |
| 11 | - * | |
| 12 | - * @param {String} type The type of event, which is passed to the callback | |
| 13 | - * when the event fires | |
| 14 | - * @param {Object} oScope The context the event will fire from. "this" will | |
| 15 | - * refer to this object in the callback. Default value: | |
| 16 | - * the window object. The listener can override this. | |
| 17 | - * @param {boolean} silent pass true to prevent the event from writing to | |
| 18 | - * the log system | |
| 19 | - * @namespace YAHOO.util | |
| 20 | - * @class CustomEvent | |
| 21 | - * @constructor | |
| 22 | - */ | |
| 23 | -YAHOO.util.CustomEvent = function(type, oScope, silent, signature) { | |
| 24 | - | |
| 25 | - /** | |
| 26 | - * The type of event, returned to subscribers when the event fires | |
| 27 | - * @property type | |
| 28 | - * @type string | |
| 29 | - */ | |
| 30 | - this.type = type; | |
| 31 | - | |
| 32 | - /** | |
| 33 | - * The scope the the event will fire from by default. Defaults to the window | |
| 34 | - * obj | |
| 35 | - * @property scope | |
| 36 | - * @type object | |
| 37 | - */ | |
| 38 | - this.scope = oScope || window; | |
| 39 | - | |
| 40 | - /** | |
| 41 | - * By default all custom events are logged in the debug build, set silent | |
| 42 | - * to true to disable logging for this event. | |
| 43 | - * @property silent | |
| 44 | - * @type boolean | |
| 45 | - */ | |
| 46 | - this.silent = silent; | |
| 47 | - | |
| 48 | - /** | |
| 49 | - * Custom events support two styles of arguments provided to the event | |
| 50 | - * subscribers. | |
| 51 | - * <ul> | |
| 52 | - * <li>YAHOO.util.CustomEvent.LIST: | |
| 53 | - * <ul> | |
| 54 | - * <li>param1: event name</li> | |
| 55 | - * <li>param2: array of arguments sent to fire</li> | |
| 56 | - * <li>param3: <optional> a custom object supplied by the subscriber</li> | |
| 57 | - * </ul> | |
| 58 | - * </li> | |
| 59 | - * <li>YAHOO.util.CustomEvent.FLAT | |
| 60 | - * <ul> | |
| 61 | - * <li>param1: the first argument passed to fire. If you need to | |
| 62 | - * pass multiple parameters, use and array or object literal</li> | |
| 63 | - * <li>param2: <optional> a custom object supplied by the subscriber</li> | |
| 64 | - * </ul> | |
| 65 | - * </li> | |
| 66 | - * </ul> | |
| 67 | - * @property signature | |
| 68 | - * @type int | |
| 69 | - */ | |
| 70 | - this.signature = signature || YAHOO.util.CustomEvent.LIST; | |
| 71 | - | |
| 72 | - /** | |
| 73 | - * The subscribers to this event | |
| 74 | - * @property subscribers | |
| 75 | - * @type Subscriber[] | |
| 76 | - */ | |
| 77 | - this.subscribers = []; | |
| 78 | - | |
| 79 | - if (!this.silent) { | |
| 80 | - } | |
| 81 | - | |
| 82 | - var onsubscribeType = "_YUICEOnSubscribe"; | |
| 83 | - | |
| 84 | - // Only add subscribe events for events that are not generated by | |
| 85 | - // CustomEvent | |
| 86 | - if (type !== onsubscribeType) { | |
| 87 | - | |
| 88 | - /** | |
| 89 | - * Custom events provide a custom event that fires whenever there is | |
| 90 | - * a new subscriber to the event. This provides an opportunity to | |
| 91 | - * handle the case where there is a non-repeating event that has | |
| 92 | - * already fired has a new subscriber. | |
| 93 | - * | |
| 94 | - * @event subscribeEvent | |
| 95 | - * @type YAHOO.util.CustomEvent | |
| 96 | - * @param {Function} fn The function to execute | |
| 97 | - * @param {Object} obj An object to be passed along when the event | |
| 98 | - * fires | |
| 99 | - * @param {boolean|Object} override If true, the obj passed in becomes | |
| 100 | - * the execution scope of the listener. | |
| 101 | - * if an object, that object becomes the | |
| 102 | - * the execution scope. | |
| 103 | - */ | |
| 104 | - this.subscribeEvent = | |
| 105 | - new YAHOO.util.CustomEvent(onsubscribeType, this, true); | |
| 106 | - | |
| 107 | - } | |
| 108 | -}; | |
| 109 | - | |
| 110 | -/** | |
| 111 | - * Subscriber listener sigature constant. The LIST type returns three | |
| 112 | - * parameters: the event type, the array of args passed to fire, and | |
| 113 | - * the optional custom object | |
| 114 | - * @property YAHOO.util.CustomEvent.LIST | |
| 115 | - * @static | |
| 116 | - * @type int | |
| 117 | - */ | |
| 118 | -YAHOO.util.CustomEvent.LIST = 0; | |
| 119 | - | |
| 120 | -/** | |
| 121 | - * Subscriber listener sigature constant. The FLAT type returns two | |
| 122 | - * parameters: the first argument passed to fire and the optional | |
| 123 | - * custom object | |
| 124 | - * @property YAHOO.util.CustomEvent.FLAT | |
| 125 | - * @static | |
| 126 | - * @type int | |
| 127 | - */ | |
| 128 | -YAHOO.util.CustomEvent.FLAT = 1; | |
| 129 | - | |
| 130 | -YAHOO.util.CustomEvent.prototype = { | |
| 131 | - | |
| 132 | - /** | |
| 133 | - * Subscribes the caller to this event | |
| 134 | - * @method subscribe | |
| 135 | - * @param {Function} fn The function to execute | |
| 136 | - * @param {Object} obj An object to be passed along when the event | |
| 137 | - * fires | |
| 138 | - * @param {boolean|Object} override If true, the obj passed in becomes | |
| 139 | - * the execution scope of the listener. | |
| 140 | - * if an object, that object becomes the | |
| 141 | - * the execution scope. | |
| 142 | - */ | |
| 143 | - subscribe: function(fn, obj, override) { | |
| 144 | - if (this.subscribeEvent) { | |
| 145 | - this.subscribeEvent.fire(fn, obj, override); | |
| 146 | - } | |
| 147 | - | |
| 148 | - this.subscribers.push( new YAHOO.util.Subscriber(fn, obj, override) ); | |
| 149 | - }, | |
| 150 | - | |
| 151 | - /** | |
| 152 | - * Unsubscribes the caller from this event | |
| 153 | - * @method unsubscribe | |
| 154 | - * @param {Function} fn The function to execute | |
| 155 | - * @param {Object} obj The custom object passed to subscribe (optional) | |
| 156 | - * @return {boolean} True if the subscriber was found and detached. | |
| 157 | - */ | |
| 158 | - unsubscribe: function(fn, obj) { | |
| 159 | - var found = false; | |
| 160 | - for (var i=0, len=this.subscribers.length; i<len; ++i) { | |
| 161 | - var s = this.subscribers[i]; | |
| 162 | - if (s && s.contains(fn, obj)) { | |
| 163 | - this._delete(i); | |
| 164 | - found = true; | |
| 165 | - } | |
| 166 | - } | |
| 167 | - | |
| 168 | - return found; | |
| 169 | - }, | |
| 170 | - | |
| 171 | - /** | |
| 172 | - * Notifies the subscribers. The callback functions will be executed | |
| 173 | - * from the scope specified when the event was created, and with the | |
| 174 | - * following parameters: | |
| 175 | - * <ul> | |
| 176 | - * <li>The type of event</li> | |
| 177 | - * <li>All of the arguments fire() was executed with as an array</li> | |
| 178 | - * <li>The custom object (if any) that was passed into the subscribe() | |
| 179 | - * method</li> | |
| 180 | - * </ul> | |
| 181 | - * @method fire | |
| 182 | - * @param {Object*} arguments an arbitrary set of parameters to pass to | |
| 183 | - * the handler. | |
| 184 | - */ | |
| 185 | - fire: function() { | |
| 186 | - var len=this.subscribers.length; | |
| 187 | - if (!len && this.silent) { | |
| 188 | - return true; | |
| 189 | - } | |
| 190 | - | |
| 191 | - var args=[], ret=true, i; | |
| 192 | - | |
| 193 | - for (i=0; i<arguments.length; ++i) { | |
| 194 | - args.push(arguments[i]); | |
| 195 | - } | |
| 196 | - | |
| 197 | - var argslength = args.length; | |
| 198 | - | |
| 199 | - if (!this.silent) { | |
| 200 | - } | |
| 201 | - | |
| 202 | - for (i=0; i<len; ++i) { | |
| 203 | - var s = this.subscribers[i]; | |
| 204 | - if (s) { | |
| 205 | - if (!this.silent) { | |
| 206 | - } | |
| 207 | - | |
| 208 | - var scope = s.getScope(this.scope); | |
| 209 | - | |
| 210 | - if (this.signature == YAHOO.util.CustomEvent.FLAT) { | |
| 211 | - var param = null; | |
| 212 | - if (args.length > 0) { | |
| 213 | - param = args[0]; | |
| 214 | - } | |
| 215 | - ret = s.fn.call(scope, param, s.obj); | |
| 216 | - } else { | |
| 217 | - ret = s.fn.call(scope, this.type, args, s.obj); | |
| 218 | - } | |
| 219 | - if (false === ret) { | |
| 220 | - if (!this.silent) { | |
| 221 | - } | |
| 222 | - | |
| 223 | - //break; | |
| 224 | - return false; | |
| 225 | - } | |
| 226 | - } | |
| 227 | - } | |
| 228 | - | |
| 229 | - return true; | |
| 230 | - }, | |
| 231 | - | |
| 232 | - /** | |
| 233 | - * Removes all listeners | |
| 234 | - * @method unsubscribeAll | |
| 235 | - */ | |
| 236 | - unsubscribeAll: function() { | |
| 237 | - for (var i=0, len=this.subscribers.length; i<len; ++i) { | |
| 238 | - this._delete(len - 1 - i); | |
| 239 | - } | |
| 240 | - }, | |
| 241 | - | |
| 242 | - /** | |
| 243 | - * @method _delete | |
| 244 | - * @private | |
| 245 | - */ | |
| 246 | - _delete: function(index) { | |
| 247 | - var s = this.subscribers[index]; | |
| 248 | - if (s) { | |
| 249 | - delete s.fn; | |
| 250 | - delete s.obj; | |
| 251 | - } | |
| 252 | - | |
| 253 | - // delete this.subscribers[index]; | |
| 254 | - this.subscribers.splice(index, 1); | |
| 255 | - }, | |
| 256 | - | |
| 257 | - /** | |
| 258 | - * @method toString | |
| 259 | - */ | |
| 260 | - toString: function() { | |
| 261 | - return "CustomEvent: " + "'" + this.type + "', " + | |
| 262 | - "scope: " + this.scope; | |
| 263 | - | |
| 264 | - } | |
| 265 | -}; | |
| 266 | - | |
| 267 | -///////////////////////////////////////////////////////////////////// | |
| 268 | - | |
| 269 | -/** | |
| 270 | - * Stores the subscriber information to be used when the event fires. | |
| 271 | - * @param {Function} fn The function to execute | |
| 272 | - * @param {Object} obj An object to be passed along when the event fires | |
| 273 | - * @param {boolean} override If true, the obj passed in becomes the execution | |
| 274 | - * scope of the listener | |
| 275 | - * @class Subscriber | |
| 276 | - * @constructor | |
| 277 | - */ | |
| 278 | -YAHOO.util.Subscriber = function(fn, obj, override) { | |
| 279 | - | |
| 280 | - /** | |
| 281 | - * The callback that will be execute when the event fires | |
| 282 | - * @property fn | |
| 283 | - * @type function | |
| 284 | - */ | |
| 285 | - this.fn = fn; | |
| 286 | - | |
| 287 | - /** | |
| 288 | - * An optional custom object that will passed to the callback when | |
| 289 | - * the event fires | |
| 290 | - * @property obj | |
| 291 | - * @type object | |
| 292 | - */ | |
| 293 | - this.obj = obj || null; | |
| 294 | - | |
| 295 | - /** | |
| 296 | - * The default execution scope for the event listener is defined when the | |
| 297 | - * event is created (usually the object which contains the event). | |
| 298 | - * By setting override to true, the execution scope becomes the custom | |
| 299 | - * object passed in by the subscriber. If override is an object, that | |
| 300 | - * object becomes the scope. | |
| 301 | - * @property override | |
| 302 | - * @type boolean|object | |
| 303 | - */ | |
| 304 | - this.override = override; | |
| 305 | - | |
| 306 | -}; | |
| 307 | - | |
| 308 | -/** | |
| 309 | - * Returns the execution scope for this listener. If override was set to true | |
| 310 | - * the custom obj will be the scope. If override is an object, that is the | |
| 311 | - * scope, otherwise the default scope will be used. | |
| 312 | - * @method getScope | |
| 313 | - * @param {Object} defaultScope the scope to use if this listener does not | |
| 314 | - * override it. | |
| 315 | - */ | |
| 316 | -YAHOO.util.Subscriber.prototype.getScope = function(defaultScope) { | |
| 317 | - if (this.override) { | |
| 318 | - if (this.override === true) { | |
| 319 | - return this.obj; | |
| 320 | - } else { | |
| 321 | - return this.override; | |
| 322 | - } | |
| 323 | - } | |
| 324 | - return defaultScope; | |
| 325 | -}; | |
| 326 | - | |
| 327 | -/** | |
| 328 | - * Returns true if the fn and obj match this objects properties. | |
| 329 | - * Used by the unsubscribe method to match the right subscriber. | |
| 330 | - * | |
| 331 | - * @method contains | |
| 332 | - * @param {Function} fn the function to execute | |
| 333 | - * @param {Object} obj an object to be passed along when the event fires | |
| 334 | - * @return {boolean} true if the supplied arguments match this | |
| 335 | - * subscriber's signature. | |
| 336 | - */ | |
| 337 | -YAHOO.util.Subscriber.prototype.contains = function(fn, obj) { | |
| 338 | - if (obj) { | |
| 339 | - return (this.fn == fn && this.obj == obj); | |
| 340 | - } else { | |
| 341 | - return (this.fn == fn); | |
| 342 | - } | |
| 343 | -}; | |
| 344 | - | |
| 345 | -/** | |
| 346 | - * @method toString | |
| 347 | - */ | |
| 348 | -YAHOO.util.Subscriber.prototype.toString = function() { | |
| 349 | - return "Subscriber { obj: " + (this.obj || "") + | |
| 350 | - ", override: " + (this.override || "no") + " }"; | |
| 351 | -}; | |
| 352 | - | |
| 353 | -/** | |
| 354 | - * The Event Utility provides utilities for managing DOM Events and tools | |
| 355 | - * for building event systems | |
| 356 | - * | |
| 357 | - * @module event | |
| 358 | - * @title Event Utility | |
| 359 | - * @namespace YAHOO.util | |
| 360 | - * @requires yahoo | |
| 361 | - */ | |
| 362 | - | |
| 363 | -// The first instance of Event will win if it is loaded more than once. | |
| 364 | -if (!YAHOO.util.Event) { | |
| 365 | - | |
| 366 | -/** | |
| 367 | - * The event utility provides functions to add and remove event listeners, | |
| 368 | - * event cleansing. It also tries to automatically remove listeners it | |
| 369 | - * registers during the unload event. | |
| 370 | - * | |
| 371 | - * @class Event | |
| 372 | - * @static | |
| 373 | - */ | |
| 374 | - YAHOO.util.Event = function() { | |
| 375 | - | |
| 376 | - /** | |
| 377 | - * True after the onload event has fired | |
| 378 | - * @property loadComplete | |
| 379 | - * @type boolean | |
| 380 | - * @static | |
| 381 | - * @private | |
| 382 | - */ | |
| 383 | - var loadComplete = false; | |
| 384 | - | |
| 385 | - /** | |
| 386 | - * Cache of wrapped listeners | |
| 387 | - * @property listeners | |
| 388 | - * @type array | |
| 389 | - * @static | |
| 390 | - * @private | |
| 391 | - */ | |
| 392 | - var listeners = []; | |
| 393 | - | |
| 394 | - /** | |
| 395 | - * User-defined unload function that will be fired before all events | |
| 396 | - * are detached | |
| 397 | - * @property unloadListeners | |
| 398 | - * @type array | |
| 399 | - * @static | |
| 400 | - * @private | |
| 401 | - */ | |
| 402 | - var unloadListeners = []; | |
| 403 | - | |
| 404 | - /** | |
| 405 | - * Cache of DOM0 event handlers to work around issues with DOM2 events | |
| 406 | - * in Safari | |
| 407 | - * @property legacyEvents | |
| 408 | - * @static | |
| 409 | - * @private | |
| 410 | - */ | |
| 411 | - var legacyEvents = []; | |
| 412 | - | |
| 413 | - /** | |
| 414 | - * Listener stack for DOM0 events | |
| 415 | - * @property legacyHandlers | |
| 416 | - * @static | |
| 417 | - * @private | |
| 418 | - */ | |
| 419 | - var legacyHandlers = []; | |
| 420 | - | |
| 421 | - /** | |
| 422 | - * The number of times to poll after window.onload. This number is | |
| 423 | - * increased if additional late-bound handlers are requested after | |
| 424 | - * the page load. | |
| 425 | - * @property retryCount | |
| 426 | - * @static | |
| 427 | - * @private | |
| 428 | - */ | |
| 429 | - var retryCount = 0; | |
| 430 | - | |
| 431 | - /** | |
| 432 | - * onAvailable listeners | |
| 433 | - * @property onAvailStack | |
| 434 | - * @static | |
| 435 | - * @private | |
| 436 | - */ | |
| 437 | - var onAvailStack = []; | |
| 438 | - | |
| 439 | - /** | |
| 440 | - * Lookup table for legacy events | |
| 441 | - * @property legacyMap | |
| 442 | - * @static | |
| 443 | - * @private | |
| 444 | - */ | |
| 445 | - var legacyMap = []; | |
| 446 | - | |
| 447 | - /** | |
| 448 | - * Counter for auto id generation | |
| 449 | - * @property counter | |
| 450 | - * @static | |
| 451 | - * @private | |
| 452 | - */ | |
| 453 | - var counter = 0; | |
| 454 | - | |
| 455 | - return { // PREPROCESS | |
| 456 | - | |
| 457 | - /** | |
| 458 | - * The number of times we should look for elements that are not | |
| 459 | - * in the DOM at the time the event is requested after the document | |
| 460 | - * has been loaded. The default is 200@amp;50 ms, so it will poll | |
| 461 | - * for 10 seconds or until all outstanding handlers are bound | |
| 462 | - * (whichever comes first). | |
| 463 | - * @property POLL_RETRYS | |
| 464 | - * @type int | |
| 465 | - * @static | |
| 466 | - * @final | |
| 467 | - */ | |
| 468 | - POLL_RETRYS: 200, | |
| 469 | - | |
| 470 | - /** | |
| 471 | - * The poll interval in milliseconds | |
| 472 | - * @property POLL_INTERVAL | |
| 473 | - * @type int | |
| 474 | - * @static | |
| 475 | - * @final | |
| 476 | - */ | |
| 477 | - POLL_INTERVAL: 20, | |
| 478 | - | |
| 479 | - /** | |
| 480 | - * Element to bind, int constant | |
| 481 | - * @property EL | |
| 482 | - * @type int | |
| 483 | - * @static | |
| 484 | - * @final | |
| 485 | - */ | |
| 486 | - EL: 0, | |
| 487 | - | |
| 488 | - /** | |
| 489 | - * Type of event, int constant | |
| 490 | - * @property TYPE | |
| 491 | - * @type int | |
| 492 | - * @static | |
| 493 | - * @final | |
| 494 | - */ | |
| 495 | - TYPE: 1, | |
| 496 | - | |
| 497 | - /** | |
| 498 | - * Function to execute, int constant | |
| 499 | - * @property FN | |
| 500 | - * @type int | |
| 501 | - * @static | |
| 502 | - * @final | |
| 503 | - */ | |
| 504 | - FN: 2, | |
| 505 | - | |
| 506 | - /** | |
| 507 | - * Function wrapped for scope correction and cleanup, int constant | |
| 508 | - * @property WFN | |
| 509 | - * @type int | |
| 510 | - * @static | |
| 511 | - * @final | |
| 512 | - */ | |
| 513 | - WFN: 3, | |
| 514 | - | |
| 515 | - /** | |
| 516 | - * Object passed in by the user that will be returned as a | |
| 517 | - * parameter to the callback, int constant | |
| 518 | - * @property OBJ | |
| 519 | - * @type int | |
| 520 | - * @static | |
| 521 | - * @final | |
| 522 | - */ | |
| 523 | - OBJ: 3, | |
| 524 | - | |
| 525 | - /** | |
| 526 | - * Adjusted scope, either the element we are registering the event | |
| 527 | - * on or the custom object passed in by the listener, int constant | |
| 528 | - * @property ADJ_SCOPE | |
| 529 | - * @type int | |
| 530 | - * @static | |
| 531 | - * @final | |
| 532 | - */ | |
| 533 | - ADJ_SCOPE: 4, | |
| 534 | - | |
| 535 | - /** | |
| 536 | - * Safari detection is necessary to work around the preventDefault | |
| 537 | - * bug that makes it so you can't cancel a href click from the | |
| 538 | - * handler. There is not a capabilities check we can use here. | |
| 539 | - * @property isSafari | |
| 540 | - * @private | |
| 541 | - * @static | |
| 542 | - */ | |
| 543 | - isSafari: (/Safari|Konqueror|KHTML/gi).test(navigator.userAgent), | |
| 544 | - | |
| 545 | - /** | |
| 546 | - * IE detection needed to properly calculate pageX and pageY. | |
| 547 | - * capabilities checking didn't seem to work because another | |
| 548 | - * browser that does not provide the properties have the values | |
| 549 | - * calculated in a different manner than IE. | |
| 550 | - * @property isIE | |
| 551 | - * @private | |
| 552 | - * @static | |
| 553 | - */ | |
| 554 | - isIE: (!this.isSafari && !navigator.userAgent.match(/opera/gi) && | |
| 555 | - navigator.userAgent.match(/msie/gi)), | |
| 556 | - | |
| 557 | - /** | |
| 558 | - * poll handle | |
| 559 | - * @property _interval | |
| 560 | - * @private | |
| 561 | - */ | |
| 562 | - _interval: null, | |
| 563 | - | |
| 564 | - /** | |
| 565 | - * @method startInterval | |
| 566 | - * @static | |
| 567 | - * @private | |
| 568 | - */ | |
| 569 | - startInterval: function() { | |
| 570 | - if (!this._interval) { | |
| 571 | - var self = this; | |
| 572 | - var callback = function() { self._tryPreloadAttach(); }; | |
| 573 | - this._interval = setInterval(callback, this.POLL_INTERVAL); | |
| 574 | - // this.timeout = setTimeout(callback, i); | |
| 575 | - } | |
| 576 | - }, | |
| 577 | - | |
| 578 | - /** | |
| 579 | - * Executes the supplied callback when the item with the supplied | |
| 580 | - * id is found. This is meant to be used to execute behavior as | |
| 581 | - * soon as possible as the page loads. If you use this after the | |
| 582 | - * initial page load it will poll for a fixed time for the element. | |
| 583 | - * The number of times it will poll and the frequency are | |
| 584 | - * configurable. By default it will poll for 10 seconds. | |
| 585 | - * | |
| 586 | - * @method onAvailable | |
| 587 | - * | |
| 588 | - * @param {string} p_id the id of the element to look for. | |
| 589 | - * @param {function} p_fn what to execute when the element is found. | |
| 590 | - * @param {object} p_obj an optional object to be passed back as | |
| 591 | - * a parameter to p_fn. | |
| 592 | - * @param {boolean} p_override If set to true, p_fn will execute | |
| 593 | - * in the scope of p_obj | |
| 594 | - * | |
| 595 | - * @static | |
| 596 | - */ | |
| 597 | - onAvailable: function(p_id, p_fn, p_obj, p_override) { | |
| 598 | - onAvailStack.push( { id: p_id, | |
| 599 | - fn: p_fn, | |
| 600 | - obj: p_obj, | |
| 601 | - override: p_override, | |
| 602 | - checkReady: false } ); | |
| 603 | - | |
| 604 | - retryCount = this.POLL_RETRYS; | |
| 605 | - this.startInterval(); | |
| 606 | - }, | |
| 607 | - | |
| 608 | - /** | |
| 609 | - * Works the same way as onAvailable, but additionally checks the | |
| 610 | - * state of sibling elements to determine if the content of the | |
| 611 | - * available element is safe to modify. | |
| 612 | - * | |
| 613 | - * @method onContentReady | |
| 614 | - * | |
| 615 | - * @param {string} p_id the id of the element to look for. | |
| 616 | - * @param {function} p_fn what to execute when the element is ready. | |
| 617 | - * @param {object} p_obj an optional object to be passed back as | |
| 618 | - * a parameter to p_fn. | |
| 619 | - * @param {boolean} p_override If set to true, p_fn will execute | |
| 620 | - * in the scope of p_obj | |
| 621 | - * | |
| 622 | - * @static | |
| 623 | - */ | |
| 624 | - onContentReady: function(p_id, p_fn, p_obj, p_override) { | |
| 625 | - onAvailStack.push( { id: p_id, | |
| 626 | - fn: p_fn, | |
| 627 | - obj: p_obj, | |
| 628 | - override: p_override, | |
| 629 | - checkReady: true } ); | |
| 630 | - | |
| 631 | - retryCount = this.POLL_RETRYS; | |
| 632 | - this.startInterval(); | |
| 633 | - }, | |
| 634 | - | |
| 635 | - /** | |
| 636 | - * Appends an event handler | |
| 637 | - * | |
| 638 | - * @method addListener | |
| 639 | - * | |
| 640 | - * @param {Object} el The html element to assign the | |
| 641 | - * event to | |
| 642 | - * @param {String} sType The type of event to append | |
| 643 | - * @param {Function} fn The method the event invokes | |
| 644 | - * @param {Object} obj An arbitrary object that will be | |
| 645 | - * passed as a parameter to the handler | |
| 646 | - * @param {boolean} override If true, the obj passed in becomes | |
| 647 | - * the execution scope of the listener | |
| 648 | - * @return {boolean} True if the action was successful or defered, | |
| 649 | - * false if one or more of the elements | |
| 650 | - * could not have the event bound to it. | |
| 651 | - * @static | |
| 652 | - */ | |
| 653 | - addListener: function(el, sType, fn, obj, override) { | |
| 654 | - | |
| 655 | - if (!fn || !fn.call) { | |
| 656 | - return false; | |
| 657 | - } | |
| 658 | - | |
| 659 | - // The el argument can be an array of elements or element ids. | |
| 660 | - if ( this._isValidCollection(el)) { | |
| 661 | - var ok = true; | |
| 662 | - for (var i=0,len=el.length; i<len; ++i) { | |
| 663 | - ok = this.on(el[i], | |
| 664 | - sType, | |
| 665 | - fn, | |
| 666 | - obj, | |
| 667 | - override) && ok; | |
| 668 | - } | |
| 669 | - return ok; | |
| 670 | - | |
| 671 | - } else if (typeof el == "string") { | |
| 672 | - var oEl = this.getEl(el); | |
| 673 | - // If the el argument is a string, we assume it is | |
| 674 | - // actually the id of the element. If the page is loaded | |
| 675 | - // we convert el to the actual element, otherwise we | |
| 676 | - // defer attaching the event until onload event fires | |
| 677 | - | |
| 678 | - // check to see if we need to delay hooking up the event | |
| 679 | - // until after the page loads. | |
| 680 | - if (oEl) { | |
| 681 | - el = oEl; | |
| 682 | - } else { | |
| 683 | - // defer adding the event until the element is available | |
| 684 | - this.onAvailable(el, function() { | |
| 685 | - YAHOO.util.Event.on(el, sType, fn, obj, override); | |
| 686 | - }); | |
| 687 | - | |
| 688 | - return true; | |
| 689 | - } | |
| 690 | - } | |
| 691 | - | |
| 692 | - // Element should be an html element or an array if we get | |
| 693 | - // here. | |
| 694 | - if (!el) { | |
| 695 | - return false; | |
| 696 | - } | |
| 697 | - | |
| 698 | - // we need to make sure we fire registered unload events | |
| 699 | - // prior to automatically unhooking them. So we hang on to | |
| 700 | - // these instead of attaching them to the window and fire the | |
| 701 | - // handles explicitly during our one unload event. | |
| 702 | - if ("unload" == sType && obj !== this) { | |
| 703 | - unloadListeners[unloadListeners.length] = | |
| 704 | - [el, sType, fn, obj, override]; | |
| 705 | - return true; | |
| 706 | - } | |
| 707 | - | |
| 708 | - // if the user chooses to override the scope, we use the custom | |
| 709 | - // object passed in, otherwise the executing scope will be the | |
| 710 | - // HTML element that the event is registered on | |
| 711 | - var scope = el; | |
| 712 | - if (override) { | |
| 713 | - if (override === true) { | |
| 714 | - scope = obj; | |
| 715 | - } else { | |
| 716 | - scope = override; | |
| 717 | - } | |
| 718 | - } | |
| 719 | - | |
| 720 | - // wrap the function so we can return the obj object when | |
| 721 | - // the event fires; | |
| 722 | - var wrappedFn = function(e) { | |
| 723 | - return fn.call(scope, YAHOO.util.Event.getEvent(e), | |
| 724 | - obj); | |
| 725 | - }; | |
| 726 | - | |
| 727 | - var li = [el, sType, fn, wrappedFn, scope]; | |
| 728 | - var index = listeners.length; | |
| 729 | - // cache the listener so we can try to automatically unload | |
| 730 | - listeners[index] = li; | |
| 731 | - | |
| 732 | - if (this.useLegacyEvent(el, sType)) { | |
| 733 | - var legacyIndex = this.getLegacyIndex(el, sType); | |
| 734 | - | |
| 735 | - // Add a new dom0 wrapper if one is not detected for this | |
| 736 | - // element | |
| 737 | - if ( legacyIndex == -1 || | |
| 738 | - el != legacyEvents[legacyIndex][0] ) { | |
| 739 | - | |
| 740 | - legacyIndex = legacyEvents.length; | |
| 741 | - legacyMap[el.id + sType] = legacyIndex; | |
| 742 | - | |
| 743 | - // cache the signature for the DOM0 event, and | |
| 744 | - // include the existing handler for the event, if any | |
| 745 | - legacyEvents[legacyIndex] = | |
| 746 | - [el, sType, el["on" + sType]]; | |
| 747 | - legacyHandlers[legacyIndex] = []; | |
| 748 | - | |
| 749 | - el["on" + sType] = | |
| 750 | - function(e) { | |
| 751 | - YAHOO.util.Event.fireLegacyEvent( | |
| 752 | - YAHOO.util.Event.getEvent(e), legacyIndex); | |
| 753 | - }; | |
| 754 | - } | |
| 755 | - | |
| 756 | - // add a reference to the wrapped listener to our custom | |
| 757 | - // stack of events | |
| 758 | - //legacyHandlers[legacyIndex].push(index); | |
| 759 | - legacyHandlers[legacyIndex].push(li); | |
| 760 | - | |
| 761 | - } else { | |
| 762 | - this._simpleAdd(el, sType, wrappedFn, false); | |
| 763 | - } | |
| 764 | - | |
| 765 | - return true; | |
| 766 | - | |
| 767 | - }, | |
| 768 | - | |
| 769 | - /** | |
| 770 | - * When using legacy events, the handler is routed to this object | |
| 771 | - * so we can fire our custom listener stack. | |
| 772 | - * @method fireLegacyEvent | |
| 773 | - * @static | |
| 774 | - * @private | |
| 775 | - */ | |
| 776 | - fireLegacyEvent: function(e, legacyIndex) { | |
| 777 | - var ok = true; | |
| 778 | - | |
| 779 | - var le = legacyHandlers[legacyIndex]; | |
| 780 | - for (var i=0,len=le.length; i<len; ++i) { | |
| 781 | - var li = le[i]; | |
| 782 | - if ( li && li[this.WFN] ) { | |
| 783 | - var scope = li[this.ADJ_SCOPE]; | |
| 784 | - var ret = li[this.WFN].call(scope, e); | |
| 785 | - ok = (ok && ret); | |
| 786 | - } | |
| 787 | - } | |
| 788 | - | |
| 789 | - return ok; | |
| 790 | - }, | |
| 791 | - | |
| 792 | - /** | |
| 793 | - * Returns the legacy event index that matches the supplied | |
| 794 | - * signature | |
| 795 | - * @method getLegacyIndex | |
| 796 | - * @static | |
| 797 | - * @private | |
| 798 | - */ | |
| 799 | - getLegacyIndex: function(el, sType) { | |
| 800 | - var key = this.generateId(el) + sType; | |
| 801 | - if (typeof legacyMap[key] == "undefined") { | |
| 802 | - return -1; | |
| 803 | - } else { | |
| 804 | - return legacyMap[key]; | |
| 805 | - } | |
| 806 | - }, | |
| 807 | - | |
| 808 | - /** | |
| 809 | - * Logic that determines when we should automatically use legacy | |
| 810 | - * events instead of DOM2 events. | |
| 811 | - * @method useLegacyEvent | |
| 812 | - * @static | |
| 813 | - * @private | |
| 814 | - */ | |
| 815 | - useLegacyEvent: function(el, sType) { | |
| 816 | - if (!el.addEventListener && !el.attachEvent) { | |
| 817 | - return true; | |
| 818 | - } else if (this.isSafari) { | |
| 819 | - if ("click" == sType || "dblclick" == sType) { | |
| 820 | - return true; | |
| 821 | - } | |
| 822 | - } | |
| 823 | - return false; | |
| 824 | - }, | |
| 825 | - | |
| 826 | - /** | |
| 827 | - * Removes an event handler | |
| 828 | - * | |
| 829 | - * @method removeListener | |
| 830 | - * | |
| 831 | - * @param {Object} el the html element or the id of the element to | |
| 832 | - * assign the event to. | |
| 833 | - * @param {String} sType the type of event to remove. | |
| 834 | - * @param {Function} fn the method the event invokes. If fn is | |
| 835 | - * undefined, then all event handlers for the type of event are | |
| 836 | - * removed. | |
| 837 | - * @return {boolean} true if the unbind was successful, false | |
| 838 | - * otherwise. | |
| 839 | - * @static | |
| 840 | - */ | |
| 841 | - removeListener: function(el, sType, fn) { | |
| 842 | - var i, len; | |
| 843 | - | |
| 844 | - // The el argument can be a string | |
| 845 | - if (typeof el == "string") { | |
| 846 | - el = this.getEl(el); | |
| 847 | - // The el argument can be an array of elements or element ids. | |
| 848 | - } else if ( this._isValidCollection(el)) { | |
| 849 | - var ok = true; | |
| 850 | - for (i=0,len=el.length; i<len; ++i) { | |
| 851 | - ok = ( this.removeListener(el[i], sType, fn) && ok ); | |
| 852 | - } | |
| 853 | - return ok; | |
| 854 | - } | |
| 855 | - | |
| 856 | - if (!fn || !fn.call) { | |
| 857 | - //return false; | |
| 858 | - return this.purgeElement(el, false, sType); | |
| 859 | - } | |
| 860 | - | |
| 861 | - if ("unload" == sType) { | |
| 862 | - | |
| 863 | - for (i=0, len=unloadListeners.length; i<len; i++) { | |
| 864 | - var li = unloadListeners[i]; | |
| 865 | - if (li && | |
| 866 | - li[0] == el && | |
| 867 | - li[1] == sType && | |
| 868 | - li[2] == fn) { | |
| 869 | - unloadListeners.splice(i, 1); | |
| 870 | - return true; | |
| 871 | - } | |
| 872 | - } | |
| 873 | - | |
| 874 | - return false; | |
| 875 | - } | |
| 876 | - | |
| 877 | - var cacheItem = null; | |
| 878 | - | |
| 879 | - // The index is a hidden parameter; needed to remove it from | |
| 880 | - // the method signature because it was tempting users to | |
| 881 | - // try and take advantage of it, which is not possible. | |
| 882 | - var index = arguments[3]; | |
| 883 | - | |
| 884 | - if ("undefined" == typeof index) { | |
| 885 | - index = this._getCacheIndex(el, sType, fn); | |
| 886 | - } | |
| 887 | - | |
| 888 | - if (index >= 0) { | |
| 889 | - cacheItem = listeners[index]; | |
| 890 | - } | |
| 891 | - | |
| 892 | - if (!el || !cacheItem) { | |
| 893 | - return false; | |
| 894 | - } | |
| 895 | - | |
| 896 | - if (this.useLegacyEvent(el, sType)) { | |
| 897 | - var legacyIndex = this.getLegacyIndex(el, sType); | |
| 898 | - var llist = legacyHandlers[legacyIndex]; | |
| 899 | - if (llist) { | |
| 900 | - for (i=0, len=llist.length; i<len; ++i) { | |
| 901 | - li = llist[i]; | |
| 902 | - if (li && | |
| 903 | - li[this.EL] == el && | |
| 904 | - li[this.TYPE] == sType && | |
| 905 | - li[this.FN] == fn) { | |
| 906 | - llist.splice(i, 1); | |
| 907 | - break; | |
| 908 | - } | |
| 909 | - } | |
| 910 | - } | |
| 911 | - | |
| 912 | - } else { | |
| 913 | - this._simpleRemove(el, sType, cacheItem[this.WFN], false); | |
| 914 | - } | |
| 915 | - | |
| 916 | - // removed the wrapped handler | |
| 917 | - delete listeners[index][this.WFN]; | |
| 918 | - delete listeners[index][this.FN]; | |
| 919 | - listeners.splice(index, 1); | |
| 920 | - | |
| 921 | - return true; | |
| 922 | - | |
| 923 | - }, | |
| 924 | - | |
| 925 | - /** | |
| 926 | - * Returns the event's target element | |
| 927 | - * @method getTarget | |
| 928 | - * @param {Event} ev the event | |
| 929 | - * @param {boolean} resolveTextNode when set to true the target's | |
| 930 | - * parent will be returned if the target is a | |
| 931 | - * text node. @deprecated, the text node is | |
| 932 | - * now resolved automatically | |
| 933 | - * @return {HTMLElement} the event's target | |
| 934 | - * @static | |
| 935 | - */ | |
| 936 | - getTarget: function(ev, resolveTextNode) { | |
| 937 | - var t = ev.target || ev.srcElement; | |
| 938 | - return this.resolveTextNode(t); | |
| 939 | - }, | |
| 940 | - | |
| 941 | - /** | |
| 942 | - * In some cases, some browsers will return a text node inside | |
| 943 | - * the actual element that was targeted. This normalizes the | |
| 944 | - * return value for getTarget and getRelatedTarget. | |
| 945 | - * @method resolveTextNode | |
| 946 | - * @param {HTMLElement} node node to resolve | |
| 947 | - * @return {HTMLElement} the normized node | |
| 948 | - * @static | |
| 949 | - */ | |
| 950 | - resolveTextNode: function(node) { | |
| 951 | - // if (node && node.nodeName && | |
| 952 | - // "#TEXT" == node.nodeName.toUpperCase()) { | |
| 953 | - if (node && 3 == node.nodeType) { | |
| 954 | - return node.parentNode; | |
| 955 | - } else { | |
| 956 | - return node; | |
| 957 | - } | |
| 958 | - }, | |
| 959 | - | |
| 960 | - /** | |
| 961 | - * Returns the event's pageX | |
| 962 | - * @method getPageX | |
| 963 | - * @param {Event} ev the event | |
| 964 | - * @return {int} the event's pageX | |
| 965 | - * @static | |
| 966 | - */ | |
| 967 | - getPageX: function(ev) { | |
| 968 | - var x = ev.pageX; | |
| 969 | - if (!x && 0 !== x) { | |
| 970 | - x = ev.clientX || 0; | |
| 971 | - | |
| 972 | - if ( this.isIE ) { | |
| 973 | - x += this._getScrollLeft(); | |
| 974 | - } | |
| 975 | - } | |
| 976 | - | |
| 977 | - return x; | |
| 978 | - }, | |
| 979 | - | |
| 980 | - /** | |
| 981 | - * Returns the event's pageY | |
| 982 | - * @method getPageY | |
| 983 | - * @param {Event} ev the event | |
| 984 | - * @return {int} the event's pageY | |
| 985 | - * @static | |
| 986 | - */ | |
| 987 | - getPageY: function(ev) { | |
| 988 | - var y = ev.pageY; | |
| 989 | - if (!y && 0 !== y) { | |
| 990 | - y = ev.clientY || 0; | |
| 991 | - | |
| 992 | - if ( this.isIE ) { | |
| 993 | - y += this._getScrollTop(); | |
| 994 | - } | |
| 995 | - } | |
| 996 | - | |
| 997 | - return y; | |
| 998 | - }, | |
| 999 | - | |
| 1000 | - /** | |
| 1001 | - * Returns the pageX and pageY properties as an indexed array. | |
| 1002 | - * @method getXY | |
| 1003 | - * @type int[] | |
| 1004 | - * @static | |
| 1005 | - */ | |
| 1006 | - getXY: function(ev) { | |
| 1007 | - return [this.getPageX(ev), this.getPageY(ev)]; | |
| 1008 | - }, | |
| 1009 | - | |
| 1010 | - /** | |
| 1011 | - * Returns the event's related target | |
| 1012 | - * @method getRelatedTarget | |
| 1013 | - * @param {Event} ev the event | |
| 1014 | - * @return {HTMLElement} the event's relatedTarget | |
| 1015 | - * @static | |
| 1016 | - */ | |
| 1017 | - getRelatedTarget: function(ev) { | |
| 1018 | - var t = ev.relatedTarget; | |
| 1019 | - if (!t) { | |
| 1020 | - if (ev.type == "mouseout") { | |
| 1021 | - t = ev.toElement; | |
| 1022 | - } else if (ev.type == "mouseover") { | |
| 1023 | - t = ev.fromElement; | |
| 1024 | - } | |
| 1025 | - } | |
| 1026 | - | |
| 1027 | - return this.resolveTextNode(t); | |
| 1028 | - }, | |
| 1029 | - | |
| 1030 | - /** | |
| 1031 | - * Returns the time of the event. If the time is not included, the | |
| 1032 | - * event is modified using the current time. | |
| 1033 | - * @method getTime | |
| 1034 | - * @param {Event} ev the event | |
| 1035 | - * @return {Date} the time of the event | |
| 1036 | - * @static | |
| 1037 | - */ | |
| 1038 | - getTime: function(ev) { | |
| 1039 | - if (!ev.time) { | |
| 1040 | - var t = new Date().getTime(); | |
| 1041 | - try { | |
| 1042 | - ev.time = t; | |
| 1043 | - } catch(e) { | |
| 1044 | - return t; | |
| 1045 | - } | |
| 1046 | - } | |
| 1047 | - | |
| 1048 | - return ev.time; | |
| 1049 | - }, | |
| 1050 | - | |
| 1051 | - /** | |
| 1052 | - * Convenience method for stopPropagation + preventDefault | |
| 1053 | - * @method stopEvent | |
| 1054 | - * @param {Event} ev the event | |
| 1055 | - * @static | |
| 1056 | - */ | |
| 1057 | - stopEvent: function(ev) { | |
| 1058 | - this.stopPropagation(ev); | |
| 1059 | - this.preventDefault(ev); | |
| 1060 | - }, | |
| 1061 | - | |
| 1062 | - /** | |
| 1063 | - * Stops event propagation | |
| 1064 | - * @method stopPropagation | |
| 1065 | - * @param {Event} ev the event | |
| 1066 | - * @static | |
| 1067 | - */ | |
| 1068 | - stopPropagation: function(ev) { | |
| 1069 | - if (ev.stopPropagation) { | |
| 1070 | - ev.stopPropagation(); | |
| 1071 | - } else { | |
| 1072 | - ev.cancelBubble = true; | |
| 1073 | - } | |
| 1074 | - }, | |
| 1075 | - | |
| 1076 | - /** | |
| 1077 | - * Prevents the default behavior of the event | |
| 1078 | - * @method preventDefault | |
| 1079 | - * @param {Event} ev the event | |
| 1080 | - * @static | |
| 1081 | - */ | |
| 1082 | - preventDefault: function(ev) { | |
| 1083 | - if (ev.preventDefault) { | |
| 1084 | - ev.preventDefault(); | |
| 1085 | - } else { | |
| 1086 | - ev.returnValue = false; | |
| 1087 | - } | |
| 1088 | - }, | |
| 1089 | - | |
| 1090 | - /** | |
| 1091 | - * Finds the event in the window object, the caller's arguments, or | |
| 1092 | - * in the arguments of another method in the callstack. This is | |
| 1093 | - * executed automatically for events registered through the event | |
| 1094 | - * manager, so the implementer should not normally need to execute | |
| 1095 | - * this function at all. | |
| 1096 | - * @method getEvent | |
| 1097 | - * @param {Event} e the event parameter from the handler | |
| 1098 | - * @return {Event} the event | |
| 1099 | - * @static | |
| 1100 | - */ | |
| 1101 | - getEvent: function(e) { | |
| 1102 | - var ev = e || window.event; | |
| 1103 | - | |
| 1104 | - if (!ev) { | |
| 1105 | - var c = this.getEvent.caller; | |
| 1106 | - while (c) { | |
| 1107 | - ev = c.arguments[0]; | |
| 1108 | - if (ev && Event == ev.constructor) { | |
| 1109 | - break; | |
| 1110 | - } | |
| 1111 | - c = c.caller; | |
| 1112 | - } | |
| 1113 | - } | |
| 1114 | - | |
| 1115 | - return ev; | |
| 1116 | - }, | |
| 1117 | - | |
| 1118 | - /** | |
| 1119 | - * Returns the charcode for an event | |
| 1120 | - * @method getCharCode | |
| 1121 | - * @param {Event} ev the event | |
| 1122 | - * @return {int} the event's charCode | |
| 1123 | - * @static | |
| 1124 | - */ | |
| 1125 | - getCharCode: function(ev) { | |
| 1126 | - return ev.charCode || ev.keyCode || 0; | |
| 1127 | - }, | |
| 1128 | - | |
| 1129 | - /** | |
| 1130 | - * Locating the saved event handler data by function ref | |
| 1131 | - * | |
| 1132 | - * @method _getCacheIndex | |
| 1133 | - * @static | |
| 1134 | - * @private | |
| 1135 | - */ | |
| 1136 | - _getCacheIndex: function(el, sType, fn) { | |
| 1137 | - for (var i=0,len=listeners.length; i<len; ++i) { | |
| 1138 | - var li = listeners[i]; | |
| 1139 | - if ( li && | |
| 1140 | - li[this.FN] == fn && | |
| 1141 | - li[this.EL] == el && | |
| 1142 | - li[this.TYPE] == sType ) { | |
| 1143 | - return i; | |
| 1144 | - } | |
| 1145 | - } | |
| 1146 | - | |
| 1147 | - return -1; | |
| 1148 | - }, | |
| 1149 | - | |
| 1150 | - /** | |
| 1151 | - * Generates an unique ID for the element if it does not already | |
| 1152 | - * have one. | |
| 1153 | - * @method generateId | |
| 1154 | - * @param el the element to create the id for | |
| 1155 | - * @return {string} the resulting id of the element | |
| 1156 | - * @static | |
| 1157 | - */ | |
| 1158 | - generateId: function(el) { | |
| 1159 | - var id = el.id; | |
| 1160 | - | |
| 1161 | - if (!id) { | |
| 1162 | - id = "yuievtautoid-" + counter; | |
| 1163 | - ++counter; | |
| 1164 | - el.id = id; | |
| 1165 | - } | |
| 1166 | - | |
| 1167 | - return id; | |
| 1168 | - }, | |
| 1169 | - | |
| 1170 | - /** | |
| 1171 | - * We want to be able to use getElementsByTagName as a collection | |
| 1172 | - * to attach a group of events to. Unfortunately, different | |
| 1173 | - * browsers return different types of collections. This function | |
| 1174 | - * tests to determine if the object is array-like. It will also | |
| 1175 | - * fail if the object is an array, but is empty. | |
| 1176 | - * @method _isValidCollection | |
| 1177 | - * @param o the object to test | |
| 1178 | - * @return {boolean} true if the object is array-like and populated | |
| 1179 | - * @static | |
| 1180 | - * @private | |
| 1181 | - */ | |
| 1182 | - _isValidCollection: function(o) { | |
| 1183 | - // this.logger.debug(o.constructor.toString()) | |
| 1184 | - // this.logger.debug(typeof o) | |
| 1185 | - | |
| 1186 | - return ( o && // o is something | |
| 1187 | - o.length && // o is indexed | |
| 1188 | - typeof o != "string" && // o is not a string | |
| 1189 | - !o.tagName && // o is not an HTML element | |
| 1190 | - !o.alert && // o is not a window | |
| 1191 | - typeof o[0] != "undefined" ); | |
| 1192 | - | |
| 1193 | - }, | |
| 1194 | - | |
| 1195 | - /** | |
| 1196 | - * @private | |
| 1197 | - * @property elCache | |
| 1198 | - * DOM element cache | |
| 1199 | - * @static | |
| 1200 | - */ | |
| 1201 | - elCache: {}, | |
| 1202 | - | |
| 1203 | - /** | |
| 1204 | - * We cache elements bound by id because when the unload event | |
| 1205 | - * fires, we can no longer use document.getElementById | |
| 1206 | - * @method getEl | |
| 1207 | - * @static | |
| 1208 | - * @private | |
| 1209 | - */ | |
| 1210 | - getEl: function(id) { | |
| 1211 | - return document.getElementById(id); | |
| 1212 | - }, | |
| 1213 | - | |
| 1214 | - /** | |
| 1215 | - * Clears the element cache | |
| 1216 | - * @deprecated Elements are not cached any longer | |
| 1217 | - * @method clearCache | |
| 1218 | - * @static | |
| 1219 | - * @private | |
| 1220 | - */ | |
| 1221 | - clearCache: function() { }, | |
| 1222 | - | |
| 1223 | - /** | |
| 1224 | - * hook up any deferred listeners | |
| 1225 | - * @method _load | |
| 1226 | - * @static | |
| 1227 | - * @private | |
| 1228 | - */ | |
| 1229 | - _load: function(e) { | |
| 1230 | - loadComplete = true; | |
| 1231 | - var EU = YAHOO.util.Event; | |
| 1232 | - // Remove the listener to assist with the IE memory issue, but not | |
| 1233 | - // for other browsers because FF 1.0x does not like it. | |
| 1234 | - if (this.isIE) { | |
| 1235 | - EU._simpleRemove(window, "load", EU._load); | |
| 1236 | - } | |
| 1237 | - }, | |
| 1238 | - | |
| 1239 | - /** | |
| 1240 | - * Polling function that runs before the onload event fires, | |
| 1241 | - * attempting to attach to DOM Nodes as soon as they are | |
| 1242 | - * available | |
| 1243 | - * @method _tryPreloadAttach | |
| 1244 | - * @static | |
| 1245 | - * @private | |
| 1246 | - */ | |
| 1247 | - _tryPreloadAttach: function() { | |
| 1248 | - | |
| 1249 | - if (this.locked) { | |
| 1250 | - return false; | |
| 1251 | - } | |
| 1252 | - | |
| 1253 | - this.locked = true; | |
| 1254 | - | |
| 1255 | - // keep trying until after the page is loaded. We need to | |
| 1256 | - // check the page load state prior to trying to bind the | |
| 1257 | - // elements so that we can be certain all elements have been | |
| 1258 | - // tested appropriately | |
| 1259 | - var tryAgain = !loadComplete; | |
| 1260 | - if (!tryAgain) { | |
| 1261 | - tryAgain = (retryCount > 0); | |
| 1262 | - } | |
| 1263 | - | |
| 1264 | - // onAvailable | |
| 1265 | - var notAvail = []; | |
| 1266 | - for (var i=0,len=onAvailStack.length; i<len ; ++i) { | |
| 1267 | - var item = onAvailStack[i]; | |
| 1268 | - if (item) { | |
| 1269 | - var el = this.getEl(item.id); | |
| 1270 | - | |
| 1271 | - if (el) { | |
| 1272 | - // The element is available, but not necessarily ready | |
| 1273 | - | |
| 1274 | - if ( !item.checkReady || | |
| 1275 | - loadComplete || | |
| 1276 | - el.nextSibling || | |
| 1277 | - (document && document.body) ) { | |
| 1278 | - | |
| 1279 | - var scope = el; | |
| 1280 | - if (item.override) { | |
| 1281 | - if (item.override === true) { | |
| 1282 | - scope = item.obj; | |
| 1283 | - } else { | |
| 1284 | - scope = item.override; | |
| 1285 | - } | |
| 1286 | - } | |
| 1287 | - item.fn.call(scope, item.obj); | |
| 1288 | - delete onAvailStack[i]; | |
| 1289 | - } | |
| 1290 | - } else { | |
| 1291 | - notAvail.push(item); | |
| 1292 | - } | |
| 1293 | - } | |
| 1294 | - } | |
| 1295 | - | |
| 1296 | - retryCount = (notAvail.length === 0) ? 0 : retryCount - 1; | |
| 1297 | - | |
| 1298 | - if (tryAgain) { | |
| 1299 | - this.startInterval(); | |
| 1300 | - } else { | |
| 1301 | - clearInterval(this._interval); | |
| 1302 | - this._interval = null; | |
| 1303 | - } | |
| 1304 | - | |
| 1305 | - this.locked = false; | |
| 1306 | - | |
| 1307 | - return true; | |
| 1308 | - | |
| 1309 | - }, | |
| 1310 | - | |
| 1311 | - /** | |
| 1312 | - * Removes all listeners attached to the given element via addListener. | |
| 1313 | - * Optionally, the node's children can also be purged. | |
| 1314 | - * Optionally, you can specify a specific type of event to remove. | |
| 1315 | - * @method purgeElement | |
| 1316 | - * @param {HTMLElement} el the element to purge | |
| 1317 | - * @param {boolean} recurse recursively purge this element's children | |
| 1318 | - * as well. Use with caution. | |
| 1319 | - * @param {string} sType optional type of listener to purge. If | |
| 1320 | - * left out, all listeners will be removed | |
| 1321 | - * @static | |
| 1322 | - */ | |
| 1323 | - purgeElement: function(el, recurse, sType) { | |
| 1324 | - var elListeners = this.getListeners(el, sType); | |
| 1325 | - if (elListeners) { | |
| 1326 | - for (var i=0,len=elListeners.length; i<len ; ++i) { | |
| 1327 | - var l = elListeners[i]; | |
| 1328 | - // can't use the index on the changing collection | |
| 1329 | - //this.removeListener(el, l.type, l.fn, l.index); | |
| 1330 | - this.removeListener(el, l.type, l.fn); | |
| 1331 | - } | |
| 1332 | - } | |
| 1333 | - | |
| 1334 | - if (recurse && el && el.childNodes) { | |
| 1335 | - for (i=0,len=el.childNodes.length; i<len ; ++i) { | |
| 1336 | - this.purgeElement(el.childNodes[i], recurse, sType); | |
| 1337 | - } | |
| 1338 | - } | |
| 1339 | - }, | |
| 1340 | - | |
| 1341 | - /** | |
| 1342 | - * Returns all listeners attached to the given element via addListener. | |
| 1343 | - * Optionally, you can specify a specific type of event to return. | |
| 1344 | - * @method getListeners | |
| 1345 | - * @param el {HTMLElement} the element to inspect | |
| 1346 | - * @param sType {string} optional type of listener to return. If | |
| 1347 | - * left out, all listeners will be returned | |
| 1348 | - * @return {Object} the listener. Contains the following fields: | |
| 1349 | - * type: (string) the type of event | |
| 1350 | - * fn: (function) the callback supplied to addListener | |
| 1351 | - * obj: (object) the custom object supplied to addListener | |
| 1352 | - * adjust: (boolean) whether or not to adjust the default scope | |
| 1353 | - * index: (int) its position in the Event util listener cache | |
| 1354 | - * @static | |
| 1355 | - */ | |
| 1356 | - getListeners: function(el, sType) { | |
| 1357 | - var elListeners = []; | |
| 1358 | - if (listeners && listeners.length > 0) { | |
| 1359 | - for (var i=0,len=listeners.length; i<len ; ++i) { | |
| 1360 | - var l = listeners[i]; | |
| 1361 | - if ( l && l[this.EL] === el && | |
| 1362 | - (!sType || sType === l[this.TYPE]) ) { | |
| 1363 | - elListeners.push({ | |
| 1364 | - type: l[this.TYPE], | |
| 1365 | - fn: l[this.FN], | |
| 1366 | - obj: l[this.OBJ], | |
| 1367 | - adjust: l[this.ADJ_SCOPE], | |
| 1368 | - index: i | |
| 1369 | - }); | |
| 1370 | - } | |
| 1371 | - } | |
| 1372 | - } | |
| 1373 | - | |
| 1374 | - return (elListeners.length) ? elListeners : null; | |
| 1375 | - }, | |
| 1376 | - | |
| 1377 | - /** | |
| 1378 | - * Removes all listeners registered by pe.event. Called | |
| 1379 | - * automatically during the unload event. | |
| 1380 | - * @method _unload | |
| 1381 | - * @static | |
| 1382 | - * @private | |
| 1383 | - */ | |
| 1384 | - _unload: function(e) { | |
| 1385 | - | |
| 1386 | - var EU = YAHOO.util.Event, i, j, l, len, index; | |
| 1387 | - | |
| 1388 | - for (i=0,len=unloadListeners.length; i<len; ++i) { | |
| 1389 | - l = unloadListeners[i]; | |
| 1390 | - if (l) { | |
| 1391 | - var scope = window; | |
| 1392 | - if (l[EU.ADJ_SCOPE]) { | |
| 1393 | - if (l[EU.ADJ_SCOPE] === true) { | |
| 1394 | - scope = l[EU.OBJ]; | |
| 1395 | - } else { | |
| 1396 | - scope = l[EU.ADJ_SCOPE]; | |
| 1397 | - } | |
| 1398 | - } | |
| 1399 | - l[EU.FN].call(scope, EU.getEvent(e), l[EU.OBJ] ); | |
| 1400 | - delete unloadListeners[i]; | |
| 1401 | - l=null; | |
| 1402 | - scope=null; | |
| 1403 | - } | |
| 1404 | - } | |
| 1405 | - | |
| 1406 | - if (listeners && listeners.length > 0) { | |
| 1407 | - j = listeners.length; | |
| 1408 | - while (j) { | |
| 1409 | - index = j-1; | |
| 1410 | - l = listeners[index]; | |
| 1411 | - if (l) { | |
| 1412 | - EU.removeListener(l[EU.EL], l[EU.TYPE], | |
| 1413 | - l[EU.FN], index); | |
| 1414 | - } | |
| 1415 | - j = j - 1; | |
| 1416 | - } | |
| 1417 | - l=null; | |
| 1418 | - | |
| 1419 | - EU.clearCache(); | |
| 1420 | - } | |
| 1421 | - | |
| 1422 | - for (i=0,len=legacyEvents.length; i<len; ++i) { | |
| 1423 | - // dereference the element | |
| 1424 | - delete legacyEvents[i][0]; | |
| 1425 | - // delete the array item | |
| 1426 | - delete legacyEvents[i]; | |
| 1427 | - } | |
| 1428 | - | |
| 1429 | - EU._simpleRemove(window, "unload", EU._unload); | |
| 1430 | - | |
| 1431 | - }, | |
| 1432 | - | |
| 1433 | - /** | |
| 1434 | - * Returns scrollLeft | |
| 1435 | - * @method _getScrollLeft | |
| 1436 | - * @static | |
| 1437 | - * @private | |
| 1438 | - */ | |
| 1439 | - _getScrollLeft: function() { | |
| 1440 | - return this._getScroll()[1]; | |
| 1441 | - }, | |
| 1442 | - | |
| 1443 | - /** | |
| 1444 | - * Returns scrollTop | |
| 1445 | - * @method _getScrollTop | |
| 1446 | - * @static | |
| 1447 | - * @private | |
| 1448 | - */ | |
| 1449 | - _getScrollTop: function() { | |
| 1450 | - return this._getScroll()[0]; | |
| 1451 | - }, | |
| 1452 | - | |
| 1453 | - /** | |
| 1454 | - * Returns the scrollTop and scrollLeft. Used to calculate the | |
| 1455 | - * pageX and pageY in Internet Explorer | |
| 1456 | - * @method _getScroll | |
| 1457 | - * @static | |
| 1458 | - * @private | |
| 1459 | - */ | |
| 1460 | - _getScroll: function() { | |
| 1461 | - var dd = document.documentElement, db = document.body; | |
| 1462 | - if (dd && (dd.scrollTop || dd.scrollLeft)) { | |
| 1463 | - return [dd.scrollTop, dd.scrollLeft]; | |
| 1464 | - } else if (db) { | |
| 1465 | - return [db.scrollTop, db.scrollLeft]; | |
| 1466 | - } else { | |
| 1467 | - return [0, 0]; | |
| 1468 | - } | |
| 1469 | - }, | |
| 1470 | - | |
| 1471 | - /** | |
| 1472 | - * Adds a DOM event directly without the caching, cleanup, scope adj, etc | |
| 1473 | - * | |
| 1474 | - * @method _simpleAdd | |
| 1475 | - * @param {HTMLElement} el the element to bind the handler to | |
| 1476 | - * @param {string} sType the type of event handler | |
| 1477 | - * @param {function} fn the callback to invoke | |
| 1478 | - * @param {boolen} capture capture or bubble phase | |
| 1479 | - * @static | |
| 1480 | - * @private | |
| 1481 | - */ | |
| 1482 | - _simpleAdd: function () { | |
| 1483 | - if (window.addEventListener) { | |
| 1484 | - return function(el, sType, fn, capture) { | |
| 1485 | - el.addEventListener(sType, fn, (capture)); | |
| 1486 | - }; | |
| 1487 | - } else if (window.attachEvent) { | |
| 1488 | - return function(el, sType, fn, capture) { | |
| 1489 | - el.attachEvent("on" + sType, fn); | |
| 1490 | - }; | |
| 1491 | - } else { | |
| 1492 | - return function(){}; | |
| 1493 | - } | |
| 1494 | - }(), | |
| 1495 | - | |
| 1496 | - /** | |
| 1497 | - * Basic remove listener | |
| 1498 | - * | |
| 1499 | - * @method _simpleRemove | |
| 1500 | - * @param {HTMLElement} el the element to bind the handler to | |
| 1501 | - * @param {string} sType the type of event handler | |
| 1502 | - * @param {function} fn the callback to invoke | |
| 1503 | - * @param {boolen} capture capture or bubble phase | |
| 1504 | - * @static | |
| 1505 | - * @private | |
| 1506 | - */ | |
| 1507 | - _simpleRemove: function() { | |
| 1508 | - if (window.removeEventListener) { | |
| 1509 | - return function (el, sType, fn, capture) { | |
| 1510 | - el.removeEventListener(sType, fn, (capture)); | |
| 1511 | - }; | |
| 1512 | - } else if (window.detachEvent) { | |
| 1513 | - return function (el, sType, fn) { | |
| 1514 | - el.detachEvent("on" + sType, fn); | |
| 1515 | - }; | |
| 1516 | - } else { | |
| 1517 | - return function(){}; | |
| 1518 | - } | |
| 1519 | - }() | |
| 1520 | - }; | |
| 1521 | - | |
| 1522 | - }(); | |
| 1523 | - | |
| 1524 | - (function() { | |
| 1525 | - var EU = YAHOO.util.Event; | |
| 1526 | - | |
| 1527 | - /** | |
| 1528 | - * YAHOO.util.Event.on is an alias for addListener | |
| 1529 | - * @method on | |
| 1530 | - * @see addListener | |
| 1531 | - * @static | |
| 1532 | - */ | |
| 1533 | - EU.on = EU.addListener; | |
| 1534 | - | |
| 1535 | - // YAHOO.mix(EU, YAHOO.util.EventProvider.prototype); | |
| 1536 | - // EU.createEvent("DOMContentReady"); | |
| 1537 | - // EU.subscribe("DOMContentReady", EU._load); | |
| 1538 | - | |
| 1539 | - if (document && document.body) { | |
| 1540 | - EU._load(); | |
| 1541 | - } else { | |
| 1542 | - // EU._simpleAdd(document, "DOMContentLoaded", EU._load); | |
| 1543 | - EU._simpleAdd(window, "load", EU._load); | |
| 1544 | - } | |
| 1545 | - EU._simpleAdd(window, "unload", EU._unload); | |
| 1546 | - EU._tryPreloadAttach(); | |
| 1547 | - })(); | |
| 1548 | -} | |
| 1549 | - | |
| 1550 | -/** | |
| 1551 | - * EventProvider is designed to be used with YAHOO.augment to wrap | |
| 1552 | - * CustomEvents in an interface that allows events to be subscribed to | |
| 1553 | - * and fired by name. This makes it possible for implementing code to | |
| 1554 | - * subscribe to an event that either has not been created yet, or will | |
| 1555 | - * not be created at all. | |
| 1556 | - * | |
| 1557 | - * @Class EventProvider | |
| 1558 | - */ | |
| 1559 | -YAHOO.util.EventProvider = function() { }; | |
| 1560 | - | |
| 1561 | -YAHOO.util.EventProvider.prototype = { | |
| 1562 | - | |
| 1563 | - /** | |
| 1564 | - * Private storage of custom events | |
| 1565 | - * @property __yui_events | |
| 1566 | - * @type Object[] | |
| 1567 | - * @private | |
| 1568 | - */ | |
| 1569 | - __yui_events: null, | |
| 1570 | - | |
| 1571 | - /** | |
| 1572 | - * Private storage of custom event subscribers | |
| 1573 | - * @property __yui_subscribers | |
| 1574 | - * @type Object[] | |
| 1575 | - * @private | |
| 1576 | - */ | |
| 1577 | - __yui_subscribers: null, | |
| 1578 | - | |
| 1579 | - /** | |
| 1580 | - * Subscribe to a CustomEvent by event type | |
| 1581 | - * | |
| 1582 | - * @method subscribe | |
| 1583 | - * @param p_type {string} the type, or name of the event | |
| 1584 | - * @param p_fn {function} the function to exectute when the event fires | |
| 1585 | - * @param p_obj | |
| 1586 | - * @param p_obj {Object} An object to be passed along when the event | |
| 1587 | - * fires | |
| 1588 | - * @param p_override {boolean} If true, the obj passed in becomes the | |
| 1589 | - * execution scope of the listener | |
| 1590 | - */ | |
| 1591 | - subscribe: function(p_type, p_fn, p_obj, p_override) { | |
| 1592 | - | |
| 1593 | - this.__yui_events = this.__yui_events || {}; | |
| 1594 | - var ce = this.__yui_events[p_type]; | |
| 1595 | - | |
| 1596 | - if (ce) { | |
| 1597 | - ce.subscribe(p_fn, p_obj, p_override); | |
| 1598 | - } else { | |
| 1599 | - this.__yui_subscribers = this.__yui_subscribers || {}; | |
| 1600 | - var subs = this.__yui_subscribers; | |
| 1601 | - if (!subs[p_type]) { | |
| 1602 | - subs[p_type] = []; | |
| 1603 | - } | |
| 1604 | - subs[p_type].push( | |
| 1605 | - { fn: p_fn, obj: p_obj, override: p_override } ); | |
| 1606 | - } | |
| 1607 | - }, | |
| 1608 | - | |
| 1609 | - /** | |
| 1610 | - * Unsubscribes the from the specified event | |
| 1611 | - * @method unsubscribe | |
| 1612 | - * @param p_type {string} The type, or name of the event | |
| 1613 | - * @param p_fn {Function} The function to execute | |
| 1614 | - * @param p_obj {Object} The custom object passed to subscribe (optional) | |
| 1615 | - * @return {boolean} true if the subscriber was found and detached. | |
| 1616 | - */ | |
| 1617 | - unsubscribe: function(p_type, p_fn, p_obj) { | |
| 1618 | - this.__yui_events = this.__yui_events || {}; | |
| 1619 | - var ce = this.__yui_events[p_type]; | |
| 1620 | - if (ce) { | |
| 1621 | - return ce.unsubscribe(p_fn, p_obj); | |
| 1622 | - } else { | |
| 1623 | - return false; | |
| 1624 | - } | |
| 1625 | - }, | |
| 1626 | - | |
| 1627 | - /** | |
| 1628 | - * Creates a new custom event of the specified type. If a custom event | |
| 1629 | - * by that name already exists, it will not be re-created. In either | |
| 1630 | - * case the custom event is returned. | |
| 1631 | - * | |
| 1632 | - * @method createEvent | |
| 1633 | - * | |
| 1634 | - * @param p_type {string} the type, or name of the event | |
| 1635 | - * @param p_config {object} optional config params. Valid properties are: | |
| 1636 | - * | |
| 1637 | - * <ul> | |
| 1638 | - * <li> | |
| 1639 | - * scope: defines the default execution scope. If not defined | |
| 1640 | - * the default scope will be this instance. | |
| 1641 | - * </li> | |
| 1642 | - * <li> | |
| 1643 | - * silent: if true, the custom event will not generate log messages. | |
| 1644 | - * This is false by default. | |
| 1645 | - * </li> | |
| 1646 | - * <li> | |
| 1647 | - * onSubscribeCallback: specifies a callback to execute when the | |
| 1648 | - * event has a new subscriber. This will fire immediately for | |
| 1649 | - * each queued subscriber if any exist prior to the creation of | |
| 1650 | - * the event. | |
| 1651 | - * </li> | |
| 1652 | - * </ul> | |
| 1653 | - * | |
| 1654 | - * @return {CustomEvent} the custom event | |
| 1655 | - * | |
| 1656 | - */ | |
| 1657 | - createEvent: function(p_type, p_config) { | |
| 1658 | - | |
| 1659 | - this.__yui_events = this.__yui_events || {}; | |
| 1660 | - var opts = p_config || {}; | |
| 1661 | - var events = this.__yui_events; | |
| 1662 | - | |
| 1663 | - if (events[p_type]) { | |
| 1664 | - } else { | |
| 1665 | - | |
| 1666 | - var scope = opts.scope || this; | |
| 1667 | - var silent = opts.silent || null; | |
| 1668 | - | |
| 1669 | - var ce = new YAHOO.util.CustomEvent(p_type, scope, silent, | |
| 1670 | - YAHOO.util.CustomEvent.FLAT); | |
| 1671 | - events[p_type] = ce; | |
| 1672 | - | |
| 1673 | - if (opts.onSubscribeCallback) { | |
| 1674 | - ce.subscribeEvent.subscribe(opts.onSubscribeCallback); | |
| 1675 | - } | |
| 1676 | - | |
| 1677 | - this.__yui_subscribers = this.__yui_subscribers || {}; | |
| 1678 | - var qs = this.__yui_subscribers[p_type]; | |
| 1679 | - | |
| 1680 | - if (qs) { | |
| 1681 | - for (var i=0; i<qs.length; ++i) { | |
| 1682 | - ce.subscribe(qs[i].fn, qs[i].obj, qs[i].override); | |
| 1683 | - } | |
| 1684 | - } | |
| 1685 | - } | |
| 1686 | - | |
| 1687 | - return events[p_type]; | |
| 1688 | - }, | |
| 1689 | - | |
| 1690 | - /** | |
| 1691 | - * Fire a custom event by name. The callback functions will be executed | |
| 1692 | - * from the scope specified when the event was created, and with the | |
| 1693 | - * following parameters: | |
| 1694 | - * <ul> | |
| 1695 | - * <li>The first argument fire() was executed with</li> | |
| 1696 | - * <li>The custom object (if any) that was passed into the subscribe() | |
| 1697 | - * method</li> | |
| 1698 | - * </ul> | |
| 1699 | - * @method fireEvent | |
| 1700 | - * @param p_type {string} the type, or name of the event | |
| 1701 | - * @param arguments {Object*} an arbitrary set of parameters to pass to | |
| 1702 | - * the handler. | |
| 1703 | - * @return {boolean} the return value from CustomEvent.fire, or null if | |
| 1704 | - * the custom event does not exist. | |
| 1705 | - */ | |
| 1706 | - fireEvent: function(p_type, arg1, arg2, etc) { | |
| 1707 | - | |
| 1708 | - this.__yui_events = this.__yui_events || {}; | |
| 1709 | - var ce = this.__yui_events[p_type]; | |
| 1710 | - | |
| 1711 | - if (ce) { | |
| 1712 | - var args = []; | |
| 1713 | - for (var i=1; i<arguments.length; ++i) { | |
| 1714 | - args.push(arguments[i]); | |
| 1715 | - } | |
| 1716 | - return ce.fire.apply(ce, args); | |
| 1717 | - } else { | |
| 1718 | - return null; | |
| 1719 | - } | |
| 1720 | - }, | |
| 1721 | - | |
| 1722 | - /** | |
| 1723 | - * Returns true if the custom event of the provided type has been created | |
| 1724 | - * with createEvent. | |
| 1725 | - * @method hasEvent | |
| 1726 | - * @param type {string} the type, or name of the event | |
| 1727 | - */ | |
| 1728 | - hasEvent: function(type) { | |
| 1729 | - if (this.__yui_events) { | |
| 1730 | - if (this.__yui_events[type]) { | |
| 1731 | - return true; | |
| 1732 | - } | |
| 1733 | - } | |
| 1734 | - return false; | |
| 1735 | - } | |
| 1736 | - | |
| 1737 | -}; | |
| 1738 | - | |
| 1 | +YAHOO.util.CustomEvent=function(_1,_2,_3,_4){this.type=_1;this.scope=_2||window;this.silent=_3;this.signature=_4||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var _5="_YUICEOnSubscribe";if(_1!==_5){this.subscribeEvent=new YAHOO.util.CustomEvent(_5,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,_7,_8){if(this.subscribeEvent){this.subscribeEvent.fire(fn,_7,_8);}this.subscribers.push(new YAHOO.util.Subscriber(fn,_7,_8));},unsubscribe:function(fn,_a){var _b=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,_a)){this._delete(i);_b=true;}}return _b;},fire:function(){var _e=this.subscribers.length;if(!_e&&this.silent){return true;}var _f=[],ret=true,i;for(i=0;i<arguments.length;++i){_f.push(arguments[i]);}var _10=_f.length;if(!this.silent){}for(i=0;i<_e;++i){var s=this.subscribers[i];if(s){if(!this.silent){}var _12=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var _13=null;if(_f.length>0){_13=_f[0];}ret=s.fn.call(_12,_13,s.obj);}else{ret=s.fn.call(_12,this.type,_f,s.obj);}if(false===ret){if(!this.silent){}return false;}}}return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);}},_delete:function(_15){var s=this.subscribers[_15];if(s){delete s.fn;delete s.obj;}this.subscribers.splice(_15,1);},toString:function(){return "CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,_19){this.fn=fn;this.obj=obj||null;this.override=_19;};YAHOO.util.Subscriber.prototype.getScope=function(_1a){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return _1a;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return (this.fn==fn&&this.obj==obj);}else{return (this.fn==fn);}};YAHOO.util.Subscriber.prototype.toString=function(){return "Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var _1d=false;var _1e=[];var _1f=[];var _20=[];var _21=[];var _22=0;var _23=[];var _24=[];var _25=0;return {POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var _26=this;var _27=function(){_26._tryPreloadAttach();};this._interval=setInterval(_27,this.POLL_INTERVAL);}},onAvailable:function(_28,_29,_2a,_2b){_23.push({id:_28,fn:_29,obj:_2a,override:_2b,checkReady:false});_22=this.POLL_RETRYS;this.startInterval();},onContentReady:function(_2c,_2d,_2e,_2f){_23.push({id:_2c,fn:_2d,obj:_2e,override:_2f,checkReady:true});_22=this.POLL_RETRYS;this.startInterval();},addListener:function(el,_31,fn,obj,_34){if(!fn||!fn.call){return false;}if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],_31,fn,obj,_34)&&ok;}return ok;}else{if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,_31,fn,obj,_34);});return true;}}}if(!el){return false;}if("unload"==_31&&obj!==this){_1f[_1f.length]=[el,_31,fn,obj,_34];return true;}var _38=el;if(_34){if(_34===true){_38=obj;}else{_38=_34;}}var _39=function(e){return fn.call(_38,YAHOO.util.Event.getEvent(e),obj);};var li=[el,_31,fn,_39,_38];var _3c=_1e.length;_1e[_3c]=li;if(this.useLegacyEvent(el,_31)){var _3d=this.getLegacyIndex(el,_31);if(_3d==-1||el!=_20[_3d][0]){_3d=_20.length;_24[el.id+_31]=_3d;_20[_3d]=[el,_31,el["on"+_31]];_21[_3d]=[];el["on"+_31]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),_3d);};}_21[_3d].push(li);}else{this._simpleAdd(el,_31,_39,false);}return true;},fireLegacyEvent:function(e,_40){var ok=true;var le=_21[_40];for(var i=0,len=le.length;i<len;++i){var li=le[i];if(li&&li[this.WFN]){var _45=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(_45,e);ok=(ok&&ret);}}return ok;},getLegacyIndex:function(el,_48){var key=this.generateId(el)+_48;if(typeof _24[key]=="undefined"){return -1;}else{return _24[key];}},useLegacyEvent:function(el,_4b){if(!el.addEventListener&&!el.attachEvent){return true;}else{if(this.isSafari){if("click"==_4b||"dblclick"==_4b){return true;}}}return false;},removeListener:function(el,_4d,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else{if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],_4d,fn)&&ok);}return ok;}}if(!fn||!fn.call){return this.purgeElement(el,false,_4d);}if("unload"==_4d){for(i=0,len=_1f.length;i<len;i++){var li=_1f[i];if(li&&li[0]==el&&li[1]==_4d&&li[2]==fn){_1f.splice(i,1);return true;}}return false;}var _52=null;var _53=arguments[3];if("undefined"==typeof _53){_53=this._getCacheIndex(el,_4d,fn);}if(_53>=0){_52=_1e[_53];}if(!el||!_52){return false;}if(this.useLegacyEvent(el,_4d)){var _54=this.getLegacyIndex(el,_4d);var _55=_21[_54];if(_55){for(i=0,len=_55.length;i<len;++i){li=_55[i];if(li&&li[this.EL]==el&&li[this.TYPE]==_4d&&li[this.FN]==fn){_55.splice(i,1);break;}}}}else{this._simpleRemove(el,_4d,_52[this.WFN],false);}delete _1e[_53][this.WFN];delete _1e[_53][this.FN];_1e.splice(_53,1);return true;},getTarget:function(ev,_57){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(_59){if(_59&&3==_59.nodeType){return _59.parentNode;}else{return _59;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}return y;},getXY:function(ev){return [this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else{if(ev.type=="mouseover"){t=ev.fromElement;}}}return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}c=c.caller;}}return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,_6b,fn){for(var i=0,len=_1e.length;i<len;++i){var li=_1e[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==_6b){return i;}}return -1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+_25;++_25;el.id=id;}return id;},_isValidCollection:function(o){return (o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){_1d=true;var EU=YAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;}this.locked=true;var _75=!_1d;if(!_75){_75=(_22>0);}var _76=[];for(var i=0,len=_23.length;i<len;++i){var _78=_23[i];if(_78){var el=this.getEl(_78.id);if(el){if(!_78.checkReady||_1d||el.nextSibling||(document&&document.body)){var _7a=el;if(_78.override){if(_78.override===true){_7a=_78.obj;}else{_7a=_78.override;}}_78.fn.call(_7a,_78.obj);delete _23[i];}}else{_76.push(_78);}}}_22=(_76.length===0)?0:_22-1;if(_75){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;return true;},purgeElement:function(el,_7c,_7d){var _7e=this.getListeners(el,_7d);if(_7e){for(var i=0,len=_7e.length;i<len;++i){var l=_7e[i];this.removeListener(el,l.type,l.fn);}}if(_7c&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],_7c,_7d);}}},getListeners:function(el,_82){var _83=[];if(_1e&&_1e.length>0){for(var i=0,len=_1e.length;i<len;++i){var l=_1e[i];if(l&&l[this.EL]===el&&(!_82||_82===l[this.TYPE])){_83.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}return (_83.length)?_83:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=_1f.length;i<len;++i){l=_1f[i];if(l){var _88=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){_88=l[EU.OBJ];}else{_88=l[EU.ADJ_SCOPE];}}l[EU.FN].call(_88,EU.getEvent(e),l[EU.OBJ]);delete _1f[i];l=null;_88=null;}}if(_1e&&_1e.length>0){j=_1e.length;while(j){index=j-1;l=_1e[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);}j=j-1;}l=null;EU.clearCache();}for(i=0,len=_20.length;i<len;++i){delete _20[i][0];delete _20[i];}EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return [dd.scrollTop,dd.scrollLeft];}else{if(db){return [db.scrollTop,db.scrollLeft];}else{return [0,0];}}},_simpleAdd:function(){if(window.addEventListener){return function(el,_8b,fn,_8d){el.addEventListener(_8b,fn,(_8d));};}else{if(window.attachEvent){return function(el,_8f,fn,_91){el.attachEvent("on"+_8f,fn);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,_93,fn,_95){el.removeEventListener(_93,fn,(_95));};}else{if(window.detachEvent){return function(el,_97,fn){el.detachEvent("on"+_97,fn);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(document&&document.body){EU._load();}else{EU._simpleAdd(window,"load",EU._load);}EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(_9a,_9b,_9c,_9d){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_9a];if(ce){ce.subscribe(_9b,_9c,_9d);}else{this.__yui_subscribers=this.__yui_subscribers||{};var _9f=this.__yui_subscribers;if(!_9f[_9a]){_9f[_9a]=[];}_9f[_9a].push({fn:_9b,obj:_9c,override:_9d});}},unsubscribe:function(_a0,_a1,_a2){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_a0];if(ce){return ce.unsubscribe(_a1,_a2);}else{return false;}},createEvent:function(_a4,_a5){this.__yui_events=this.__yui_events||{};var _a6=_a5||{};var _a7=this.__yui_events;if(_a7[_a4]){}else{var _a8=_a6.scope||this;var _a9=_a6.silent||null;var ce=new YAHOO.util.CustomEvent(_a4,_a8,_a9,YAHOO.util.CustomEvent.FLAT);_a7[_a4]=ce;if(_a6.onSubscribeCallback){ce.subscribeEvent.subscribe(_a6.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[_a4];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}}return _a7[_a4];},fireEvent:function(_ad,_ae,_af,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_ad];if(ce){var _b2=[];for(var i=1;i<arguments.length;++i){_b2.push(arguments[i]);}return ce.fire.apply(ce,_b2);}else{return null;}},hasEvent:function(_b4){if(this.__yui_events){if(this.__yui_events[_b4]){return true;}}return false;}}; | |
| 1739 | 2 | \ No newline at end of file | ... | ... |
thirdpartyjs/yui/tools/tools.js
| 1 | -/** | |
| 2 | -* @fileoverview | |
| 3 | -* <p>General Tools.</p> | |
| 4 | -* <p>Now contains a modified version of Douglas Crockford's json.js that doesn't | |
| 5 | -* mess with the DOM's prototype methods | |
| 6 | -* http://www.json.org/js.html</p> | |
| 7 | -* @author Dav Glass <dav.glass@yahoo.com> | |
| 8 | -* @version 1.0 | |
| 9 | -* @requires YAHOO | |
| 10 | -* @requires YAHOO.util.Dom | |
| 11 | -* @requires YAHOO.util.Event | |
| 12 | -* | |
| 13 | -* @constructor | |
| 14 | -* @class General Tools. | |
| 15 | -*/ | |
| 16 | -YAHOO.Tools = function() { | |
| 17 | - keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | |
| 18 | - /** | |
| 19 | - * Moved all regexes to the top level object to cache them. | |
| 20 | - * @type Object | |
| 21 | - */ | |
| 22 | - regExs = { | |
| 23 | - quotes: /\x22/g, | |
| 24 | - startspace: /^\s+/g, | |
| 25 | - endspace: /\s+$/g, | |
| 26 | - striptags: /<\/?[^>]+>/gi, | |
| 27 | - hasbr: /<br/i, | |
| 28 | - hasp: /<p>/i, | |
| 29 | - rbr: /<br>/gi, | |
| 30 | - rbr2: /<br\/>/gi, | |
| 31 | - rendp: /<\/p>/gi, | |
| 32 | - rp: /<p>/gi, | |
| 33 | - base64: /[^A-Za-z0-9\+\/\=]/g, | |
| 34 | - syntaxCheck: /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/ | |
| 35 | - } | |
| 36 | - | |
| 37 | - jsonCodes = { | |
| 38 | - '\b': '\\b', | |
| 39 | - '\t': '\\t', | |
| 40 | - '\n': '\\n', | |
| 41 | - '\f': '\\f', | |
| 42 | - '\r': '\\r', | |
| 43 | - '"' : '\\"', | |
| 44 | - '\\': '\\\\' | |
| 45 | - } | |
| 46 | - return { | |
| 47 | - version: '1.0' | |
| 48 | - } | |
| 49 | -}(); | |
| 50 | -/** | |
| 51 | -* This normalizes getting the height of an element in IE | |
| 52 | -* @param {String/HTMLElement} elm The element to get the height of | |
| 53 | -* @returns The Height in pixels | |
| 54 | -* @type String | |
| 55 | -*/ | |
| 56 | -YAHOO.Tools.getHeight = function(elm) { | |
| 57 | - var elm = $(elm); | |
| 58 | - var h = $D.getStyle(elm, 'height'); | |
| 59 | - if (h == 'auto') { | |
| 60 | - elm.style.zoom = 1; | |
| 61 | - h = elm.clientHeight + 'px'; | |
| 62 | - } | |
| 63 | - return h; | |
| 64 | -} | |
| 65 | -/** | |
| 66 | -* Get the XY coords required to place the element at the center of the screen | |
| 67 | -* @param {String/HTMLElement} elm The element to place at the center of the screen | |
| 68 | -* @returns The XY coords required to place the element at the center of the screen | |
| 69 | -* @type Array | |
| 70 | -*/ | |
| 71 | -YAHOO.Tools.getCenter = function(elm) { | |
| 72 | - var elm = $(elm); | |
| 73 | - var cX = Math.round(($D.getViewportWidth() - parseInt($D.getStyle(elm, 'width'))) / 2); | |
| 74 | - var cY = Math.round(($D.getViewportHeight() - parseInt(this.getHeight(elm))) / 2); | |
| 75 | - return [cX, cY]; | |
| 76 | -} | |
| 77 | - | |
| 78 | -/** | |
| 79 | -* Converts a text string into a DOM object | |
| 80 | -* @param {String} txt String to convert | |
| 81 | -* @returns A string to a textNode | |
| 82 | -*/ | |
| 83 | -YAHOO.Tools.makeTextObject = function(txt) { | |
| 84 | - return document.createTextNode(txt); | |
| 85 | -} | |
| 86 | -/** | |
| 87 | -* Takes an Array of DOM objects and appends them as a child to the main Element | |
| 88 | -* @param {Array} arr Array of elements to append to elm. | |
| 89 | -* @param {HTMLElement/String} elm A reference or ID to the main Element that the children will be appended to | |
| 90 | -*/ | |
| 91 | -YAHOO.Tools.makeChildren = function(arr, elm) { | |
| 92 | - var elm = $(elm); | |
| 93 | - for (var i in arr) { | |
| 94 | - _val = arr[i]; | |
| 95 | - if (typeof _val == 'string') { | |
| 96 | - _val = this.makeTxtObject(_val); | |
| 97 | - } | |
| 98 | - elm.appendChild(_val); | |
| 99 | - } | |
| 100 | -} | |
| 101 | -/** | |
| 102 | -* Converts a standard CSS string to a Javascriptable Camel Case variable name | |
| 103 | -* @param {String} str The CSS string to convert to camel case Javascript String | |
| 104 | -* Example:<br> | |
| 105 | -* background-color<br> | |
| 106 | -* backgroundColor<br><br> | |
| 107 | -* list-style-type<br> | |
| 108 | -* listStyleType | |
| 109 | -*/ | |
| 110 | -YAHOO.Tools.styleToCamel = function(str) { | |
| 111 | - var _tmp = str.split('-'); | |
| 112 | - var _new_style = _tmp[0]; | |
| 113 | - for (var i = 1; i < _tmp.length; i++) { | |
| 114 | - _new_style += _tmp[i].substring(0, 1).toUpperCase() + _tmp[i].substring(1, _tmp[i].length); | |
| 115 | - } | |
| 116 | - return _new_style; | |
| 117 | -} | |
| 118 | -/** | |
| 119 | -* Removes " from a given string | |
| 120 | -* @param {String} str The string to remove quotes from | |
| 121 | -*/ | |
| 122 | -YAHOO.Tools.removeQuotes = function(str) { | |
| 123 | - var checkText = new String(str); | |
| 124 | - return String(checkText.replace(regExs.quotes, '')); | |
| 125 | -} | |
| 126 | -/** | |
| 127 | -* Trims starting and trailing white space from a string. | |
| 128 | -* @param {String} str The string to trim | |
| 129 | -*/ | |
| 130 | -YAHOO.Tools.trim = function(str) { | |
| 131 | - return str.replace(regExs.startspace, '').replace(regExs.endspace, ''); | |
| 132 | -} | |
| 133 | -/** | |
| 134 | -* Removes all HTML tags from a string. | |
| 135 | -* @param {String} str The string to remove HTML from | |
| 136 | -*/ | |
| 137 | -YAHOO.Tools.stripTags = function(str) { | |
| 138 | - return str.replace(regExs.striptags, ''); | |
| 139 | -} | |
| 140 | -/** | |
| 141 | -* Returns True/False if it finds BR' or P's | |
| 142 | -* @param {String} str The string to search | |
| 143 | -*/ | |
| 144 | -YAHOO.Tools.hasBRs = function(str) { | |
| 145 | - return str.match(regExs.hasbr) || str.match(regExs.hasp); | |
| 146 | -} | |
| 147 | -/** | |
| 148 | -* Converts BR's and P's to Plain Text Line Feeds | |
| 149 | -* @param {String} str The string to search | |
| 150 | -*/ | |
| 151 | -YAHOO.Tools.convertBRs2NLs = function(str) { | |
| 152 | - return str.replace(regExs.rbr, "\n").replace(regExs.rbr2, "\n").replace(regExs.rendp, "\n").replace(regExs.rp, ""); | |
| 153 | -} | |
| 154 | -/** | |
| 155 | -* Repeats a string n number of times | |
| 156 | -* @param {String} str The string to repeat | |
| 157 | -* @param {Integer} repeat Number of times to repeat it | |
| 158 | -* @returns Repeated string | |
| 159 | -* @type String | |
| 160 | -*/ | |
| 161 | -YAHOO.Tools.stringRepeat = function(str, repeat) { | |
| 162 | - return new Array(repeat + 1).join(str); | |
| 163 | -} | |
| 164 | -/** | |
| 165 | -* Reverses a string | |
| 166 | -* @param {String} str The string to reverse | |
| 167 | -* @returns Reversed string | |
| 168 | -* @type String | |
| 169 | -*/ | |
| 170 | -YAHOO.Tools.stringReverse = function(str) { | |
| 171 | - var new_str = ''; | |
| 172 | - for (i = 0; i < str.length; i++) { | |
| 173 | - new_str = new_str + str.charAt((str.length -1) -i); | |
| 174 | - } | |
| 175 | - return new_str; | |
| 176 | -} | |
| 177 | -/** | |
| 178 | -* printf function written in Javascript<br> | |
| 179 | -* <pre>var test = "You are viewing messages {0} - {1} out of {2}"; | |
| 180 | -* YAHOO.Tools.printf(test, '5', '25', '500');</pre><br> | |
| 181 | -* This will return a string like:<br> | |
| 182 | -* "You are view messages 5 - 25 out of 500"<br> | |
| 183 | -* Patched provided by: Peter Foti <foti-1@comcast.net><br> | |
| 184 | -* @param {String} string | |
| 185 | -* @returns Parsed String | |
| 186 | -* @type String | |
| 187 | -*/ | |
| 188 | -YAHOO.Tools.printf = function() { | |
| 189 | - var num = arguments.length; | |
| 190 | - var oStr = arguments[0]; | |
| 191 | - | |
| 192 | - for (var i = 1; i < num; i++) { | |
| 193 | - var pattern = "\\{" + (i-1) + "\\}"; | |
| 194 | - var re = new RegExp(pattern, "g"); | |
| 195 | - oStr = oStr.replace(re, arguments[i]); | |
| 196 | - } | |
| 197 | - return oStr; | |
| 198 | -} | |
| 199 | -/** | |
| 200 | -* Trims starting and trailing white space from a string. | |
| 201 | -* @param {HTMLElement/Array/String} el Single element, array of elements or id string to apply the style string to | |
| 202 | -* @param {String} str The CSS string to apply to the elements | |
| 203 | -* Example: | |
| 204 | -* color: black; text-decoration: none; background-color: yellow; | |
| 205 | -*/ | |
| 206 | -YAHOO.Tools.setStyleString = function(el, str) { | |
| 207 | - var _tmp = str.split(';'); | |
| 208 | - for (x in _tmp) { | |
| 209 | - if (x) { | |
| 210 | - __tmp = YAHOO.Tools.trim(_tmp[x]); | |
| 211 | - __tmp = _tmp[x].split(':'); | |
| 212 | - if (__tmp[0] && __tmp[1]) { | |
| 213 | - var _attr = YAHOO.Tools.trim(__tmp[0]); | |
| 214 | - var _val = YAHOO.Tools.trim(__tmp[1]); | |
| 215 | - if (_attr && _val) { | |
| 216 | - if (_attr.indexOf('-') != -1) { | |
| 217 | - _attr = YAHOO.Tools.styleToCamel(_attr); | |
| 218 | - } | |
| 219 | - $D.setStyle(el, _attr, _val); | |
| 220 | - } | |
| 221 | - } | |
| 222 | - } | |
| 223 | - } | |
| 224 | -} | |
| 225 | -/** | |
| 226 | -* Gets the currently selected text | |
| 227 | -* @param {Object} _document Optional. Reference to the document object | |
| 228 | -* @param {Object} _window Optional. Reference to the window object | |
| 229 | -* Both parameters are optional, but if you give one you need to give both.<br> | |
| 230 | -* The reason for the parameters is if you are dealing with an iFrame or FrameSet, | |
| 231 | -* you need to specify the document and the window of the frame you want to get the selection for | |
| 232 | -*/ | |
| 233 | -YAHOO.Tools.getSelection = function(_document, _window) { | |
| 234 | - if (!_document) { _document = document; } | |
| 235 | - if (!_window) { _window = window; } | |
| 236 | - if (_document.selection) { | |
| 237 | - return _document.selection; | |
| 238 | - } | |
| 239 | - return _window.getSelection(); | |
| 240 | -} | |
| 241 | -/** | |
| 242 | -* Remove the element from the document. | |
| 243 | -* @param {HTMLElement/Array/String} el Single element, array of elements or id string to remove from the document | |
| 244 | -* This function needs to be extended to remove all of the child elements & their listeners. | |
| 245 | -*/ | |
| 246 | -YAHOO.Tools.removeElement = function(el) { | |
| 247 | - if (!(el instanceof Array)) { | |
| 248 | - el = new Array($(el)); | |
| 249 | - } | |
| 250 | - for (var i = 0; i < el.length; i++) { | |
| 251 | - if (el[i].parentNode) { | |
| 252 | - el[i].parentNode.removeChild(el); | |
| 253 | - } | |
| 254 | - } | |
| 255 | -} | |
| 256 | -/** | |
| 257 | -* Set a cookie. | |
| 258 | -* @param {String} name The name of the cookie to be set | |
| 259 | -* @param {String} value The value of the cookie | |
| 260 | -* @param {String} expires A valid Javascript Date object | |
| 261 | -* @param {String} path The path of the cookie (Deaults to /) | |
| 262 | -* @param {String} domain The domain to attach the cookie to | |
| 263 | -* @param {Booleen} secure Booleen True or False | |
| 264 | -*/ | |
| 265 | -YAHOO.Tools.setCookie = function(name, value, expires, path, domain, secure) { | |
| 266 | - var argv = arguments; | |
| 267 | - var argc = arguments.length; | |
| 268 | - var expires = (argc > 2) ? argv[2] : null; | |
| 269 | - var path = (argc > 3) ? argv[3] : '/'; | |
| 270 | - var domain = (argc > 4) ? argv[4] : null; | |
| 271 | - var secure = (argc > 5) ? argv[5] : false; | |
| 272 | - document.cookie = name + "=" + escape (value) + | |
| 273 | - ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + | |
| 274 | - ((path == null) ? "" : ("; path=" + path)) + | |
| 275 | - ((domain == null) ? "" : ("; domain=" + domain)) + | |
| 276 | - ((secure == true) ? "; secure" : ""); | |
| 277 | -} | |
| 278 | - | |
| 279 | -/** | |
| 280 | -* Get the value of a cookie. | |
| 281 | -* @param {String} name The name of the cookie to get | |
| 282 | -*/ | |
| 283 | -YAHOO.Tools.getCookie = function(name) { | |
| 284 | - var dc = document.cookie; | |
| 285 | - var prefix = name + '='; | |
| 286 | - var begin = dc.indexOf('; ' + prefix); | |
| 287 | - if (begin == -1) { | |
| 288 | - begin = dc.indexOf(prefix); | |
| 289 | - if (begin != 0) return null; | |
| 290 | - } else { | |
| 291 | - begin += 2; | |
| 292 | - } | |
| 293 | - var end = document.cookie.indexOf(';', begin); | |
| 294 | - if (end == -1) { | |
| 295 | - end = dc.length; | |
| 296 | - } | |
| 297 | - return unescape(dc.substring(begin + prefix.length, end)); | |
| 298 | -} | |
| 299 | -/** | |
| 300 | -* Delete a cookie | |
| 301 | -* @param {String} name The name of the cookie to delete. | |
| 302 | -*/ | |
| 303 | -YAHOO.Tools.deleteCookie = function(name, path, domain) { | |
| 304 | - if (getCookie(name)) { | |
| 305 | - document.cookie = name + '=' + ((path) ? '; path=' + path : '') + ((domain) ? '; domain=' + domain : '') + '; expires=Thu, 01-Jan-70 00:00:01 GMT'; | |
| 306 | - } | |
| 307 | -} | |
| 308 | -/** | |
| 309 | -* Object based Browser Engine Detection<br> | |
| 310 | -* The returned object will look like:<br> | |
| 311 | -* <pre> | |
| 312 | -* obj { | |
| 313 | -* ua: 'Full UserAgent String' | |
| 314 | -* opera: boolean | |
| 315 | -* safari: boolean | |
| 316 | -* gecko: boolean | |
| 317 | -* msie: boolean | |
| 318 | -* version: string | |
| 319 | -* } | |
| 320 | -* </pre> | |
| 321 | -* @return Browser Information Object | |
| 322 | -* @type Object | |
| 323 | -*/ | |
| 324 | -YAHOO.Tools.getBrowserEngine = function() { | |
| 325 | - var opera = ((window.opera && window.opera.version) ? true : false); | |
| 326 | - var safari = ((navigator.vendor && navigator.vendor.indexOf('Apple') != -1) ? true : false); | |
| 327 | - var gecko = ((document.getElementById && !document.all && !opera && !safari) ? true : false); | |
| 328 | - var msie = ((window.ActiveXObject) ? true : false); | |
| 329 | - var version = false; | |
| 330 | - if (msie) { | |
| 331 | - /** | |
| 332 | - * This checks for the maxHeight style property. | |
| 333 | - * I.E. 7 has this | |
| 334 | - */ | |
| 335 | - if (typeof document.body.style.maxHeight != "undefined") { | |
| 336 | - version = '7'; | |
| 337 | - } else { | |
| 338 | - /** | |
| 339 | - * Fall back to 6 (might need to find a 5.5 object too...). | |
| 340 | - */ | |
| 341 | - version = '6'; | |
| 342 | - } | |
| 343 | - } | |
| 344 | - if (opera) { | |
| 345 | - /** | |
| 346 | - * The window.opera object has a method called version(); | |
| 347 | - * Here we only grab the first 2 parts of the dotted string to get 9.01, 9.02, etc.. | |
| 348 | - */ | |
| 349 | - var tmp_version = window.opera.version().split('.'); | |
| 350 | - version = tmp_version[0] + '.' + tmp_version[1]; | |
| 351 | - } | |
| 352 | - if (gecko) { | |
| 353 | - /** | |
| 354 | - * FireFox 2 has a function called registerContentHandler(); | |
| 355 | - */ | |
| 356 | - if (navigator.registerContentHandler) { | |
| 357 | - version = '2'; | |
| 358 | - } else { | |
| 359 | - version = '1.5'; | |
| 360 | - } | |
| 361 | - /** | |
| 362 | - * This should catch all pre Firefox 1.5 browsers | |
| 363 | - */ | |
| 364 | - if ((navigator.vendorSub) && !version) { | |
| 365 | - version = navigator.vendorSub; | |
| 366 | - } | |
| 367 | - } | |
| 368 | - if (safari) { | |
| 369 | - try { | |
| 370 | - /** | |
| 371 | - * Safari 1.3+ supports the console method | |
| 372 | - */ | |
| 373 | - if (console) { | |
| 374 | - /** | |
| 375 | - * Safari 2+ supports the onmousewheel event | |
| 376 | - */ | |
| 377 | - if ((window.onmousewheel !== 'undefined') && (window.onmousewheel === null)) { | |
| 378 | - version = '2'; | |
| 379 | - } else { | |
| 380 | - version = '1.3'; | |
| 381 | - } | |
| 382 | - } | |
| 383 | - } catch (e) { | |
| 384 | - /** | |
| 385 | - * Safari 1.2 does not support the console method | |
| 386 | - */ | |
| 387 | - version = '1.2'; | |
| 388 | - } | |
| 389 | - } | |
| 390 | - /** | |
| 391 | - * Return the Browser Object | |
| 392 | - * @type Object | |
| 393 | - */ | |
| 394 | - var browsers = { | |
| 395 | - ua: navigator.userAgent, | |
| 396 | - opera: opera, | |
| 397 | - safari: safari, | |
| 398 | - gecko: gecko, | |
| 399 | - msie: msie, | |
| 400 | - version: version | |
| 401 | - } | |
| 402 | - return browsers; | |
| 403 | -} | |
| 404 | -/** | |
| 405 | -* User Agent Based Browser Detection<br> | |
| 406 | -* This function uses the userAgent string to get the browsers information.<br> | |
| 407 | -* The returned object will look like:<br> | |
| 408 | -* <pre> | |
| 409 | -* obj { | |
| 410 | -* ua: 'Full UserAgent String' | |
| 411 | -* opera: boolean | |
| 412 | -* safari: boolean | |
| 413 | -* firefox: boolean | |
| 414 | -* mozilla: boolean | |
| 415 | -* msie: boolean | |
| 416 | -* mac: boolean | |
| 417 | -* win: boolean | |
| 418 | -* unix: boolean | |
| 419 | -* version: string | |
| 420 | -* flash: version string | |
| 421 | -* } | |
| 422 | -* </pre><br> | |
| 423 | -* @return Browser Information Object | |
| 424 | -* @type Object | |
| 425 | -*/ | |
| 426 | -YAHOO.Tools.getBrowserAgent = function() { | |
| 427 | - var ua = navigator.userAgent.toLowerCase(); | |
| 428 | - var opera = ((ua.indexOf('opera') != -1) ? true : false); | |
| 429 | - var safari = ((ua.indexOf('safari') != -1) ? true : false); | |
| 430 | - var firefox = ((ua.indexOf('firefox') != -1) ? true : false); | |
| 431 | - var msie = ((ua.indexOf('msie') != -1) ? true : false); | |
| 432 | - var mac = ((ua.indexOf('mac') != -1) ? true : false); | |
| 433 | - var unix = ((ua.indexOf('x11') != -1) ? true : false); | |
| 434 | - var win = ((mac || unix) ? false : true); | |
| 435 | - var version = false; | |
| 436 | - var mozilla = false; | |
| 437 | - //var flash = this.checkFlash(); | |
| 438 | - if (!firefox && !safari && (ua.indexOf('gecko') != -1)) { | |
| 439 | - mozilla = true; | |
| 440 | - var _tmp = ua.split('/'); | |
| 441 | - version = _tmp[_tmp.length - 1].split(' ')[0]; | |
| 442 | - } | |
| 443 | - if (firefox) { | |
| 444 | - var _tmp = ua.split('/'); | |
| 445 | - version = _tmp[_tmp.length - 1].split(' ')[0]; | |
| 446 | - } | |
| 447 | - if (msie) { | |
| 448 | - version = ua.substring((ua.indexOf('msie ') + 5)).split(';')[0]; | |
| 449 | - } | |
| 450 | - if (safari) { | |
| 451 | - /** | |
| 452 | - * Safari doesn't report a string, have to use getBrowserEngine to get it | |
| 453 | - */ | |
| 454 | - version = this.getBrowserEngine().version; | |
| 455 | - } | |
| 456 | - if (opera) { | |
| 457 | - version = ua.substring((ua.indexOf('opera/') + 6)).split(' ')[0]; | |
| 458 | - } | |
| 459 | - | |
| 460 | - /** | |
| 461 | - * Return the Browser Object | |
| 462 | - * @type Object | |
| 463 | - */ | |
| 464 | - var browsers = { | |
| 465 | - ua: navigator.userAgent, | |
| 466 | - opera: opera, | |
| 467 | - safari: safari, | |
| 468 | - firefox: firefox, | |
| 469 | - mozilla: mozilla, | |
| 470 | - msie: msie, | |
| 471 | - mac: mac, | |
| 472 | - win: win, | |
| 473 | - unix: unix, | |
| 474 | - version: version//, | |
| 475 | - //flash: flash | |
| 476 | - } | |
| 477 | - return browsers; | |
| 478 | -} | |
| 479 | -/** | |
| 480 | -* Check if Flash is enabled and return the version number | |
| 481 | -* @return Version number or false on error | |
| 482 | -* @type String | |
| 483 | -*/ | |
| 484 | -YAHOO.Tools.checkFlash = function() { | |
| 485 | - var br = this.getBrowserEngine(); | |
| 486 | - if (br.msie) { | |
| 487 | - try { | |
| 488 | - // version will be set for 7.X or greater players | |
| 489 | - var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); | |
| 490 | - var versionStr = axo.GetVariable("$version"); | |
| 491 | - var tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] | |
| 492 | - var tempString = tempArray[1]; // "2,0,0,11" | |
| 493 | - var versionArray = tempString.split(","); // ['2', '0', '0', '11'] | |
| 494 | - var flash = versionArray[0]; | |
| 495 | - } catch (e) { | |
| 496 | - } | |
| 497 | - } else { | |
| 498 | - var flashObj = null; | |
| 499 | - var tokens, len, curr_tok; | |
| 500 | - if (navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash']) { | |
| 501 | - flashObj = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin; | |
| 502 | - } | |
| 503 | - if (flashObj == null) { | |
| 504 | - flash = false; | |
| 505 | - } else { | |
| 506 | - tokens = navigator.plugins['Shockwave Flash'].description.split(' '); | |
| 507 | - len = tokens.length; | |
| 508 | - while(len--) { | |
| 509 | - curr_tok = tokens[len]; | |
| 510 | - if(!isNaN(parseInt(curr_tok))) { | |
| 511 | - hasVersion = curr_tok; | |
| 512 | - flash = hasVersion; | |
| 513 | - break; | |
| 514 | - } | |
| 515 | - } | |
| 516 | - } | |
| 517 | - } | |
| 518 | - return flash; | |
| 519 | -} | |
| 520 | -/** | |
| 521 | -* Set Mass Attributes on an Element | |
| 522 | -* @param {Object} attrObj Object containing the attributes to set. | |
| 523 | -* @param {HTMLElement/String} elm The element you want to apply the attribute to | |
| 524 | -* Supports adding listeners and setting style from a CSS style string.<br> | |
| 525 | -*/ | |
| 526 | -YAHOO.Tools.setAttr = function(attrsObj, elm) { | |
| 527 | - if (typeof elm == 'string') { | |
| 528 | - elm = $(elm); | |
| 529 | - } | |
| 530 | - for (var i in attrsObj) { | |
| 531 | - switch (i.toLowerCase()) { | |
| 532 | - case 'listener': | |
| 533 | - if (attrsObj[i] instanceof Array) { | |
| 534 | - var ev = attrsObj[i][0]; | |
| 535 | - var func = attrsObj[i][1]; | |
| 536 | - var base = attrsObj[i][2]; | |
| 537 | - var scope = attrsObj[i][3]; | |
| 538 | - $E.addListener(elm, ev, func, base, scope); | |
| 539 | - } | |
| 540 | - break; | |
| 541 | - case 'classname': | |
| 542 | - case 'class': | |
| 543 | - elm.className = attrsObj[i]; | |
| 544 | - break; | |
| 545 | - case 'style': | |
| 546 | - YAHOO.Tools.setStyleString(elm, attrsObj[i]); | |
| 547 | - break; | |
| 548 | - default: | |
| 549 | - elm.setAttribute(i, attrsObj[i]); | |
| 550 | - break; | |
| 551 | - } | |
| 552 | - } | |
| 553 | -} | |
| 554 | -/** | |
| 555 | -* Usage:<br> | |
| 556 | -* <pre><code> | |
| 557 | -* div = YAHOO.util.Dom.create('div', 'Single DIV. This is some test text.', { | |
| 558 | -* className:'test1', | |
| 559 | -* style:'font-size: 20px' | |
| 560 | -* } | |
| 561 | -* ); | |
| 562 | -* test1.appendChild(div); | |
| 563 | -* <br><br>- or -<br><br> | |
| 564 | -* div = YAHOO.util.Dom.create('div', {className:'test2',style:'font-size:11px'}, | |
| 565 | -* [YAHOO.util.Dom.create('p', { | |
| 566 | -* style:'border: 1px solid red; color: blue', | |
| 567 | -* listener: ['click', test] | |
| 568 | -* }, | |
| 569 | -* 'This is a P inside of a DIV both styled.') | |
| 570 | -* ] | |
| 571 | -*); | |
| 572 | -* test2.appendChild(div); | |
| 573 | -* | |
| 574 | -* </code></pre> | |
| 575 | -* @param {String} tagName Tag name to create | |
| 576 | -* @param {Object} attrs Element attributes in object notation | |
| 577 | -* @param {Array} children Array of children to append to the created element | |
| 578 | -* @param {String} txt Text string to insert into the created element | |
| 579 | -* @returns A reference to the newly created element | |
| 580 | -* @type HTMLReference | |
| 581 | -*/ | |
| 582 | -YAHOO.Tools.create = function(tagName) { | |
| 583 | - tagName = tagName.toLowerCase(); | |
| 584 | - elm = document.createElement(tagName); | |
| 585 | - var txt = false; | |
| 586 | - var attrsObj = false; | |
| 587 | - | |
| 588 | - if (!elm) { return false; } | |
| 589 | - | |
| 590 | - for (var i = 1; i < arguments.length; i++) { | |
| 591 | - txt = arguments[i]; | |
| 592 | - if (typeof txt == 'string') { | |
| 593 | - _txt = YAHOO.Tools.makeTextObject(txt); | |
| 594 | - elm.appendChild(_txt); | |
| 595 | - } else if (txt instanceof Array) { | |
| 596 | - YAHOO.Tools.makeChildren(txt, elm); | |
| 597 | - } else if (typeof txt == 'object') { | |
| 598 | - //_makeStyleObject(txt, elm); | |
| 599 | - YAHOO.Tools.setAttr(txt, elm); | |
| 600 | - } | |
| 601 | - } | |
| 602 | - return elm; | |
| 603 | -} | |
| 604 | -/** | |
| 605 | -* Inserts an HTML Element after another in the DOM Tree. | |
| 606 | -* @param {HTMLElement} elm The element to insert | |
| 607 | -* @param {HTMLElement} curNode The element to insert it before | |
| 608 | -*/ | |
| 609 | -YAHOO.Tools.insertAfter = function(elm, curNode) { | |
| 610 | - if (curNode.nextSibling) { | |
| 611 | - curNode.parentNode.insertBefore(elm, curNode.nextSibling); | |
| 612 | - } else { | |
| 613 | - curNode.parentNode.appendChild(elm); | |
| 614 | - } | |
| 615 | -} | |
| 616 | -/** | |
| 617 | -* Validates that the value passed is in the Array passed. | |
| 618 | -* @param {Array} arr The Array to search (haystack) | |
| 619 | -* @param {String} val The value to search for (needle) | |
| 620 | -* @returns True if the value is found | |
| 621 | -* @type Boolean | |
| 622 | -*/ | |
| 623 | -YAHOO.Tools.inArray = function(arr, val) { | |
| 624 | - if (arr instanceof Array) { | |
| 625 | - for (var i = (arr.length -1); i >= 0; i--) { | |
| 626 | - if (arr[i] === val) { | |
| 627 | - return true; | |
| 628 | - } | |
| 629 | - } | |
| 630 | - } | |
| 631 | - return false; | |
| 632 | -} | |
| 633 | - | |
| 634 | - | |
| 635 | -/** | |
| 636 | -* Validates that the value passed in is a boolean. | |
| 637 | -* @param {Object} str The value to validate | |
| 638 | -* @return true, if the value is valid | |
| 639 | -* @type Boolean | |
| 640 | -*/ | |
| 641 | -YAHOO.Tools.checkBoolean = function(str) { | |
| 642 | - return ((typeof str == 'boolean') ? true : false); | |
| 643 | -} | |
| 644 | - | |
| 645 | -/** | |
| 646 | -* Validates that the value passed in is a number. | |
| 647 | -* @param {Object} str The value to validate | |
| 648 | -* @return true, if the value is valid | |
| 649 | -* @type Boolean | |
| 650 | -*/ | |
| 651 | -YAHOO.Tools.checkNumber = function(str) { | |
| 652 | - return ((isNaN(str)) ? false : true); | |
| 653 | -} | |
| 654 | - | |
| 655 | -/** | |
| 656 | -* Divide your desired pixel width by 13 to find em width. Multiply that value by 0.9759 for IE via *width. | |
| 657 | -* @param {Integer} size The pixel size to convert to em. | |
| 658 | -* @return Object of sizes (2) {msie: size, other: size } | |
| 659 | -* @type Object | |
| 660 | -*/ | |
| 661 | -YAHOO.Tools.PixelToEm = function(size) { | |
| 662 | - var data = {}; | |
| 663 | - var sSize = (size / 13); | |
| 664 | - data.other = (Math.round(sSize * 100) / 100); | |
| 665 | - data.msie = (Math.round((sSize * 0.9759) * 100) / 100); | |
| 666 | - return data; | |
| 667 | -} | |
| 668 | - | |
| 669 | -/** | |
| 670 | -* Return a string of CSS statements for this pixel size in ems | |
| 671 | -* @param {Integer} size The pixel size to convert to em. | |
| 672 | -* @param {String} prop The property to apply the style to. | |
| 673 | -* @return String of CSS style statements (width:46.15em;*width:45.04em;min-width:600px;) | |
| 674 | -* @type String | |
| 675 | -*/ | |
| 676 | -YAHOO.Tools.PixelToEmStyle = function(size, prop) { | |
| 677 | - var data = ''; | |
| 678 | - var prop = ((prop) ? prop.toLowerCase() : 'width'); | |
| 679 | - var sSize = (size / 13); | |
| 680 | - data += prop + ':' + (Math.round(sSize * 100) / 100) + 'em;'; | |
| 681 | - data += '*' + prop + ':' + (Math.round((sSize * 0.9759) * 100) / 100) + 'em;'; | |
| 682 | - if ((prop == 'width') || (prop == 'height')) { | |
| 683 | - data += 'min-' + prop + ':' + size + 'px;'; | |
| 684 | - } | |
| 685 | - return data; | |
| 686 | -} | |
| 687 | - | |
| 688 | -/** | |
| 689 | -* Base64 Encodes a string | |
| 690 | -* @param {String} str The string to base64 encode. | |
| 691 | -* @return Base64 Encoded String | |
| 692 | -* @type String | |
| 693 | -*/ | |
| 694 | -YAHOO.Tools.base64Encode = function(str) { | |
| 695 | - var data = ""; | |
| 696 | - var chr1, chr2, chr3, enc1, enc2, enc3, enc4; | |
| 697 | - var i = 0; | |
| 698 | - | |
| 699 | - do { | |
| 700 | - chr1 = str.charCodeAt(i++); | |
| 701 | - chr2 = str.charCodeAt(i++); | |
| 702 | - chr3 = str.charCodeAt(i++); | |
| 703 | - | |
| 704 | - enc1 = chr1 >> 2; | |
| 705 | - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); | |
| 706 | - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); | |
| 707 | - enc4 = chr3 & 63; | |
| 708 | - | |
| 709 | - if (isNaN(chr2)) { | |
| 710 | - enc3 = enc4 = 64; | |
| 711 | - } else if (isNaN(chr3)) { | |
| 712 | - enc4 = 64; | |
| 713 | - } | |
| 714 | - | |
| 715 | - data = data + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); | |
| 716 | - } while (i < str.length); | |
| 717 | - | |
| 718 | - return data; | |
| 719 | -} | |
| 720 | -/** | |
| 721 | -* Base64 Dncodes a string | |
| 722 | -* @param {String} str The base64 encoded string to decode. | |
| 723 | -* @return The decoded String | |
| 724 | -* @type String | |
| 725 | -*/ | |
| 726 | -YAHOO.Tools.base64Decode = function(str) { | |
| 727 | - var data = ""; | |
| 728 | - var chr1, chr2, chr3, enc1, enc2, enc3, enc4; | |
| 729 | - var i = 0; | |
| 730 | - | |
| 731 | - // remove all characters that are not A-Z, a-z, 0-9, +, /, or = | |
| 732 | - str = str.replace(regExs.base64, ""); | |
| 733 | - | |
| 734 | - do { | |
| 735 | - enc1 = keyStr.indexOf(str.charAt(i++)); | |
| 736 | - enc2 = keyStr.indexOf(str.charAt(i++)); | |
| 737 | - enc3 = keyStr.indexOf(str.charAt(i++)); | |
| 738 | - enc4 = keyStr.indexOf(str.charAt(i++)); | |
| 739 | - | |
| 740 | - chr1 = (enc1 << 2) | (enc2 >> 4); | |
| 741 | - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); | |
| 742 | - chr3 = ((enc3 & 3) << 6) | enc4; | |
| 743 | - | |
| 744 | - data = data + String.fromCharCode(chr1); | |
| 745 | - | |
| 746 | - if (enc3 != 64) { | |
| 747 | - data = data + String.fromCharCode(chr2); | |
| 748 | - } | |
| 749 | - if (enc4 != 64) { | |
| 750 | - data = data + String.fromCharCode(chr3); | |
| 751 | - } | |
| 752 | - } while (i < str.length); | |
| 753 | - | |
| 754 | - return data; | |
| 755 | -} | |
| 756 | - | |
| 757 | -/** | |
| 758 | -* Parses a Query String, if one is not provided, it will look in location.href<br> | |
| 759 | -* NOTE: This function will also handle test[] vars and convert them to an array inside of the return object.<br> | |
| 760 | -* This now supports #hash vars, it will return it in the object as Obj.hash | |
| 761 | -* @param {String} str The string to parse as a query string | |
| 762 | -* @return An object of the parts of the parsed query string | |
| 763 | -* @type Object | |
| 764 | -*/ | |
| 765 | -YAHOO.Tools.getQueryString = function(str) { | |
| 766 | - var qstr = {}; | |
| 767 | - if (!str) { | |
| 768 | - var str = location.href.split('?'); | |
| 769 | - if (str.length != 2) { | |
| 770 | - str = ['', location.href]; | |
| 771 | - } | |
| 772 | - } else { | |
| 773 | - var str = ['', str]; | |
| 774 | - } | |
| 775 | - if (str[1].match('#')) { | |
| 776 | - var _tmp = str[1].split('#'); | |
| 777 | - qstr.hash = _tmp[1]; | |
| 778 | - str[1] = _tmp[0]; | |
| 779 | - } | |
| 780 | - if (str[1]) { | |
| 781 | - str = str[1].split('&'); | |
| 782 | - if (str.length) { | |
| 783 | - for (var i = 0; i < str.length; i++) { | |
| 784 | - var part = str[i].split('='); | |
| 785 | - if (part[0].indexOf('[') != -1) { | |
| 786 | - if (part[0].indexOf('[]') != -1) { | |
| 787 | - //Array | |
| 788 | - var arr = part[0].substring(0, part[0].length - 2); | |
| 789 | - if (!qstr[arr]) { | |
| 790 | - qstr[arr] = []; | |
| 791 | - } | |
| 792 | - qstr[arr][qstr[arr].length] = part[1]; | |
| 793 | - } else { | |
| 794 | - //Object | |
| 795 | - var arr = part[0].substring(0, part[0].indexOf('[')); | |
| 796 | - var data = part[0].substring((part[0].indexOf('[') + 1), part[0].indexOf(']')); | |
| 797 | - if (!qstr[arr]) { | |
| 798 | - qstr[arr] = {}; | |
| 799 | - } | |
| 800 | - //Object | |
| 801 | - qstr[arr][data] = part[1]; | |
| 802 | - } | |
| 803 | - } else { | |
| 804 | - qstr[part[0]] = part[1]; | |
| 805 | - } | |
| 806 | - } | |
| 807 | - } | |
| 808 | - } | |
| 809 | - return qstr; | |
| 810 | -} | |
| 811 | -/** | |
| 812 | -* Parses a Query String Var<br> | |
| 813 | -* NOTE: This function will also handle test[] vars and convert them to an array inside of the return object. | |
| 814 | -* @param {String} str The var to get from the query string | |
| 815 | -* @return The value of the var in the querystring. | |
| 816 | -* @type String/Array | |
| 817 | -*/ | |
| 818 | -YAHOO.Tools.getQueryStringVar = function(str) { | |
| 819 | - var qs = this.getQueryString(); | |
| 820 | - if (qs[str]) { | |
| 821 | - return qs[str]; | |
| 822 | - } else { | |
| 823 | - return false; | |
| 824 | - } | |
| 825 | -} | |
| 826 | - | |
| 827 | - | |
| 828 | -/** | |
| 829 | -* Function to pad a date with a beginning 0 so 1 becomes 01, 2 becomes 02, etc.. | |
| 830 | -* @param {String} n The string to pad | |
| 831 | -* @returns Zero padded string | |
| 832 | -* @type String | |
| 833 | -*/ | |
| 834 | -YAHOO.Tools.padDate = function(n) { | |
| 835 | - return n < 10 ? '0' + n : n; | |
| 836 | -} | |
| 837 | - | |
| 838 | -/** | |
| 839 | -* Converts a string to a JSON string | |
| 840 | -* @param {String} str Converts a string to a JSON string | |
| 841 | -* @returns JSON Encoded string | |
| 842 | -* @type String | |
| 843 | -*/ | |
| 844 | -YAHOO.Tools.encodeStr = function(str) { | |
| 845 | - if (/["\\\x00-\x1f]/.test(str)) { | |
| 846 | - return '"' + str.replace(/([\x00-\x1f\\"])/g, function(a, b) { | |
| 847 | - var c = jsonCodes[b]; | |
| 848 | - if(c) { | |
| 849 | - return c; | |
| 850 | - } | |
| 851 | - c = b.charCodeAt(); | |
| 852 | - return '\\u00' + | |
| 853 | - Math.floor(c / 16).toString(16) + | |
| 854 | - (c % 16).toString(16); | |
| 855 | - }) + '"'; | |
| 856 | - } | |
| 857 | - return '"' + str + '"'; | |
| 858 | -} | |
| 859 | -/** | |
| 860 | -* Converts an Array to a JSON string | |
| 861 | -* @param {Array} arr Converts an Array to a JSON string | |
| 862 | -* @returns JSON encoded string | |
| 863 | -* @type String | |
| 864 | -*/ | |
| 865 | -YAHOO.Tools.encodeArr = function(arr) { | |
| 866 | - var a = ['['], b, i, l = arr.length, v; | |
| 867 | - for (i = 0; i < l; i += 1) { | |
| 868 | - v = arr[i]; | |
| 869 | - switch (typeof v) { | |
| 870 | - case 'undefined': | |
| 871 | - case 'function': | |
| 872 | - case 'unknown': | |
| 873 | - break; | |
| 874 | - default: | |
| 875 | - if (b) { | |
| 876 | - a.push(','); | |
| 877 | - } | |
| 878 | - a.push(v === null ? "null" : YAHOO.Tools.JSONEncode(v)); | |
| 879 | - b = true; | |
| 880 | - } | |
| 881 | - } | |
| 882 | - a.push(']'); | |
| 883 | - return a.join(''); | |
| 884 | -} | |
| 885 | -/** | |
| 886 | -* Converts a Date object to a JSON string | |
| 887 | -* @param {Object} d Converts a Date object to a JSON string | |
| 888 | -* @returns JSON encoded Date string | |
| 889 | -* @type String | |
| 890 | -*/ | |
| 891 | -YAHOO.Tools.encodeDate = function(d) { | |
| 892 | - return '"' + d.getFullYear() + '-' + YAHOO.Tools.padDate(d.getMonth() + 1) + '-' + YAHOO.Tools.padDate(d.getDate()) + 'T' + YAHOO.Tools.padDate(d.getHours()) + ':' + YAHOO.Tools.padDate(d.getMinutes()) + ':' + YAHOO.Tools.padDate(d.getSeconds()) + '"'; | |
| 893 | -} | |
| 894 | - | |
| 895 | -/** | |
| 896 | -* Fixes the JSON date format | |
| 897 | -* @param {String} dateStr JSON encoded date string (YYYY-MM-DDTHH:MM:SS) | |
| 898 | -* @returns Date Object | |
| 899 | -* @type Object | |
| 900 | -*/ | |
| 901 | -YAHOO.Tools.fixJSONDate = function(dateStr) { | |
| 902 | - var tmp = dateStr.split('T'); | |
| 903 | - var fixedDate = dateStr; | |
| 904 | - if (tmp.length == 2) { | |
| 905 | - var tmpDate = tmp[0].split('-'); | |
| 906 | - if (tmpDate.length == 3) { | |
| 907 | - fixedDate = new Date(tmpDate[0], (tmpDate[1] - 1), tmpDate[2]); | |
| 908 | - var tmpTime = tmp[1].split(':'); | |
| 909 | - if (tmpTime.length == 3) { | |
| 910 | - fixedDate.setHours(tmpTime[0], tmpTime[1], tmpTime[2]); | |
| 911 | - } | |
| 912 | - } | |
| 913 | - } | |
| 914 | - return fixedDate; | |
| 915 | -} | |
| 916 | - | |
| 917 | -/** | |
| 918 | -* Encode a Javascript Object/Array into a JSON string | |
| 919 | -* @param {String/Object/Array} o Converts the object to a JSON string | |
| 920 | -* @returns JSON String | |
| 921 | -* @type String | |
| 922 | -*/ | |
| 923 | -YAHOO.Tools.JSONEncode = function(o) { | |
| 924 | - if ((typeof o == 'undefined') || (o === null)) { | |
| 925 | - return 'null'; | |
| 926 | - } else if (o instanceof Array) { | |
| 927 | - return YAHOO.Tools.encodeArr(o); | |
| 928 | - } else if (o instanceof Date) { | |
| 929 | - return YAHOO.Tools.encodeDate(o); | |
| 930 | - } else if (typeof o == 'string') { | |
| 931 | - return YAHOO.Tools.encodeStr(o); | |
| 932 | - } else if (typeof o == 'number') { | |
| 933 | - return isFinite(o) ? String(o) : "null"; | |
| 934 | - } else if (typeof o == 'boolean') { | |
| 935 | - return String(o); | |
| 936 | - } else { | |
| 937 | - var a = ['{'], b, i, v; | |
| 938 | - for (var i in o) { | |
| 939 | - //if (o.hasOwnProperty(i)) { | |
| 940 | - v = o[i]; | |
| 941 | - switch (typeof v) { | |
| 942 | - case 'undefined': | |
| 943 | - case 'function': | |
| 944 | - case 'unknown': | |
| 945 | - break; | |
| 946 | - default: | |
| 947 | - if (b) { | |
| 948 | - a.push(','); | |
| 949 | - } | |
| 950 | - a.push(YAHOO.Tools.JSONEncode(i), ':', ((v === null) ? "null" : YAHOO.Tools.JSONEncode(v))); | |
| 951 | - b = true; | |
| 952 | - } | |
| 953 | - //} | |
| 954 | - } | |
| 955 | - a.push('}'); | |
| 956 | - return a.join(''); | |
| 957 | - } | |
| 958 | -} | |
| 959 | -/** | |
| 960 | -* Converts/evals a JSON string into a native Javascript object | |
| 961 | -* @param {String} json Converts the JSON string back into the native object | |
| 962 | -* @param {Booleen} autoDate Try to autofix date objects | |
| 963 | -* @returns eval'd object | |
| 964 | -* @type Object/Array/String | |
| 965 | -*/ | |
| 966 | -YAHOO.Tools.JSONParse = function(json, autoDate) { | |
| 967 | - var autoDate = ((autoDate) ? true : false); | |
| 968 | - try { | |
| 969 | - if (regExs.syntaxCheck.test(json)) { | |
| 970 | - var j = eval('(' + json + ')'); | |
| 971 | - if (autoDate) { | |
| 972 | - function walk(k, v) { | |
| 973 | - if (v && typeof v === 'object') { | |
| 974 | - for (var i in v) { | |
| 975 | - if (v.hasOwnProperty(i)) { | |
| 976 | - v[i] = walk(i, v[i]); | |
| 977 | - } | |
| 978 | - } | |
| 979 | - } | |
| 980 | - if (k.toLowerCase().indexOf('date') >= 0) { | |
| 981 | - return YAHOO.Tools.fixJSONDate(v); | |
| 982 | - } else { | |
| 983 | - return v; | |
| 984 | - } | |
| 985 | - } | |
| 986 | - return walk('', j); | |
| 987 | - } else { | |
| 988 | - return j; | |
| 989 | - } | |
| 990 | - } | |
| 991 | - } catch(e) { | |
| 992 | - console.log(e); | |
| 993 | - } | |
| 994 | - throw new SyntaxError("parseJSON"); | |
| 995 | -} | |
| 996 | - | |
| 997 | - | |
| 998 | -/* | |
| 999 | -* Try to catch the developers that use the wrong case 8-) | |
| 1000 | -*/ | |
| 1001 | -YAHOO.tools = YAHOO.Tools; | |
| 1002 | -YAHOO.TOOLS = YAHOO.Tools; | |
| 1003 | -YAHOO.util.Dom.create = YAHOO.Tools.create; | |
| 1004 | -/* | |
| 1005 | -* Smaller Code | |
| 1006 | -*/ | |
| 1007 | - | |
| 1008 | -$A = YAHOO.util.Anim; | |
| 1009 | -$E = YAHOO.util.Event; | |
| 1010 | -$D = YAHOO.util.Dom; | |
| 1011 | -$T = YAHOO.Tools; | |
| 1012 | -$ = YAHOO.util.Dom.get; | |
| 1013 | -$$ = YAHOO.util.Dom.getElementsByClassName; | |
| 1 | +YAHOO.Tools=function(){keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";regExs={quotes:/\x22/g,startspace:/^\s+/g,endspace:/\s+$/g,striptags:/<\/?[^>]+>/gi,hasbr:/<br/i,hasp:/<p>/i,rbr:/<br>/gi,rbr2:/<br\/>/gi,rendp:/<\/p>/gi,rp:/<p>/gi,base64:/[^A-Za-z0-9\+\/\=]/g,syntaxCheck:/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/};jsonCodes={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"};return {version:"1.0"};}();YAHOO.Tools.getHeight=function(_1){var _2=$(_2);var h=$D.getStyle(_2,"height");if(h=="auto"){_2.style.zoom=1;h=_2.clientHeight+"px";}return h;};YAHOO.Tools.getCenter=function(_4){var _5=$(_5);var cX=Math.round(($D.getViewportWidth()-parseInt($D.getStyle(_5,"width")))/2);var cY=Math.round(($D.getViewportHeight()-parseInt(this.getHeight(_5)))/2);return [cX,cY];};YAHOO.Tools.makeTextObject=function(_8){return document.createTextNode(_8);};YAHOO.Tools.makeChildren=function(_9,_a){var _b=$(_b);for(var i in _9){_val=_9[i];if(typeof _val=="string"){_val=this.makeTxtObject(_val);}_b.appendChild(_val);}};YAHOO.Tools.styleToCamel=function(_d){var _e=_d.split("-");var _f=_e[0];for(var i=1;i<_e.length;i++){_f+=_e[i].substring(0,1).toUpperCase()+_e[i].substring(1,_e[i].length);}return _f;};YAHOO.Tools.removeQuotes=function(str){var _12=new String(str);return String(_12.replace(regExs.quotes,""));};YAHOO.Tools.trim=function(str){return str.replace(regExs.startspace,"").replace(regExs.endspace,"");};YAHOO.Tools.stripTags=function(str){return str.replace(regExs.striptags,"");};YAHOO.Tools.hasBRs=function(str){return str.match(regExs.hasbr)||str.match(regExs.hasp);};YAHOO.Tools.convertBRs2NLs=function(str){return str.replace(regExs.rbr,"\n").replace(regExs.rbr2,"\n").replace(regExs.rendp,"\n").replace(regExs.rp,"");};YAHOO.Tools.stringRepeat=function(str,_18){return new Array(_18+1).join(str);};YAHOO.Tools.stringReverse=function(str){var _1a="";for(i=0;i<str.length;i++){_1a=_1a+str.charAt((str.length-1)-i);}return _1a;};YAHOO.Tools.printf=function(){var num=arguments.length;var _1c=arguments[0];for(var i=1;i<num;i++){var _1e="\\{"+(i-1)+"\\}";var re=new RegExp(_1e,"g");_1c=_1c.replace(re,arguments[i]);}return _1c;};YAHOO.Tools.setStyleString=function(el,str){var _22=str.split(";");for(x in _22){if(x){__tmp=YAHOO.Tools.trim(_22[x]);__tmp=_22[x].split(":");if(__tmp[0]&&__tmp[1]){var _23=YAHOO.Tools.trim(__tmp[0]);var _24=YAHOO.Tools.trim(__tmp[1]);if(_23&&_24){if(_23.indexOf("-")!=-1){_23=YAHOO.Tools.styleToCamel(_23);}$D.setStyle(el,_23,_24);}}}}};YAHOO.Tools.getSelection=function(_25,_26){if(!_25){_25=document;}if(!_26){_26=window;}if(_25.selection){return _25.selection;}return _26.getSelection();};YAHOO.Tools.removeElement=function(el){if(!(el instanceof Array)){el=new Array($(el));}for(var i=0;i<el.length;i++){if(el[i].parentNode){el[i].parentNode.removeChild(el);}}};YAHOO.Tools.setCookie=function(_29,_2a,_2b,_2c,_2d,_2e){var _2f=arguments;var _30=arguments.length;var _31=(_30>2)?_2f[2]:null;var _32=(_30>3)?_2f[3]:"/";var _33=(_30>4)?_2f[4]:null;var _34=(_30>5)?_2f[5]:false;document.cookie=_29+"="+escape(_2a)+((_31==null)?"":("; expires="+_31.toGMTString()))+((_32==null)?"":("; path="+_32))+((_33==null)?"":("; domain="+_33))+((_34==true)?"; secure":"");};YAHOO.Tools.getCookie=function(_35){var dc=document.cookie;var _37=_35+"=";var _38=dc.indexOf("; "+_37);if(_38==-1){_38=dc.indexOf(_37);if(_38!=0){return null;}}else{_38+=2;}var end=document.cookie.indexOf(";",_38);if(end==-1){end=dc.length;}return unescape(dc.substring(_38+_37.length,end));};YAHOO.Tools.deleteCookie=function(_3a,_3b,_3c){if(getCookie(_3a)){document.cookie=_3a+"="+((_3b)?"; path="+_3b:"")+((_3c)?"; domain="+_3c:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}};YAHOO.Tools.getBrowserEngine=function(){var _3d=((window.opera&&window.opera.version)?true:false);var _3e=((navigator.vendor&&navigator.vendor.indexOf("Apple")!=-1)?true:false);var _3f=((document.getElementById&&!document.all&&!_3d&&!_3e)?true:false);var _40=((window.ActiveXObject)?true:false);var _41=false;if(_40){if(typeof document.body.style.maxHeight!="undefined"){_41="7";}else{_41="6";}}if(_3d){var _42=window.opera.version().split(".");_41=_42[0]+"."+_42[1];}if(_3f){if(navigator.registerContentHandler){_41="2";}else{_41="1.5";}if((navigator.vendorSub)&&!_41){_41=navigator.vendorSub;}}if(_3e){try{if(console){if((window.onmousewheel!=="undefined")&&(window.onmousewheel===null)){_41="2";}else{_41="1.3";}}}catch(e){_41="1.2";}}var _43={ua:navigator.userAgent,opera:_3d,safari:_3e,gecko:_3f,msie:_40,version:_41};return _43;};YAHOO.Tools.getBrowserAgent=function(){var ua=navigator.userAgent.toLowerCase();var _45=((ua.indexOf("opera")!=-1)?true:false);var _46=((ua.indexOf("safari")!=-1)?true:false);var _47=((ua.indexOf("firefox")!=-1)?true:false);var _48=((ua.indexOf("msie")!=-1)?true:false);var mac=((ua.indexOf("mac")!=-1)?true:false);var _4a=((ua.indexOf("x11")!=-1)?true:false);var win=((mac||_4a)?false:true);var _4c=false;var _4d=false;if(!_47&&!_46&&(ua.indexOf("gecko")!=-1)){_4d=true;var _4e=ua.split("/");_4c=_4e[_4e.length-1].split(" ")[0];}if(_47){var _4f=ua.split("/");_4c=_4f[_4f.length-1].split(" ")[0];}if(_48){_4c=ua.substring((ua.indexOf("msie ")+5)).split(";")[0];}if(_46){_4c=this.getBrowserEngine().version;}if(_45){_4c=ua.substring((ua.indexOf("opera/")+6)).split(" ")[0];}var _50={ua:navigator.userAgent,opera:_45,safari:_46,firefox:_47,mozilla:_4d,msie:_48,mac:mac,win:win,unix:_4a,version:_4c};return _50;};YAHOO.Tools.checkFlash=function(){var br=this.getBrowserEngine();if(br.msie){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");var _53=axo.GetVariable("$version");var _54=_53.split(" ");var _55=_54[1];var _56=_55.split(",");var _57=_56[0];}catch(e){}}else{var _58=null;var _59,len,curr_tok;if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]){_58=navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;}if(_58==null){_57=false;}else{_59=navigator.plugins["Shockwave Flash"].description.split(" ");len=_59.length;while(len--){curr_tok=_59[len];if(!isNaN(parseInt(curr_tok))){hasVersion=curr_tok;_57=hasVersion;break;}}}}return _57;};YAHOO.Tools.setAttr=function(_5a,elm){if(typeof elm=="string"){elm=$(elm);}for(var i in _5a){switch(i.toLowerCase()){case "listener":if(_5a[i] instanceof Array){var ev=_5a[i][0];var _5e=_5a[i][1];var _5f=_5a[i][2];var _60=_5a[i][3];$E.addListener(elm,ev,_5e,_5f,_60);}break;case "classname":case "class":elm.className=_5a[i];break;case "style":YAHOO.Tools.setStyleString(elm,_5a[i]);break;default:elm.setAttribute(i,_5a[i]);break;}}};YAHOO.Tools.create=function(_61){_61=_61.toLowerCase();elm=document.createElement(_61);var txt=false;var _63=false;if(!elm){return false;}for(var i=1;i<arguments.length;i++){txt=arguments[i];if(typeof txt=="string"){_txt=YAHOO.Tools.makeTextObject(txt);elm.appendChild(_txt);}else{if(txt instanceof Array){YAHOO.Tools.makeChildren(txt,elm);}else{if(typeof txt=="object"){YAHOO.Tools.setAttr(txt,elm);}}}}return elm;};YAHOO.Tools.insertAfter=function(elm,_66){if(_66.nextSibling){_66.parentNode.insertBefore(elm,_66.nextSibling);}else{_66.parentNode.appendChild(elm);}};YAHOO.Tools.inArray=function(arr,val){if(arr instanceof Array){for(var i=(arr.length-1);i>=0;i--){if(arr[i]===val){return true;}}}return false;};YAHOO.Tools.checkBoolean=function(str){return ((typeof str=="boolean")?true:false);};YAHOO.Tools.checkNumber=function(str){return ((isNaN(str))?false:true);};YAHOO.Tools.PixelToEm=function(_6c){var _6d={};var _6e=(_6c/13);_6d.other=(Math.round(_6e*100)/100);_6d.msie=(Math.round((_6e*0.9759)*100)/100);return _6d;};YAHOO.Tools.PixelToEmStyle=function(_6f,_70){var _71="";var _72=((_72)?_72.toLowerCase():"width");var _73=(_6f/13);_71+=_72+":"+(Math.round(_73*100)/100)+"em;";_71+="*"+_72+":"+(Math.round((_73*0.9759)*100)/100)+"em;";if((_72=="width")||(_72=="height")){_71+="min-"+_72+":"+_6f+"px;";}return _71;};YAHOO.Tools.base64Encode=function(str){var _75="";var _76,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;do{_76=str.charCodeAt(i++);chr2=str.charCodeAt(i++);chr3=str.charCodeAt(i++);enc1=_76>>2;enc2=((_76&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else{if(isNaN(chr3)){enc4=64;}}_75=_75+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<str.length);return _75;};YAHOO.Tools.base64Decode=function(str){var _79="";var _7a,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;str=str.replace(regExs.base64,"");do{enc1=keyStr.indexOf(str.charAt(i++));enc2=keyStr.indexOf(str.charAt(i++));enc3=keyStr.indexOf(str.charAt(i++));enc4=keyStr.indexOf(str.charAt(i++));_7a=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;_79=_79+String.fromCharCode(_7a);if(enc3!=64){_79=_79+String.fromCharCode(chr2);}if(enc4!=64){_79=_79+String.fromCharCode(chr3);}}while(i<str.length);return _79;};YAHOO.Tools.getQueryString=function(str){var _7d={};if(!str){var str=location.href.split("?");if(str.length!=2){str=["",location.href];}}else{var str=["",str];}if(str[1].match("#")){var _80=str[1].split("#");_7d.hash=_80[1];str[1]=_80[0];}if(str[1]){str=str[1].split("&");if(str.length){for(var i=0;i<str.length;i++){var _82=str[i].split("=");if(_82[0].indexOf("[")!=-1){if(_82[0].indexOf("[]")!=-1){var arr=_82[0].substring(0,_82[0].length-2);if(!_7d[arr]){_7d[arr]=[];}_7d[arr][_7d[arr].length]=_82[1];}else{var arr=_82[0].substring(0,_82[0].indexOf("["));var _85=_82[0].substring((_82[0].indexOf("[")+1),_82[0].indexOf("]"));if(!_7d[arr]){_7d[arr]={};}_7d[arr][_85]=_82[1];}}else{_7d[_82[0]]=_82[1];}}}}return _7d;};YAHOO.Tools.getQueryStringVar=function(str){var qs=this.getQueryString();if(qs[str]){return qs[str];}else{return false;}};YAHOO.Tools.padDate=function(n){return n<10?"0"+n:n;};YAHOO.Tools.encodeStr=function(str){if(/["\\\x00-\x1f]/.test(str)){return "\""+str.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=jsonCodes[b];if(c){return c;}c=b.charCodeAt();return "\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16);})+"\"";}return "\""+str+"\"";};YAHOO.Tools.encodeArr=function(arr){var a=["["],b,i,l=arr.length,v;for(i=0;i<l;i+=1){v=arr[i];switch(typeof v){case "undefined":case "function":case "unknown":break;default:if(b){a.push(",");}a.push(v===null?"null":YAHOO.Tools.JSONEncode(v));b=true;}}a.push("]");return a.join("");};YAHOO.Tools.encodeDate=function(d){return "\""+d.getFullYear()+"-"+YAHOO.Tools.padDate(d.getMonth()+1)+"-"+YAHOO.Tools.padDate(d.getDate())+"T"+YAHOO.Tools.padDate(d.getHours())+":"+YAHOO.Tools.padDate(d.getMinutes())+":"+YAHOO.Tools.padDate(d.getSeconds())+"\"";};YAHOO.Tools.fixJSONDate=function(_90){var tmp=_90.split("T");var _92=_90;if(tmp.length==2){var _93=tmp[0].split("-");if(_93.length==3){_92=new Date(_93[0],(_93[1]-1),_93[2]);var _94=tmp[1].split(":");if(_94.length==3){_92.setHours(_94[0],_94[1],_94[2]);}}}return _92;};YAHOO.Tools.JSONEncode=function(o){if((typeof o=="undefined")||(o===null)){return "null";}else{if(o instanceof Array){return YAHOO.Tools.encodeArr(o);}else{if(o instanceof Date){return YAHOO.Tools.encodeDate(o);}else{if(typeof o=="string"){return YAHOO.Tools.encodeStr(o);}else{if(typeof o=="number"){return isFinite(o)?String(o):"null";}else{if(typeof o=="boolean"){return String(o);}else{var a=["{"],b,i,v;for(var i in o){v=o[i];switch(typeof v){case "undefined":case "function":case "unknown":break;default:if(b){a.push(",");}a.push(YAHOO.Tools.JSONEncode(i),":",((v===null)?"null":YAHOO.Tools.JSONEncode(v)));b=true;}}a.push("}");return a.join("");}}}}}}};YAHOO.Tools.JSONParse=function(_98,_99){var _9a=((_9a)?true:false);try{if(regExs.syntaxCheck.test(_98)){var j=eval("("+_98+")");if(_9a){function walk(k,v){if(v&&typeof v==="object"){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}}if(k.toLowerCase().indexOf("date")>=0){return YAHOO.Tools.fixJSONDate(v);}else{return v;}}return walk("",j);}else{return j;}}}catch(e){console.log(e);}throw new SyntaxError("parseJSON");};YAHOO.tools=YAHOO.Tools;YAHOO.TOOLS=YAHOO.Tools;YAHOO.util.Dom.create=YAHOO.Tools.create;$A=YAHOO.util.Anim;$E=YAHOO.util.Event;$D=YAHOO.util.Dom;$T=YAHOO.Tools;$=YAHOO.util.Dom.get;$$=YAHOO.util.Dom.getElementsByClassName; | |
| 1014 | 2 | \ No newline at end of file | ... | ... |
thirdpartyjs/yui/utilities/utilities.js
| 1 | -/* Copyright (c) 2006, Yahoo! Inc. All rights reserved.Code licensed under the BSD License:http://developer.yahoo.net/yui/license.txtversion: 0.12.0 */ | |
| 2 | -if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}return o;};YAHOO.log=function(_2,_3,_4){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_2,_3,_4);}else{return false;}};YAHOO.extend=function(_6,_7,_8){var F=function(){};F.prototype=_7.prototype;_6.prototype=new F();_6.prototype.constructor=_6;_6.superclass=_7.prototype;if(_7.prototype.constructor==Object.prototype.constructor){_7.prototype.constructor=_7;}if(_8){for(var i in _8){_6.prototype[i]=_8[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example");(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf('opera')>-1),isSafari=(ua.indexOf('safari')>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf('gecko')>-1),isIE=(!isOpera&&ua.indexOf('msie')>-1);var patterns={HYPHEN:/(-[a-z])/i};var toCamel=function(property){if(!patterns.HYPHEN.test(property)){return property;}if(propertyCache[property]){return propertyCache[property];}while(patterns.HYPHEN.exec(property)){property=property.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}propertyCache[property]=property;return property;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;var computed=document.defaultView.getComputedStyle(el,'');if(computed){value=computed[toCamel(property)];}return el.style[property]||value;};}else if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case'opacity':var val=100;try{val=el.filters['DXImageTransform.Microsoft.Alpha'].opacity;}catch(e){try{val=el.filters('alpha').opacity;}catch(e){}}return val/100;break;default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value);}};}else{getStyle=function(el,property){return el.style[property];};}if(isIE){setStyle=function(el,property,val){switch(property){case'opacity':if(typeof el.style.filter=='string'){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}break;default:el.style[property]=val;}};}else{setStyle=function(el,property,val){el.style[property]=val;};}YAHOO.util.Dom={get:function(el){if(!el){return null;}if(typeof el!='string'&&!(el instanceof Array)){return el;}if(typeof el=='string'){return document.getElementById(el);}else{var collection=[];for(var i=0,len=el.length;i<len;++i){collection[collection.length]=Y.Dom.get(el[i]);}return collection;}return null;},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none'){return false;}var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop];}else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}}if(isSafari&&this.getStyle(el,'position')=='absolute'){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){parentNode=el.parentNode;}else{parentNode=null;}while(parentNode&&parentNode.tagName.toUpperCase()!='BODY'&&parentNode.tagName.toUpperCase()!='HTML'){if(Y.Dom.getStyle(parentNode,'display')!='inline'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop;}if(parentNode.parentNode){parentNode=parentNode.parentNode;}else{parentNode=null;}}return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative';}var pageXY=this.getXY(el);if(pageXY===false){return false;}var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=(style_pos=='relative')?0:el.offsetLeft;}if(isNaN(delta[1])){delta[1]=(style_pos=='relative')?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';}if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';}var newXY=this.getXY(el);if(!noRetry&&(newXY[0]!=pos[0]||newXY[1]!=pos[1])){this.setXY(el,pos,true);}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var region=new Y.Region.getRegion(el);return region;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(className,tag,root){var method=function(el){return Y.Dom.hasClass(el,className);};return Y.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var f=function(el){return re.test(el['className']);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return;}el['className']=[el['className'],className].join(' ');};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,className)){return;}var c=el['className'];el['className']=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false;}var re=new RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return;}el['className']=el['className'].replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,prefix){prefix=prefix||'yui-gen';el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}if(!el.id){el.id=prefix+id_counter++;}return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);if(!haystack||!needle){return false;}var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle);}else if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPosition(needle)&16);}else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true;}else if(!parent.tagName||parent.tagName.toUpperCase()=='HTML'){return false;}parent=parent.parentNode;}return false;}};return Y.Dom.batch(needle,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(method,tag,root){tag=tag||'*';root=Y.Dom.get(root)||document;var nodes=[];var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=='*'&&root.all)){elements=root.all;}for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}}return nodes;},batch:function(el,method,o,override){var id=el;el=Y.Dom.get(el);var scope=(override)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return method.call(scope,el,o);}var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}collection[collection.length]=method.call(scope,el[i],o);}return collection;},getDocumentHeight:function(){var scrollHeight=(document.compatMode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var scrollWidth=(document.compatMode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||isIE)&&!isOpera){height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;}return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||isIE){width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;}return width;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&®ion.right<=this.right&®ion.top>=this.top&®ion.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.util.CustomEvent=function(_1,_2,_3,_4){this.type=_1;this.scope=_2||window;this.silent=_3;this.signature=_4||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var _5="_YUICEOnSubscribe";if(_1!==_5){this.subscribeEvent=new YAHOO.util.CustomEvent(_5,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,_7,_8){if(this.subscribeEvent){this.subscribeEvent.fire(fn,_7,_8);}this.subscribers.push(new YAHOO.util.Subscriber(fn,_7,_8));},unsubscribe:function(fn,_9){var _10=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,_9)){this._delete(i);_10=true;}}return _10;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return true;}var _14=[],ret=true,i;for(i=0;i<arguments.length;++i){_14.push(arguments[i]);}var _15=_14.length;if(!this.silent){}for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){}var _16=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var _17=null;if(_14.length>0){_17=_14[0];}ret=s.fn.call(_16,_17,s.obj);}else{ret=s.fn.call(_16,this.type,_14,s.obj);}if(false===ret){if(!this.silent){}return false;}}}return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);}},_delete:function(_18){var s=this.subscribers[_18];if(s){delete s.fn;delete s.obj;}this.subscribers.splice(_18,1);},toString:function(){return "CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,_20){this.fn=fn;this.obj=obj||null;this.override=_20;};YAHOO.util.Subscriber.prototype.getScope=function(_21){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return _21;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return (this.fn==fn&&this.obj==obj);}else{return (this.fn==fn);}};YAHOO.util.Subscriber.prototype.toString=function(){return "Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var _22=false;var _23=[];var _24=[];var _25=[];var _26=[];var _27=0;var _28=[];var _29=[];var _30=0;return {POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var _31=this;var _32=function(){_31._tryPreloadAttach();};this._interval=setInterval(_32,this.POLL_INTERVAL);}},onAvailable:function(_33,_34,_35,_36){_28.push({id:_33,fn:_34,obj:_35,override:_36,checkReady:false});_27=this.POLL_RETRYS;this.startInterval();},onContentReady:function(_37,_38,_39,_40){_28.push({id:_37,fn:_38,obj:_39,override:_40,checkReady:true});_27=this.POLL_RETRYS;this.startInterval();},addListener:function(el,_42,fn,obj,_43){if(!fn||!fn.call){return false;}if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],_42,fn,obj,_43)&&ok;}return ok;}else{if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,_42,fn,obj,_43);});return true;}}}if(!el){return false;}if("unload"==_42&&obj!==this){_24[_24.length]=[el,_42,fn,obj,_43];return true;}var _46=el;if(_43){if(_43===true){_46=obj;}else{_46=_43;}}var _47=function(e){return fn.call(_46,YAHOO.util.Event.getEvent(e),obj);};var li=[el,_42,fn,_47,_46];var _50=_23.length;_23[_50]=li;if(this.useLegacyEvent(el,_42)){var _51=this.getLegacyIndex(el,_42);if(_51==-1||el!=_25[_51][0]){_51=_25.length;_29[el.id+_42]=_51;_25[_51]=[el,_42,el["on"+_42]];_26[_51]=[];el["on"+_42]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),_51);};}_26[_51].push(li);}else{this._simpleAdd(el,_42,_47,false);}return true;},fireLegacyEvent:function(e,_52){var ok=true;var le=_26[_52];for(var i=0,len=le.length;i<len;++i){var li=le[i];if(li&&li[this.WFN]){var _54=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(_54,e);ok=(ok&&ret);}}return ok;},getLegacyIndex:function(el,_56){var key=this.generateId(el)+_56;if(typeof _29[key]=="undefined"){return -1;}else{return _29[key];}},useLegacyEvent:function(el,_58){if(!el.addEventListener&&!el.attachEvent){return true;}else{if(this.isSafari){if("click"==_58||"dblclick"==_58){return true;}}}return false;},removeListener:function(el,_59,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else{if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],_59,fn)&&ok);}return ok;}}if(!fn||!fn.call){return this.purgeElement(el,false,_59);}if("unload"==_59){for(i=0,len=_24.length;i<len;i++){var li=_24[i];if(li&&li[0]==el&&li[1]==_59&&li[2]==fn){_24.splice(i,1);return true;}}return false;}var _60=null;var _61=arguments[3];if("undefined"==typeof _61){_61=this._getCacheIndex(el,_59,fn);}if(_61>=0){_60=_23[_61];}if(!el||!_60){return false;}if(this.useLegacyEvent(el,_59)){var _62=this.getLegacyIndex(el,_59);var _63=_26[_62];if(_63){for(i=0,len=_63.length;i<len;++i){li=_63[i];if(li&&li[this.EL]==el&&li[this.TYPE]==_59&&li[this.FN]==fn){_63.splice(i,1);}}}}else{this._simpleRemove(el,_59,_60[this.WFN],false);}delete _23[_61][this.WFN];delete _23[_61][this.FN];_23.splice(_61,1);return true;},getTarget:function(ev,_65){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(_67){if(_67&&3==_67.nodeType){return _67.parentNode;}else{return _67;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}return y;},getXY:function(ev){return [this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else{if(ev.type=="mouseover"){t=ev.fromElement;}}}return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}c=c.caller;}}return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,_71,fn){for(var i=0,len=_23.length;i<len;++i){var li=_23[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==_71){return i;}}return -1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+_30;++_30;el.id=id;}return id;},_isValidCollection:function(o){return (o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){_22=true;var EU=YAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;}this.locked=true;var _75=!_22;if(!_75){_75=(_27>0);}var _76=[];for(var i=0,len=_28.length;i<len;++i){var _77=_28[i];if(_77){var el=this.getEl(_77.id);if(el){if(!_77.checkReady||_22||el.nextSibling||(document&&document.body)){var _78=el;if(_77.override){if(_77.override===true){_78=_77.obj;}else{_78=_77.override;}}_77.fn.call(_78,_77.obj);delete _28[i];}}else{_76.push(_77);}}}_27=(_76.length===0)?0:_27-1;if(_75){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;return true;},purgeElement:function(el,_79,_80){var _81=this.getListeners(el,_80);if(_81){for(var i=0,len=_81.length;i<len;++i){var l=_81[i];this.removeListener(el,l.type,l.fn);}}if(_79&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],_79,_80);}}},getListeners:function(el,_83){var _84=[];if(_23&&_23.length>0){for(var i=0,len=_23.length;i<len;++i){var l=_23[i];if(l&&l[this.EL]===el&&(!_83||_83===l[this.TYPE])){_84.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}return (_84.length)?_84:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=_24.length;i<len;++i){l=_24[i];if(l){var _85=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){_85=l[EU.OBJ];}else{_85=l[EU.ADJ_SCOPE];}}l[EU.FN].call(_85,EU.getEvent(e),l[EU.OBJ]);delete _24[i];l=null;_85=null;}}if(_23&&_23.length>0){j=_23.length;while(j){index=j-1;l=_23[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);}j=j-1;}l=null;EU.clearCache();}for(i=0,len=_25.length;i<len;++i){delete _25[i][0];delete _25[i];}EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return [dd.scrollTop,dd.scrollLeft];}else{if(db){return [db.scrollTop,db.scrollLeft];}else{return [0,0];}}},_simpleAdd:function(){if(window.addEventListener){return function(el,_87,fn,_88){el.addEventListener(_87,fn,(_88));};}else{if(window.attachEvent){return function(el,_89,fn,_90){el.attachEvent("on"+_89,fn);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,_91,fn,_92){el.removeEventListener(_91,fn,(_92));};}else{if(window.detachEvent){return function(el,_93,fn){el.detachEvent("on"+_93,fn);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(document&&document.body){EU._load();}else{EU._simpleAdd(window,"load",EU._load);}EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(_94,_95,_96,_97){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_94];if(ce){ce.subscribe(_95,_96,_97);}else{this.__yui_subscribers=this.__yui_subscribers||{};var _99=this.__yui_subscribers;if(!_99[_94]){_99[_94]=[];}_99[_94].push({fn:_95,obj:_96,override:_97});}},unsubscribe:function(_100,p_fn,_102){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_100];if(ce){return ce.unsubscribe(p_fn,_102);}else{return false;}},createEvent:function(_103,_104){this.__yui_events=this.__yui_events||{};var opts=_104||{};var _106=this.__yui_events;if(_106[_103]){}else{var _107=opts.scope||this;var _108=opts.silent||null;var ce=new YAHOO.util.CustomEvent(_103,_107,_108,YAHOO.util.CustomEvent.FLAT);_106[_103]=ce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscribe(opts.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[_103];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}}return _106[_103];},fireEvent:function(_110,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_110];if(ce){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i]);}return ce.fire.apply(ce,args);}else{return null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_events[type]){return true;}}return false;}};YAHOO.util.Anim=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};YAHOO.util.Anim.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;}YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=='auto'&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);}var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,'position')=='absolute'&&pos)){val=el['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;}return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return'px';}return'';},setRuntimeAttribute:function(attr){var start;var end;var attributes=this.attributes;this.runtimeAttributes[attr]={};var isset=function(prop){return(typeof prop!=='undefined');};if(!isset(attributes[attr]['to'])&&!isset(attributes[attr]['by'])){return false;}start=(isset(attributes[attr]['from']))?attributes[attr]['from']:this.getAttribute(attr);if(isset(attributes[attr]['to'])){end=attributes[attr]['to'];}else if(isset(attributes[attr]['by'])){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attr]['by'][i];}}else{end=start+attributes[attr]['by'];}}this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(isset(attributes[attr].unit))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var actualFrames=0;el=YAHOO.util.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(finish){if(finish){this.currentFrame=this.totalFrames;this._onTween.fire();}YAHOO.util.AnimMgr.stop(this);};var onStart=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);}isAnimated=true;actualFrames=0;startTime=new Date();};var onTween=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return('duration: '+data.duration+', currentFrame: '+data.currentFrame);};this.onTween.fire(data);var runtimeAttributes=this.runtimeAttributes;for(var attr in runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttributes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].unit);}actualFrames+=1;};var onComplete=function(){var actual_duration=(new Date()-startTime)/1000;var data={duration:actual_duration,frames:actualFrames,fps:actualFrames/actual_duration};data.toString=function(){return('duration: '+data.duration+', frames: '+data.frames+', fps: '+data.fps);};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent('_start',this,true);this.onStart=new YAHOO.util.CustomEvent('start',this);this.onTween=new YAHOO.util.CustomEvent('tween',this);this._onTween=new YAHOO.util.CustomEvent('_tween',this,true);this.onComplete=new YAHOO.util.CustomEvent('complete',this);this._onComplete=new YAHOO.util.CustomEvent('_complete',this,true);this._onStart.subscribe(onStart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onComplete);}};YAHOO.util.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=200;this.delay=1;this.registerElement=function(tween){queue[queue.length]=tween;tweenCount+=1;tween._onStart.fire();this.start();};this.unRegister=function(tween,index){tween._onComplete.fire();index=index||getIndex(tween);if(index!=-1){queue.splice(index,1);}tweenCount-=1;if(tweenCount<=0){this.stop();}};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[i].isAnimated()){this.unRegister(tween,i);}}queue=[];thread=null;tweenCount=0;}else{this.unRegister(tween);}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;}if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null){tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);}tween._onTween.fire();}else{YAHOO.util.AnimMgr.stop(tween,i);}}};var getIndex=function(anim){for(var i=0,len=queue.length;i<len;++i){if(queue[i]==anim){return i;}}return-1;};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);}if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);}tween.currentFrame+=tweak;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];}for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}return[tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,attributes,duration,method){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,attributes,duration,method);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var superclass=Y.ColorAnim.superclass;var proto=Y.ColorAnim.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("ColorAnim "+id);};proto.patterns.color=/color$/i;proto.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;proto.parseColor=function(s){if(s.length==3){return s;}var c=this.patterns.hex.exec(s);if(c&&c.length==4){return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];}c=this.patterns.rgb.exec(s);if(c&&c.length==4){return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];}c=this.patterns.hex3.exec(s);if(c&&c.length==4){return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}return null;};proto.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var parent=el.parentNode;val=Y.Dom.getStyle(parent,attr);while(parent&&this.patterns.transparent.test(val)){parent=parent.parentNode;val=Y.Dom.getStyle(parent,attr);if(parent.tagName.toUpperCase()=='HTML'){val='#fff';}}}}else{val=superclass.getAttribute.call(this,attr);}return val;};proto.doMethod=function(attr,start,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=start.length;i<len;++i){val[i]=superclass.doMethod.call(this,attr,start[i],end[i]);}val='rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val[2])+')';}else{val=superclass.doMethod.call(this,attr,start,end);}return val;};proto.setRuntimeAttribute=function(attr){superclass.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var attributes=this.attributes;var start=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof attributes[attr]['to']==='undefined'&&typeof attributes[attr]['by']!=='undefined'){end=this.parseColor(attributes[attr].by);for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+end[i];}}this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a||a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a||a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(!a||a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=='undefined')s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=='undefined')s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=='undefined')s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},bounceBoth:function(t,b,c,d){if(t<d/2)return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*.5+b;return YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){YAHOO.util.Motion=function(el,attributes,duration,method){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Motion.superclass;var proto=Y.Motion.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Motion "+id);};proto.patterns.points=/^points$/i;proto.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||'px';superclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribute.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,attr,val,unit);}};proto.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[superclass.getAttribute.call(this,'left'),superclass.getAttribute.call(this,'top')];}else{val=superclass.getAttribute.call(this,attr);}return val;};proto.doMethod=function(attr,start,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=superclass.doMethod.call(this,attr,start,end);}return val;};proto.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var attributes=this.attributes;var start;var control=attributes['points']['control']||[];var end;var i,len;if(control.length>0&&!(control[0]instanceof Array)){control=[control];}else{var tmp=[];for(i=0,len=control.length;i<len;++i){tmp[i]=control[i];}control=tmp;}if(Y.Dom.getStyle(el,'position')=='static'){Y.Dom.setStyle(el,'position','relative');}if(isset(attributes['points']['from'])){Y.Dom.setXY(el,attributes['points']['from']);}else{Y.Dom.setXY(el,Y.Dom.getXY(el));}start=this.getAttribute('points');if(isset(attributes['points']['to'])){end=translateValues.call(this,attributes['points']['to'],start);var pageXY=Y.Dom.getXY(this.getEl());for(i=0,len=control.length;i<len;++i){control[i]=translateValues.call(this,control[i],start);}}else if(isset(attributes['points']['by'])){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}}this.runtimeAttributes[attr]=[start];if(control.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(control);}this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;}else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Y.Dom.getXY(this.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var isset=function(prop){return(typeof prop!=='undefined');};})();(function(){YAHOO.util.Scroll=function(el,attributes,duration,method){if(el){YAHOO.util.Scroll.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Scroll.superclass;var proto=Y.Scroll.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Scroll "+id);};proto.doMethod=function(attr,start,end){var val=null;if(attr=='scroll'){val=[this.method(this.currentFrame,start[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,start[1],end[1]-start[1],this.totalFrames)];}else{val=superclass.doMethod.call(this,attr,start,end);}return val;};proto.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=='scroll'){val=[el.scrollLeft,el.scrollTop];}else{val=superclass.getAttribute.call(this,attr);}return val;};proto.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=='scroll'){el.scrollLeft=val[0];el.scrollTop=val[1];}else{superclass.setAttribute.call(this,attr,val,unit);}};})();(function(){var _1=YAHOO.util.Event;var _2=YAHOO.util.Dom;YAHOO.util.DragDrop=function(id,_4,_5){if(id){this.init(id,_4,_5);}};YAHOO.util.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=_2.get(this.id);}return this._domRef;},getDragEl:function(){return _2.get(this.dragElId);},init:function(id,_9,_10){this.initTarget(id,_9,_10);_1.on(this.id,"mousedown",this.handleMouseDown,this,true);},initTarget:function(id,_11,_12){this.config=_12||{};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.id=id;this.addToGroup((_11)?_11:"default");this.handleElId=id;_1.onAvailable(id,this.handleOnAvailable,this,true);this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(_13,_14,_15,_16){if(!_14&&0!==_14){this.padding=[_13,_13,_13,_13];}else{if(!_15&&0!==_15){this.padding=[_13,_14,_13,_14];}else{this.padding=[_13,_14,_15,_16];}}},setInitPosition:function(_17,_18){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;}var dx=_17||0;var dy=_18||0;var p=_2.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||_2.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(_24){this.groups[_24]=true;this.DDM.regDragDrop(this,_24);},removeFromGroup:function(_25){if(this.groups[_25]){delete this.groups[_25];}this.DDM.removeDDFromGroup(this,_25);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}_1.on(id,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(id);this.hasOuterHandles=true;},unreg:function(){_1.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return (this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){var _27=e.which||e.button;if(this.primaryButtonOnly&&_27>1){return;}if(this.isLocked()){return;}this.DDM.refreshCache(this.groups);var pt=new YAHOO.util.Point(_1.getPageX(e),_1.getPageY(e));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}else{}}},clickValidator:function(e){var _29=_1.getTarget(e);return (this.isValidHandleChild(_29)&&(this.id==this.handleElId||this.DDM.handleWasClicked(_29,this.id)));},addInvalidHandleType:function(_30){var _31=_30.toUpperCase();this.invalidHandleTypes[_31]=_31;},addInvalidHandleId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(_32){this.invalidHandleClasses.push(_32);},removeInvalidHandleType:function(_33){var _34=_33.toUpperCase();delete this.invalidHandleTypes[_34];},removeInvalidHandleId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(_35){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==_35){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(_37){var _38=true;var _39;try{_39=_37.nodeName.toUpperCase();}catch(e){_39=_37.nodeName;}_38=_38&&!this.invalidHandleTypes[_39];_38=_38&&!this.invalidHandleIds[_37.id];for(var i=0,len=this.invalidHandleClasses.length;_38&&i<len;++i){_38=!_2.hasClass(_37,this.invalidHandleClasses[i]);}return _38;},setXTicks:function(_40,_41){this.xTicks=[];this.xTickSize=_41;var _42={};for(var i=this.initPageX;i>=this.minX;i=i-_41){if(!_42[i]){this.xTicks[this.xTicks.length]=i;_42[i]=true;}}for(i=this.initPageX;i<=this.maxX;i=i+_41){if(!_42[i]){this.xTicks[this.xTicks.length]=i;_42[i]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(_43,_44){this.yTicks=[];this.yTickSize=_44;var _45={};for(var i=this.initPageY;i>=this.minY;i=i-_44){if(!_45[i]){this.yTicks[this.yTicks.length]=i;_45[i]=true;}}for(i=this.initPageY;i<=this.maxY;i=i+_44){if(!_45[i]){this.yTicks[this.yTicks.length]=i;_45[i]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(_46,_47,_48){this.leftConstraint=_46;this.rightConstraint=_47;this.minX=this.initPageX-_46;this.maxX=this.initPageX+_47;if(_48){this.setXTicks(this.initPageX,_48);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(iUp,_50,_51){this.topConstraint=iUp;this.bottomConstraint=_50;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+_50;if(_51){this.setYTicks(this.initPageY,_51);}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(val,_53){if(!_53){return val;}else{if(_53[0]>=val){return _53[0];}else{for(var i=0,len=_53.length;i<len;++i){var _54=i+1;if(_53[_54]&&_53[_54]>=val){var _55=val-_53[i];var _56=_53[_54]-val;return (_56>_55)?_53[i]:_53[_54];}}return _53[_53.length-1];}}},toString:function(){return ("DragDrop "+this.id);}};})();if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var _57=YAHOO.util.Event;return {ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(_58,_59){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;}oDD[_58].apply(oDD,_59);}}},_onLoad:function(){this.init();_57.on(document,"mouseup",this.handleMouseUp,this,true);_57.on(document,"mousemove",this.handleMouseMove,this,true);_57.on(window,"unload",this._onUnload,this,true);_57.on(window,"resize",this._onResize,this,true);},_onResize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,_61){if(!this.initialized){this.init();}if(!this.ids[_61]){this.ids[_61]={};}this.ids[_61][oDD.id]=oDD;},removeDDFromGroup:function(oDD,_62){if(!this.ids[_62]){this.ids[_62]={};}var obj=this.ids[_62];if(obj&&obj[oDD.id]){delete obj[oDD.id];}},_remove:function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}}delete this.handleIds[oDD.id];},regHandle:function(_65,_66){if(!this.handleIds[_65]){this.handleIds[_65]={};}this.handleIds[_65][_66]=_66;},isDragDrop:function(id){return (this.getDDById(id))?true:false;},getRelated:function(_67,_68){var _69=[];for(var i in _67.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;}if(!_68||dd.isTarget){_69[_69.length]=dd;}}}return _69;},isLegalTarget:function(oDD,_71){var _72=this.getRelated(oDD,true);for(var i=0,len=_72.length;i<len;++i){if(_72[i].id==_71.id){return true;}}return false;},isTypeOfDD:function(oDD){return (oDD&&oDD.__ygDragDrop);},isHandle:function(_73,_74){return (this.handleIds[_73]&&this.handleIds[_73][_74]);},getDDById:function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}}return null;},handleMouseDown:function(e,oDD){this.currentTarget=YAHOO.util.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=YAHOO.util.Event.getPageX(e);this.startY=YAHOO.util.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=YAHOO.util.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDrag(x,y);}this.dragThreshMet=true;},handleMouseUp:function(e){if(!this.dragCurrent){return;}clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{}this.stopDrag(e);this.stopEvent(e);},stopEvent:function(e){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(e);}if(this.preventDefault){YAHOO.util.Event.preventDefault(e);}},stopDrag:function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(e);this.dragCurrent.endDrag(e);}this.dragCurrent.onMouseUp(e);}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(e){if(!this.dragCurrent){return true;}if(YAHOO.util.Event.isIE&&!e.button){this.stopEvent(e);return this.handleMouseUp(e);}if(!this.dragThreshMet){var _76=Math.abs(this.startX-YAHOO.util.Event.getPageX(e));var _77=Math.abs(this.startY-YAHOO.util.Event.getPageY(e));if(_76>this.clickPixelThresh||_77>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);this.fireEvents(e,false);}this.stopEvent(e);return true;},fireEvents:function(e,_78){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;}var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);var pt=new YAHOO.util.Point(x,y);var _80=[];var _81=[];var _82=[];var _83=[];var _84=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;}if(!this.isOverTarget(pt,ddo,this.mode)){_81.push(ddo);}_80[i]=true;delete this.dragOvers[i];}for(var _86 in dc.groups){if("string"!=typeof _86){continue;}for(i in this.ids[_86]){var oDD=this.ids[_86][i];if(!this.isTypeOfDD(oDD)){continue;}if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(_78){_83.push(oDD);}else{if(!_80[oDD.id]){_84.push(oDD);}else{_82.push(oDD);}this.dragOvers[oDD.id]=oDD;}}}}}if(this.mode){if(_81.length){dc.b4DragOut(e,_81);dc.onDragOut(e,_81);}if(_84.length){dc.onDragEnter(e,_84);}if(_82.length){dc.b4DragOver(e,_82);dc.onDragOver(e,_82);}if(_83.length){dc.b4DragDrop(e,_83);dc.onDragDrop(e,_83);}}else{var len=0;for(i=0,len=_81.length;i<len;++i){dc.b4DragOut(e,_81[i].id);dc.onDragOut(e,_81[i].id);}for(i=0,len=_84.length;i<len;++i){dc.onDragEnter(e,_84[i].id);}for(i=0,len=_82.length;i<len;++i){dc.b4DragOver(e,_82[i].id);dc.onDragOver(e,_82[i].id);}for(i=0,len=_83.length;i<len;++i){dc.b4DragDrop(e,_83[i].id);dc.onDragDrop(e,_83[i].id);}}if(_78&&!_83.length){dc.onInvalidDrop(e);}},getBestMatch:function(dds){var _89=null;var len=dds.length;if(len==1){_89=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){_89=dd;break;}else{if(!_89||_89.overlap.getArea()<dd.overlap.getArea()){_89=dd;}}}}return _89;},refreshCache:function(_90){for(var _91 in _90){if("string"!=typeof _91){continue;}for(var i in this.ids[_91]){var oDD=this.ids[_91][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var _93=el.offsetParent;if(_93){return true;}}}catch(e){}return false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;}var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=YAHOO.util.Dom.getXY(el);}catch(e){}if(!pos){return null;}x1=pos[0];x2=x1+el.offsetWidth;y1=pos[1];y2=y1+el.offsetHeight;t=y1-oDD.padding[0];r=x2+oDD.padding[1];b=y2+oDD.padding[2];l=x1-oDD.padding[3];return new YAHOO.util.Region(t,r,b,l);},isOverTarget:function(pt,_94,_95){var loc=this.locationCache[_94.id];if(!loc||!this.useCache){loc=this.getLocation(_94);this.locationCache[_94.id]=loc;}if(!loc){return false;}_94.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||(!_95&&!dc.constrainX&&!dc.constrainY)){return _94.cursorIsOver;}_94.overlap=null;var pos=dc.getTargetCoord(pt.x,pt.y);var el=dc.getDragEl();var _96=new YAHOO.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x);var _97=_96.intersect(loc);if(_97){_94.overlap=_97;return (_95)?true:_94.cursorIsOver;}else{return false;}},_onUnload:function(e,me){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];}this.elementCache={};this.ids={};},elementCache:{},getElWrapper:function(id){var _99=this.elementCache[id];if(!_99||!_99.el){_99=this.elementCache[id]=new this.ElementWrapper(YAHOO.util.Dom.get(id));}return _99;},getElement:function(id){return YAHOO.util.Dom.get(id);},getCss:function(id){var el=YAHOO.util.Dom.get(id);return (el)?el.style:null;},ElementWrapper:function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;},getPosX:function(el){return YAHOO.util.Dom.getX(el);},getPosY:function(el){return YAHOO.util.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;if(s==n1){p.insertBefore(n1,n2);}else{if(n2==n1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}}}},getScroll:function(){var t,l,dde=document.documentElement,db=document.body;if(dde&&(dde.scrollTop||dde.scrollLeft)){t=dde.scrollTop;l=dde.scrollLeft;}else{if(db){t=db.scrollTop;l=db.scrollLeft;}else{YAHOO.log("could not get scroll property");}}return {top:t,left:l};},getStyle:function(el,_104){return YAHOO.util.Dom.getStyle(el,_104);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(_105,_106){var _107=YAHOO.util.Dom.getXY(_106);YAHOO.util.Dom.setXY(_105,_107);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(a,b){return (a-b);},_timeoutCount:0,_addListeners:function(){var DDM=YAHOO.util.DDM;if(YAHOO.util.Event&&document){DDM._onLoad();}else{if(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(document&&document.body){DDM._timeoutCount+=1;}}}},handleWasClicked:function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}YAHOO.util.DD=function(id,_111,_112){if(id){this.init(id,_111,_112);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(_113,_114){var x=_113-this.startPageX;var y=_114-this.startPageY;this.setDelta(x,y);},setDelta:function(_115,_116){this.deltaX=_115;this.deltaY=_116;},setDragElPos:function(_117,_118){var el=this.getDragEl();this.alignElWithMouse(el,_117,_118);},alignElWithMouse:function(el,_119,_120){var _121=this.getTargetCoord(_119,_120);if(!this.deltaSetXY){var _122=[_121.x,_121.y];YAHOO.util.Dom.setXY(el,_122);var _123=parseInt(YAHOO.util.Dom.getStyle(el,"left"),10);var _124=parseInt(YAHOO.util.Dom.getStyle(el,"top"),10);this.deltaSetXY=[_123-_121.x,_124-_121.y];}else{YAHOO.util.Dom.setStyle(el,"left",(_121.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(el,"top",(_121.y+this.deltaSetXY[1])+"px");}this.cachePosition(_121.x,_121.y);this.autoScroll(_121.x,_121.y,el.offsetHeight,el.offsetWidth);},cachePosition:function(_125,_126){if(_125){this.lastPageX=_125;this.lastPageY=_126;}else{var _127=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=_127[0];this.lastPageY=_127[1];}},autoScroll:function(x,y,h,w){if(this.scroll){var _130=this.DDM.getClientHeight();var _131=this.DDM.getClientWidth();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var _135=w+x;var _136=(_130+st-y-this.deltaY);var _137=(_131+sl-x-this.deltaX);var _138=40;var _139=(document.all)?80:30;if(bot>_130&&_136<_138){window.scrollTo(sl,st+_139);}if(y<st&&st>0&&y-st<_138){window.scrollTo(sl,st-_139);}if(_135>_131&&_137<_138){window.scrollTo(sl+_139,st);}if(x<sl&&sl>0&&x-sl<_138){window.scrollTo(sl-_139,st);}}},getTargetCoord:function(_140,_141){var x=_140-this.deltaX;var y=_141-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;}if(x>this.maxX){x=this.maxX;}}if(this.constrainY){if(y<this.minY){y=this.minY;}if(y>this.maxY){y=this.maxY;}}x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return {x:x,y:y};},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(e){this.autoOffset(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},toString:function(){return ("DD "+this.id);}});YAHOO.util.DDProxy=function(id,_142,_143){if(id){this.init(id,_142,_143);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var self=this;var body=document.body;if(!body||!body.firstChild){setTimeout(function(){self.createFrame();},50);return;}var div=this.getDragEl();if(!div){div=document.createElement("div");div.id=this.dragElId;var s=div.style;s.position="absolute";s.visibility="hidden";s.cursor="move";s.border="2px solid #aaa";s.zIndex=999;body.insertBefore(div,body.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(_147,_148){var el=this.getEl();var _149=this.getDragEl();var s=_149.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2));}this.setDragElPos(_147,_148);YAHOO.util.Dom.setStyle(_149,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var DOM=YAHOO.util.Dom;var el=this.getEl();var _151=this.getDragEl();var bt=parseInt(DOM.getStyle(_151,"borderTopWidth"),10);var br=parseInt(DOM.getStyle(_151,"borderRightWidth"),10);var bb=parseInt(DOM.getStyle(_151,"borderBottomWidth"),10);var bl=parseInt(DOM.getStyle(_151,"borderLeftWidth"),10);if(isNaN(bt)){bt=0;}if(isNaN(br)){br=0;}if(isNaN(bb)){bb=0;}if(isNaN(bl)){bl=0;}var _156=Math.max(0,el.offsetWidth-br-bl);var _157=Math.max(0,el.offsetHeight-bt-bb);DOM.setStyle(_151,"width",_156+"px");DOM.setStyle(_151,"height",_157+"px");}},b4MouseDown:function(e){var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x,y);},b4StartDrag:function(x,y){this.showFrame(x,y);},b4EndDrag:function(e){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(e){var DOM=YAHOO.util.Dom;var lel=this.getEl();var del=this.getDragEl();DOM.setStyle(del,"visibility","");DOM.setStyle(lel,"visibility","hidden");YAHOO.util.DDM.moveToEl(lel,del);DOM.setStyle(del,"visibility","hidden");DOM.setStyle(lel,"visibility","");},toString:function(){return ("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(id,_160,_161){if(id){this.initTarget(id,_160,_161);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return ("DDTarget "+this.id);}}); | |
| 3 | -YAHOO.util.Connect={_msxml_progid:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'],_http_header:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:'application/x-www-form-urlencoded',_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,setProgId:function(id) | |
| 4 | -{this._msxml_progid.unshift(id);},setDefaultPostHeader:function(b) | |
| 5 | -{this._use_default_post_header=b;},setPollingInterval:function(i) | |
| 6 | -{if(typeof i=='number'&&isFinite(i)){this._polling_interval=i;}},createXhrObject:function(transactionId) | |
| 7 | -{var obj,http;try | |
| 8 | -{http=new XMLHttpRequest();obj={conn:http,tId:transactionId};} | |
| 9 | -catch(e) | |
| 10 | -{for(var i=0;i<this._msxml_progid.length;++i){try | |
| 11 | -{http=new ActiveXObject(this._msxml_progid[i]);obj={conn:http,tId:transactionId};break;} | |
| 12 | -catch(e){}}} | |
| 13 | -finally | |
| 14 | -{return obj;}},getConnectionObject:function() | |
| 15 | -{var o;var tId=this._transaction_id;try | |
| 16 | -{o=this.createXhrObject(tId);if(o){this._transaction_id++;}} | |
| 17 | -catch(e){} | |
| 18 | -finally | |
| 19 | -{return o;}},asyncRequest:function(method,uri,callback,postData) | |
| 20 | -{var o=this.getConnectionObject();if(!o){return null;} | |
| 21 | -else{if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(o.tId,callback,uri,postData);this.releaseObject(o);return;} | |
| 22 | -if(method=='GET'){if(this._sFormData.length!=0){uri+=((uri.indexOf('?')==-1)?'?':'&')+this._sFormData;} | |
| 23 | -else{uri+="?"+this._sFormData;}} | |
| 24 | -else if(method=='POST'){postData=postData?this._sFormData+"&"+postData:this._sFormData;}} | |
| 25 | -o.conn.open(method,uri,true);if(this._isFormSubmit||(postData&&this._use_default_post_header)){this.initHeader('Content-Type',this._default_post_header);if(this._isFormSubmit){this.resetFormState();}} | |
| 26 | -if(this._has_http_headers){this.setHeader(o);} | |
| 27 | -this.handleReadyState(o,callback);o.conn.send(postData||null);return o;}},handleReadyState:function(o,callback) | |
| 28 | -{var oConn=this;if(callback&&callback.timeout){this._timeOut[o.tId]=window.setTimeout(function(){oConn.abort(o,callback,true);},callback.timeout);} | |
| 29 | -this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(oConn._poll[o.tId]);delete oConn._poll[o.tId];if(callback&&callback.timeout){delete oConn._timeOut[o.tId];} | |
| 30 | -oConn.handleTransactionResponse(o,callback);}},this._polling_interval);},handleTransactionResponse:function(o,callback,isAbort) | |
| 31 | -{if(!callback){this.releaseObject(o);return;} | |
| 32 | -var httpStatus,responseObject;try | |
| 33 | -{if(o.conn.status!==undefined&&o.conn.status!=0){httpStatus=o.conn.status;} | |
| 34 | -else{httpStatus=13030;}} | |
| 35 | -catch(e){httpStatus=13030;} | |
| 36 | -if(httpStatus>=200&&httpStatus<300){try | |
| 37 | -{responseObject=this.createResponseObject(o,callback.argument);if(callback.success){if(!callback.scope){callback.success(responseObject);} | |
| 38 | -else{callback.success.apply(callback.scope,[responseObject]);}}} | |
| 39 | -catch(e){}} | |
| 40 | -else{try | |
| 41 | -{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,callback.argument,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callback.failure(responseObject);} | |
| 42 | -else{callback.failure.apply(callback.scope,[responseObject]);}} | |
| 43 | -break;default:responseObject=this.createResponseObject(o,callback.argument);if(callback.failure){if(!callback.scope){callback.failure(responseObject);} | |
| 44 | -else{callback.failure.apply(callback.scope,[responseObject]);}}}} | |
| 45 | -catch(e){}} | |
| 46 | -this.releaseObject(o);responseObject=null;},createResponseObject:function(o,callbackArg) | |
| 47 | -{var obj={};var headerObj={};try | |
| 48 | -{var headerStr=o.conn.getAllResponseHeaders();var header=headerStr.split('\n');for(var i=0;i<header.length;i++){var delimitPos=header[i].indexOf(':');if(delimitPos!=-1){headerObj[header[i].substring(0,delimitPos)]=header[i].substring(delimitPos+2);}}} | |
| 49 | -catch(e){} | |
| 50 | -obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=headerObj;obj.getAllResponseHeaders=headerStr;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof callbackArg!==undefined){obj.argument=callbackArg;} | |
| 51 | -return obj;},createExceptionObject:function(tId,callbackArg,isAbort) | |
| 52 | -{var COMM_CODE=0;var COMM_ERROR='communication failure';var ABORT_CODE=-1;var ABORT_ERROR='transaction aborted';var obj={};obj.tId=tId;if(isAbort){obj.status=ABORT_CODE;obj.statusText=ABORT_ERROR;} | |
| 53 | -else{obj.status=COMM_CODE;obj.statusText=COMM_ERROR;} | |
| 54 | -if(callbackArg){obj.argument=callbackArg;} | |
| 55 | -return obj;},initHeader:function(label,value) | |
| 56 | -{if(this._http_header[label]===undefined){this._http_header[label]=value;} | |
| 57 | -else{this._http_header[label]=value+","+this._http_header[label];} | |
| 58 | -this._has_http_headers=true;},setHeader:function(o) | |
| 59 | -{for(var prop in this._http_header){if(this._http_header.hasOwnProperty(prop)){o.conn.setRequestHeader(prop,this._http_header[prop]);}} | |
| 60 | -delete this._http_header;this._http_header={};this._has_http_headers=false;},setForm:function(formId,isUpload,secureUri) | |
| 61 | -{this.resetFormState();var oForm;if(typeof formId=='string'){oForm=(document.getElementById(formId)||document.forms[formId]);} | |
| 62 | -else if(typeof formId=='object'){oForm=formId;} | |
| 63 | -else{return;} | |
| 64 | -if(isUpload){this.createFrame(secureUri?secureUri:null);this._isFormSubmit=true;this._isFileUpload=true;this._formNode=oForm;return;} | |
| 65 | -var oElement,oName,oValue,oDisabled;var hasSubmit=false;for(var i=0;i<oForm.elements.length;i++){oElement=oForm.elements[i];oDisabled=oForm.elements[i].disabled;oName=oForm.elements[i].name;oValue=oForm.elements[i].value;if(!oDisabled&&oName) | |
| 66 | -{switch(oElement.type) | |
| 67 | -{case'select-one':case'select-multiple':for(var j=0;j<oElement.options.length;j++){if(oElement.options[j].selected){if(window.ActiveXObject){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oElement.options[j].attributes['value'].specified?oElement.options[j].value:oElement.options[j].text)+'&';} | |
| 68 | -else{this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oElement.options[j].hasAttribute('value')?oElement.options[j].value:oElement.options[j].text)+'&';}}} | |
| 69 | -break;case'radio':case'checkbox':if(oElement.checked){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';} | |
| 70 | -break;case'file':case undefined:case'reset':case'button':break;case'submit':if(hasSubmit==false){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';hasSubmit=true;} | |
| 71 | -break;default:this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';break;}}} | |
| 72 | -this._isFormSubmit=true;this._sFormData=this._sFormData.substr(0,this._sFormData.length-1);return this._sFormData;},resetFormState:function(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";},createFrame:function(secureUri){var frameId='yuiIO'+this._transaction_id;if(window.ActiveXObject){var io=document.createElement('<iframe id="'+frameId+'" name="'+frameId+'" />');if(typeof secureUri=='boolean'){io.src='javascript:false';} | |
| 73 | -else if(typeof secureURI=='string'){io.src=secureUri;}} | |
| 74 | -else{var io=document.createElement('iframe');io.id=frameId;io.name=frameId;} | |
| 75 | -io.style.position='absolute';io.style.top='-1000px';io.style.left='-1000px';document.body.appendChild(io);},appendPostData:function(postData) | |
| 76 | -{var formElements=new Array();var postMessage=postData.split('&');for(var i=0;i<postMessage.length;i++){var delimitPos=postMessage[i].indexOf('=');if(delimitPos!=-1){formElements[i]=document.createElement('input');formElements[i].type='hidden';formElements[i].name=postMessage[i].substring(0,delimitPos);formElements[i].value=postMessage[i].substring(delimitPos+1);this._formNode.appendChild(formElements[i]);}} | |
| 77 | -return formElements;},uploadFile:function(id,callback,uri,postData){var frameId='yuiIO'+id;var io=document.getElementById(frameId);this._formNode.action=uri;this._formNode.method='POST';this._formNode.target=frameId;if(this._formNode.encoding){this._formNode.encoding='multipart/form-data';} | |
| 78 | -else{this._formNode.enctype='multipart/form-data';} | |
| 79 | -if(postData){var oElements=this.appendPostData(postData);} | |
| 80 | -this._formNode.submit();if(oElements&&oElements.length>0){try | |
| 81 | -{for(var i=0;i<oElements.length;i++){this._formNode.removeChild(oElements[i]);}} | |
| 82 | -catch(e){}} | |
| 83 | -this.resetFormState();var uploadCallback=function() | |
| 84 | -{var obj={};obj.tId=id;obj.argument=callback.argument;try | |
| 85 | -{obj.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;obj.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;} | |
| 86 | -catch(e){} | |
| 87 | -if(callback.upload){if(!callback.scope){callback.upload(obj);} | |
| 88 | -else{callback.upload.apply(callback.scope,[obj]);}} | |
| 89 | -if(YAHOO.util.Event){YAHOO.util.Event.removeListener(io,"load",uploadCallback);} | |
| 90 | -else if(window.detachEvent){io.detachEvent('onload',uploadCallback);} | |
| 91 | -else{io.removeEventListener('load',uploadCallback,false);} | |
| 92 | -setTimeout(function(){document.body.removeChild(io);},100);};if(YAHOO.util.Event){YAHOO.util.Event.addListener(io,"load",uploadCallback);} | |
| 93 | -else if(window.attachEvent){io.attachEvent('onload',uploadCallback);} | |
| 94 | -else{io.addEventListener('load',uploadCallback,false);}},abort:function(o,callback,isTimeout) | |
| 95 | -{if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._poll[o.tId]);delete this._poll[o.tId];if(isTimeout){delete this._timeOut[o.tId];} | |
| 96 | -this.handleTransactionResponse(o,callback,true);return true;} | |
| 97 | -else{return false;}},isCallInProgress:function(o) | |
| 98 | -{if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;} | |
| 99 | -else{return false;}},releaseObject:function(o) | |
| 100 | -{o.conn=null;o=null;}}; | |
| 101 | 1 | \ No newline at end of file |
| 2 | +if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}return o;};YAHOO.log=function(_2,_3,_4){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_2,_3,_4);}else{return false;}};YAHOO.extend=function(_6,_7,_8){var F=function(){};F.prototype=_7.prototype;_6.prototype=new F();_6.prototype.constructor=_6;_6.superclass=_7.prototype;if(_7.prototype.constructor==Object.prototype.constructor){_7.prototype.constructor=_7;}if(_8){for(var i in _8){_6.prototype[i]=_8[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example");(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf("opera")>-1),isSafari=(ua.indexOf("safari")>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf("gecko")>-1),isIE=(!isOpera&&ua.indexOf("msie")>-1);var _10={HYPHEN:/(-[a-z])/i};var _11=function(_12){if(!_10.HYPHEN.test(_12)){return _12;}if(propertyCache[_12]){return propertyCache[_12];}while(_10.HYPHEN.exec(_12)){_12=_12.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}propertyCache[_12]=_12;return _12;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,_14){var _15=null;var _16=document.defaultView.getComputedStyle(el,"");if(_16){_15=_16[_11(_14)];}return el.style[_14]||_15;};}else{if(document.documentElement.currentStyle&&isIE){getStyle=function(el,_18){switch(_11(_18)){case "opacity":var val=100;try{val=el.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(e){try{val=el.filters("alpha").opacity;}catch(e){}}return val/100;break;default:var _1a=el.currentStyle?el.currentStyle[_18]:null;return (el.style[_18]||_1a);}};}else{getStyle=function(el,_1c){return el.style[_1c];};}}if(isIE){setStyle=function(el,_1e,val){switch(_1e){case "opacity":if(typeof el.style.filter=="string"){el.style.filter="alpha(opacity="+val*100+")";if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}break;default:el.style[_1e]=val;}};}else{setStyle=function(el,_21,val){el.style[_21]=val;};}YAHOO.util.Dom={get:function(el){if(!el){return null;}if(typeof el!="string"&&!(el instanceof Array)){return el;}if(typeof el=="string"){return document.getElementById(el);}else{var _24=[];for(var i=0,len=el.length;i<len;++i){_24[_24.length]=Y.Dom.get(el[i]);}return _24;}return null;},getStyle:function(el,_27){_27=_11(_27);var f=function(_29){return getStyle(_29,_27);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,_2b,val){_2b=_11(_2b);var f=function(_2e){setStyle(_2e,_2b,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,"display")=="none"){return false;}var _32=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var _36=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var _37=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return [box.left+_37,box.top+_36];}else{pos=[el.offsetLeft,el.offsetTop];_32=el.offsetParent;if(_32!=el){while(_32){pos[0]+=_32.offsetLeft;pos[1]+=_32.offsetTop;_32=_32.offsetParent;}}if(isSafari&&this.getStyle(el,"position")=="absolute"){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){_32=el.parentNode;}else{_32=null;}while(_32&&_32.tagName.toUpperCase()!="BODY"&&_32.tagName.toUpperCase()!="HTML"){if(Y.Dom.getStyle(_32,"display")!="inline"){pos[0]-=_32.scrollLeft;pos[1]-=_32.scrollTop;}if(_32.parentNode){_32=_32.parentNode;}else{_32=null;}}return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,_40){var f=function(el){var _43=this.getStyle(el,"position");if(_43=="static"){this.setStyle(el,"position","relative");_43="relative";}var _44=this.getXY(el);if(_44===false){return false;}var _45=[parseInt(this.getStyle(el,"left"),10),parseInt(this.getStyle(el,"top"),10)];if(isNaN(_45[0])){_45[0]=(_43=="relative")?0:el.offsetLeft;}if(isNaN(_45[1])){_45[1]=(_43=="relative")?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-_44[0]+_45[0]+"px";}if(pos[1]!==null){el.style.top=pos[1]-_44[1]+_45[1]+"px";}var _46=this.getXY(el);if(!_40&&(_46[0]!=pos[0]||_46[1]!=pos[1])){this.setXY(el,pos,true);}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var _4e=new Y.Region.getRegion(el);return _4e;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(_4f,tag,_51){var _52=function(el){return Y.Dom.hasClass(el,_4f);};return Y.Dom.getElementsBy(_52,tag,_51);},hasClass:function(el,_55){var re=new RegExp("(?:^|\\s+)"+_55+"(?:\\s+|$)");var f=function(el){return re.test(el["className"]);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,_5a){var f=function(el){if(this.hasClass(el,_5a)){return;}el["className"]=[el["className"],_5a].join(" ");};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,_5e){var re=new RegExp("(?:^|\\s+)"+_5e+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_5e)){return;}var c=el["className"];el["className"]=c.replace(re," ");if(this.hasClass(el,_5e)){this.removeClass(el,_5e);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,_64,_65){if(_64===_65){return false;}var re=new RegExp("(?:^|\\s+)"+_64+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_64)){this.addClass(el,_65);return;}el["className"]=el["className"].replace(re," "+_65+" ");if(this.hasClass(el,_64)){this.replaceClass(el,_64,_65);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,_6a){_6a=_6a||"yui-gen";el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}if(!el.id){el.id=_6a+id_counter++;}return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(_6d,_6e){_6d=Y.Dom.get(_6d);if(!_6d||!_6e){return false;}var f=function(_70){if(_6d.contains&&!isSafari){return _6d.contains(_70);}else{if(_6d.compareDocumentPosition){return !!(_6d.compareDocumentPosition(_70)&16);}else{var _71=_70.parentNode;while(_71){if(_71==_6d){return true;}else{if(!_71.tagName||_71.tagName.toUpperCase()=="HTML"){return false;}}_71=_71.parentNode;}return false;}}};return Y.Dom.batch(_6e,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(_75,tag,_77){tag=tag||"*";_77=Y.Dom.get(_77)||document;var _78=[];var _79=_77.getElementsByTagName(tag);if(!_79.length&&(tag=="*"&&_77.all)){_79=_77.all;}for(var i=0,len=_79.length;i<len;++i){if(_75(_79[i])){_78[_78.length]=_79[i];}}return _78;},batch:function(el,_7c,o,_7e){var id=el;el=Y.Dom.get(el);var _80=(_7e)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return _7c.call(_80,el,o);}var _81=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}_81[_81.length]=_7c.call(_80,el[i],o);}return _81;},getDocumentHeight:function(){var _83=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(_83,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var _85=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(_85,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var _87=self.innerHeight;var _88=document.compatMode;if((_88||isIE)&&!isOpera){_87=(_88=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;}return _87;},getViewportWidth:function(){var _89=self.innerWidth;var _8a=document.compatMode;if(_8a||isIE){_89=(_8a=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;}return _89;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(_8f){return (_8f.left>=this.left&&_8f.right<=this.right&&_8f.top>=this.top&&_8f.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return ((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(_90){var t=Math.max(this.top,_90.top);var r=Math.min(this.right,_90.right);var b=Math.min(this.bottom,_90.bottom);var l=Math.max(this.left,_90.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(_95){var t=Math.min(this.top,_95.top);var r=Math.max(this.right,_95.right);var b=Math.max(this.bottom,_95.bottom);var l=Math.min(this.left,_95.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return ("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.util.CustomEvent=function(_1,_2,_3,_4){this.type=_1;this.scope=_2||window;this.silent=_3;this.signature=_4||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var _5="_YUICEOnSubscribe";if(_1!==_5){this.subscribeEvent=new YAHOO.util.CustomEvent(_5,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,_7,_8){if(this.subscribeEvent){this.subscribeEvent.fire(fn,_7,_8);}this.subscribers.push(new YAHOO.util.Subscriber(fn,_7,_8));},unsubscribe:function(fn,_9){var _10=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,_9)){this._delete(i);_10=true;}}return _10;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return true;}var _14=[],ret=true,i;for(i=0;i<arguments.length;++i){_14.push(arguments[i]);}var _15=_14.length;if(!this.silent){}for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){}var _16=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var _17=null;if(_14.length>0){_17=_14[0];}ret=s.fn.call(_16,_17,s.obj);}else{ret=s.fn.call(_16,this.type,_14,s.obj);}if(false===ret){if(!this.silent){}return false;}}}return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);}},_delete:function(_18){var s=this.subscribers[_18];if(s){delete s.fn;delete s.obj;}this.subscribers.splice(_18,1);},toString:function(){return "CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,_20){this.fn=fn;this.obj=obj||null;this.override=_20;};YAHOO.util.Subscriber.prototype.getScope=function(_21){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return _21;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return (this.fn==fn&&this.obj==obj);}else{return (this.fn==fn);}};YAHOO.util.Subscriber.prototype.toString=function(){return "Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var _22=false;var _23=[];var _24=[];var _25=[];var _26=[];var _27=0;var _28=[];var _29=[];var _30=0;return {POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var _31=this;var _32=function(){_31._tryPreloadAttach();};this._interval=setInterval(_32,this.POLL_INTERVAL);}},onAvailable:function(_33,_34,_35,_36){_28.push({id:_33,fn:_34,obj:_35,override:_36,checkReady:false});_27=this.POLL_RETRYS;this.startInterval();},onContentReady:function(_37,_38,_39,_40){_28.push({id:_37,fn:_38,obj:_39,override:_40,checkReady:true});_27=this.POLL_RETRYS;this.startInterval();},addListener:function(el,_42,fn,obj,_43){if(!fn||!fn.call){return false;}if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],_42,fn,obj,_43)&&ok;}return ok;}else{if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,_42,fn,obj,_43);});return true;}}}if(!el){return false;}if("unload"==_42&&obj!==this){_24[_24.length]=[el,_42,fn,obj,_43];return true;}var _46=el;if(_43){if(_43===true){_46=obj;}else{_46=_43;}}var _47=function(e){return fn.call(_46,YAHOO.util.Event.getEvent(e),obj);};var li=[el,_42,fn,_47,_46];var _50=_23.length;_23[_50]=li;if(this.useLegacyEvent(el,_42)){var _51=this.getLegacyIndex(el,_42);if(_51==-1||el!=_25[_51][0]){_51=_25.length;_29[el.id+_42]=_51;_25[_51]=[el,_42,el["on"+_42]];_26[_51]=[];el["on"+_42]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),_51);};}_26[_51].push(li);}else{this._simpleAdd(el,_42,_47,false);}return true;},fireLegacyEvent:function(e,_52){var ok=true;var le=_26[_52];for(var i=0,len=le.length;i<len;++i){var li=le[i];if(li&&li[this.WFN]){var _54=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(_54,e);ok=(ok&&ret);}}return ok;},getLegacyIndex:function(el,_56){var key=this.generateId(el)+_56;if(typeof _29[key]=="undefined"){return -1;}else{return _29[key];}},useLegacyEvent:function(el,_58){if(!el.addEventListener&&!el.attachEvent){return true;}else{if(this.isSafari){if("click"==_58||"dblclick"==_58){return true;}}}return false;},removeListener:function(el,_59,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else{if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],_59,fn)&&ok);}return ok;}}if(!fn||!fn.call){return this.purgeElement(el,false,_59);}if("unload"==_59){for(i=0,len=_24.length;i<len;i++){var li=_24[i];if(li&&li[0]==el&&li[1]==_59&&li[2]==fn){_24.splice(i,1);return true;}}return false;}var _60=null;var _61=arguments[3];if("undefined"==typeof _61){_61=this._getCacheIndex(el,_59,fn);}if(_61>=0){_60=_23[_61];}if(!el||!_60){return false;}if(this.useLegacyEvent(el,_59)){var _62=this.getLegacyIndex(el,_59);var _63=_26[_62];if(_63){for(i=0,len=_63.length;i<len;++i){li=_63[i];if(li&&li[this.EL]==el&&li[this.TYPE]==_59&&li[this.FN]==fn){_63.splice(i,1);}}}}else{this._simpleRemove(el,_59,_60[this.WFN],false);}delete _23[_61][this.WFN];delete _23[_61][this.FN];_23.splice(_61,1);return true;},getTarget:function(ev,_65){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(_67){if(_67&&3==_67.nodeType){return _67.parentNode;}else{return _67;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}return y;},getXY:function(ev){return [this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else{if(ev.type=="mouseover"){t=ev.fromElement;}}}return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}c=c.caller;}}return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,_71,fn){for(var i=0,len=_23.length;i<len;++i){var li=_23[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==_71){return i;}}return -1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+_30;++_30;el.id=id;}return id;},_isValidCollection:function(o){return (o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){_22=true;var EU=YAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;}this.locked=true;var _75=!_22;if(!_75){_75=(_27>0);}var _76=[];for(var i=0,len=_28.length;i<len;++i){var _77=_28[i];if(_77){var el=this.getEl(_77.id);if(el){if(!_77.checkReady||_22||el.nextSibling||(document&&document.body)){var _78=el;if(_77.override){if(_77.override===true){_78=_77.obj;}else{_78=_77.override;}}_77.fn.call(_78,_77.obj);delete _28[i];}}else{_76.push(_77);}}}_27=(_76.length===0)?0:_27-1;if(_75){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;return true;},purgeElement:function(el,_79,_80){var _81=this.getListeners(el,_80);if(_81){for(var i=0,len=_81.length;i<len;++i){var l=_81[i];this.removeListener(el,l.type,l.fn);}}if(_79&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],_79,_80);}}},getListeners:function(el,_83){var _84=[];if(_23&&_23.length>0){for(var i=0,len=_23.length;i<len;++i){var l=_23[i];if(l&&l[this.EL]===el&&(!_83||_83===l[this.TYPE])){_84.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}return (_84.length)?_84:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=_24.length;i<len;++i){l=_24[i];if(l){var _85=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){_85=l[EU.OBJ];}else{_85=l[EU.ADJ_SCOPE];}}l[EU.FN].call(_85,EU.getEvent(e),l[EU.OBJ]);delete _24[i];l=null;_85=null;}}if(_23&&_23.length>0){j=_23.length;while(j){index=j-1;l=_23[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);}j=j-1;}l=null;EU.clearCache();}for(i=0,len=_25.length;i<len;++i){delete _25[i][0];delete _25[i];}EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return [dd.scrollTop,dd.scrollLeft];}else{if(db){return [db.scrollTop,db.scrollLeft];}else{return [0,0];}}},_simpleAdd:function(){if(window.addEventListener){return function(el,_87,fn,_88){el.addEventListener(_87,fn,(_88));};}else{if(window.attachEvent){return function(el,_89,fn,_90){el.attachEvent("on"+_89,fn);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,_91,fn,_92){el.removeEventListener(_91,fn,(_92));};}else{if(window.detachEvent){return function(el,_93,fn){el.detachEvent("on"+_93,fn);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(document&&document.body){EU._load();}else{EU._simpleAdd(window,"load",EU._load);}EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(_94,_95,_96,_97){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_94];if(ce){ce.subscribe(_95,_96,_97);}else{this.__yui_subscribers=this.__yui_subscribers||{};var _99=this.__yui_subscribers;if(!_99[_94]){_99[_94]=[];}_99[_94].push({fn:_95,obj:_96,override:_97});}},unsubscribe:function(_100,p_fn,_102){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_100];if(ce){return ce.unsubscribe(p_fn,_102);}else{return false;}},createEvent:function(_103,_104){this.__yui_events=this.__yui_events||{};var opts=_104||{};var _106=this.__yui_events;if(_106[_103]){}else{var _107=opts.scope||this;var _108=opts.silent||null;var ce=new YAHOO.util.CustomEvent(_103,_107,_108,YAHOO.util.CustomEvent.FLAT);_106[_103]=ce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscribe(opts.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[_103];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}}return _106[_103];},fireEvent:function(_110,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_110];if(ce){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i]);}return ce.fire.apply(ce,args);}else{return null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_events[type]){return true;}}return false;}};YAHOO.util.Anim=function(el,_157,_158,_159){if(el){this.init(el,_157,_158,_159);}};YAHOO.util.Anim.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return ("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,_15d,end){return this.method(this.currentFrame,_15d,end-_15d,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;}YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=="auto"&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);}var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,"position")=="absolute"&&pos)){val=el["offset"+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;}return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return "px";}return "";},setRuntimeAttribute:function(attr){var _16a;var end;var _16c=this.attributes;this.runtimeAttributes[attr]={};var _16d=function(prop){return (typeof prop!=="undefined");};if(!_16d(_16c[attr]["to"])&&!_16d(_16c[attr]["by"])){return false;}_16a=(_16d(_16c[attr]["from"]))?_16c[attr]["from"]:this.getAttribute(attr);if(_16d(_16c[attr]["to"])){end=_16c[attr]["to"];}else{if(_16d(_16c[attr]["by"])){if(_16a.constructor==Array){end=[];for(var i=0,len=_16a.length;i<len;++i){end[i]=_16a[i]+_16c[attr]["by"][i];}}else{end=_16a+_16c[attr]["by"];}}}this.runtimeAttributes[attr].start=_16a;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(_16d(_16c[attr].unit))?_16c[attr]["unit"]:this.getDefaultUnit(attr);},init:function(el,_171,_172,_173){var _174=false;var _175=null;var _176=0;el=YAHOO.util.Dom.get(el);this.attributes=_171||{};this.duration=_172||1;this.method=_173||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return _174;};this.getStartTime=function(){return _175;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(_177){if(_177){this.currentFrame=this.totalFrames;this._onTween.fire();}YAHOO.util.AnimMgr.stop(this);};var _178=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);}_174=true;_176=0;_175=new Date();};var _17a=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return ("duration: "+data.duration+", currentFrame: "+data.currentFrame);};this.onTween.fire(data);var _17c=this.runtimeAttributes;for(var attr in _17c){this.setAttribute(attr,this.doMethod(attr,_17c[attr].start,_17c[attr].end),_17c[attr].unit);}_176+=1;};var _17e=function(){var _17f=(new Date()-_175)/1000;var data={duration:_17f,frames:_176,fps:_176/_17f};data.toString=function(){return ("duration: "+data.duration+", frames: "+data.frames+", fps: "+data.fps);};_174=false;_176=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent("_start",this,true);this.onStart=new YAHOO.util.CustomEvent("start",this);this.onTween=new YAHOO.util.CustomEvent("tween",this);this._onTween=new YAHOO.util.CustomEvent("_tween",this,true);this.onComplete=new YAHOO.util.CustomEvent("complete",this);this._onComplete=new YAHOO.util.CustomEvent("_complete",this,true);this._onStart.subscribe(_178);this._onTween.subscribe(_17a);this._onComplete.subscribe(_17e);}};YAHOO.util.AnimMgr=new function(){var _181=null;var _182=[];var _183=0;this.fps=200;this.delay=1;this.registerElement=function(_184){_182[_182.length]=_184;_183+=1;_184._onStart.fire();this.start();};this.unRegister=function(_185,_186){_185._onComplete.fire();_186=_186||getIndex(_185);if(_186!=-1){_182.splice(_186,1);}_183-=1;if(_183<=0){this.stop();}};this.start=function(){if(_181===null){_181=setInterval(this.run,this.delay);}};this.stop=function(_187){if(!_187){clearInterval(_181);for(var i=0,len=_182.length;i<len;++i){if(_182[i].isAnimated()){this.unRegister(_187,i);}}_182=[];_181=null;_183=0;}else{this.unRegister(_187);}};this.run=function(){for(var i=0,len=_182.length;i<len;++i){var _18a=_182[i];if(!_18a||!_18a.isAnimated()){continue;}if(_18a.currentFrame<_18a.totalFrames||_18a.totalFrames===null){_18a.currentFrame+=1;if(_18a.useSeconds){correctFrame(_18a);}_18a._onTween.fire();}else{YAHOO.util.AnimMgr.stop(_18a,i);}}};var _18b=function(anim){for(var i=0,len=_182.length;i<len;++i){if(_182[i]==anim){return i;}}return -1;};var _18e=function(_18f){var _190=_18f.totalFrames;var _191=_18f.currentFrame;var _192=(_18f.currentFrame*_18f.duration*1000/_18f.totalFrames);var _193=(new Date()-_18f.getStartTime());var _194=0;if(_193<_18f.duration*1000){_194=Math.round((_193/_192-1)*_18f.currentFrame);}else{_194=_190-(_191+1);}if(_194>0&&isFinite(_194)){if(_18f.currentFrame+_194>=_190){_194=_190-(_191+1);}_18f.currentFrame+=_194;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(_195,t){var n=_195.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[_195[i][0],_195[i][1]];}for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}return [tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,_19c,_19d,_19e){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,_19c,_19d,_19e);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var _1a0=Y.ColorAnim.superclass;var _1a1=Y.ColorAnim.prototype;_1a1.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return ("ColorAnim "+id);};_1a1.patterns.color=/color$/i;_1a1.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;_1a1.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;_1a1.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;_1a1.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;_1a1.parseColor=function(s){if(s.length==3){return s;}var c=this.patterns.hex.exec(s);if(c&&c.length==4){return [parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];}c=this.patterns.rgb.exec(s);if(c&&c.length==4){return [parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];}c=this.patterns.hex3.exec(s);if(c&&c.length==4){return [parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}return null;};_1a1.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var _1a9=el.parentNode;val=Y.Dom.getStyle(_1a9,attr);while(_1a9&&this.patterns.transparent.test(val)){_1a9=_1a9.parentNode;val=Y.Dom.getStyle(_1a9,attr);if(_1a9.tagName.toUpperCase()=="HTML"){val="#fff";}}}}else{val=_1a0.getAttribute.call(this,attr);}return val;};_1a1.doMethod=function(attr,_1ab,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=_1ab.length;i<len;++i){val[i]=_1a0.doMethod.call(this,attr,_1ab[i],end[i]);}val="rgb("+Math.floor(val[0])+","+Math.floor(val[1])+","+Math.floor(val[2])+")";}else{val=_1a0.doMethod.call(this,attr,_1ab,end);}return val;};_1a1.setRuntimeAttribute=function(attr){_1a0.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var _1b0=this.attributes;var _1b1=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof _1b0[attr]["to"]==="undefined"&&typeof _1b0[attr]["by"]!=="undefined"){end=this.parseColor(_1b0[attr].by);for(var i=0,len=_1b1.length;i<len;++i){end[i]=_1b1[i]+end[i];}}this.runtimeAttributes[attr].start=_1b1;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return -c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;}return -c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return -c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t*t*t+b;}return -c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0){return b;}if((t/=d)==1){return b+c;}if(!p){p=d*0.3;}if(!a||a<Math.abs(c)){a=c;var s=p/4;}else{var s=p/(2*Math.PI)*Math.asin(c/a);}return -(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0){return b;}if((t/=d)==1){return b+c;}if(!p){p=d*0.3;}if(!a||a<Math.abs(c)){a=c;var s=p/4;}else{var s=p/(2*Math.PI)*Math.asin(c/a);}return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0){return b;}if((t/=d/2)==2){return b+c;}if(!p){p=d*(0.3*1.5);}if(!a||a<Math.abs(c)){a=c;var s=p/4;}else{var s=p/(2*Math.PI)*Math.asin(c/a);}if(t<1){return -0.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;}return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*0.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=="undefined"){s=1.70158;}return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=="undefined"){s=1.70158;}return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=="undefined"){s=1.70158;}if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;}return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else{if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+0.75)+b;}else{if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+0.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+0.984375)+b;}}}},bounceBoth:function(t,b,c,d){if(t<d/2){return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*0.5+b;}return YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*0.5+c*0.5+b;}};(function(){YAHOO.util.Motion=function(el,_204,_205,_206){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,_204,_205,_206);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var _208=Y.Motion.superclass;var _209=Y.Motion.prototype;_209.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return ("Motion "+id);};_209.patterns.points=/^points$/i;_209.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||"px";_208.setAttribute.call(this,"left",val[0],unit);_208.setAttribute.call(this,"top",val[1],unit);}else{_208.setAttribute.call(this,attr,val,unit);}};_209.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[_208.getAttribute.call(this,"left"),_208.getAttribute.call(this,"top")];}else{val=_208.getAttribute.call(this,attr);}return val;};_209.doMethod=function(attr,_212,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=_208.doMethod.call(this,attr,_212,end);}return val;};_209.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var _218=this.attributes;var _219;var _21a=_218["points"]["control"]||[];var end;var i,len;if(_21a.length>0&&!(_21a[0] instanceof Array)){_21a=[_21a];}else{var tmp=[];for(i=0,len=_21a.length;i<len;++i){tmp[i]=_21a[i];}_21a=tmp;}if(Y.Dom.getStyle(el,"position")=="static"){Y.Dom.setStyle(el,"position","relative");}if(isset(_218["points"]["from"])){Y.Dom.setXY(el,_218["points"]["from"]);}else{Y.Dom.setXY(el,Y.Dom.getXY(el));}_219=this.getAttribute("points");if(isset(_218["points"]["to"])){end=translateValues.call(this,_218["points"]["to"],_219);var _21e=Y.Dom.getXY(this.getEl());for(i=0,len=_21a.length;i<len;++i){_21a[i]=translateValues.call(this,_21a[i],_219);}}else{if(isset(_218["points"]["by"])){end=[_219[0]+_218["points"]["by"][0],_219[1]+_218["points"]["by"][1]];for(i=0,len=_21a.length;i<len;++i){_21a[i]=[_219[0]+_21a[i][0],_219[1]+_21a[i][1]];}}}this.runtimeAttributes[attr]=[_219];if(_21a.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(_21a);}this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;}else{_208.setRuntimeAttribute.call(this,attr);}};var _21f=function(val,_221){var _222=Y.Dom.getXY(this.getEl());val=[val[0]-_222[0]+_221[0],val[1]-_222[1]+_221[1]];return val;};var _223=function(prop){return (typeof prop!=="undefined");};})();(function(){YAHOO.util.Scroll=function(el,_226,_227,_228){if(el){YAHOO.util.Scroll.superclass.constructor.call(this,el,_226,_227,_228);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var Y=YAHOO.util;var _22a=Y.Scroll.superclass;var _22b=Y.Scroll.prototype;_22b.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return ("Scroll "+id);};_22b.doMethod=function(attr,_22f,end){var val=null;if(attr=="scroll"){val=[this.method(this.currentFrame,_22f[0],end[0]-_22f[0],this.totalFrames),this.method(this.currentFrame,_22f[1],end[1]-_22f[1],this.totalFrames)];}else{val=_22a.doMethod.call(this,attr,_22f,end);}return val;};_22b.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=="scroll"){val=[el.scrollLeft,el.scrollTop];}else{val=_22a.getAttribute.call(this,attr);}return val;};_22b.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=="scroll"){el.scrollLeft=val[0];el.scrollTop=val[1];}else{_22a.setAttribute.call(this,attr,val,unit);}};})();(function(){var _1=YAHOO.util.Event;var _2=YAHOO.util.Dom;YAHOO.util.DragDrop=function(id,_4,_5){if(id){this.init(id,_4,_5);}};YAHOO.util.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=_2.get(this.id);}return this._domRef;},getDragEl:function(){return _2.get(this.dragElId);},init:function(id,_9,_10){this.initTarget(id,_9,_10);_1.on(this.id,"mousedown",this.handleMouseDown,this,true);},initTarget:function(id,_11,_12){this.config=_12||{};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.id=id;this.addToGroup((_11)?_11:"default");this.handleElId=id;_1.onAvailable(id,this.handleOnAvailable,this,true);this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(_13,_14,_15,_16){if(!_14&&0!==_14){this.padding=[_13,_13,_13,_13];}else{if(!_15&&0!==_15){this.padding=[_13,_14,_13,_14];}else{this.padding=[_13,_14,_15,_16];}}},setInitPosition:function(_17,_18){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;}var dx=_17||0;var dy=_18||0;var p=_2.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||_2.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(_24){this.groups[_24]=true;this.DDM.regDragDrop(this,_24);},removeFromGroup:function(_25){if(this.groups[_25]){delete this.groups[_25];}this.DDM.removeDDFromGroup(this,_25);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}_1.on(id,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(id);this.hasOuterHandles=true;},unreg:function(){_1.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return (this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){var _27=e.which||e.button;if(this.primaryButtonOnly&&_27>1){return;}if(this.isLocked()){return;}this.DDM.refreshCache(this.groups);var pt=new YAHOO.util.Point(_1.getPageX(e),_1.getPageY(e));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}else{}}},clickValidator:function(e){var _29=_1.getTarget(e);return (this.isValidHandleChild(_29)&&(this.id==this.handleElId||this.DDM.handleWasClicked(_29,this.id)));},addInvalidHandleType:function(_30){var _31=_30.toUpperCase();this.invalidHandleTypes[_31]=_31;},addInvalidHandleId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(_32){this.invalidHandleClasses.push(_32);},removeInvalidHandleType:function(_33){var _34=_33.toUpperCase();delete this.invalidHandleTypes[_34];},removeInvalidHandleId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(_35){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==_35){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(_37){var _38=true;var _39;try{_39=_37.nodeName.toUpperCase();}catch(e){_39=_37.nodeName;}_38=_38&&!this.invalidHandleTypes[_39];_38=_38&&!this.invalidHandleIds[_37.id];for(var i=0,len=this.invalidHandleClasses.length;_38&&i<len;++i){_38=!_2.hasClass(_37,this.invalidHandleClasses[i]);}return _38;},setXTicks:function(_40,_41){this.xTicks=[];this.xTickSize=_41;var _42={};for(var i=this.initPageX;i>=this.minX;i=i-_41){if(!_42[i]){this.xTicks[this.xTicks.length]=i;_42[i]=true;}}for(i=this.initPageX;i<=this.maxX;i=i+_41){if(!_42[i]){this.xTicks[this.xTicks.length]=i;_42[i]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(_43,_44){this.yTicks=[];this.yTickSize=_44;var _45={};for(var i=this.initPageY;i>=this.minY;i=i-_44){if(!_45[i]){this.yTicks[this.yTicks.length]=i;_45[i]=true;}}for(i=this.initPageY;i<=this.maxY;i=i+_44){if(!_45[i]){this.yTicks[this.yTicks.length]=i;_45[i]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(_46,_47,_48){this.leftConstraint=_46;this.rightConstraint=_47;this.minX=this.initPageX-_46;this.maxX=this.initPageX+_47;if(_48){this.setXTicks(this.initPageX,_48);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(iUp,_50,_51){this.topConstraint=iUp;this.bottomConstraint=_50;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+_50;if(_51){this.setYTicks(this.initPageY,_51);}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(val,_53){if(!_53){return val;}else{if(_53[0]>=val){return _53[0];}else{for(var i=0,len=_53.length;i<len;++i){var _54=i+1;if(_53[_54]&&_53[_54]>=val){var _55=val-_53[i];var _56=_53[_54]-val;return (_56>_55)?_53[i]:_53[_54];}}return _53[_53.length-1];}}},toString:function(){return ("DragDrop "+this.id);}};})();if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var _57=YAHOO.util.Event;return {ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(_58,_59){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;}oDD[_58].apply(oDD,_59);}}},_onLoad:function(){this.init();_57.on(document,"mouseup",this.handleMouseUp,this,true);_57.on(document,"mousemove",this.handleMouseMove,this,true);_57.on(window,"unload",this._onUnload,this,true);_57.on(window,"resize",this._onResize,this,true);},_onResize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,_61){if(!this.initialized){this.init();}if(!this.ids[_61]){this.ids[_61]={};}this.ids[_61][oDD.id]=oDD;},removeDDFromGroup:function(oDD,_62){if(!this.ids[_62]){this.ids[_62]={};}var obj=this.ids[_62];if(obj&&obj[oDD.id]){delete obj[oDD.id];}},_remove:function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}}delete this.handleIds[oDD.id];},regHandle:function(_65,_66){if(!this.handleIds[_65]){this.handleIds[_65]={};}this.handleIds[_65][_66]=_66;},isDragDrop:function(id){return (this.getDDById(id))?true:false;},getRelated:function(_67,_68){var _69=[];for(var i in _67.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;}if(!_68||dd.isTarget){_69[_69.length]=dd;}}}return _69;},isLegalTarget:function(oDD,_71){var _72=this.getRelated(oDD,true);for(var i=0,len=_72.length;i<len;++i){if(_72[i].id==_71.id){return true;}}return false;},isTypeOfDD:function(oDD){return (oDD&&oDD.__ygDragDrop);},isHandle:function(_73,_74){return (this.handleIds[_73]&&this.handleIds[_73][_74]);},getDDById:function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}}return null;},handleMouseDown:function(e,oDD){this.currentTarget=YAHOO.util.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=YAHOO.util.Event.getPageX(e);this.startY=YAHOO.util.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=YAHOO.util.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDrag(x,y);}this.dragThreshMet=true;},handleMouseUp:function(e){if(!this.dragCurrent){return;}clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{}this.stopDrag(e);this.stopEvent(e);},stopEvent:function(e){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(e);}if(this.preventDefault){YAHOO.util.Event.preventDefault(e);}},stopDrag:function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(e);this.dragCurrent.endDrag(e);}this.dragCurrent.onMouseUp(e);}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(e){if(!this.dragCurrent){return true;}if(YAHOO.util.Event.isIE&&!e.button){this.stopEvent(e);return this.handleMouseUp(e);}if(!this.dragThreshMet){var _76=Math.abs(this.startX-YAHOO.util.Event.getPageX(e));var _77=Math.abs(this.startY-YAHOO.util.Event.getPageY(e));if(_76>this.clickPixelThresh||_77>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);this.fireEvents(e,false);}this.stopEvent(e);return true;},fireEvents:function(e,_78){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;}var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);var pt=new YAHOO.util.Point(x,y);var _80=[];var _81=[];var _82=[];var _83=[];var _84=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;}if(!this.isOverTarget(pt,ddo,this.mode)){_81.push(ddo);}_80[i]=true;delete this.dragOvers[i];}for(var _86 in dc.groups){if("string"!=typeof _86){continue;}for(i in this.ids[_86]){var oDD=this.ids[_86][i];if(!this.isTypeOfDD(oDD)){continue;}if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(_78){_83.push(oDD);}else{if(!_80[oDD.id]){_84.push(oDD);}else{_82.push(oDD);}this.dragOvers[oDD.id]=oDD;}}}}}if(this.mode){if(_81.length){dc.b4DragOut(e,_81);dc.onDragOut(e,_81);}if(_84.length){dc.onDragEnter(e,_84);}if(_82.length){dc.b4DragOver(e,_82);dc.onDragOver(e,_82);}if(_83.length){dc.b4DragDrop(e,_83);dc.onDragDrop(e,_83);}}else{var len=0;for(i=0,len=_81.length;i<len;++i){dc.b4DragOut(e,_81[i].id);dc.onDragOut(e,_81[i].id);}for(i=0,len=_84.length;i<len;++i){dc.onDragEnter(e,_84[i].id);}for(i=0,len=_82.length;i<len;++i){dc.b4DragOver(e,_82[i].id);dc.onDragOver(e,_82[i].id);}for(i=0,len=_83.length;i<len;++i){dc.b4DragDrop(e,_83[i].id);dc.onDragDrop(e,_83[i].id);}}if(_78&&!_83.length){dc.onInvalidDrop(e);}},getBestMatch:function(dds){var _89=null;var len=dds.length;if(len==1){_89=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){_89=dd;break;}else{if(!_89||_89.overlap.getArea()<dd.overlap.getArea()){_89=dd;}}}}return _89;},refreshCache:function(_90){for(var _91 in _90){if("string"!=typeof _91){continue;}for(var i in this.ids[_91]){var oDD=this.ids[_91][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var _93=el.offsetParent;if(_93){return true;}}}catch(e){}return false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;}var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=YAHOO.util.Dom.getXY(el);}catch(e){}if(!pos){return null;}x1=pos[0];x2=x1+el.offsetWidth;y1=pos[1];y2=y1+el.offsetHeight;t=y1-oDD.padding[0];r=x2+oDD.padding[1];b=y2+oDD.padding[2];l=x1-oDD.padding[3];return new YAHOO.util.Region(t,r,b,l);},isOverTarget:function(pt,_94,_95){var loc=this.locationCache[_94.id];if(!loc||!this.useCache){loc=this.getLocation(_94);this.locationCache[_94.id]=loc;}if(!loc){return false;}_94.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||(!_95&&!dc.constrainX&&!dc.constrainY)){return _94.cursorIsOver;}_94.overlap=null;var pos=dc.getTargetCoord(pt.x,pt.y);var el=dc.getDragEl();var _96=new YAHOO.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x);var _97=_96.intersect(loc);if(_97){_94.overlap=_97;return (_95)?true:_94.cursorIsOver;}else{return false;}},_onUnload:function(e,me){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];}this.elementCache={};this.ids={};},elementCache:{},getElWrapper:function(id){var _99=this.elementCache[id];if(!_99||!_99.el){_99=this.elementCache[id]=new this.ElementWrapper(YAHOO.util.Dom.get(id));}return _99;},getElement:function(id){return YAHOO.util.Dom.get(id);},getCss:function(id){var el=YAHOO.util.Dom.get(id);return (el)?el.style:null;},ElementWrapper:function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;},getPosX:function(el){return YAHOO.util.Dom.getX(el);},getPosY:function(el){return YAHOO.util.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;if(s==n1){p.insertBefore(n1,n2);}else{if(n2==n1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}}}},getScroll:function(){var t,l,dde=document.documentElement,db=document.body;if(dde&&(dde.scrollTop||dde.scrollLeft)){t=dde.scrollTop;l=dde.scrollLeft;}else{if(db){t=db.scrollTop;l=db.scrollLeft;}else{YAHOO.log("could not get scroll property");}}return {top:t,left:l};},getStyle:function(el,_104){return YAHOO.util.Dom.getStyle(el,_104);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(_105,_106){var _107=YAHOO.util.Dom.getXY(_106);YAHOO.util.Dom.setXY(_105,_107);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(a,b){return (a-b);},_timeoutCount:0,_addListeners:function(){var DDM=YAHOO.util.DDM;if(YAHOO.util.Event&&document){DDM._onLoad();}else{if(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(document&&document.body){DDM._timeoutCount+=1;}}}},handleWasClicked:function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}YAHOO.util.DD=function(id,_111,_112){if(id){this.init(id,_111,_112);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(_113,_114){var x=_113-this.startPageX;var y=_114-this.startPageY;this.setDelta(x,y);},setDelta:function(_115,_116){this.deltaX=_115;this.deltaY=_116;},setDragElPos:function(_117,_118){var el=this.getDragEl();this.alignElWithMouse(el,_117,_118);},alignElWithMouse:function(el,_119,_120){var _121=this.getTargetCoord(_119,_120);if(!this.deltaSetXY){var _122=[_121.x,_121.y];YAHOO.util.Dom.setXY(el,_122);var _123=parseInt(YAHOO.util.Dom.getStyle(el,"left"),10);var _124=parseInt(YAHOO.util.Dom.getStyle(el,"top"),10);this.deltaSetXY=[_123-_121.x,_124-_121.y];}else{YAHOO.util.Dom.setStyle(el,"left",(_121.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(el,"top",(_121.y+this.deltaSetXY[1])+"px");}this.cachePosition(_121.x,_121.y);this.autoScroll(_121.x,_121.y,el.offsetHeight,el.offsetWidth);},cachePosition:function(_125,_126){if(_125){this.lastPageX=_125;this.lastPageY=_126;}else{var _127=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=_127[0];this.lastPageY=_127[1];}},autoScroll:function(x,y,h,w){if(this.scroll){var _130=this.DDM.getClientHeight();var _131=this.DDM.getClientWidth();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var _135=w+x;var _136=(_130+st-y-this.deltaY);var _137=(_131+sl-x-this.deltaX);var _138=40;var _139=(document.all)?80:30;if(bot>_130&&_136<_138){window.scrollTo(sl,st+_139);}if(y<st&&st>0&&y-st<_138){window.scrollTo(sl,st-_139);}if(_135>_131&&_137<_138){window.scrollTo(sl+_139,st);}if(x<sl&&sl>0&&x-sl<_138){window.scrollTo(sl-_139,st);}}},getTargetCoord:function(_140,_141){var x=_140-this.deltaX;var y=_141-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;}if(x>this.maxX){x=this.maxX;}}if(this.constrainY){if(y<this.minY){y=this.minY;}if(y>this.maxY){y=this.maxY;}}x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return {x:x,y:y};},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(e){this.autoOffset(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},toString:function(){return ("DD "+this.id);}});YAHOO.util.DDProxy=function(id,_142,_143){if(id){this.init(id,_142,_143);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var self=this;var body=document.body;if(!body||!body.firstChild){setTimeout(function(){self.createFrame();},50);return;}var div=this.getDragEl();if(!div){div=document.createElement("div");div.id=this.dragElId;var s=div.style;s.position="absolute";s.visibility="hidden";s.cursor="move";s.border="2px solid #aaa";s.zIndex=999;body.insertBefore(div,body.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(_147,_148){var el=this.getEl();var _149=this.getDragEl();var s=_149.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2));}this.setDragElPos(_147,_148);YAHOO.util.Dom.setStyle(_149,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var DOM=YAHOO.util.Dom;var el=this.getEl();var _151=this.getDragEl();var bt=parseInt(DOM.getStyle(_151,"borderTopWidth"),10);var br=parseInt(DOM.getStyle(_151,"borderRightWidth"),10);var bb=parseInt(DOM.getStyle(_151,"borderBottomWidth"),10);var bl=parseInt(DOM.getStyle(_151,"borderLeftWidth"),10);if(isNaN(bt)){bt=0;}if(isNaN(br)){br=0;}if(isNaN(bb)){bb=0;}if(isNaN(bl)){bl=0;}var _156=Math.max(0,el.offsetWidth-br-bl);var _157=Math.max(0,el.offsetHeight-bt-bb);DOM.setStyle(_151,"width",_156+"px");DOM.setStyle(_151,"height",_157+"px");}},b4MouseDown:function(e){var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x,y);},b4StartDrag:function(x,y){this.showFrame(x,y);},b4EndDrag:function(e){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(e){var DOM=YAHOO.util.Dom;var lel=this.getEl();var del=this.getDragEl();DOM.setStyle(del,"visibility","");DOM.setStyle(lel,"visibility","hidden");YAHOO.util.DDM.moveToEl(lel,del);DOM.setStyle(del,"visibility","hidden");DOM.setStyle(lel,"visibility","");},toString:function(){return ("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(id,_160,_161){if(id){this.initTarget(id,_160,_161);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return ("DDTarget "+this.id);}});YAHOO.util.Connect={_msxml_progid:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],_http_header:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:"application/x-www-form-urlencoded",_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,setProgId:function(id){this._msxml_progid.unshift(id);},setDefaultPostHeader:function(b){this._use_default_post_header=b;},setPollingInterval:function(i){if(typeof i=="number"&&isFinite(i)){this._polling_interval=i;}},createXhrObject:function(_350){var obj,http;try{http=new XMLHttpRequest();obj={conn:http,tId:_350};}catch(e){for(var i=0;i<this._msxml_progid.length;++i){try{http=new ActiveXObject(this._msxml_progid[i]);obj={conn:http,tId:_350};break;}catch(e){}}}finally{return obj;}},getConnectionObject:function(){var o;var tId=this._transaction_id;try{o=this.createXhrObject(tId);if(o){this._transaction_id++;}}catch(e){}finally{return o;}},asyncRequest:function(_355,uri,_357,_358){var o=this.getConnectionObject();if(!o){return null;}else{if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(o.tId,_357,uri,_358);this.releaseObject(o);return;}if(_355=="GET"){if(this._sFormData.length!=0){uri+=((uri.indexOf("?")==-1)?"?":"&")+this._sFormData;}else{uri+="?"+this._sFormData;}}else{if(_355=="POST"){_358=_358?this._sFormData+"&"+_358:this._sFormData;}}}o.conn.open(_355,uri,true);if(this._isFormSubmit||(_358&&this._use_default_post_header)){this.initHeader("Content-Type",this._default_post_header);if(this._isFormSubmit){this.resetFormState();}}if(this._has_http_headers){this.setHeader(o);}this.handleReadyState(o,_357);o.conn.send(_358||null);return o;}},handleReadyState:function(o,_35b){var _35c=this;if(_35b&&_35b.timeout){this._timeOut[o.tId]=window.setTimeout(function(){_35c.abort(o,_35b,true);},_35b.timeout);}this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(_35c._poll[o.tId]);delete _35c._poll[o.tId];if(_35b&&_35b.timeout){delete _35c._timeOut[o.tId];}_35c.handleTransactionResponse(o,_35b);}},this._polling_interval);},handleTransactionResponse:function(o,_35e,_35f){if(!_35e){this.releaseObject(o);return;}var _360,responseObject;try{if(o.conn.status!==undefined&&o.conn.status!=0){_360=o.conn.status;}else{_360=13030;}}catch(e){_360=13030;}if(_360>=200&&_360<300){try{responseObject=this.createResponseObject(o,_35e.argument);if(_35e.success){if(!_35e.scope){_35e.success(responseObject);}else{_35e.success.apply(_35e.scope,[responseObject]);}}}catch(e){}}else{try{switch(_360){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,_35e.argument,(_35f?_35f:false));if(_35e.failure){if(!_35e.scope){_35e.failure(responseObject);}else{_35e.failure.apply(_35e.scope,[responseObject]);}}break;default:responseObject=this.createResponseObject(o,_35e.argument);if(_35e.failure){if(!_35e.scope){_35e.failure(responseObject);}else{_35e.failure.apply(_35e.scope,[responseObject]);}}}}catch(e){}}this.releaseObject(o);responseObject=null;},createResponseObject:function(o,_362){var obj={};var _364={};try{var _365=o.conn.getAllResponseHeaders();var _366=_365.split("\n");for(var i=0;i<_366.length;i++){var _368=_366[i].indexOf(":");if(_368!=-1){_364[_366[i].substring(0,_368)]=_366[i].substring(_368+2);}}}catch(e){}obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=_364;obj.getAllResponseHeaders=_365;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof _362!==undefined){obj.argument=_362;}return obj;},createExceptionObject:function(tId,_36a,_36b){var _36c=0;var _36d="communication failure";var _36e=-1;var _36f="transaction aborted";var obj={};obj.tId=tId;if(_36b){obj.status=_36e;obj.statusText=_36f;}else{obj.status=_36c;obj.statusText=_36d;}if(_36a){obj.argument=_36a;}return obj;},initHeader:function(_371,_372){if(this._http_header[_371]===undefined){this._http_header[_371]=_372;}else{this._http_header[_371]=_372+","+this._http_header[_371];}this._has_http_headers=true;},setHeader:function(o){for(var prop in this._http_header){if(this._http_header.hasOwnProperty(prop)){o.conn.setRequestHeader(prop,this._http_header[prop]);}}delete this._http_header;this._http_header={};this._has_http_headers=false;},setForm:function(_375,_376,_377){this.resetFormState();var _378;if(typeof _375=="string"){_378=(document.getElementById(_375)||document.forms[_375]);}else{if(typeof _375=="object"){_378=_375;}else{return;}}if(_376){this.createFrame(_377?_377:null);this._isFormSubmit=true;this._isFileUpload=true;this._formNode=_378;return;}var _379,oName,oValue,oDisabled;var _37a=false;for(var i=0;i<_378.elements.length;i++){_379=_378.elements[i];oDisabled=_378.elements[i].disabled;oName=_378.elements[i].name;oValue=_378.elements[i].value;if(!oDisabled&&oName){switch(_379.type){case "select-one":case "select-multiple":for(var j=0;j<_379.options.length;j++){if(_379.options[j].selected){if(window.ActiveXObject){this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(_379.options[j].attributes["value"].specified?_379.options[j].value:_379.options[j].text)+"&";}else{this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(_379.options[j].hasAttribute("value")?_379.options[j].value:_379.options[j].text)+"&";}}}break;case "radio":case "checkbox":if(_379.checked){this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(oValue)+"&";}break;case "file":case undefined:case "reset":case "button":break;case "submit":if(_37a==false){this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(oValue)+"&";_37a=true;}break;default:this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(oValue)+"&";break;}}}this._isFormSubmit=true;this._sFormData=this._sFormData.substr(0,this._sFormData.length-1);return this._sFormData;},resetFormState:function(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";},createFrame:function(_37d){var _37e="yuiIO"+this._transaction_id;if(window.ActiveXObject){var io=document.createElement("<iframe id=\""+_37e+"\" name=\""+_37e+"\" />");if(typeof _37d=="boolean"){io.src="javascript:false";}else{if(typeof secureURI=="string"){io.src=_37d;}}}else{var io=document.createElement("iframe");io.id=_37e;io.name=_37e;}io.style.position="absolute";io.style.top="-1000px";io.style.left="-1000px";document.body.appendChild(io);},appendPostData:function(_381){var _382=new Array();var _383=_381.split("&");for(var i=0;i<_383.length;i++){var _385=_383[i].indexOf("=");if(_385!=-1){_382[i]=document.createElement("input");_382[i].type="hidden";_382[i].name=_383[i].substring(0,_385);_382[i].value=_383[i].substring(_385+1);this._formNode.appendChild(_382[i]);}}return _382;},uploadFile:function(id,_387,uri,_389){var _38a="yuiIO"+id;var io=document.getElementById(_38a);this._formNode.action=uri;this._formNode.method="POST";this._formNode.target=_38a;if(this._formNode.encoding){this._formNode.encoding="multipart/form-data";}else{this._formNode.enctype="multipart/form-data";}if(_389){var _38c=this.appendPostData(_389);}this._formNode.submit();if(_38c&&_38c.length>0){try{for(var i=0;i<_38c.length;i++){this._formNode.removeChild(_38c[i]);}}catch(e){}}this.resetFormState();var _38e=function(){var obj={};obj.tId=id;obj.argument=_387.argument;try{obj.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;obj.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;}catch(e){}if(_387.upload){if(!_387.scope){_387.upload(obj);}else{_387.upload.apply(_387.scope,[obj]);}}if(YAHOO.util.Event){YAHOO.util.Event.removeListener(io,"load",_38e);}else{if(window.detachEvent){io.detachEvent("onload",_38e);}else{io.removeEventListener("load",_38e,false);}}setTimeout(function(){document.body.removeChild(io);},100);};if(YAHOO.util.Event){YAHOO.util.Event.addListener(io,"load",_38e);}else{if(window.attachEvent){io.attachEvent("onload",_38e);}else{io.addEventListener("load",_38e,false);}}},abort:function(o,_391,_392){if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._poll[o.tId]);delete this._poll[o.tId];if(_392){delete this._timeOut[o.tId];}this.handleTransactionResponse(o,_391,true);return true;}else{return false;}},isCallInProgress:function(o){if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;}else{return false;}},releaseObject:function(o){o.conn=null;o=null;}}; | |
| 102 | 3 | \ No newline at end of file | ... | ... |
thirdpartyjs/yui/yahoo/yahoo.js
| 1 | -/* | |
| 2 | -Copyright (c) 2006, Yahoo! Inc. All rights reserved. | |
| 3 | -Code licensed under the BSD License: | |
| 4 | -http://developer.yahoo.net/yui/license.txt | |
| 5 | -version: 0.12.0 | |
| 6 | -*/ | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * The YAHOO object is the single global object used by YUI Library. It | |
| 10 | - * contains utility function for setting up namespaces, inheritance, and | |
| 11 | - * logging. YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces | |
| 12 | - * created automatically for and used by the library. | |
| 13 | - * @module yahoo | |
| 14 | - * @title YAHOO Global | |
| 15 | - */ | |
| 16 | - | |
| 17 | -/** | |
| 18 | - * The YAHOO global namespace object | |
| 19 | - * @class YAHOO | |
| 20 | - * @static | |
| 21 | - */ | |
| 22 | -if (typeof YAHOO == "undefined") { | |
| 23 | - var YAHOO = {}; | |
| 24 | -} | |
| 25 | - | |
| 26 | -/** | |
| 27 | - * Returns the namespace specified and creates it if it doesn't exist | |
| 28 | - * <pre> | |
| 29 | - * YAHOO.namespace("property.package"); | |
| 30 | - * YAHOO.namespace("YAHOO.property.package"); | |
| 31 | - * </pre> | |
| 32 | - * Either of the above would create YAHOO.property, then | |
| 33 | - * YAHOO.property.package | |
| 34 | - * | |
| 35 | - * Be careful when naming packages. Reserved words may work in some browsers | |
| 36 | - * and not others. For instance, the following will fail in Safari: | |
| 37 | - * <pre> | |
| 38 | - * YAHOO.namespace("really.long.nested.namespace"); | |
| 39 | - * </pre> | |
| 40 | - * This fails because "long" is a future reserved word in ECMAScript | |
| 41 | - * | |
| 42 | - * @method namespace | |
| 43 | - * @static | |
| 44 | - * @param {String*} arguments 1-n namespaces to create | |
| 45 | - * @return {Object} A reference to the last namespace object created | |
| 46 | - */ | |
| 47 | -YAHOO.namespace = function() { | |
| 48 | - var a=arguments, o=null, i, j, d; | |
| 49 | - for (i=0; i<a.length; ++i) { | |
| 50 | - d=a[i].split("."); | |
| 51 | - o=YAHOO; | |
| 52 | - | |
| 53 | - // YAHOO is implied, so it is ignored if it is included | |
| 54 | - for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; ++j) { | |
| 55 | - o[d[j]]=o[d[j]] || {}; | |
| 56 | - o=o[d[j]]; | |
| 57 | - } | |
| 58 | - } | |
| 59 | - | |
| 60 | - return o; | |
| 61 | -}; | |
| 62 | - | |
| 63 | -/** | |
| 64 | - * Uses YAHOO.widget.Logger to output a log message, if the widget is available. | |
| 65 | - * | |
| 66 | - * @method log | |
| 67 | - * @static | |
| 68 | - * @param {String} msg The message to log. | |
| 69 | - * @param {String} cat The log category for the message. Default | |
| 70 | - * categories are "info", "warn", "error", time". | |
| 71 | - * Custom categories can be used as well. (opt) | |
| 72 | - * @param {String} src The source of the the message (opt) | |
| 73 | - * @return {Boolean} True if the log operation was successful. | |
| 74 | - */ | |
| 75 | -YAHOO.log = function(msg, cat, src) { | |
| 76 | - var l=YAHOO.widget.Logger; | |
| 77 | - if(l && l.log) { | |
| 78 | - return l.log(msg, cat, src); | |
| 79 | - } else { | |
| 80 | - return false; | |
| 81 | - } | |
| 82 | -}; | |
| 83 | - | |
| 84 | -/** | |
| 85 | - * Utility to set up the prototype, constructor and superclass properties to | |
| 86 | - * support an inheritance strategy that can chain constructors and methods. | |
| 87 | - * | |
| 88 | - * @method extend | |
| 89 | - * @static | |
| 90 | - * @param {Function} subc the object to modify | |
| 91 | - * @param {Function} superc the object to inherit | |
| 92 | - * @param {String[]} overrides additional properties/methods to add to the | |
| 93 | - * subclass prototype. These will override the | |
| 94 | - * matching items obtained from the superclass | |
| 95 | - * if present. | |
| 96 | - */ | |
| 97 | -YAHOO.extend = function(subc, superc, overrides) { | |
| 98 | - var F = function() {}; | |
| 99 | - F.prototype=superc.prototype; | |
| 100 | - subc.prototype=new F(); | |
| 101 | - subc.prototype.constructor=subc; | |
| 102 | - subc.superclass=superc.prototype; | |
| 103 | - if (superc.prototype.constructor == Object.prototype.constructor) { | |
| 104 | - superc.prototype.constructor=superc; | |
| 105 | - } | |
| 106 | - | |
| 107 | - if (overrides) { | |
| 108 | - for (var i in overrides) { | |
| 109 | - subc.prototype[i]=overrides[i]; | |
| 110 | - } | |
| 111 | - } | |
| 112 | -}; | |
| 113 | - | |
| 114 | -/** | |
| 115 | - * Applies all prototype properties in the supplier to the receiver if the | |
| 116 | - * receiver does not have these properties yet. Optionally, one or more | |
| 117 | - * methods/properties can be specified (as additional parameters). This | |
| 118 | - * option will overwrite the property if receiver has it already. | |
| 119 | - * | |
| 120 | - * @method augment | |
| 121 | - * @static | |
| 122 | - * @param {Function} r the object to receive the augmentation | |
| 123 | - * @param {Function} s the object that supplies the properties to augment | |
| 124 | - * @param {String*} arguments zero or more properties methods to augment the | |
| 125 | - * receiver with. If none specified, everything | |
| 126 | - * in the supplier will be used unless it would | |
| 127 | - * overwrite an existing property in the receiver | |
| 128 | - */ | |
| 129 | -YAHOO.augment = function(r, s) { | |
| 130 | - var rp=r.prototype, sp=s.prototype, a=arguments, i, p; | |
| 131 | - if (a[2]) { | |
| 132 | - for (i=2; i<a.length; ++i) { | |
| 133 | - rp[a[i]] = sp[a[i]]; | |
| 134 | - } | |
| 135 | - } else { | |
| 136 | - for (p in sp) { | |
| 137 | - if (!rp[p]) { | |
| 138 | - rp[p] = sp[p]; | |
| 139 | - } | |
| 140 | - } | |
| 141 | - } | |
| 142 | -}; | |
| 143 | - | |
| 144 | -YAHOO.namespace("util", "widget", "example"); | |
| 145 | - | |
| 1 | +if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}return o;};YAHOO.log=function(_2,_3,_4){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_2,_3,_4);}else{return false;}};YAHOO.extend=function(_6,_7,_8){var F=function(){};F.prototype=_7.prototype;_6.prototype=new F();_6.prototype.constructor=_6;_6.superclass=_7.prototype;if(_7.prototype.constructor==Object.prototype.constructor){_7.prototype.constructor=_7;}if(_8){for(var i in _8){_6.prototype[i]=_8[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example"); | |
| 146 | 2 | \ No newline at end of file | ... | ... |