Commit 295881adc9ba4832449411ed417dcbce70c76bbb

Authored by kevin_fourie
1 parent 5f3770a1

Merged in from 3.5 DEV trunk...

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/STABLE/branches/3.4.4-Release-Branch@7603 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/documentmanagement/observers.inc.php
@@ -64,9 +64,6 @@ class JavascriptObserver { @@ -64,9 +64,6 @@ class JavascriptObserver {
64 } 64 }
65 65
66 function start() { 66 function start() {
67 - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js');  
68 - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js');  
69 - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js');  
70 $this->context->oPage->requireJSResource('resources/js/add_document.js'); 67 $this->context->oPage->requireJSResource('resources/js/add_document.js');
71 $this->context->oRedirector =& $this; 68 $this->context->oRedirector =& $this;
72 $this->context->handleOutput('<div id="kt-add-document-target">&nbsp;</div>'); 69 $this->context->handleOutput('<div id="kt-add-document-target">&nbsp;</div>');
lib/templating/kt3template.inc.php
@@ -124,7 +124,7 @@ class KTPage { @@ -124,7 +124,7 @@ class KTPage {
124 $aJS[] = 'thirdpartyjs/MochiKit/MochiKitPacked.js'; 124 $aJS[] = 'thirdpartyjs/MochiKit/MochiKitPacked.js';
125 $aJS[] = 'resources/js/kt-utility.js'; 125 $aJS[] = 'resources/js/kt-utility.js';
126 $aJS[] = 'presentation/i18nJavascript.php'; 126 $aJS[] = 'presentation/i18nJavascript.php';
127 - $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners.inc.js'; 127 + $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners_lite.inc.js';
128 $aJS[] = 'resources/js/loader.js'; 128 $aJS[] = 'resources/js/loader.js';
129 $aJS[] = 'thirdpartyjs/yui/tools/tools.js'; 129 $aJS[] = 'thirdpartyjs/yui/tools/tools.js';
130 130
plugins/ktcore/admin/fieldsets/basic.inc.php
@@ -602,8 +602,6 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { @@ -602,8 +602,6 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher {
602 $renderedTree = $this->_evilTreeRenderer($fieldTree); 602 $renderedTree = $this->_evilTreeRenderer($fieldTree);
603 603
604 $this->oPage->setTitle(_kt('Edit Lookup Tree')); 604 $this->oPage->setTitle(_kt('Edit Lookup Tree'));
605 -  
606 - //$this->oPage->requireJSResource('thirdparty/js/MochiKit/Base.js');  
607 605
608 if ($current_node == 0) { $category_name = 'Root'; } 606 if ($current_node == 0) { $category_name = 'Root'; }
609 else { 607 else {
plugins/ktstandard/KTBulkExportPlugin.php
@@ -118,8 +118,6 @@ class KTBulkExportAction extends KTFolderAction { @@ -118,8 +118,6 @@ class KTBulkExportAction extends KTFolderAction {
118 exit(0); 118 exit(0);
119 } 119 }
120 120
121 - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js');  
122 - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js');  
123 $this->oPage->template = "kt3/minimal_page"; 121 $this->oPage->template = "kt3/minimal_page";
124 $this->handleOutput(""); 122 $this->handleOutput("");
125 123
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 <!-- unforunate, but (currently) necessary --> 1 <!-- unforunate, but (currently) necessary -->
8 2
9 {$context->oPage->requireJSResource('resources/js/taillog.js')} 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 {capture assign=sLocation}action=checkout_final&fDocumentId={$context->oDocument->getId()}&reason={$reason|escape:'url'}{/capture} 1 {capture assign=sLocation}action=checkout_final&fDocumentId={$context->oDocument->getId()}&reason={$reason|escape:'url'}{/capture}
7 2
8 {capture assign=sJavascript} 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 {$context->oPage->requireJSResource("resources/js/taillog.js")} 1 {$context->oPage->requireJSResource("resources/js/taillog.js")}
7 {$context->oPage->requireJSResource("resources/js/constructed_search.js")} 2 {$context->oPage->requireJSResource("resources/js/constructed_search.js")}
8 {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")} 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 {$context->oPage->requireJSResource("resources/js/taillog.js")} 1 {$context->oPage->requireJSResource("resources/js/taillog.js")}
7 {$context->oPage->requireJSResource("resources/js/constructed_search.js")} 2 {$context->oPage->requireJSResource("resources/js/constructed_search.js")}
8 {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")} 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 <!-- unforunate, but (currently) necessary --> 1 <!-- unforunate, but (currently) necessary -->
8 2
9 {$context->oPage->requireJSResource('resources/js/taillog.js')} 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
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 {$context->oPage->requireJSResource('resources/js/toggleselect.js')} 1 {$context->oPage->requireJSResource('resources/js/toggleselect.js')}
6 {$context->oPage->requireJSResource('resources/js/expungeList.js')} 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 <!-- unforunate, but (currently) necessary --> 1 <!-- unforunate, but (currently) necessary -->
8 2
9 {$context->oPage->requireJSResource('resources/js/taillog.js')} 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 {$context->oPage->requireJSResource('resources/js/taillog.js')} 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
8 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')} 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 {$context->oPage->requireJSResource('resources/js/taillog.js')} 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
8 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')} 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
9 3
templates/ktcore/folder/roles_managegroups.smarty
1 <h2>{i18n arg_rolename=$rolename}Allocate Groups to Role: #rolename#{/i18n}</h2> 1 <h2>{i18n arg_rolename=$rolename}Allocate Groups to Role: #rolename#{/i18n}</h2>
2 2
3 {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')} 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 <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> 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 <h2>{i18n}Allocate User to Role{/i18n}</h2> 1 <h2>{i18n}Allocate User to Role{/i18n}</h2>
2 2
3 {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')} 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 <p class="descriptiveText">{i18n}Add or remove users for this role. {/i18n}</p> 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,12 +7,6 @@
7 <link rel="stylesheet" type="text/css" href="{$rootUrl}/resources/css/kt-headings.css" /> 7 <link rel="stylesheet" type="text/css" href="{$rootUrl}/resources/css/kt-headings.css" />
8 <!--[if lt IE 7]><style type="text/css" media="all">@import url({$rootUrl}/resources/css/kt-ie-icons.css);</style><![endif]--> 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 <script type="text/javascript" src="{$rootUrl}/resources/js/kt-utility.js"> </script> 10 <script type="text/javascript" src="{$rootUrl}/resources/js/kt-utility.js"> </script>
17 <script type="text/javascript" src="{$rootUrl}/resources/js/toggleselect.js"> </script> 11 <script type="text/javascript" src="{$rootUrl}/resources/js/toggleselect.js"> </script>
18 <script type="text/javascript" src="{$rootUrl}/presentation/i18nJavascript.php"> </script> 12 <script type="text/javascript" src="{$rootUrl}/presentation/i18nJavascript.php"> </script>
templates/ktcore/login.smarty
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 11
12 <link rel="stylesheet" href="{$rootUrl}/resources/css/kt-ie-icons.css" type="text/css" /> 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 <script type="text/javascript" src="{$rootUrl}/resources/js/login_loader.js"> </script> 15 <script type="text/javascript" src="{$rootUrl}/resources/js/login_loader.js"> </script>
16 </head> 16 </head>
17 <body> 17 <body>
templates/ktcore/metadata/admin/edit_lookuptree.smarty
1 {$context->oPage->requireCSSResource('resources/css/kt-treewidget.css')} 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 <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> 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 {$context->oPage->requireJSResource('resources/js/taillog.js')} 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
7 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')} 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
8 3
templates/ktcore/metadata/conditional/editcomplex.smarty
@@ -35,13 +35,6 @@ @@ -35,13 +35,6 @@
35 {/capture} 35 {/capture}
36 {$context->oPage->requireCSSStandalone($sCSS)} 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 {$context->oPage->requireJSResource("resources/js/taillog.js")} 38 {$context->oPage->requireJSResource("resources/js/taillog.js")}
46 {$context->oPage->requireJSResource("resources/js/conditional_complex_edit.js")} 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,11 +46,6 @@ td { vertical-align: top; }
46 {$context->oPage->requireCSSStandalone($sCSS)} 46 {$context->oPage->requireCSSStandalone($sCSS)}
47 47
48 <!-- include the mochikit js --> 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 {$context->oPage->requireJSResource("resources/js/taillog.js")} 50 {$context->oPage->requireJSResource("resources/js/taillog.js")}
56 {$context->oPage->requireJSResource("resources/js/conditional_simple_edit.js")} 51 {$context->oPage->requireJSResource("resources/js/conditional_simple_edit.js")}
templates/ktcore/principals/groups_sourceusers.smarty
1 <h2>{i18n arg_name=$group->getName()}Manage Users in #name#{/i18n}</h2> 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 <p class="descriptiveText">{i18n}Users may be associated with Groups which are then used to grant these users security privileges.{/i18n}</p> 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 {capture assign=sJS} 1 {capture assign=sJS}
7 var innerUrl = {$rootUrl}; 2 var innerUrl = {$rootUrl};
8 {literal} 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 {$context->oPage->requireJSResource('resources/js/toggleselect.js')} 1 {$context->oPage->requireJSResource('resources/js/toggleselect.js')}
6 2
7 <form method="POST" action="{$smarty.server.PHP_SELF}"> 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,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^","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('&lt;&gt;','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=="&nbsp;"))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>&nbsp;</p><hr /><p>&nbsp;</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>&nbsp;</p>','g');html=html.replace(re,"<br />");}if(tinyMCE.settings['force_p_newlines']){var re=new RegExp('&lt;&gt;','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>&nbsp;</p>"||chk=="<p>&#160;</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>&nbsp;<\/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>&nbsp;<\/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="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore);}else{body.innerHTML="<"+blockName+">&nbsp;</"+blockName+"><"+blockName+">&nbsp;</"+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="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";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&&para.nodeName.toLowerCase()=='p'&&evt_type=="keypress"){var htm=para.innerHTML;var block=tinyMCE.getParentBlockElement(node);if(htm==""||htm=="&nbsp;"||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>&nbsp;</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 \ No newline at end of file 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,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^","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("&lt;&gt;","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=="&nbsp;")){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>&nbsp;</p><hr /><p>&nbsp;</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>&nbsp;</p>","g");_f9=_f9.replace(re,"<br />");}if(tinyMCE.settings["force_p_newlines"]){var re=new RegExp("&lt;&gt;","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>&nbsp;</p>"||chk=="<p>&#160;</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>&nbsp;</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>&nbsp;</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="&nbsp;";}if(isEmpty(_253)){_253.innerHTML="&nbsp;";}rng.deleteContents();_24a.deleteContents();_249.deleteContents();_253.normalize();_249.insertNode(_253);_252.normalize();_249.insertNode(_252);}else{body.innerHTML="<"+_248+">&nbsp;</"+_248+"><"+_248+">&nbsp;</"+_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="&nbsp;";}if(isEmpty(_253)){_253.innerHTML="&nbsp;";}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&&para.nodeName.toLowerCase()=="p"&&_25d=="keypress"){var htm=para.innerHTML;var _267=tinyMCE.getParentBlockElement(node);if(htm==""||htm=="&nbsp;"||_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>&nbsp;</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 \ No newline at end of file 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 \ No newline at end of file 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 - * &nbsp;&nbsp;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 YAHOO.util.DDM._addListeners(); 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 - * &nbsp;&nbsp;type: (string) the type of event  
1350 - * &nbsp;&nbsp;fn: (function) the callback supplied to addListener  
1351 - * &nbsp;&nbsp;obj: (object) the custom object supplied to addListener  
1352 - * &nbsp;&nbsp;adjust: (boolean) whether or not to adjust the default scope  
1353 - * &nbsp;&nbsp;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 \ No newline at end of file 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 \ No newline at end of file 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&&region.right<=this.right&&region.top>=this.top&&region.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 \ No newline at end of file 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 \ No newline at end of file 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 \ No newline at end of file 2 \ No newline at end of file