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 64 }
65 65  
66 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 67 $this->context->oPage->requireJSResource('resources/js/add_document.js');
71 68 $this->context->oRedirector =& $this;
72 69 $this->context->handleOutput('<div id="kt-add-document-target">&nbsp;</div>');
... ...
lib/templating/kt3template.inc.php
... ... @@ -124,7 +124,7 @@ class KTPage {
124 124 $aJS[] = 'thirdpartyjs/MochiKit/MochiKitPacked.js';
125 125 $aJS[] = 'resources/js/kt-utility.js';
126 126 $aJS[] = 'presentation/i18nJavascript.php';
127   - $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners.inc.js';
  127 + $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners_lite.inc.js';
128 128 $aJS[] = 'resources/js/loader.js';
129 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 602 $renderedTree = $this->_evilTreeRenderer($fieldTree);
603 603  
604 604 $this->oPage->setTitle(_kt('Edit Lookup Tree'));
605   -
606   - //$this->oPage->requireJSResource('thirdparty/js/MochiKit/Base.js');
607 605  
608 606 if ($current_node == 0) { $category_name = 'Root'; }
609 607 else {
... ...
plugins/ktstandard/KTBulkExportPlugin.php
... ... @@ -118,8 +118,6 @@ class KTBulkExportAction extends KTFolderAction {
118 118 exit(0);
119 119 }
120 120  
121   - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js');
122   - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js');
123 121 $this->oPage->template = "kt3/minimal_page";
124 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 1 <!-- unforunate, but (currently) necessary -->
8 2  
9 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
... ...
templates/ktcore/action/checkout_final.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5   -
6 1 {capture assign=sLocation}action=checkout_final&fDocumentId={$context->oDocument->getId()}&reason={$reason|escape:'url'}{/capture}
7 2  
8 3 {capture assign=sJavascript}
... ...
templates/ktcore/boolean_search_change.smarty
1   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
2   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
6 1 {$context->oPage->requireJSResource("resources/js/taillog.js")}
7 2 {$context->oPage->requireJSResource("resources/js/constructed_search.js")}
8 3 {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")}
... ...
templates/ktcore/boolean_search_edit.smarty
1   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
2   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
6 1 {$context->oPage->requireJSResource("resources/js/taillog.js")}
7 2 {$context->oPage->requireJSResource("resources/js/constructed_search.js")}
8 3 {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")}
... ...
templates/ktcore/document/add.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 <!-- unforunate, but (currently) necessary -->
8 2  
9 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
... ...
templates/ktcore/document/admin/deletedlist.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
4   -
5 1 {$context->oPage->requireJSResource('resources/js/toggleselect.js')}
6 2 {$context->oPage->requireJSResource('resources/js/expungeList.js')}
7 3  
... ...
templates/ktcore/document/edit.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 <!-- unforunate, but (currently) necessary -->
8 2  
9 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
... ...
templates/ktcore/folder/bulkImport.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
8 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
9 3  
... ...
templates/ktcore/folder/bulkUpload.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
8 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
9 3  
... ...
templates/ktcore/folder/roles_managegroups.smarty
1 1 <h2>{i18n arg_rolename=$rolename}Allocate Groups to Role: #rolename#{/i18n}</h2>
2 2  
3 3 {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
6   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
7 4  
8 5 <p class="descriptiveText">{i18n}Groups must be allocated to roles to ensure that the workflow transition this role is supposed to support can be acted upon by a user.{/i18n}</p>
9 6  
... ...
templates/ktcore/folder/roles_manageusers.smarty
1 1 <h2>{i18n}Allocate User to Role{/i18n}</h2>
2 2  
3 3 {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
6   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
7 4  
8 5 <p class="descriptiveText">{i18n}Add or remove users for this role. {/i18n}</p>
9 6  
... ...
templates/ktcore/forms/widgets/collection.smarty
... ... @@ -7,12 +7,6 @@
7 7 <link rel="stylesheet" type="text/css" href="{$rootUrl}/resources/css/kt-headings.css" />
8 8 <!--[if lt IE 7]><style type="text/css" media="all">@import url({$rootUrl}/resources/css/kt-ie-icons.css);</style><![endif]-->
9 9  
10   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Base.js"> </script>
11   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Iter.js"> </script>
12   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/DOM.js"> </script>
13   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Logging.js"> </script>
14   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Async.js"> </script>
15   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Signal.js"> </script>
16 10 <script type="text/javascript" src="{$rootUrl}/resources/js/kt-utility.js"> </script>
17 11 <script type="text/javascript" src="{$rootUrl}/resources/js/toggleselect.js"> </script>
18 12 <script type="text/javascript" src="{$rootUrl}/presentation/i18nJavascript.php"> </script>
... ...
templates/ktcore/login.smarty
... ... @@ -11,7 +11,7 @@
11 11  
12 12 <link rel="stylesheet" href="{$rootUrl}/resources/css/kt-ie-icons.css" type="text/css" />
13 13  
14   - <script type="text/javascript" src="{$rootUrl}/thirdpartyjs/curvycorners/rounded_corners.inc.js"> </script>
  14 + <script type="text/javascript" src="{$rootUrl}/thirdpartyjs/curvycorners/rounded_corners_lite.inc.js"> </script>
15 15 <script type="text/javascript" src="{$rootUrl}/resources/js/login_loader.js"> </script>
16 16 </head>
17 17 <body>
... ...
templates/ktcore/metadata/admin/edit_lookuptree.smarty
1 1 {$context->oPage->requireCSSResource('resources/css/kt-treewidget.css')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5 2  
6 3 <h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Lookup Tree{/i18n}:<br />{$field->getName()}</h2>
7 4  
... ...
templates/ktcore/metadata/conditional/conditional_overview.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
7 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
8 3  
... ...
templates/ktcore/metadata/conditional/editcomplex.smarty
... ... @@ -35,13 +35,6 @@
35 35 {/capture}
36 36 {$context->oPage->requireCSSStandalone($sCSS)}
37 37  
38   -<!-- include the mochikit js -->
39   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
40   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
41   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
42   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
43   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
44   -
45 38 {$context->oPage->requireJSResource("resources/js/taillog.js")}
46 39 {$context->oPage->requireJSResource("resources/js/conditional_complex_edit.js")}
47 40  
... ...
templates/ktcore/metadata/conditional/editsimple.smarty
... ... @@ -46,11 +46,6 @@ td { vertical-align: top; }
46 46 {$context->oPage->requireCSSStandalone($sCSS)}
47 47  
48 48 <!-- include the mochikit js -->
49   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
50   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
51   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
52   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
53   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
54 49  
55 50 {$context->oPage->requireJSResource("resources/js/taillog.js")}
56 51 {$context->oPage->requireJSResource("resources/js/conditional_simple_edit.js")}
... ...
templates/ktcore/principals/groups_sourceusers.smarty
1 1 <h2>{i18n arg_name=$group->getName()}Manage Users in #name#{/i18n}</h2>
2 2  
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 3 <p class="descriptiveText">{i18n}Users may be associated with Groups which are then used to grant these users security privileges.{/i18n}</p>
8 4  
9 5  
... ...
templates/ktcore/widget_fieldset_conditional.smarty
1   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
2   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
5   -
6 1 {capture assign=sJS}
7 2 var innerUrl = {$rootUrl};
8 3 {literal}
... ...
templates/ktstandard/authentication/ldapsearchuser.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
4   -
5 1 {$context->oPage->requireJSResource('resources/js/toggleselect.js')}
6 2  
7 3 <form method="POST" action="{$smarty.server.PHP_SELF}">
... ...
thirdpartyjs/tinymce/jscripts/tiny_mce/tiny_mce.js
1   -/**
2   - * $RCSfile$
3   - * $Revision$
4   - * $Date$
5   - *
6   - * @author Moxiecode
7   - * @copyright Copyright ยฉ 2004, Moxiecode Systems AB, All rights reserved.
8   - */
9   - function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.dialogCounter=0;this.idCounter=0;};TinyMCE.prototype.defParam=function(key,def_val){this.settings[key]=tinyMCE.getParam(key,def_val);};TinyMCE.prototype.init=function(settings){var theme;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip.php")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1)?'_src':'';src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.defParam("mode","none");this.defParam("theme","advanced");this.defParam("plugins","",true);this.defParam("language","en");this.defParam("docs_language",this.settings['language']);this.defParam("elements","");this.defParam("textarea_trigger","mce_editable");this.defParam("valid_elements","+a[name|href|target|title|class],strong/b[class],em/i[class],strike[class],u[class],+p[dir|class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],div[dir|class|align],span[class|align],pre[class|align],address[class|align],h1[dir|class|align],h2[dir|class|align],h3[dir|class|align],h4[dir|class|align],h5[dir|class|align],h6[dir|class|align],hr");this.defParam("extended_valid_elements","");this.defParam("invalid_elements","");this.defParam("encoding","");this.defParam("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE.prototype.convertURL"));this.defParam("save_callback","");this.defParam("debug",false);this.defParam("force_br_newlines",false);this.defParam("force_p_newlines",true);this.defParam("add_form_submit_trigger",true);this.defParam("relative_urls",true);this.defParam("remove_script_host",true);this.defParam("focus_alert",true);this.defParam("document_base_url",this.documentURL);this.defParam("visual",true);this.defParam("visual_table_class","mceVisualAid");this.defParam("setupcontent_callback","");this.defParam("fix_content_duplication",true);this.defParam("custom_undo_redo",true);this.defParam("custom_undo_redo_levels",-1);this.defParam("custom_undo_redo_keyboard_shortcuts",true);this.defParam("verify_css_classes",false);this.defParam("trim_span_elements",true);this.defParam("verify_html",true);this.defParam("apply_source_formatting",false);this.defParam("directionality","ltr");this.defParam("auto_cleanup_word",false);this.defParam("cleanup_on_startup",false);this.defParam("inline_styles",false);this.defParam("convert_newlines_to_brs",false);this.defParam("auto_reset_designmode",false);this.defParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,202,Ecirc,203,Euml,204,Igrave,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,217,Ugrave,219,Ucirc,220,Uuml,376,Yuml,222,THORN,224,agrave,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,234,ecirc,235,euml,236,igrave,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,249,ugrave,251,ucirc,252,uuml,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy,233,eacute");this.defParam("entity_encoding","named");this.defParam("cleanup_callback","");this.defParam("add_unload_trigger",true);this.defParam("ask",false);this.defParam("nowrap",false);this.defParam("auto_resize",false);this.defParam("auto_focus",false);this.defParam("cleanup",true);this.defParam("remove_linebreaks",true);this.defParam("button_tile_map",false);this.defParam("submit_patch",true);this.defParam("browsers","msie,safari,gecko");this.defParam("dialog_type","window");if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;var baseHREF=tinyMCE.settings['document_base_url'];if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.blockRegExp=new RegExp("^(h1|h2|h3|h4|h5|h6|p|div|address|pre|form|table|li|ol|ul|td)$","i");this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else this.settings['content_css']=cssPath;}else this.settings['content_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_content.css";if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath;}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath;}else this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_ui.css";if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg);}this._initCleanup();if(this.configs.length==0){if(this.isSafari)alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.");tinyMCE.addEvent(window,"load",TinyMCE.prototype.onLoad);if(tinyMCE.isMSIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE.prototype.unloadHandler);}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i<themePlugins.length;i++)this.loadScript(tinyMCE.baseURL+'/plugins/'+themePlugins[i]+'/editor_plugin'+tinyMCE.srcMode+'.js');}settings['index']=this.configs.length;this.configs[this.configs.length]=settings;};TinyMCE.prototype.loadScript=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.loadCSS=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<link href="'+url+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.importCSS=function(doc,css_file){if(tinyMCE.isMSIE)var styleSheet=doc.createStyleSheet(css_file);else{var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if(headArr=doc.getElementsByTagName("head"))headArr[0].appendChild(elm);}};TinyMCE.prototype.confirmAdd=function(e,settings){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true');};TinyMCE.prototype.updateContent=function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isMSIE)doc.body.innerHTML=tinyMCE._cleanupHTML(doc,this.settings,doc.body,inst.visualAid);}}};TinyMCE.prototype.addMCEControl=function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCEControl(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst.onAdd(replace_element,form_element_name,target_document);};TinyMCE.prototype.triggerSave=function(skip_cleanup,skip_callback){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(inst.getDoc(),inst.getBody().innerHTML);var htm=skip_cleanup?inst.getBody().innerHTML:tinyMCE._cleanupHTML(inst.getDoc(),this.settings,inst.getBody(),this.visualAid,true);if(tinyMCE.settings["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")htm=tinyMCE.convertStringToXML(htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(inst.formTargetElementId,htm,inst.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"&#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 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 3 \ No newline at end of file
... ...
thirdpartyjs/yui/dom/dom.js
1   -/*
2   -Copyright (c) 2006, Yahoo! Inc. All rights reserved.
3   -Code licensed under the BSD License:
4   -http://developer.yahoo.net/yui/license.txt
5   -version: 0.12.0
6   -*/
7   -
8   -/**
9   - * The dom module provides helper methods for manipulating Dom elements.
10   - * @module dom
11   - *
12   - */
13   -
14   -(function() {
15   - var Y = YAHOO.util, // internal shorthand
16   - getStyle, // for load time browser branching
17   - setStyle, // ditto
18   - id_counter = 0, // for use with generateId
19   - propertyCache = {}; // for faster hyphen converts
20   -
21   - // brower detection
22   - var ua = navigator.userAgent.toLowerCase(),
23   - isOpera = (ua.indexOf('opera') > -1),
24   - isSafari = (ua.indexOf('safari') > -1),
25   - isGecko = (!isOpera && !isSafari && ua.indexOf('gecko') > -1),
26   - isIE = (!isOpera && ua.indexOf('msie') > -1);
27   -
28   - // regex cache
29   - var patterns = {
30   - HYPHEN: /(-[a-z])/i
31   - };
32   -
33   -
34   - var toCamel = function(property) {
35   - if ( !patterns.HYPHEN.test(property) ) {
36   - return property; // no hyphens
37   - }
38   -
39   - if (propertyCache[property]) { // already converted
40   - return propertyCache[property];
41   - }
42   -
43   - while( patterns.HYPHEN.exec(property) ) {
44   - property = property.replace(RegExp.$1,
45   - RegExp.$1.substr(1).toUpperCase());
46   - }
47   -
48   - propertyCache[property] = property;
49   - return property;
50   - //return property.replace(/-([a-z])/gi, function(m0, m1) {return m1.toUpperCase()}) // cant use function as 2nd arg yet due to safari bug
51   - };
52   -
53   - // branching at load instead of runtime
54   - if (document.defaultView && document.defaultView.getComputedStyle) { // W3C DOM method
55   - getStyle = function(el, property) {
56   - var value = null;
57   -
58   - var computed = document.defaultView.getComputedStyle(el, '');
59   - if (computed) { // test computed before touching for safari
60   - value = computed[toCamel(property)];
61   - }
62   -
63   - return el.style[property] || value;
64   - };
65   - } else if (document.documentElement.currentStyle && isIE) { // IE method
66   - getStyle = function(el, property) {
67   - switch( toCamel(property) ) {
68   - case 'opacity' :// IE opacity uses filter
69   - var val = 100;
70   - try { // will error if no DXImageTransform
71   - val = el.filters['DXImageTransform.Microsoft.Alpha'].opacity;
72   -
73   - } catch(e) {
74   - try { // make sure its in the document
75   - val = el.filters('alpha').opacity;
76   - } catch(e) {
77   - }
78   - }
79   - return val / 100;
80   - break;
81   - default:
82   - // test currentStyle before touching
83   - var value = el.currentStyle ? el.currentStyle[property] : null;
84   - return ( el.style[property] || value );
85   - }
86   - };
87   - } else { // default to inline only
88   - getStyle = function(el, property) { return el.style[property]; };
89   - }
90   -
91   - if (isIE) {
92   - setStyle = function(el, property, val) {
93   - switch (property) {
94   - case 'opacity':
95   - if ( typeof el.style.filter == 'string' ) { // in case not appended
96   - el.style.filter = 'alpha(opacity=' + val * 100 + ')';
97   -
98   - if (!el.currentStyle || !el.currentStyle.hasLayout) {
99   - el.style.zoom = 1; // when no layout or cant tell
100   - }
101   - }
102   - break;
103   - default:
104   - el.style[property] = val;
105   - }
106   - };
107   - } else {
108   - setStyle = function(el, property, val) {
109   - el.style[property] = val;
110   - };
111   - }
112   -
113   - /**
114   - * Provides helper methods for DOM elements.
115   - * @namespace YAHOO.util
116   - * @class Dom
117   - */
118   - YAHOO.util.Dom = {
119   - /**
120   - * Returns an HTMLElement reference.
121   - * @method get
122   - * @param {String | HTMLElement |Array} el Accepts a string to use as an ID for getting a DOM reference, an actual DOM reference, or an Array of IDs and/or HTMLElements.
123   - * @return {HTMLElement | Array} A DOM reference to an HTML element or an array of HTMLElements.
124   - */
125   - get: function(el) {
126   - if (!el) { return null; } // nothing to work with
127   -
128   - if (typeof el != 'string' && !(el instanceof Array) ) { // assuming HTMLElement or HTMLCollection, so pass back as is
129   - return el;
130   - }
131   -
132   - if (typeof el == 'string') { // ID
133   - return document.getElementById(el);
134   - }
135   - else { // array of ID's and/or elements
136   - var collection = [];
137   - for (var i = 0, len = el.length; i < len; ++i) {
138   - collection[collection.length] = Y.Dom.get(el[i]);
139   - }
140   -
141   - return collection;
142   - }
143   -
144   - return null; // safety, should never happen
145   - },
146   -
147   - /**
148   - * Normalizes currentStyle and ComputedStyle.
149   - * @method getStyle
150   - * @param {String | HTMLElement |Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
151   - * @param {String} property The style property whose value is returned.
152   - * @return {String | Array} The current value of the style property for the element(s).
153   - */
154   - getStyle: function(el, property) {
155   - property = toCamel(property);
156   -
157   - var f = function(element) {
158   - return getStyle(element, property);
159   - };
160   -
161   - return Y.Dom.batch(el, f, Y.Dom, true);
162   - },
163   -
164   - /**
165   - * Wrapper for setting style properties of HTMLElements. Normalizes "opacity" across modern browsers.
166   - * @method setStyle
167   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
168   - * @param {String} property The style property to be set.
169   - * @param {String} val The value to apply to the given property.
170   - */
171   - setStyle: function(el, property, val) {
172   - property = toCamel(property);
173   -
174   - var f = function(element) {
175   - setStyle(element, property, val);
176   -
177   - };
178   -
179   - Y.Dom.batch(el, f, Y.Dom, true);
180   - },
181   -
182   - /**
183   - * Gets the current position of an element based on page coordinates. Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
184   - * @method getXY
185   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
186   - * @return {Array} The XY position of the element(s)
187   - */
188   - getXY: function(el) {
189   - var f = function(el) {
190   -
191   - // has to be part of document to have pageXY
192   - if (el.parentNode === null || el.offsetParent === null ||
193   - this.getStyle(el, 'display') == 'none') {
194   - return false;
195   - }
196   -
197   - var parentNode = null;
198   - var pos = [];
199   - var box;
200   -
201   - if (el.getBoundingClientRect) { // IE
202   - box = el.getBoundingClientRect();
203   - var doc = document;
204   - if ( !this.inDocument(el) && parent.document != document) {// might be in a frame, need to get its scroll
205   - doc = parent.document;
206   -
207   - if ( !this.isAncestor(doc.documentElement, el) ) {
208   - return false;
209   - }
210   -
211   - }
212   -
213   - var scrollTop = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);
214   - var scrollLeft = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
215   -
216   - return [box.left + scrollLeft, box.top + scrollTop];
217   - }
218   - else { // safari, opera, & gecko
219   - pos = [el.offsetLeft, el.offsetTop];
220   - parentNode = el.offsetParent;
221   - if (parentNode != el) {
222   - while (parentNode) {
223   - pos[0] += parentNode.offsetLeft;
224   - pos[1] += parentNode.offsetTop;
225   - parentNode = parentNode.offsetParent;
226   - }
227   - }
228   - if (isSafari && this.getStyle(el, 'position') == 'absolute' ) { // safari doubles in some cases
229   - pos[0] -= document.body.offsetLeft;
230   - pos[1] -= document.body.offsetTop;
231   - }
232   - }
233   -
234   - if (el.parentNode) { parentNode = el.parentNode; }
235   - else { parentNode = null; }
236   -
237   - while (parentNode && parentNode.tagName.toUpperCase() != 'BODY' && parentNode.tagName.toUpperCase() != 'HTML')
238   - { // account for any scrolled ancestors
239   - if (Y.Dom.getStyle(parentNode, 'display') != 'inline') { // work around opera inline scrollLeft/Top bug
240   - pos[0] -= parentNode.scrollLeft;
241   - pos[1] -= parentNode.scrollTop;
242   - }
243   -
244   - if (parentNode.parentNode) {
245   - parentNode = parentNode.parentNode;
246   - } else { parentNode = null; }
247   - }
248   -
249   -
250   - return pos;
251   - };
252   -
253   - return Y.Dom.batch(el, f, Y.Dom, true);
254   - },
255   -
256   - /**
257   - * Gets the current X position of an element based on page coordinates. The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
258   - * @method getX
259   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
260   - * @return {String | Array} The X position of the element(s)
261   - */
262   - getX: function(el) {
263   - var f = function(el) {
264   - return Y.Dom.getXY(el)[0];
265   - };
266   -
267   - return Y.Dom.batch(el, f, Y.Dom, true);
268   - },
269   -
270   - /**
271   - * Gets the current Y position of an element based on page coordinates. Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
272   - * @method getY
273   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
274   - * @return {String | Array} The Y position of the element(s)
275   - */
276   - getY: function(el) {
277   - var f = function(el) {
278   - return Y.Dom.getXY(el)[1];
279   - };
280   -
281   - return Y.Dom.batch(el, f, Y.Dom, true);
282   - },
283   -
284   - /**
285   - * Set the position of an html element in page coordinates, regardless of how the element is positioned.
286   - * The element(s) must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
287   - * @method setXY
288   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
289   - * @param {Array} pos Contains X & Y values for new position (coordinates are page-based)
290   - * @param {Boolean} noRetry By default we try and set the position a second time if the first fails
291   - */
292   - setXY: function(el, pos, noRetry) {
293   - var f = function(el) {
294   - var style_pos = this.getStyle(el, 'position');
295   - if (style_pos == 'static') { // default to relative
296   - this.setStyle(el, 'position', 'relative');
297   - style_pos = 'relative';
298   - }
299   -
300   - var pageXY = this.getXY(el);
301   - if (pageXY === false) { // has to be part of doc to have pageXY
302   - return false;
303   - }
304   -
305   - var delta = [ // assuming pixels; if not we will have to retry
306   - parseInt( this.getStyle(el, 'left'), 10 ),
307   - parseInt( this.getStyle(el, 'top'), 10 )
308   - ];
309   -
310   - if ( isNaN(delta[0]) ) {// in case of 'auto'
311   - delta[0] = (style_pos == 'relative') ? 0 : el.offsetLeft;
312   - }
313   - if ( isNaN(delta[1]) ) { // in case of 'auto'
314   - delta[1] = (style_pos == 'relative') ? 0 : el.offsetTop;
315   - }
316   -
317   - if (pos[0] !== null) { el.style.left = pos[0] - pageXY[0] + delta[0] + 'px'; }
318   - if (pos[1] !== null) { el.style.top = pos[1] - pageXY[1] + delta[1] + 'px'; }
319   -
320   - var newXY = this.getXY(el);
321   -
322   - // if retry is true, try one more time if we miss
323   - if (!noRetry && (newXY[0] != pos[0] || newXY[1] != pos[1]) ) {
324   - this.setXY(el, pos, true);
325   - }
326   -
327   - };
328   -
329   - Y.Dom.batch(el, f, Y.Dom, true);
330   - },
331   -
332   - /**
333   - * Set the X position of an html element in page coordinates, regardless of how the element is positioned.
334   - * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
335   - * @method setX
336   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
337   - * @param {Int} x The value to use as the X coordinate for the element(s).
338   - */
339   - setX: function(el, x) {
340   - Y.Dom.setXY(el, [x, null]);
341   - },
342   -
343   - /**
344   - * Set the Y position of an html element in page coordinates, regardless of how the element is positioned.
345   - * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
346   - * @method setY
347   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
348   - * @param {Int} x To use as the Y coordinate for the element(s).
349   - */
350   - setY: function(el, y) {
351   - Y.Dom.setXY(el, [null, y]);
352   - },
353   -
354   - /**
355   - * Returns the region position of the given element.
356   - * The element must be part of the DOM tree to have a region (display:none or elements not appended return false).
357   - * @method getRegion
358   - * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
359   - * @return {Region | Array} A Region or array of Region instances containing "top, left, bottom, right" member data.
360   - */
361   - getRegion: function(el) {
362   - var f = function(el) {
363   - var region = new Y.Region.getRegion(el);
364   - return region;
365   - };
366   -
367   - return Y.Dom.batch(el, f, Y.Dom, true);
368   - },
369   -
370   - /**
371   - * Returns the width of the client (viewport).
372   - * @method getClientWidth
373   - * @deprecated Now using getViewportWidth. This interface left intact for back compat.
374   - * @return {Int} The width of the viewable area of the page.
375   - */
376   - getClientWidth: function() {
377   - return Y.Dom.getViewportWidth();
378   - },
379   -
380   - /**
381   - * Returns the height of the client (viewport).
382   - * @method getClientHeight
383   - * @deprecated Now using getViewportHeight. This interface left intact for back compat.
384   - * @return {Int} The height of the viewable area of the page.
385   - */
386   - getClientHeight: function() {
387   - return Y.Dom.getViewportHeight();
388   - },
389   -
390   - /**
391   - * Returns a array of HTMLElements with the given class.
392   - * For optimized performance, include a tag and/or root node when possible.
393   - * @method getElementsByClassName
394   - * @param {String} className The class name to match against
395   - * @param {String} tag (optional) The tag name of the elements being collected
396   - * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point
397   - * @return {Array} An array of elements that have the given class name
398   - */
399   - getElementsByClassName: function(className, tag, root) {
400   - var method = function(el) { return Y.Dom.hasClass(el, className); };
401   - return Y.Dom.getElementsBy(method, tag, root);
402   - },
403   -
404   - /**
405   - * Determines whether an HTMLElement has the given className.
406   - * @method hasClass
407   - * @param {String | HTMLElement | Array} el The element or collection to test
408   - * @param {String} className the class name to search for
409   - * @return {Boolean | Array} A boolean value or array of boolean values
410   - */
411   - hasClass: function(el, className) {
412   - var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)');
413   -
414   - var f = function(el) {
415   - return re.test(el['className']);
416   - };
417   -
418   - return Y.Dom.batch(el, f, Y.Dom, true);
419   - },
420   -
421   - /**
422   - * Adds a class name to a given element or collection of elements.
423   - * @method addClass
424   - * @param {String | HTMLElement | Array} el The element or collection to add the class to
425   - * @param {String} className the class name to add to the class attribute
426   - */
427   - addClass: function(el, className) {
428   - var f = function(el) {
429   - if (this.hasClass(el, className)) { return; } // already present
430   -
431   -
432   - el['className'] = [el['className'], className].join(' ');
433   - };
434   -
435   - Y.Dom.batch(el, f, Y.Dom, true);
436   - },
437   -
438   - /**
439   - * Removes a class name from a given element or collection of elements.
440   - * @method removeClass
441   - * @param {String | HTMLElement | Array} el The element or collection to remove the class from
442   - * @param {String} className the class name to remove from the class attribute
443   - */
444   - removeClass: function(el, className) {
445   - var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', 'g');
446   -
447   - var f = function(el) {
448   - if (!this.hasClass(el, className)) { return; } // not present
449   -
450   -
451   - var c = el['className'];
452   - el['className'] = c.replace(re, ' ');
453   - if ( this.hasClass(el, className) ) { // in case of multiple adjacent
454   - this.removeClass(el, className);
455   - }
456   -
457   - };
458   -
459   - Y.Dom.batch(el, f, Y.Dom, true);
460   - },
461   -
462   - /**
463   - * Replace a class with another class for a given element or collection of elements.
464   - * If no oldClassName is present, the newClassName is simply added.
465   - * @method replaceClass
466   - * @param {String | HTMLElement | Array} el The element or collection to remove the class from
467   - * @param {String} oldClassName the class name to be replaced
468   - * @param {String} newClassName the class name that will be replacing the old class name
469   - */
470   - replaceClass: function(el, oldClassName, newClassName) {
471   - if (oldClassName === newClassName) { // avoid infinite loop
472   - return false;
473   - }
474   -
475   - var re = new RegExp('(?:^|\\s+)' + oldClassName + '(?:\\s+|$)', 'g');
476   -
477   - var f = function(el) {
478   -
479   - if ( !this.hasClass(el, oldClassName) ) {
480   - this.addClass(el, newClassName); // just add it if nothing to replace
481   - return; // note return
482   - }
483   -
484   - el['className'] = el['className'].replace(re, ' ' + newClassName + ' ');
485   -
486   - if ( this.hasClass(el, oldClassName) ) { // in case of multiple adjacent
487   - this.replaceClass(el, oldClassName, newClassName);
488   - }
489   - };
490   -
491   - Y.Dom.batch(el, f, Y.Dom, true);
492   - },
493   -
494   - /**
495   - * Generates a unique ID
496   - * @method generateId
497   - * @param {String | HTMLElement | Array} el (optional) An optional element array of elements to add an ID to (no ID is added if one is already present).
498   - * @param {String} prefix (optional) an optional prefix to use (defaults to "yui-gen").
499   - * @return {String | Array} The generated ID, or array of generated IDs (or original ID if already present on an element)
500   - */
501   - generateId: function(el, prefix) {
502   - prefix = prefix || 'yui-gen';
503   - el = el || {};
504   -
505   - var f = function(el) {
506   - if (el) {
507   - el = Y.Dom.get(el);
508   - } else {
509   - el = {}; // just generating ID in this case
510   - }
511   -
512   - if (!el.id) {
513   - el.id = prefix + id_counter++;
514   - } // dont override existing
515   -
516   -
517   - return el.id;
518   - };
519   -
520   - return Y.Dom.batch(el, f, Y.Dom, true);
521   - },
522   -
523   - /**
524   - * Determines whether an HTMLElement is an ancestor of another HTML element in the DOM hierarchy.
525   - * @method isAncestor
526   - * @param {String | HTMLElement} haystack The possible ancestor
527   - * @param {String | HTMLElement} needle The possible descendent
528   - * @return {Boolean} Whether or not the haystack is an ancestor of needle
529   - */
530   - isAncestor: function(haystack, needle) {
531   - haystack = Y.Dom.get(haystack);
532   - if (!haystack || !needle) { return false; }
533   -
534   - var f = function(needle) {
535   - if (haystack.contains && !isSafari) { // safari "contains" is broken
536   - return haystack.contains(needle);
537   - }
538   - else if ( haystack.compareDocumentPosition ) {
539   - return !!(haystack.compareDocumentPosition(needle) & 16);
540   - }
541   - else { // loop up and test each parent
542   - var parent = needle.parentNode;
543   -
544   - while (parent) {
545   - if (parent == haystack) {
546   - return true;
547   - }
548   - else if (!parent.tagName || parent.tagName.toUpperCase() == 'HTML') {
549   - return false;
550   - }
551   -
552   - parent = parent.parentNode;
553   - }
554   - return false;
555   - }
556   - };
557   -
558   - return Y.Dom.batch(needle, f, Y.Dom, true);
559   - },
560   -
561   - /**
562   - * Determines whether an HTMLElement is present in the current document.
563   - * @method inDocument
564   - * @param {String | HTMLElement} el The element to search for
565   - * @return {Boolean} Whether or not the element is present in the current document
566   - */
567   - inDocument: function(el) {
568   - var f = function(el) {
569   - return this.isAncestor(document.documentElement, el);
570   - };
571   -
572   - return Y.Dom.batch(el, f, Y.Dom, true);
573   - },
574   -
575   - /**
576   - * Returns a array of HTMLElements that pass the test applied by supplied boolean method.
577   - * For optimized performance, include a tag and/or root node when possible.
578   - * @method getElementsBy
579   - * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
580   -
581   - * @param {String} tag (optional) The tag name of the elements being collected
582   - * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point
583   - */
584   - getElementsBy: function(method, tag, root) {
585   - tag = tag || '*';
586   - root = Y.Dom.get(root) || document;
587   -
588   - var nodes = [];
589   - var elements = root.getElementsByTagName(tag);
590   -
591   - if ( !elements.length && (tag == '*' && root.all) ) {
592   - elements = root.all; // IE < 6
593   - }
594   -
595   - for (var i = 0, len = elements.length; i < len; ++i) {
596   - if ( method(elements[i]) ) { nodes[nodes.length] = elements[i]; }
597   - }
598   -
599   -
600   - return nodes;
601   - },
602   -
603   - /**
604   - * Returns an array of elements that have had the supplied method applied.
605   - * The method is called with the element(s) as the first arg, and the optional param as the second ( method(el, o) ).
606   - * @method batch
607   - * @param {String | HTMLElement | Array} el (optional) An element or array of elements to apply the method to
608   - * @param {Function} method The method to apply to the element(s)
609   - * @param {Any} o (optional) An optional arg that is passed to the supplied method
610   - * @param {Boolean} override (optional) Whether or not to override the scope of "method" with "o"
611   - * @return {HTMLElement | Array} The element(s) with the method applied
612   - */
613   - batch: function(el, method, o, override) {
614   - var id = el;
615   - el = Y.Dom.get(el);
616   -
617   - var scope = (override) ? o : window;
618   -
619   - if (!el || el.tagName || !el.length) { // is null or not a collection (tagName for SELECT and others that can be both an element and a collection)
620   - if (!el) {
621   - return false;
622   - }
623   - return method.call(scope, el, o);
624   - }
625   -
626   - var collection = [];
627   -
628   - for (var i = 0, len = el.length; i < len; ++i) {
629   - if (!el[i]) {
630   - id = el[i];
631   - }
632   - collection[collection.length] = method.call(scope, el[i], o);
633   - }
634   -
635   - return collection;
636   - },
637   -
638   - /**
639   - * Returns the height of the document.
640   - * @method getDocumentHeight
641   - * @return {Int} The height of the actual document (which includes the body and its margin).
642   - */
643   - getDocumentHeight: function() {
644   - var scrollHeight = (document.compatMode != 'CSS1Compat') ? document.body.scrollHeight : document.documentElement.scrollHeight;
645   -
646   - var h = Math.max(scrollHeight, Y.Dom.getViewportHeight());
647   - return h;
648   - },
649   -
650   - /**
651   - * Returns the width of the document.
652   - * @method getDocumentWidth
653   - * @return {Int} The width of the actual document (which includes the body and its margin).
654   - */
655   - getDocumentWidth: function() {
656   - var scrollWidth = (document.compatMode != 'CSS1Compat') ? document.body.scrollWidth : document.documentElement.scrollWidth;
657   - var w = Math.max(scrollWidth, Y.Dom.getViewportWidth());
658   - return w;
659   - },
660   -
661   - /**
662   - * Returns the current height of the viewport.
663   - * @method getViewportHeight
664   - * @return {Int} The height of the viewable area of the page (excludes scrollbars).
665   - */
666   - getViewportHeight: function() {
667   - var height = self.innerHeight; // Safari, Opera
668   - var mode = document.compatMode;
669   -
670   - if ( (mode || isIE) && !isOpera ) { // IE, Gecko
671   - height = (mode == 'CSS1Compat') ?
672   - document.documentElement.clientHeight : // Standards
673   - document.body.clientHeight; // Quirks
674   - }
675   -
676   - return height;
677   - },
678   -
679   - /**
680   - * Returns the current width of the viewport.
681   - * @method getViewportWidth
682   - * @return {Int} The width of the viewable area of the page (excludes scrollbars).
683   - */
684   -
685   - getViewportWidth: function() {
686   - var width = self.innerWidth; // Safari
687   - var mode = document.compatMode;
688   -
689   - if (mode || isIE) { // IE, Gecko, Opera
690   - width = (mode == 'CSS1Compat') ?
691   - document.documentElement.clientWidth : // Standards
692   - document.body.clientWidth; // Quirks
693   - }
694   - return width;
695   - }
696   - };
697   -})();
698   -/**
699   - * A region is a representation of an object on a grid. It is defined
700   - * by the top, right, bottom, left extents, so is rectangular by default. If
701   - * other shapes are required, this class could be extended to support it.
702   - * @namespace YAHOO.util
703   - * @class Region
704   - * @param {Int} t the top extent
705   - * @param {Int} r the right extent
706   - * @param {Int} b the bottom extent
707   - * @param {Int} l the left extent
708   - * @constructor
709   - */
710   -YAHOO.util.Region = function(t, r, b, l) {
711   -
712   - /**
713   - * The region's top extent
714   - * @property top
715   - * @type Int
716   - */
717   - this.top = t;
718   -
719   - /**
720   - * The region's top extent as index, for symmetry with set/getXY
721   - * @property 1
722   - * @type Int
723   - */
724   - this[1] = t;
725   -
726   - /**
727   - * The region's right extent
728   - * @property right
729   - * @type int
730   - */
731   - this.right = r;
732   -
733   - /**
734   - * The region's bottom extent
735   - * @property bottom
736   - * @type Int
737   - */
738   - this.bottom = b;
739   -
740   - /**
741   - * The region's left extent
742   - * @property left
743   - * @type Int
744   - */
745   - this.left = l;
746   -
747   - /**
748   - * The region's left extent as index, for symmetry with set/getXY
749   - * @property 0
750   - * @type Int
751   - */
752   - this[0] = l;
753   -};
754   -
755   -/**
756   - * Returns true if this region contains the region passed in
757   - * @method contains
758   - * @param {Region} region The region to evaluate
759   - * @return {Boolean} True if the region is contained with this region,
760   - * else false
761   - */
762   -YAHOO.util.Region.prototype.contains = function(region) {
763   - return ( region.left >= this.left &&
764   - region.right <= this.right &&
765   - region.top >= this.top &&
766   - region.bottom <= this.bottom );
767   -
768   -};
769   -
770   -/**
771   - * Returns the area of the region
772   - * @method getArea
773   - * @return {Int} the region's area
774   - */
775   -YAHOO.util.Region.prototype.getArea = function() {
776   - return ( (this.bottom - this.top) * (this.right - this.left) );
777   -};
778   -
779   -/**
780   - * Returns the region where the passed in region overlaps with this one
781   - * @method intersect
782   - * @param {Region} region The region that intersects
783   - * @return {Region} The overlap region, or null if there is no overlap
784   - */
785   -YAHOO.util.Region.prototype.intersect = function(region) {
786   - var t = Math.max( this.top, region.top );
787   - var r = Math.min( this.right, region.right );
788   - var b = Math.min( this.bottom, region.bottom );
789   - var l = Math.max( this.left, region.left );
790   -
791   - if (b >= t && r >= l) {
792   - return new YAHOO.util.Region(t, r, b, l);
793   - } else {
794   - return null;
795   - }
796   -};
797   -
798   -/**
799   - * Returns the region representing the smallest region that can contain both
800   - * the passed in region and this region.
801   - * @method union
802   - * @param {Region} region The region that to create the union with
803   - * @return {Region} The union region
804   - */
805   -YAHOO.util.Region.prototype.union = function(region) {
806   - var t = Math.min( this.top, region.top );
807   - var r = Math.max( this.right, region.right );
808   - var b = Math.max( this.bottom, region.bottom );
809   - var l = Math.min( this.left, region.left );
810   -
811   - return new YAHOO.util.Region(t, r, b, l);
812   -};
813   -
814   -/**
815   - * toString
816   - * @method toString
817   - * @return string the region properties
818   - */
819   -YAHOO.util.Region.prototype.toString = function() {
820   - return ( "Region {" +
821   - "top: " + this.top +
822   - ", right: " + this.right +
823   - ", bottom: " + this.bottom +
824   - ", left: " + this.left +
825   - "}" );
826   -};
827   -
828   -/**
829   - * Returns a region that is occupied by the DOM element
830   - * @method getRegion
831   - * @param {HTMLElement} el The element
832   - * @return {Region} The region that the element occupies
833   - * @static
834   - */
835   -YAHOO.util.Region.getRegion = function(el) {
836   - var p = YAHOO.util.Dom.getXY(el);
837   -
838   - var t = p[1];
839   - var r = p[0] + el.offsetWidth;
840   - var b = p[1] + el.offsetHeight;
841   - var l = p[0];
842   -
843   - return new YAHOO.util.Region(t, r, b, l);
844   -};
845   -
846   -/////////////////////////////////////////////////////////////////////////////
847   -
848   -/**
849   - * A point is a region that is special in that it represents a single point on
850   - * the grid.
851   - * @namespace YAHOO.util
852   - * @class Point
853   - * @param {Int} x The X position of the point
854   - * @param {Int} y The Y position of the point
855   - * @constructor
856   - * @extends YAHOO.util.Region
857   - */
858   -YAHOO.util.Point = function(x, y) {
859   - if (x instanceof Array) { // accept output from Dom.getXY
860   - y = x[1];
861   - x = x[0];
862   - }
863   -
864   - /**
865   - * The X position of the point, which is also the right, left and index zero (for Dom.getXY symmetry)
866   - * @property x
867   - * @type Int
868   - */
869   -
870   - this.x = this.right = this.left = this[0] = x;
871   -
872   - /**
873   - * The Y position of the point, which is also the top, bottom and index one (for Dom.getXY symmetry)
874   - * @property y
875   - * @type Int
876   - */
877   - this.y = this.top = this.bottom = this[1] = y;
878   -};
879   -
880   -YAHOO.util.Point.prototype = new YAHOO.util.Region();
881   -
  1 +(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf("opera")>-1),isSafari=(ua.indexOf("safari")>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf("gecko")>-1),isIE=(!isOpera&&ua.indexOf("msie")>-1);var _3={HYPHEN:/(-[a-z])/i};var _4=function(_5){if(!_3.HYPHEN.test(_5)){return _5;}if(propertyCache[_5]){return propertyCache[_5];}while(_3.HYPHEN.exec(_5)){_5=_5.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}propertyCache[_5]=_5;return _5;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,_7){var _8=null;var _9=document.defaultView.getComputedStyle(el,"");if(_9){_8=_9[_4(_7)];}return el.style[_7]||_8;};}else{if(document.documentElement.currentStyle&&isIE){getStyle=function(el,_b){switch(_4(_b)){case "opacity":var _c=100;try{_c=el.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(e){try{_c=el.filters("alpha").opacity;}catch(e){}}return _c/100;break;default:var _d=el.currentStyle?el.currentStyle[_b]:null;return (el.style[_b]||_d);}};}else{getStyle=function(el,_f){return el.style[_f];};}}if(isIE){setStyle=function(el,_11,val){switch(_11){case "opacity":if(typeof el.style.filter=="string"){el.style.filter="alpha(opacity="+val*100+")";if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}break;default:el.style[_11]=val;}};}else{setStyle=function(el,_14,val){el.style[_14]=val;};}YAHOO.util.Dom={get:function(el){if(!el){return null;}if(typeof el!="string"&&!(el instanceof Array)){return el;}if(typeof el=="string"){return document.getElementById(el);}else{var _17=[];for(var i=0,len=el.length;i<len;++i){_17[_17.length]=Y.Dom.get(el[i]);}return _17;}return null;},getStyle:function(el,_1a){_1a=_4(_1a);var f=function(_1c){return getStyle(_1c,_1a);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,_1e,val){_1e=_4(_1e);var f=function(_21){setStyle(_21,_1e,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,"display")=="none"){return false;}var _25=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var _29=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var _2a=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return [box.left+_2a,box.top+_29];}else{pos=[el.offsetLeft,el.offsetTop];_25=el.offsetParent;if(_25!=el){while(_25){pos[0]+=_25.offsetLeft;pos[1]+=_25.offsetTop;_25=_25.offsetParent;}}if(isSafari&&this.getStyle(el,"position")=="absolute"){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){_25=el.parentNode;}else{_25=null;}while(_25&&_25.tagName.toUpperCase()!="BODY"&&_25.tagName.toUpperCase()!="HTML"){if(Y.Dom.getStyle(_25,"display")!="inline"){pos[0]-=_25.scrollLeft;pos[1]-=_25.scrollTop;}if(_25.parentNode){_25=_25.parentNode;}else{_25=null;}}return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,_33){var f=function(el){var _36=this.getStyle(el,"position");if(_36=="static"){this.setStyle(el,"position","relative");_36="relative";}var _37=this.getXY(el);if(_37===false){return false;}var _38=[parseInt(this.getStyle(el,"left"),10),parseInt(this.getStyle(el,"top"),10)];if(isNaN(_38[0])){_38[0]=(_36=="relative")?0:el.offsetLeft;}if(isNaN(_38[1])){_38[1]=(_36=="relative")?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-_37[0]+_38[0]+"px";}if(pos[1]!==null){el.style.top=pos[1]-_37[1]+_38[1]+"px";}var _39=this.getXY(el);if(!_33&&(_39[0]!=pos[0]||_39[1]!=pos[1])){this.setXY(el,pos,true);}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var _41=new Y.Region.getRegion(el);return _41;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(_42,tag,_44){var _45=function(el){return Y.Dom.hasClass(el,_42);};return Y.Dom.getElementsBy(_45,tag,_44);},hasClass:function(el,_48){var re=new RegExp("(?:^|\\s+)"+_48+"(?:\\s+|$)");var f=function(el){return re.test(el["className"]);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,_4d){var f=function(el){if(this.hasClass(el,_4d)){return;}el["className"]=[el["className"],_4d].join(" ");};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,_51){var re=new RegExp("(?:^|\\s+)"+_51+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_51)){return;}var c=el["className"];el["className"]=c.replace(re," ");if(this.hasClass(el,_51)){this.removeClass(el,_51);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,_57,_58){if(_57===_58){return false;}var re=new RegExp("(?:^|\\s+)"+_57+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_57)){this.addClass(el,_58);return;}el["className"]=el["className"].replace(re," "+_58+" ");if(this.hasClass(el,_57)){this.replaceClass(el,_57,_58);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,_5d){_5d=_5d||"yui-gen";el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}if(!el.id){el.id=_5d+id_counter++;}return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(_60,_61){_60=Y.Dom.get(_60);if(!_60||!_61){return false;}var f=function(_63){if(_60.contains&&!isSafari){return _60.contains(_63);}else{if(_60.compareDocumentPosition){return !!(_60.compareDocumentPosition(_63)&16);}else{var _64=_63.parentNode;while(_64){if(_64==_60){return true;}else{if(!_64.tagName||_64.tagName.toUpperCase()=="HTML"){return false;}}_64=_64.parentNode;}return false;}}};return Y.Dom.batch(_61,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(_68,tag,_6a){tag=tag||"*";_6a=Y.Dom.get(_6a)||document;var _6b=[];var _6c=_6a.getElementsByTagName(tag);if(!_6c.length&&(tag=="*"&&_6a.all)){_6c=_6a.all;}for(var i=0,len=_6c.length;i<len;++i){if(_68(_6c[i])){_6b[_6b.length]=_6c[i];}}return _6b;},batch:function(el,_6f,o,_71){var id=el;el=Y.Dom.get(el);var _73=(_71)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return _6f.call(_73,el,o);}var _74=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}_74[_74.length]=_6f.call(_73,el[i],o);}return _74;},getDocumentHeight:function(){var _76=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(_76,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var _78=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(_78,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var _7a=self.innerHeight;var _7b=document.compatMode;if((_7b||isIE)&&!isOpera){_7a=(_7b=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;}return _7a;},getViewportWidth:function(){var _7c=self.innerWidth;var _7d=document.compatMode;if(_7d||isIE){_7c=(_7d=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;}return _7c;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(_82){return (_82.left>=this.left&&_82.right<=this.right&&_82.top>=this.top&&_82.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return ((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(_83){var t=Math.max(this.top,_83.top);var r=Math.min(this.right,_83.right);var b=Math.min(this.bottom,_83.bottom);var l=Math.max(this.left,_83.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(_88){var t=Math.min(this.top,_88.top);var r=Math.max(this.right,_88.right);var b=Math.max(this.bottom,_88.bottom);var l=Math.min(this.left,_88.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return ("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();
882 2 \ No newline at end of file
... ...
thirdpartyjs/yui/dragdrop/dragdrop.js
1   -/*
2   -Copyright (c) 2006, Yahoo! Inc. All rights reserved.
3   -Code licensed under the BSD License:
4   -http://developer.yahoo.net/yui/license.txt
5   -version: 0.12.0
6   -*/
7   -
8   -(function() {
9   -
10   -var Event=YAHOO.util.Event;
11   -var Dom=YAHOO.util.Dom;
12   -
13   -/**
14   - * Defines the interface and base operation of items that that can be
15   - * dragged or can be drop targets. It was designed to be extended, overriding
16   - * the event handlers for startDrag, onDrag, onDragOver, onDragOut.
17   - * Up to three html elements can be associated with a DragDrop instance:
18   - * <ul>
19   - * <li>linked element: the element that is passed into the constructor.
20   - * This is the element which defines the boundaries for interaction with
21   - * other DragDrop objects.</li>
22   - * <li>handle element(s): The drag operation only occurs if the element that
23   - * was clicked matches a handle element. By default this is the linked
24   - * element, but there are times that you will want only a portion of the
25   - * linked element to initiate the drag operation, and the setHandleElId()
26   - * method provides a way to define this.</li>
27   - * <li>drag element: this represents an the element that would be moved along
28   - * with the cursor during a drag operation. By default, this is the linked
29   - * element itself as in {@link YAHOO.util.DD}. setDragElId() lets you define
30   - * a separate element that would be moved, as in {@link YAHOO.util.DDProxy}
31   - * </li>
32   - * </ul>
33   - * This class should not be instantiated until the onload event to ensure that
34   - * the associated elements are available.
35   - * The following would define a DragDrop obj that would interact with any
36   - * other DragDrop obj in the "group1" group:
37   - * <pre>
38   - * dd = new YAHOO.util.DragDrop("div1", "group1");
39   - * </pre>
40   - * Since none of the event handlers have been implemented, nothing would
41   - * actually happen if you were to run the code above. Normally you would
42   - * override this class or one of the default implementations, but you can
43   - * also override the methods you want on an instance of the class...
44   - * <pre>
45   - * dd.onDragDrop = function(e, id) {
46   - * &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 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 2 \ No newline at end of file
... ...
thirdpartyjs/yui/tools/tools.js
1   -/**
2   -* @fileoverview
3   -* <p>General Tools.</p>
4   -* <p>Now contains a modified version of Douglas Crockford's json.js that doesn't
5   -* mess with the DOM's prototype methods
6   -* http://www.json.org/js.html</p>
7   -* @author Dav Glass <dav.glass@yahoo.com>
8   -* @version 1.0
9   -* @requires YAHOO
10   -* @requires YAHOO.util.Dom
11   -* @requires YAHOO.util.Event
12   -*
13   -* @constructor
14   -* @class General Tools.
15   -*/
16   -YAHOO.Tools = function() {
17   - keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
18   - /**
19   - * Moved all regexes to the top level object to cache them.
20   - * @type Object
21   - */
22   - regExs = {
23   - quotes: /\x22/g,
24   - startspace: /^\s+/g,
25   - endspace: /\s+$/g,
26   - striptags: /<\/?[^>]+>/gi,
27   - hasbr: /<br/i,
28   - hasp: /<p>/i,
29   - rbr: /<br>/gi,
30   - rbr2: /<br\/>/gi,
31   - rendp: /<\/p>/gi,
32   - rp: /<p>/gi,
33   - base64: /[^A-Za-z0-9\+\/\=]/g,
34   - syntaxCheck: /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/
35   - }
36   -
37   - jsonCodes = {
38   - '\b': '\\b',
39   - '\t': '\\t',
40   - '\n': '\\n',
41   - '\f': '\\f',
42   - '\r': '\\r',
43   - '"' : '\\"',
44   - '\\': '\\\\'
45   - }
46   - return {
47   - version: '1.0'
48   - }
49   -}();
50   -/**
51   -* This normalizes getting the height of an element in IE
52   -* @param {String/HTMLElement} elm The element to get the height of
53   -* @returns The Height in pixels
54   -* @type String
55   -*/
56   -YAHOO.Tools.getHeight = function(elm) {
57   - var elm = $(elm);
58   - var h = $D.getStyle(elm, 'height');
59   - if (h == 'auto') {
60   - elm.style.zoom = 1;
61   - h = elm.clientHeight + 'px';
62   - }
63   - return h;
64   -}
65   -/**
66   -* Get the XY coords required to place the element at the center of the screen
67   -* @param {String/HTMLElement} elm The element to place at the center of the screen
68   -* @returns The XY coords required to place the element at the center of the screen
69   -* @type Array
70   -*/
71   -YAHOO.Tools.getCenter = function(elm) {
72   - var elm = $(elm);
73   - var cX = Math.round(($D.getViewportWidth() - parseInt($D.getStyle(elm, 'width'))) / 2);
74   - var cY = Math.round(($D.getViewportHeight() - parseInt(this.getHeight(elm))) / 2);
75   - return [cX, cY];
76   -}
77   -
78   -/**
79   -* Converts a text string into a DOM object
80   -* @param {String} txt String to convert
81   -* @returns A string to a textNode
82   -*/
83   -YAHOO.Tools.makeTextObject = function(txt) {
84   - return document.createTextNode(txt);
85   -}
86   -/**
87   -* Takes an Array of DOM objects and appends them as a child to the main Element
88   -* @param {Array} arr Array of elements to append to elm.
89   -* @param {HTMLElement/String} elm A reference or ID to the main Element that the children will be appended to
90   -*/
91   -YAHOO.Tools.makeChildren = function(arr, elm) {
92   - var elm = $(elm);
93   - for (var i in arr) {
94   - _val = arr[i];
95   - if (typeof _val == 'string') {
96   - _val = this.makeTxtObject(_val);
97   - }
98   - elm.appendChild(_val);
99   - }
100   -}
101   -/**
102   -* Converts a standard CSS string to a Javascriptable Camel Case variable name
103   -* @param {String} str The CSS string to convert to camel case Javascript String
104   -* Example:<br>
105   -* background-color<br>
106   -* backgroundColor<br><br>
107   -* list-style-type<br>
108   -* listStyleType
109   -*/
110   -YAHOO.Tools.styleToCamel = function(str) {
111   - var _tmp = str.split('-');
112   - var _new_style = _tmp[0];
113   - for (var i = 1; i < _tmp.length; i++) {
114   - _new_style += _tmp[i].substring(0, 1).toUpperCase() + _tmp[i].substring(1, _tmp[i].length);
115   - }
116   - return _new_style;
117   -}
118   -/**
119   -* Removes " from a given string
120   -* @param {String} str The string to remove quotes from
121   -*/
122   -YAHOO.Tools.removeQuotes = function(str) {
123   - var checkText = new String(str);
124   - return String(checkText.replace(regExs.quotes, ''));
125   -}
126   -/**
127   -* Trims starting and trailing white space from a string.
128   -* @param {String} str The string to trim
129   -*/
130   -YAHOO.Tools.trim = function(str) {
131   - return str.replace(regExs.startspace, '').replace(regExs.endspace, '');
132   -}
133   -/**
134   -* Removes all HTML tags from a string.
135   -* @param {String} str The string to remove HTML from
136   -*/
137   -YAHOO.Tools.stripTags = function(str) {
138   - return str.replace(regExs.striptags, '');
139   -}
140   -/**
141   -* Returns True/False if it finds BR' or P's
142   -* @param {String} str The string to search
143   -*/
144   -YAHOO.Tools.hasBRs = function(str) {
145   - return str.match(regExs.hasbr) || str.match(regExs.hasp);
146   -}
147   -/**
148   -* Converts BR's and P's to Plain Text Line Feeds
149   -* @param {String} str The string to search
150   -*/
151   -YAHOO.Tools.convertBRs2NLs = function(str) {
152   - return str.replace(regExs.rbr, "\n").replace(regExs.rbr2, "\n").replace(regExs.rendp, "\n").replace(regExs.rp, "");
153   -}
154   -/**
155   -* Repeats a string n number of times
156   -* @param {String} str The string to repeat
157   -* @param {Integer} repeat Number of times to repeat it
158   -* @returns Repeated string
159   -* @type String
160   -*/
161   -YAHOO.Tools.stringRepeat = function(str, repeat) {
162   - return new Array(repeat + 1).join(str);
163   -}
164   -/**
165   -* Reverses a string
166   -* @param {String} str The string to reverse
167   -* @returns Reversed string
168   -* @type String
169   -*/
170   -YAHOO.Tools.stringReverse = function(str) {
171   - var new_str = '';
172   - for (i = 0; i < str.length; i++) {
173   - new_str = new_str + str.charAt((str.length -1) -i);
174   - }
175   - return new_str;
176   -}
177   -/**
178   -* printf function written in Javascript<br>
179   -* <pre>var test = "You are viewing messages {0} - {1} out of {2}";
180   -* YAHOO.Tools.printf(test, '5', '25', '500');</pre><br>
181   -* This will return a string like:<br>
182   -* "You are view messages 5 - 25 out of 500"<br>
183   -* Patched provided by: Peter Foti <foti-1@comcast.net><br>
184   -* @param {String} string
185   -* @returns Parsed String
186   -* @type String
187   -*/
188   -YAHOO.Tools.printf = function() {
189   - var num = arguments.length;
190   - var oStr = arguments[0];
191   -
192   - for (var i = 1; i < num; i++) {
193   - var pattern = "\\{" + (i-1) + "\\}";
194   - var re = new RegExp(pattern, "g");
195   - oStr = oStr.replace(re, arguments[i]);
196   - }
197   - return oStr;
198   -}
199   -/**
200   -* Trims starting and trailing white space from a string.
201   -* @param {HTMLElement/Array/String} el Single element, array of elements or id string to apply the style string to
202   -* @param {String} str The CSS string to apply to the elements
203   -* Example:
204   -* color: black; text-decoration: none; background-color: yellow;
205   -*/
206   -YAHOO.Tools.setStyleString = function(el, str) {
207   - var _tmp = str.split(';');
208   - for (x in _tmp) {
209   - if (x) {
210   - __tmp = YAHOO.Tools.trim(_tmp[x]);
211   - __tmp = _tmp[x].split(':');
212   - if (__tmp[0] && __tmp[1]) {
213   - var _attr = YAHOO.Tools.trim(__tmp[0]);
214   - var _val = YAHOO.Tools.trim(__tmp[1]);
215   - if (_attr && _val) {
216   - if (_attr.indexOf('-') != -1) {
217   - _attr = YAHOO.Tools.styleToCamel(_attr);
218   - }
219   - $D.setStyle(el, _attr, _val);
220   - }
221   - }
222   - }
223   - }
224   -}
225   -/**
226   -* Gets the currently selected text
227   -* @param {Object} _document Optional. Reference to the document object
228   -* @param {Object} _window Optional. Reference to the window object
229   -* Both parameters are optional, but if you give one you need to give both.<br>
230   -* The reason for the parameters is if you are dealing with an iFrame or FrameSet,
231   -* you need to specify the document and the window of the frame you want to get the selection for
232   -*/
233   -YAHOO.Tools.getSelection = function(_document, _window) {
234   - if (!_document) { _document = document; }
235   - if (!_window) { _window = window; }
236   - if (_document.selection) {
237   - return _document.selection;
238   - }
239   - return _window.getSelection();
240   -}
241   -/**
242   -* Remove the element from the document.
243   -* @param {HTMLElement/Array/String} el Single element, array of elements or id string to remove from the document
244   -* This function needs to be extended to remove all of the child elements & their listeners.
245   -*/
246   -YAHOO.Tools.removeElement = function(el) {
247   - if (!(el instanceof Array)) {
248   - el = new Array($(el));
249   - }
250   - for (var i = 0; i < el.length; i++) {
251   - if (el[i].parentNode) {
252   - el[i].parentNode.removeChild(el);
253   - }
254   - }
255   -}
256   -/**
257   -* Set a cookie.
258   -* @param {String} name The name of the cookie to be set
259   -* @param {String} value The value of the cookie
260   -* @param {String} expires A valid Javascript Date object
261   -* @param {String} path The path of the cookie (Deaults to /)
262   -* @param {String} domain The domain to attach the cookie to
263   -* @param {Booleen} secure Booleen True or False
264   -*/
265   -YAHOO.Tools.setCookie = function(name, value, expires, path, domain, secure) {
266   - var argv = arguments;
267   - var argc = arguments.length;
268   - var expires = (argc > 2) ? argv[2] : null;
269   - var path = (argc > 3) ? argv[3] : '/';
270   - var domain = (argc > 4) ? argv[4] : null;
271   - var secure = (argc > 5) ? argv[5] : false;
272   - document.cookie = name + "=" + escape (value) +
273   - ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
274   - ((path == null) ? "" : ("; path=" + path)) +
275   - ((domain == null) ? "" : ("; domain=" + domain)) +
276   - ((secure == true) ? "; secure" : "");
277   -}
278   -
279   -/**
280   -* Get the value of a cookie.
281   -* @param {String} name The name of the cookie to get
282   -*/
283   -YAHOO.Tools.getCookie = function(name) {
284   - var dc = document.cookie;
285   - var prefix = name + '=';
286   - var begin = dc.indexOf('; ' + prefix);
287   - if (begin == -1) {
288   - begin = dc.indexOf(prefix);
289   - if (begin != 0) return null;
290   - } else {
291   - begin += 2;
292   - }
293   - var end = document.cookie.indexOf(';', begin);
294   - if (end == -1) {
295   - end = dc.length;
296   - }
297   - return unescape(dc.substring(begin + prefix.length, end));
298   -}
299   -/**
300   -* Delete a cookie
301   -* @param {String} name The name of the cookie to delete.
302   -*/
303   -YAHOO.Tools.deleteCookie = function(name, path, domain) {
304   - if (getCookie(name)) {
305   - document.cookie = name + '=' + ((path) ? '; path=' + path : '') + ((domain) ? '; domain=' + domain : '') + '; expires=Thu, 01-Jan-70 00:00:01 GMT';
306   - }
307   -}
308   -/**
309   -* Object based Browser Engine Detection<br>
310   -* The returned object will look like:<br>
311   -* <pre>
312   -* obj {
313   -* ua: 'Full UserAgent String'
314   -* opera: boolean
315   -* safari: boolean
316   -* gecko: boolean
317   -* msie: boolean
318   -* version: string
319   -* }
320   -* </pre>
321   -* @return Browser Information Object
322   -* @type Object
323   -*/
324   -YAHOO.Tools.getBrowserEngine = function() {
325   - var opera = ((window.opera && window.opera.version) ? true : false);
326   - var safari = ((navigator.vendor && navigator.vendor.indexOf('Apple') != -1) ? true : false);
327   - var gecko = ((document.getElementById && !document.all && !opera && !safari) ? true : false);
328   - var msie = ((window.ActiveXObject) ? true : false);
329   - var version = false;
330   - if (msie) {
331   - /**
332   - * This checks for the maxHeight style property.
333   - * I.E. 7 has this
334   - */
335   - if (typeof document.body.style.maxHeight != "undefined") {
336   - version = '7';
337   - } else {
338   - /**
339   - * Fall back to 6 (might need to find a 5.5 object too...).
340   - */
341   - version = '6';
342   - }
343   - }
344   - if (opera) {
345   - /**
346   - * The window.opera object has a method called version();
347   - * Here we only grab the first 2 parts of the dotted string to get 9.01, 9.02, etc..
348   - */
349   - var tmp_version = window.opera.version().split('.');
350   - version = tmp_version[0] + '.' + tmp_version[1];
351   - }
352   - if (gecko) {
353   - /**
354   - * FireFox 2 has a function called registerContentHandler();
355   - */
356   - if (navigator.registerContentHandler) {
357   - version = '2';
358   - } else {
359   - version = '1.5';
360   - }
361   - /**
362   - * This should catch all pre Firefox 1.5 browsers
363   - */
364   - if ((navigator.vendorSub) && !version) {
365   - version = navigator.vendorSub;
366   - }
367   - }
368   - if (safari) {
369   - try {
370   - /**
371   - * Safari 1.3+ supports the console method
372   - */
373   - if (console) {
374   - /**
375   - * Safari 2+ supports the onmousewheel event
376   - */
377   - if ((window.onmousewheel !== 'undefined') && (window.onmousewheel === null)) {
378   - version = '2';
379   - } else {
380   - version = '1.3';
381   - }
382   - }
383   - } catch (e) {
384   - /**
385   - * Safari 1.2 does not support the console method
386   - */
387   - version = '1.2';
388   - }
389   - }
390   - /**
391   - * Return the Browser Object
392   - * @type Object
393   - */
394   - var browsers = {
395   - ua: navigator.userAgent,
396   - opera: opera,
397   - safari: safari,
398   - gecko: gecko,
399   - msie: msie,
400   - version: version
401   - }
402   - return browsers;
403   -}
404   -/**
405   -* User Agent Based Browser Detection<br>
406   -* This function uses the userAgent string to get the browsers information.<br>
407   -* The returned object will look like:<br>
408   -* <pre>
409   -* obj {
410   -* ua: 'Full UserAgent String'
411   -* opera: boolean
412   -* safari: boolean
413   -* firefox: boolean
414   -* mozilla: boolean
415   -* msie: boolean
416   -* mac: boolean
417   -* win: boolean
418   -* unix: boolean
419   -* version: string
420   -* flash: version string
421   -* }
422   -* </pre><br>
423   -* @return Browser Information Object
424   -* @type Object
425   -*/
426   -YAHOO.Tools.getBrowserAgent = function() {
427   - var ua = navigator.userAgent.toLowerCase();
428   - var opera = ((ua.indexOf('opera') != -1) ? true : false);
429   - var safari = ((ua.indexOf('safari') != -1) ? true : false);
430   - var firefox = ((ua.indexOf('firefox') != -1) ? true : false);
431   - var msie = ((ua.indexOf('msie') != -1) ? true : false);
432   - var mac = ((ua.indexOf('mac') != -1) ? true : false);
433   - var unix = ((ua.indexOf('x11') != -1) ? true : false);
434   - var win = ((mac || unix) ? false : true);
435   - var version = false;
436   - var mozilla = false;
437   - //var flash = this.checkFlash();
438   - if (!firefox && !safari && (ua.indexOf('gecko') != -1)) {
439   - mozilla = true;
440   - var _tmp = ua.split('/');
441   - version = _tmp[_tmp.length - 1].split(' ')[0];
442   - }
443   - if (firefox) {
444   - var _tmp = ua.split('/');
445   - version = _tmp[_tmp.length - 1].split(' ')[0];
446   - }
447   - if (msie) {
448   - version = ua.substring((ua.indexOf('msie ') + 5)).split(';')[0];
449   - }
450   - if (safari) {
451   - /**
452   - * Safari doesn't report a string, have to use getBrowserEngine to get it
453   - */
454   - version = this.getBrowserEngine().version;
455   - }
456   - if (opera) {
457   - version = ua.substring((ua.indexOf('opera/') + 6)).split(' ')[0];
458   - }
459   -
460   - /**
461   - * Return the Browser Object
462   - * @type Object
463   - */
464   - var browsers = {
465   - ua: navigator.userAgent,
466   - opera: opera,
467   - safari: safari,
468   - firefox: firefox,
469   - mozilla: mozilla,
470   - msie: msie,
471   - mac: mac,
472   - win: win,
473   - unix: unix,
474   - version: version//,
475   - //flash: flash
476   - }
477   - return browsers;
478   -}
479   -/**
480   -* Check if Flash is enabled and return the version number
481   -* @return Version number or false on error
482   -* @type String
483   -*/
484   -YAHOO.Tools.checkFlash = function() {
485   - var br = this.getBrowserEngine();
486   - if (br.msie) {
487   - try {
488   - // version will be set for 7.X or greater players
489   - var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
490   - var versionStr = axo.GetVariable("$version");
491   - var tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
492   - var tempString = tempArray[1]; // "2,0,0,11"
493   - var versionArray = tempString.split(","); // ['2', '0', '0', '11']
494   - var flash = versionArray[0];
495   - } catch (e) {
496   - }
497   - } else {
498   - var flashObj = null;
499   - var tokens, len, curr_tok;
500   - if (navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash']) {
501   - flashObj = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin;
502   - }
503   - if (flashObj == null) {
504   - flash = false;
505   - } else {
506   - tokens = navigator.plugins['Shockwave Flash'].description.split(' ');
507   - len = tokens.length;
508   - while(len--) {
509   - curr_tok = tokens[len];
510   - if(!isNaN(parseInt(curr_tok))) {
511   - hasVersion = curr_tok;
512   - flash = hasVersion;
513   - break;
514   - }
515   - }
516   - }
517   - }
518   - return flash;
519   -}
520   -/**
521   -* Set Mass Attributes on an Element
522   -* @param {Object} attrObj Object containing the attributes to set.
523   -* @param {HTMLElement/String} elm The element you want to apply the attribute to
524   -* Supports adding listeners and setting style from a CSS style string.<br>
525   -*/
526   -YAHOO.Tools.setAttr = function(attrsObj, elm) {
527   - if (typeof elm == 'string') {
528   - elm = $(elm);
529   - }
530   - for (var i in attrsObj) {
531   - switch (i.toLowerCase()) {
532   - case 'listener':
533   - if (attrsObj[i] instanceof Array) {
534   - var ev = attrsObj[i][0];
535   - var func = attrsObj[i][1];
536   - var base = attrsObj[i][2];
537   - var scope = attrsObj[i][3];
538   - $E.addListener(elm, ev, func, base, scope);
539   - }
540   - break;
541   - case 'classname':
542   - case 'class':
543   - elm.className = attrsObj[i];
544   - break;
545   - case 'style':
546   - YAHOO.Tools.setStyleString(elm, attrsObj[i]);
547   - break;
548   - default:
549   - elm.setAttribute(i, attrsObj[i]);
550   - break;
551   - }
552   - }
553   -}
554   -/**
555   -* Usage:<br>
556   -* <pre><code>
557   -* div = YAHOO.util.Dom.create('div', 'Single DIV. This is some test text.', {
558   -* className:'test1',
559   -* style:'font-size: 20px'
560   -* }
561   -* );
562   -* test1.appendChild(div);
563   -* <br><br>- or -<br><br>
564   -* div = YAHOO.util.Dom.create('div', {className:'test2',style:'font-size:11px'},
565   -* [YAHOO.util.Dom.create('p', {
566   -* style:'border: 1px solid red; color: blue',
567   -* listener: ['click', test]
568   -* },
569   -* 'This is a P inside of a DIV both styled.')
570   -* ]
571   -*);
572   -* test2.appendChild(div);
573   -*
574   -* </code></pre>
575   -* @param {String} tagName Tag name to create
576   -* @param {Object} attrs Element attributes in object notation
577   -* @param {Array} children Array of children to append to the created element
578   -* @param {String} txt Text string to insert into the created element
579   -* @returns A reference to the newly created element
580   -* @type HTMLReference
581   -*/
582   -YAHOO.Tools.create = function(tagName) {
583   - tagName = tagName.toLowerCase();
584   - elm = document.createElement(tagName);
585   - var txt = false;
586   - var attrsObj = false;
587   -
588   - if (!elm) { return false; }
589   -
590   - for (var i = 1; i < arguments.length; i++) {
591   - txt = arguments[i];
592   - if (typeof txt == 'string') {
593   - _txt = YAHOO.Tools.makeTextObject(txt);
594   - elm.appendChild(_txt);
595   - } else if (txt instanceof Array) {
596   - YAHOO.Tools.makeChildren(txt, elm);
597   - } else if (typeof txt == 'object') {
598   - //_makeStyleObject(txt, elm);
599   - YAHOO.Tools.setAttr(txt, elm);
600   - }
601   - }
602   - return elm;
603   -}
604   -/**
605   -* Inserts an HTML Element after another in the DOM Tree.
606   -* @param {HTMLElement} elm The element to insert
607   -* @param {HTMLElement} curNode The element to insert it before
608   -*/
609   -YAHOO.Tools.insertAfter = function(elm, curNode) {
610   - if (curNode.nextSibling) {
611   - curNode.parentNode.insertBefore(elm, curNode.nextSibling);
612   - } else {
613   - curNode.parentNode.appendChild(elm);
614   - }
615   -}
616   -/**
617   -* Validates that the value passed is in the Array passed.
618   -* @param {Array} arr The Array to search (haystack)
619   -* @param {String} val The value to search for (needle)
620   -* @returns True if the value is found
621   -* @type Boolean
622   -*/
623   -YAHOO.Tools.inArray = function(arr, val) {
624   - if (arr instanceof Array) {
625   - for (var i = (arr.length -1); i >= 0; i--) {
626   - if (arr[i] === val) {
627   - return true;
628   - }
629   - }
630   - }
631   - return false;
632   -}
633   -
634   -
635   -/**
636   -* Validates that the value passed in is a boolean.
637   -* @param {Object} str The value to validate
638   -* @return true, if the value is valid
639   -* @type Boolean
640   -*/
641   -YAHOO.Tools.checkBoolean = function(str) {
642   - return ((typeof str == 'boolean') ? true : false);
643   -}
644   -
645   -/**
646   -* Validates that the value passed in is a number.
647   -* @param {Object} str The value to validate
648   -* @return true, if the value is valid
649   -* @type Boolean
650   -*/
651   -YAHOO.Tools.checkNumber = function(str) {
652   - return ((isNaN(str)) ? false : true);
653   -}
654   -
655   -/**
656   -* Divide your desired pixel width by 13 to find em width. Multiply that value by 0.9759 for IE via *width.
657   -* @param {Integer} size The pixel size to convert to em.
658   -* @return Object of sizes (2) {msie: size, other: size }
659   -* @type Object
660   -*/
661   -YAHOO.Tools.PixelToEm = function(size) {
662   - var data = {};
663   - var sSize = (size / 13);
664   - data.other = (Math.round(sSize * 100) / 100);
665   - data.msie = (Math.round((sSize * 0.9759) * 100) / 100);
666   - return data;
667   -}
668   -
669   -/**
670   -* Return a string of CSS statements for this pixel size in ems
671   -* @param {Integer} size The pixel size to convert to em.
672   -* @param {String} prop The property to apply the style to.
673   -* @return String of CSS style statements (width:46.15em;*width:45.04em;min-width:600px;)
674   -* @type String
675   -*/
676   -YAHOO.Tools.PixelToEmStyle = function(size, prop) {
677   - var data = '';
678   - var prop = ((prop) ? prop.toLowerCase() : 'width');
679   - var sSize = (size / 13);
680   - data += prop + ':' + (Math.round(sSize * 100) / 100) + 'em;';
681   - data += '*' + prop + ':' + (Math.round((sSize * 0.9759) * 100) / 100) + 'em;';
682   - if ((prop == 'width') || (prop == 'height')) {
683   - data += 'min-' + prop + ':' + size + 'px;';
684   - }
685   - return data;
686   -}
687   -
688   -/**
689   -* Base64 Encodes a string
690   -* @param {String} str The string to base64 encode.
691   -* @return Base64 Encoded String
692   -* @type String
693   -*/
694   -YAHOO.Tools.base64Encode = function(str) {
695   - var data = "";
696   - var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
697   - var i = 0;
698   -
699   - do {
700   - chr1 = str.charCodeAt(i++);
701   - chr2 = str.charCodeAt(i++);
702   - chr3 = str.charCodeAt(i++);
703   -
704   - enc1 = chr1 >> 2;
705   - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
706   - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
707   - enc4 = chr3 & 63;
708   -
709   - if (isNaN(chr2)) {
710   - enc3 = enc4 = 64;
711   - } else if (isNaN(chr3)) {
712   - enc4 = 64;
713   - }
714   -
715   - data = data + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
716   - } while (i < str.length);
717   -
718   - return data;
719   -}
720   -/**
721   -* Base64 Dncodes a string
722   -* @param {String} str The base64 encoded string to decode.
723   -* @return The decoded String
724   -* @type String
725   -*/
726   -YAHOO.Tools.base64Decode = function(str) {
727   - var data = "";
728   - var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
729   - var i = 0;
730   -
731   - // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
732   - str = str.replace(regExs.base64, "");
733   -
734   - do {
735   - enc1 = keyStr.indexOf(str.charAt(i++));
736   - enc2 = keyStr.indexOf(str.charAt(i++));
737   - enc3 = keyStr.indexOf(str.charAt(i++));
738   - enc4 = keyStr.indexOf(str.charAt(i++));
739   -
740   - chr1 = (enc1 << 2) | (enc2 >> 4);
741   - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
742   - chr3 = ((enc3 & 3) << 6) | enc4;
743   -
744   - data = data + String.fromCharCode(chr1);
745   -
746   - if (enc3 != 64) {
747   - data = data + String.fromCharCode(chr2);
748   - }
749   - if (enc4 != 64) {
750   - data = data + String.fromCharCode(chr3);
751   - }
752   - } while (i < str.length);
753   -
754   - return data;
755   -}
756   -
757   -/**
758   -* Parses a Query String, if one is not provided, it will look in location.href<br>
759   -* NOTE: This function will also handle test[] vars and convert them to an array inside of the return object.<br>
760   -* This now supports #hash vars, it will return it in the object as Obj.hash
761   -* @param {String} str The string to parse as a query string
762   -* @return An object of the parts of the parsed query string
763   -* @type Object
764   -*/
765   -YAHOO.Tools.getQueryString = function(str) {
766   - var qstr = {};
767   - if (!str) {
768   - var str = location.href.split('?');
769   - if (str.length != 2) {
770   - str = ['', location.href];
771   - }
772   - } else {
773   - var str = ['', str];
774   - }
775   - if (str[1].match('#')) {
776   - var _tmp = str[1].split('#');
777   - qstr.hash = _tmp[1];
778   - str[1] = _tmp[0];
779   - }
780   - if (str[1]) {
781   - str = str[1].split('&');
782   - if (str.length) {
783   - for (var i = 0; i < str.length; i++) {
784   - var part = str[i].split('=');
785   - if (part[0].indexOf('[') != -1) {
786   - if (part[0].indexOf('[]') != -1) {
787   - //Array
788   - var arr = part[0].substring(0, part[0].length - 2);
789   - if (!qstr[arr]) {
790   - qstr[arr] = [];
791   - }
792   - qstr[arr][qstr[arr].length] = part[1];
793   - } else {
794   - //Object
795   - var arr = part[0].substring(0, part[0].indexOf('['));
796   - var data = part[0].substring((part[0].indexOf('[') + 1), part[0].indexOf(']'));
797   - if (!qstr[arr]) {
798   - qstr[arr] = {};
799   - }
800   - //Object
801   - qstr[arr][data] = part[1];
802   - }
803   - } else {
804   - qstr[part[0]] = part[1];
805   - }
806   - }
807   - }
808   - }
809   - return qstr;
810   -}
811   -/**
812   -* Parses a Query String Var<br>
813   -* NOTE: This function will also handle test[] vars and convert them to an array inside of the return object.
814   -* @param {String} str The var to get from the query string
815   -* @return The value of the var in the querystring.
816   -* @type String/Array
817   -*/
818   -YAHOO.Tools.getQueryStringVar = function(str) {
819   - var qs = this.getQueryString();
820   - if (qs[str]) {
821   - return qs[str];
822   - } else {
823   - return false;
824   - }
825   -}
826   -
827   -
828   -/**
829   -* Function to pad a date with a beginning 0 so 1 becomes 01, 2 becomes 02, etc..
830   -* @param {String} n The string to pad
831   -* @returns Zero padded string
832   -* @type String
833   -*/
834   -YAHOO.Tools.padDate = function(n) {
835   - return n < 10 ? '0' + n : n;
836   -}
837   -
838   -/**
839   -* Converts a string to a JSON string
840   -* @param {String} str Converts a string to a JSON string
841   -* @returns JSON Encoded string
842   -* @type String
843   -*/
844   -YAHOO.Tools.encodeStr = function(str) {
845   - if (/["\\\x00-\x1f]/.test(str)) {
846   - return '"' + str.replace(/([\x00-\x1f\\"])/g, function(a, b) {
847   - var c = jsonCodes[b];
848   - if(c) {
849   - return c;
850   - }
851   - c = b.charCodeAt();
852   - return '\\u00' +
853   - Math.floor(c / 16).toString(16) +
854   - (c % 16).toString(16);
855   - }) + '"';
856   - }
857   - return '"' + str + '"';
858   -}
859   -/**
860   -* Converts an Array to a JSON string
861   -* @param {Array} arr Converts an Array to a JSON string
862   -* @returns JSON encoded string
863   -* @type String
864   -*/
865   -YAHOO.Tools.encodeArr = function(arr) {
866   - var a = ['['], b, i, l = arr.length, v;
867   - for (i = 0; i < l; i += 1) {
868   - v = arr[i];
869   - switch (typeof v) {
870   - case 'undefined':
871   - case 'function':
872   - case 'unknown':
873   - break;
874   - default:
875   - if (b) {
876   - a.push(',');
877   - }
878   - a.push(v === null ? "null" : YAHOO.Tools.JSONEncode(v));
879   - b = true;
880   - }
881   - }
882   - a.push(']');
883   - return a.join('');
884   -}
885   -/**
886   -* Converts a Date object to a JSON string
887   -* @param {Object} d Converts a Date object to a JSON string
888   -* @returns JSON encoded Date string
889   -* @type String
890   -*/
891   -YAHOO.Tools.encodeDate = function(d) {
892   - return '"' + d.getFullYear() + '-' + YAHOO.Tools.padDate(d.getMonth() + 1) + '-' + YAHOO.Tools.padDate(d.getDate()) + 'T' + YAHOO.Tools.padDate(d.getHours()) + ':' + YAHOO.Tools.padDate(d.getMinutes()) + ':' + YAHOO.Tools.padDate(d.getSeconds()) + '"';
893   -}
894   -
895   -/**
896   -* Fixes the JSON date format
897   -* @param {String} dateStr JSON encoded date string (YYYY-MM-DDTHH:MM:SS)
898   -* @returns Date Object
899   -* @type Object
900   -*/
901   -YAHOO.Tools.fixJSONDate = function(dateStr) {
902   - var tmp = dateStr.split('T');
903   - var fixedDate = dateStr;
904   - if (tmp.length == 2) {
905   - var tmpDate = tmp[0].split('-');
906   - if (tmpDate.length == 3) {
907   - fixedDate = new Date(tmpDate[0], (tmpDate[1] - 1), tmpDate[2]);
908   - var tmpTime = tmp[1].split(':');
909   - if (tmpTime.length == 3) {
910   - fixedDate.setHours(tmpTime[0], tmpTime[1], tmpTime[2]);
911   - }
912   - }
913   - }
914   - return fixedDate;
915   -}
916   -
917   -/**
918   -* Encode a Javascript Object/Array into a JSON string
919   -* @param {String/Object/Array} o Converts the object to a JSON string
920   -* @returns JSON String
921   -* @type String
922   -*/
923   -YAHOO.Tools.JSONEncode = function(o) {
924   - if ((typeof o == 'undefined') || (o === null)) {
925   - return 'null';
926   - } else if (o instanceof Array) {
927   - return YAHOO.Tools.encodeArr(o);
928   - } else if (o instanceof Date) {
929   - return YAHOO.Tools.encodeDate(o);
930   - } else if (typeof o == 'string') {
931   - return YAHOO.Tools.encodeStr(o);
932   - } else if (typeof o == 'number') {
933   - return isFinite(o) ? String(o) : "null";
934   - } else if (typeof o == 'boolean') {
935   - return String(o);
936   - } else {
937   - var a = ['{'], b, i, v;
938   - for (var i in o) {
939   - //if (o.hasOwnProperty(i)) {
940   - v = o[i];
941   - switch (typeof v) {
942   - case 'undefined':
943   - case 'function':
944   - case 'unknown':
945   - break;
946   - default:
947   - if (b) {
948   - a.push(',');
949   - }
950   - a.push(YAHOO.Tools.JSONEncode(i), ':', ((v === null) ? "null" : YAHOO.Tools.JSONEncode(v)));
951   - b = true;
952   - }
953   - //}
954   - }
955   - a.push('}');
956   - return a.join('');
957   - }
958   -}
959   -/**
960   -* Converts/evals a JSON string into a native Javascript object
961   -* @param {String} json Converts the JSON string back into the native object
962   -* @param {Booleen} autoDate Try to autofix date objects
963   -* @returns eval'd object
964   -* @type Object/Array/String
965   -*/
966   -YAHOO.Tools.JSONParse = function(json, autoDate) {
967   - var autoDate = ((autoDate) ? true : false);
968   - try {
969   - if (regExs.syntaxCheck.test(json)) {
970   - var j = eval('(' + json + ')');
971   - if (autoDate) {
972   - function walk(k, v) {
973   - if (v && typeof v === 'object') {
974   - for (var i in v) {
975   - if (v.hasOwnProperty(i)) {
976   - v[i] = walk(i, v[i]);
977   - }
978   - }
979   - }
980   - if (k.toLowerCase().indexOf('date') >= 0) {
981   - return YAHOO.Tools.fixJSONDate(v);
982   - } else {
983   - return v;
984   - }
985   - }
986   - return walk('', j);
987   - } else {
988   - return j;
989   - }
990   - }
991   - } catch(e) {
992   - console.log(e);
993   - }
994   - throw new SyntaxError("parseJSON");
995   -}
996   -
997   -
998   -/*
999   -* Try to catch the developers that use the wrong case 8-)
1000   -*/
1001   -YAHOO.tools = YAHOO.Tools;
1002   -YAHOO.TOOLS = YAHOO.Tools;
1003   -YAHOO.util.Dom.create = YAHOO.Tools.create;
1004   -/*
1005   -* Smaller Code
1006   -*/
1007   -
1008   -$A = YAHOO.util.Anim;
1009   -$E = YAHOO.util.Event;
1010   -$D = YAHOO.util.Dom;
1011   -$T = YAHOO.Tools;
1012   -$ = YAHOO.util.Dom.get;
1013   -$$ = YAHOO.util.Dom.getElementsByClassName;
  1 +YAHOO.Tools=function(){keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";regExs={quotes:/\x22/g,startspace:/^\s+/g,endspace:/\s+$/g,striptags:/<\/?[^>]+>/gi,hasbr:/<br/i,hasp:/<p>/i,rbr:/<br>/gi,rbr2:/<br\/>/gi,rendp:/<\/p>/gi,rp:/<p>/gi,base64:/[^A-Za-z0-9\+\/\=]/g,syntaxCheck:/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/};jsonCodes={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"};return {version:"1.0"};}();YAHOO.Tools.getHeight=function(_1){var _2=$(_2);var h=$D.getStyle(_2,"height");if(h=="auto"){_2.style.zoom=1;h=_2.clientHeight+"px";}return h;};YAHOO.Tools.getCenter=function(_4){var _5=$(_5);var cX=Math.round(($D.getViewportWidth()-parseInt($D.getStyle(_5,"width")))/2);var cY=Math.round(($D.getViewportHeight()-parseInt(this.getHeight(_5)))/2);return [cX,cY];};YAHOO.Tools.makeTextObject=function(_8){return document.createTextNode(_8);};YAHOO.Tools.makeChildren=function(_9,_a){var _b=$(_b);for(var i in _9){_val=_9[i];if(typeof _val=="string"){_val=this.makeTxtObject(_val);}_b.appendChild(_val);}};YAHOO.Tools.styleToCamel=function(_d){var _e=_d.split("-");var _f=_e[0];for(var i=1;i<_e.length;i++){_f+=_e[i].substring(0,1).toUpperCase()+_e[i].substring(1,_e[i].length);}return _f;};YAHOO.Tools.removeQuotes=function(str){var _12=new String(str);return String(_12.replace(regExs.quotes,""));};YAHOO.Tools.trim=function(str){return str.replace(regExs.startspace,"").replace(regExs.endspace,"");};YAHOO.Tools.stripTags=function(str){return str.replace(regExs.striptags,"");};YAHOO.Tools.hasBRs=function(str){return str.match(regExs.hasbr)||str.match(regExs.hasp);};YAHOO.Tools.convertBRs2NLs=function(str){return str.replace(regExs.rbr,"\n").replace(regExs.rbr2,"\n").replace(regExs.rendp,"\n").replace(regExs.rp,"");};YAHOO.Tools.stringRepeat=function(str,_18){return new Array(_18+1).join(str);};YAHOO.Tools.stringReverse=function(str){var _1a="";for(i=0;i<str.length;i++){_1a=_1a+str.charAt((str.length-1)-i);}return _1a;};YAHOO.Tools.printf=function(){var num=arguments.length;var _1c=arguments[0];for(var i=1;i<num;i++){var _1e="\\{"+(i-1)+"\\}";var re=new RegExp(_1e,"g");_1c=_1c.replace(re,arguments[i]);}return _1c;};YAHOO.Tools.setStyleString=function(el,str){var _22=str.split(";");for(x in _22){if(x){__tmp=YAHOO.Tools.trim(_22[x]);__tmp=_22[x].split(":");if(__tmp[0]&&__tmp[1]){var _23=YAHOO.Tools.trim(__tmp[0]);var _24=YAHOO.Tools.trim(__tmp[1]);if(_23&&_24){if(_23.indexOf("-")!=-1){_23=YAHOO.Tools.styleToCamel(_23);}$D.setStyle(el,_23,_24);}}}}};YAHOO.Tools.getSelection=function(_25,_26){if(!_25){_25=document;}if(!_26){_26=window;}if(_25.selection){return _25.selection;}return _26.getSelection();};YAHOO.Tools.removeElement=function(el){if(!(el instanceof Array)){el=new Array($(el));}for(var i=0;i<el.length;i++){if(el[i].parentNode){el[i].parentNode.removeChild(el);}}};YAHOO.Tools.setCookie=function(_29,_2a,_2b,_2c,_2d,_2e){var _2f=arguments;var _30=arguments.length;var _31=(_30>2)?_2f[2]:null;var _32=(_30>3)?_2f[3]:"/";var _33=(_30>4)?_2f[4]:null;var _34=(_30>5)?_2f[5]:false;document.cookie=_29+"="+escape(_2a)+((_31==null)?"":("; expires="+_31.toGMTString()))+((_32==null)?"":("; path="+_32))+((_33==null)?"":("; domain="+_33))+((_34==true)?"; secure":"");};YAHOO.Tools.getCookie=function(_35){var dc=document.cookie;var _37=_35+"=";var _38=dc.indexOf("; "+_37);if(_38==-1){_38=dc.indexOf(_37);if(_38!=0){return null;}}else{_38+=2;}var end=document.cookie.indexOf(";",_38);if(end==-1){end=dc.length;}return unescape(dc.substring(_38+_37.length,end));};YAHOO.Tools.deleteCookie=function(_3a,_3b,_3c){if(getCookie(_3a)){document.cookie=_3a+"="+((_3b)?"; path="+_3b:"")+((_3c)?"; domain="+_3c:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}};YAHOO.Tools.getBrowserEngine=function(){var _3d=((window.opera&&window.opera.version)?true:false);var _3e=((navigator.vendor&&navigator.vendor.indexOf("Apple")!=-1)?true:false);var _3f=((document.getElementById&&!document.all&&!_3d&&!_3e)?true:false);var _40=((window.ActiveXObject)?true:false);var _41=false;if(_40){if(typeof document.body.style.maxHeight!="undefined"){_41="7";}else{_41="6";}}if(_3d){var _42=window.opera.version().split(".");_41=_42[0]+"."+_42[1];}if(_3f){if(navigator.registerContentHandler){_41="2";}else{_41="1.5";}if((navigator.vendorSub)&&!_41){_41=navigator.vendorSub;}}if(_3e){try{if(console){if((window.onmousewheel!=="undefined")&&(window.onmousewheel===null)){_41="2";}else{_41="1.3";}}}catch(e){_41="1.2";}}var _43={ua:navigator.userAgent,opera:_3d,safari:_3e,gecko:_3f,msie:_40,version:_41};return _43;};YAHOO.Tools.getBrowserAgent=function(){var ua=navigator.userAgent.toLowerCase();var _45=((ua.indexOf("opera")!=-1)?true:false);var _46=((ua.indexOf("safari")!=-1)?true:false);var _47=((ua.indexOf("firefox")!=-1)?true:false);var _48=((ua.indexOf("msie")!=-1)?true:false);var mac=((ua.indexOf("mac")!=-1)?true:false);var _4a=((ua.indexOf("x11")!=-1)?true:false);var win=((mac||_4a)?false:true);var _4c=false;var _4d=false;if(!_47&&!_46&&(ua.indexOf("gecko")!=-1)){_4d=true;var _4e=ua.split("/");_4c=_4e[_4e.length-1].split(" ")[0];}if(_47){var _4f=ua.split("/");_4c=_4f[_4f.length-1].split(" ")[0];}if(_48){_4c=ua.substring((ua.indexOf("msie ")+5)).split(";")[0];}if(_46){_4c=this.getBrowserEngine().version;}if(_45){_4c=ua.substring((ua.indexOf("opera/")+6)).split(" ")[0];}var _50={ua:navigator.userAgent,opera:_45,safari:_46,firefox:_47,mozilla:_4d,msie:_48,mac:mac,win:win,unix:_4a,version:_4c};return _50;};YAHOO.Tools.checkFlash=function(){var br=this.getBrowserEngine();if(br.msie){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");var _53=axo.GetVariable("$version");var _54=_53.split(" ");var _55=_54[1];var _56=_55.split(",");var _57=_56[0];}catch(e){}}else{var _58=null;var _59,len,curr_tok;if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]){_58=navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;}if(_58==null){_57=false;}else{_59=navigator.plugins["Shockwave Flash"].description.split(" ");len=_59.length;while(len--){curr_tok=_59[len];if(!isNaN(parseInt(curr_tok))){hasVersion=curr_tok;_57=hasVersion;break;}}}}return _57;};YAHOO.Tools.setAttr=function(_5a,elm){if(typeof elm=="string"){elm=$(elm);}for(var i in _5a){switch(i.toLowerCase()){case "listener":if(_5a[i] instanceof Array){var ev=_5a[i][0];var _5e=_5a[i][1];var _5f=_5a[i][2];var _60=_5a[i][3];$E.addListener(elm,ev,_5e,_5f,_60);}break;case "classname":case "class":elm.className=_5a[i];break;case "style":YAHOO.Tools.setStyleString(elm,_5a[i]);break;default:elm.setAttribute(i,_5a[i]);break;}}};YAHOO.Tools.create=function(_61){_61=_61.toLowerCase();elm=document.createElement(_61);var txt=false;var _63=false;if(!elm){return false;}for(var i=1;i<arguments.length;i++){txt=arguments[i];if(typeof txt=="string"){_txt=YAHOO.Tools.makeTextObject(txt);elm.appendChild(_txt);}else{if(txt instanceof Array){YAHOO.Tools.makeChildren(txt,elm);}else{if(typeof txt=="object"){YAHOO.Tools.setAttr(txt,elm);}}}}return elm;};YAHOO.Tools.insertAfter=function(elm,_66){if(_66.nextSibling){_66.parentNode.insertBefore(elm,_66.nextSibling);}else{_66.parentNode.appendChild(elm);}};YAHOO.Tools.inArray=function(arr,val){if(arr instanceof Array){for(var i=(arr.length-1);i>=0;i--){if(arr[i]===val){return true;}}}return false;};YAHOO.Tools.checkBoolean=function(str){return ((typeof str=="boolean")?true:false);};YAHOO.Tools.checkNumber=function(str){return ((isNaN(str))?false:true);};YAHOO.Tools.PixelToEm=function(_6c){var _6d={};var _6e=(_6c/13);_6d.other=(Math.round(_6e*100)/100);_6d.msie=(Math.round((_6e*0.9759)*100)/100);return _6d;};YAHOO.Tools.PixelToEmStyle=function(_6f,_70){var _71="";var _72=((_72)?_72.toLowerCase():"width");var _73=(_6f/13);_71+=_72+":"+(Math.round(_73*100)/100)+"em;";_71+="*"+_72+":"+(Math.round((_73*0.9759)*100)/100)+"em;";if((_72=="width")||(_72=="height")){_71+="min-"+_72+":"+_6f+"px;";}return _71;};YAHOO.Tools.base64Encode=function(str){var _75="";var _76,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;do{_76=str.charCodeAt(i++);chr2=str.charCodeAt(i++);chr3=str.charCodeAt(i++);enc1=_76>>2;enc2=((_76&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else{if(isNaN(chr3)){enc4=64;}}_75=_75+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<str.length);return _75;};YAHOO.Tools.base64Decode=function(str){var _79="";var _7a,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;str=str.replace(regExs.base64,"");do{enc1=keyStr.indexOf(str.charAt(i++));enc2=keyStr.indexOf(str.charAt(i++));enc3=keyStr.indexOf(str.charAt(i++));enc4=keyStr.indexOf(str.charAt(i++));_7a=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;_79=_79+String.fromCharCode(_7a);if(enc3!=64){_79=_79+String.fromCharCode(chr2);}if(enc4!=64){_79=_79+String.fromCharCode(chr3);}}while(i<str.length);return _79;};YAHOO.Tools.getQueryString=function(str){var _7d={};if(!str){var str=location.href.split("?");if(str.length!=2){str=["",location.href];}}else{var str=["",str];}if(str[1].match("#")){var _80=str[1].split("#");_7d.hash=_80[1];str[1]=_80[0];}if(str[1]){str=str[1].split("&");if(str.length){for(var i=0;i<str.length;i++){var _82=str[i].split("=");if(_82[0].indexOf("[")!=-1){if(_82[0].indexOf("[]")!=-1){var arr=_82[0].substring(0,_82[0].length-2);if(!_7d[arr]){_7d[arr]=[];}_7d[arr][_7d[arr].length]=_82[1];}else{var arr=_82[0].substring(0,_82[0].indexOf("["));var _85=_82[0].substring((_82[0].indexOf("[")+1),_82[0].indexOf("]"));if(!_7d[arr]){_7d[arr]={};}_7d[arr][_85]=_82[1];}}else{_7d[_82[0]]=_82[1];}}}}return _7d;};YAHOO.Tools.getQueryStringVar=function(str){var qs=this.getQueryString();if(qs[str]){return qs[str];}else{return false;}};YAHOO.Tools.padDate=function(n){return n<10?"0"+n:n;};YAHOO.Tools.encodeStr=function(str){if(/["\\\x00-\x1f]/.test(str)){return "\""+str.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=jsonCodes[b];if(c){return c;}c=b.charCodeAt();return "\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16);})+"\"";}return "\""+str+"\"";};YAHOO.Tools.encodeArr=function(arr){var a=["["],b,i,l=arr.length,v;for(i=0;i<l;i+=1){v=arr[i];switch(typeof v){case "undefined":case "function":case "unknown":break;default:if(b){a.push(",");}a.push(v===null?"null":YAHOO.Tools.JSONEncode(v));b=true;}}a.push("]");return a.join("");};YAHOO.Tools.encodeDate=function(d){return "\""+d.getFullYear()+"-"+YAHOO.Tools.padDate(d.getMonth()+1)+"-"+YAHOO.Tools.padDate(d.getDate())+"T"+YAHOO.Tools.padDate(d.getHours())+":"+YAHOO.Tools.padDate(d.getMinutes())+":"+YAHOO.Tools.padDate(d.getSeconds())+"\"";};YAHOO.Tools.fixJSONDate=function(_90){var tmp=_90.split("T");var _92=_90;if(tmp.length==2){var _93=tmp[0].split("-");if(_93.length==3){_92=new Date(_93[0],(_93[1]-1),_93[2]);var _94=tmp[1].split(":");if(_94.length==3){_92.setHours(_94[0],_94[1],_94[2]);}}}return _92;};YAHOO.Tools.JSONEncode=function(o){if((typeof o=="undefined")||(o===null)){return "null";}else{if(o instanceof Array){return YAHOO.Tools.encodeArr(o);}else{if(o instanceof Date){return YAHOO.Tools.encodeDate(o);}else{if(typeof o=="string"){return YAHOO.Tools.encodeStr(o);}else{if(typeof o=="number"){return isFinite(o)?String(o):"null";}else{if(typeof o=="boolean"){return String(o);}else{var a=["{"],b,i,v;for(var i in o){v=o[i];switch(typeof v){case "undefined":case "function":case "unknown":break;default:if(b){a.push(",");}a.push(YAHOO.Tools.JSONEncode(i),":",((v===null)?"null":YAHOO.Tools.JSONEncode(v)));b=true;}}a.push("}");return a.join("");}}}}}}};YAHOO.Tools.JSONParse=function(_98,_99){var _9a=((_9a)?true:false);try{if(regExs.syntaxCheck.test(_98)){var j=eval("("+_98+")");if(_9a){function walk(k,v){if(v&&typeof v==="object"){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}}if(k.toLowerCase().indexOf("date")>=0){return YAHOO.Tools.fixJSONDate(v);}else{return v;}}return walk("",j);}else{return j;}}}catch(e){console.log(e);}throw new SyntaxError("parseJSON");};YAHOO.tools=YAHOO.Tools;YAHOO.TOOLS=YAHOO.Tools;YAHOO.util.Dom.create=YAHOO.Tools.create;$A=YAHOO.util.Anim;$E=YAHOO.util.Event;$D=YAHOO.util.Dom;$T=YAHOO.Tools;$=YAHOO.util.Dom.get;$$=YAHOO.util.Dom.getElementsByClassName;
1014 2 \ No newline at end of file
... ...
thirdpartyjs/yui/utilities/utilities.js
1   -/* Copyright (c) 2006, Yahoo! Inc. All rights reserved.Code licensed under the BSD License:http://developer.yahoo.net/yui/license.txtversion: 0.12.0 */
2   -if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}return o;};YAHOO.log=function(_2,_3,_4){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_2,_3,_4);}else{return false;}};YAHOO.extend=function(_6,_7,_8){var F=function(){};F.prototype=_7.prototype;_6.prototype=new F();_6.prototype.constructor=_6;_6.superclass=_7.prototype;if(_7.prototype.constructor==Object.prototype.constructor){_7.prototype.constructor=_7;}if(_8){for(var i in _8){_6.prototype[i]=_8[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example");(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf('opera')>-1),isSafari=(ua.indexOf('safari')>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf('gecko')>-1),isIE=(!isOpera&&ua.indexOf('msie')>-1);var patterns={HYPHEN:/(-[a-z])/i};var toCamel=function(property){if(!patterns.HYPHEN.test(property)){return property;}if(propertyCache[property]){return propertyCache[property];}while(patterns.HYPHEN.exec(property)){property=property.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}propertyCache[property]=property;return property;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;var computed=document.defaultView.getComputedStyle(el,'');if(computed){value=computed[toCamel(property)];}return el.style[property]||value;};}else if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case'opacity':var val=100;try{val=el.filters['DXImageTransform.Microsoft.Alpha'].opacity;}catch(e){try{val=el.filters('alpha').opacity;}catch(e){}}return val/100;break;default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value);}};}else{getStyle=function(el,property){return el.style[property];};}if(isIE){setStyle=function(el,property,val){switch(property){case'opacity':if(typeof el.style.filter=='string'){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}break;default:el.style[property]=val;}};}else{setStyle=function(el,property,val){el.style[property]=val;};}YAHOO.util.Dom={get:function(el){if(!el){return null;}if(typeof el!='string'&&!(el instanceof Array)){return el;}if(typeof el=='string'){return document.getElementById(el);}else{var collection=[];for(var i=0,len=el.length;i<len;++i){collection[collection.length]=Y.Dom.get(el[i]);}return collection;}return null;},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none'){return false;}var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop];}else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}}if(isSafari&&this.getStyle(el,'position')=='absolute'){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){parentNode=el.parentNode;}else{parentNode=null;}while(parentNode&&parentNode.tagName.toUpperCase()!='BODY'&&parentNode.tagName.toUpperCase()!='HTML'){if(Y.Dom.getStyle(parentNode,'display')!='inline'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop;}if(parentNode.parentNode){parentNode=parentNode.parentNode;}else{parentNode=null;}}return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative';}var pageXY=this.getXY(el);if(pageXY===false){return false;}var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=(style_pos=='relative')?0:el.offsetLeft;}if(isNaN(delta[1])){delta[1]=(style_pos=='relative')?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';}if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';}var newXY=this.getXY(el);if(!noRetry&&(newXY[0]!=pos[0]||newXY[1]!=pos[1])){this.setXY(el,pos,true);}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var region=new Y.Region.getRegion(el);return region;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(className,tag,root){var method=function(el){return Y.Dom.hasClass(el,className);};return Y.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var f=function(el){return re.test(el['className']);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return;}el['className']=[el['className'],className].join(' ');};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,className)){return;}var c=el['className'];el['className']=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false;}var re=new RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return;}el['className']=el['className'].replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,prefix){prefix=prefix||'yui-gen';el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}if(!el.id){el.id=prefix+id_counter++;}return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);if(!haystack||!needle){return false;}var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle);}else if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPosition(needle)&16);}else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true;}else if(!parent.tagName||parent.tagName.toUpperCase()=='HTML'){return false;}parent=parent.parentNode;}return false;}};return Y.Dom.batch(needle,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(method,tag,root){tag=tag||'*';root=Y.Dom.get(root)||document;var nodes=[];var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=='*'&&root.all)){elements=root.all;}for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}}return nodes;},batch:function(el,method,o,override){var id=el;el=Y.Dom.get(el);var scope=(override)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return method.call(scope,el,o);}var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}collection[collection.length]=method.call(scope,el[i],o);}return collection;},getDocumentHeight:function(){var scrollHeight=(document.compatMode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var scrollWidth=(document.compatMode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||isIE)&&!isOpera){height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;}return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||isIE){width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;}return width;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&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 1 \ No newline at end of file
  2 +if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}return o;};YAHOO.log=function(_2,_3,_4){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_2,_3,_4);}else{return false;}};YAHOO.extend=function(_6,_7,_8){var F=function(){};F.prototype=_7.prototype;_6.prototype=new F();_6.prototype.constructor=_6;_6.superclass=_7.prototype;if(_7.prototype.constructor==Object.prototype.constructor){_7.prototype.constructor=_7;}if(_8){for(var i in _8){_6.prototype[i]=_8[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example");(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf("opera")>-1),isSafari=(ua.indexOf("safari")>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf("gecko")>-1),isIE=(!isOpera&&ua.indexOf("msie")>-1);var _10={HYPHEN:/(-[a-z])/i};var _11=function(_12){if(!_10.HYPHEN.test(_12)){return _12;}if(propertyCache[_12]){return propertyCache[_12];}while(_10.HYPHEN.exec(_12)){_12=_12.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}propertyCache[_12]=_12;return _12;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,_14){var _15=null;var _16=document.defaultView.getComputedStyle(el,"");if(_16){_15=_16[_11(_14)];}return el.style[_14]||_15;};}else{if(document.documentElement.currentStyle&&isIE){getStyle=function(el,_18){switch(_11(_18)){case "opacity":var val=100;try{val=el.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(e){try{val=el.filters("alpha").opacity;}catch(e){}}return val/100;break;default:var _1a=el.currentStyle?el.currentStyle[_18]:null;return (el.style[_18]||_1a);}};}else{getStyle=function(el,_1c){return el.style[_1c];};}}if(isIE){setStyle=function(el,_1e,val){switch(_1e){case "opacity":if(typeof el.style.filter=="string"){el.style.filter="alpha(opacity="+val*100+")";if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}}break;default:el.style[_1e]=val;}};}else{setStyle=function(el,_21,val){el.style[_21]=val;};}YAHOO.util.Dom={get:function(el){if(!el){return null;}if(typeof el!="string"&&!(el instanceof Array)){return el;}if(typeof el=="string"){return document.getElementById(el);}else{var _24=[];for(var i=0,len=el.length;i<len;++i){_24[_24.length]=Y.Dom.get(el[i]);}return _24;}return null;},getStyle:function(el,_27){_27=_11(_27);var f=function(_29){return getStyle(_29,_27);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,_2b,val){_2b=_11(_2b);var f=function(_2e){setStyle(_2e,_2b,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,"display")=="none"){return false;}var _32=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}}var _36=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var _37=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return [box.left+_37,box.top+_36];}else{pos=[el.offsetLeft,el.offsetTop];_32=el.offsetParent;if(_32!=el){while(_32){pos[0]+=_32.offsetLeft;pos[1]+=_32.offsetTop;_32=_32.offsetParent;}}if(isSafari&&this.getStyle(el,"position")=="absolute"){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){_32=el.parentNode;}else{_32=null;}while(_32&&_32.tagName.toUpperCase()!="BODY"&&_32.tagName.toUpperCase()!="HTML"){if(Y.Dom.getStyle(_32,"display")!="inline"){pos[0]-=_32.scrollLeft;pos[1]-=_32.scrollTop;}if(_32.parentNode){_32=_32.parentNode;}else{_32=null;}}return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,_40){var f=function(el){var _43=this.getStyle(el,"position");if(_43=="static"){this.setStyle(el,"position","relative");_43="relative";}var _44=this.getXY(el);if(_44===false){return false;}var _45=[parseInt(this.getStyle(el,"left"),10),parseInt(this.getStyle(el,"top"),10)];if(isNaN(_45[0])){_45[0]=(_43=="relative")?0:el.offsetLeft;}if(isNaN(_45[1])){_45[1]=(_43=="relative")?0:el.offsetTop;}if(pos[0]!==null){el.style.left=pos[0]-_44[0]+_45[0]+"px";}if(pos[1]!==null){el.style.top=pos[1]-_44[1]+_45[1]+"px";}var _46=this.getXY(el);if(!_40&&(_46[0]!=pos[0]||_46[1]!=pos[1])){this.setXY(el,pos,true);}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var _4e=new Y.Region.getRegion(el);return _4e;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(_4f,tag,_51){var _52=function(el){return Y.Dom.hasClass(el,_4f);};return Y.Dom.getElementsBy(_52,tag,_51);},hasClass:function(el,_55){var re=new RegExp("(?:^|\\s+)"+_55+"(?:\\s+|$)");var f=function(el){return re.test(el["className"]);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,_5a){var f=function(el){if(this.hasClass(el,_5a)){return;}el["className"]=[el["className"],_5a].join(" ");};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,_5e){var re=new RegExp("(?:^|\\s+)"+_5e+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_5e)){return;}var c=el["className"];el["className"]=c.replace(re," ");if(this.hasClass(el,_5e)){this.removeClass(el,_5e);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,_64,_65){if(_64===_65){return false;}var re=new RegExp("(?:^|\\s+)"+_64+"(?:\\s+|$)","g");var f=function(el){if(!this.hasClass(el,_64)){this.addClass(el,_65);return;}el["className"]=el["className"].replace(re," "+_65+" ");if(this.hasClass(el,_64)){this.replaceClass(el,_64,_65);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,_6a){_6a=_6a||"yui-gen";el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};}if(!el.id){el.id=_6a+id_counter++;}return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(_6d,_6e){_6d=Y.Dom.get(_6d);if(!_6d||!_6e){return false;}var f=function(_70){if(_6d.contains&&!isSafari){return _6d.contains(_70);}else{if(_6d.compareDocumentPosition){return !!(_6d.compareDocumentPosition(_70)&16);}else{var _71=_70.parentNode;while(_71){if(_71==_6d){return true;}else{if(!_71.tagName||_71.tagName.toUpperCase()=="HTML"){return false;}}_71=_71.parentNode;}return false;}}};return Y.Dom.batch(_6e,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(_75,tag,_77){tag=tag||"*";_77=Y.Dom.get(_77)||document;var _78=[];var _79=_77.getElementsByTagName(tag);if(!_79.length&&(tag=="*"&&_77.all)){_79=_77.all;}for(var i=0,len=_79.length;i<len;++i){if(_75(_79[i])){_78[_78.length]=_79[i];}}return _78;},batch:function(el,_7c,o,_7e){var id=el;el=Y.Dom.get(el);var _80=(_7e)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;}return _7c.call(_80,el,o);}var _81=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];}_81[_81.length]=_7c.call(_80,el[i],o);}return _81;},getDocumentHeight:function(){var _83=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(_83,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var _85=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(_85,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var _87=self.innerHeight;var _88=document.compatMode;if((_88||isIE)&&!isOpera){_87=(_88=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;}return _87;},getViewportWidth:function(){var _89=self.innerWidth;var _8a=document.compatMode;if(_8a||isIE){_89=(_8a=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;}return _89;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(_8f){return (_8f.left>=this.left&&_8f.right<=this.right&&_8f.top>=this.top&&_8f.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return ((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(_90){var t=Math.max(this.top,_90.top);var r=Math.min(this.right,_90.right);var b=Math.min(this.bottom,_90.bottom);var l=Math.max(this.left,_90.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(_95){var t=Math.min(this.top,_95.top);var r=Math.max(this.right,_95.right);var b=Math.max(this.bottom,_95.bottom);var l=Math.min(this.left,_95.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return ("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];}this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.util.CustomEvent=function(_1,_2,_3,_4){this.type=_1;this.scope=_2||window;this.silent=_3;this.signature=_4||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var _5="_YUICEOnSubscribe";if(_1!==_5){this.subscribeEvent=new YAHOO.util.CustomEvent(_5,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,_7,_8){if(this.subscribeEvent){this.subscribeEvent.fire(fn,_7,_8);}this.subscribers.push(new YAHOO.util.Subscriber(fn,_7,_8));},unsubscribe:function(fn,_9){var _10=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,_9)){this._delete(i);_10=true;}}return _10;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return true;}var _14=[],ret=true,i;for(i=0;i<arguments.length;++i){_14.push(arguments[i]);}var _15=_14.length;if(!this.silent){}for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){}var _16=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var _17=null;if(_14.length>0){_17=_14[0];}ret=s.fn.call(_16,_17,s.obj);}else{ret=s.fn.call(_16,this.type,_14,s.obj);}if(false===ret){if(!this.silent){}return false;}}}return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);}},_delete:function(_18){var s=this.subscribers[_18];if(s){delete s.fn;delete s.obj;}this.subscribers.splice(_18,1);},toString:function(){return "CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,_20){this.fn=fn;this.obj=obj||null;this.override=_20;};YAHOO.util.Subscriber.prototype.getScope=function(_21){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return _21;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return (this.fn==fn&&this.obj==obj);}else{return (this.fn==fn);}};YAHOO.util.Subscriber.prototype.toString=function(){return "Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var _22=false;var _23=[];var _24=[];var _25=[];var _26=[];var _27=0;var _28=[];var _29=[];var _30=0;return {POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var _31=this;var _32=function(){_31._tryPreloadAttach();};this._interval=setInterval(_32,this.POLL_INTERVAL);}},onAvailable:function(_33,_34,_35,_36){_28.push({id:_33,fn:_34,obj:_35,override:_36,checkReady:false});_27=this.POLL_RETRYS;this.startInterval();},onContentReady:function(_37,_38,_39,_40){_28.push({id:_37,fn:_38,obj:_39,override:_40,checkReady:true});_27=this.POLL_RETRYS;this.startInterval();},addListener:function(el,_42,fn,obj,_43){if(!fn||!fn.call){return false;}if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],_42,fn,obj,_43)&&ok;}return ok;}else{if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,_42,fn,obj,_43);});return true;}}}if(!el){return false;}if("unload"==_42&&obj!==this){_24[_24.length]=[el,_42,fn,obj,_43];return true;}var _46=el;if(_43){if(_43===true){_46=obj;}else{_46=_43;}}var _47=function(e){return fn.call(_46,YAHOO.util.Event.getEvent(e),obj);};var li=[el,_42,fn,_47,_46];var _50=_23.length;_23[_50]=li;if(this.useLegacyEvent(el,_42)){var _51=this.getLegacyIndex(el,_42);if(_51==-1||el!=_25[_51][0]){_51=_25.length;_29[el.id+_42]=_51;_25[_51]=[el,_42,el["on"+_42]];_26[_51]=[];el["on"+_42]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),_51);};}_26[_51].push(li);}else{this._simpleAdd(el,_42,_47,false);}return true;},fireLegacyEvent:function(e,_52){var ok=true;var le=_26[_52];for(var i=0,len=le.length;i<len;++i){var li=le[i];if(li&&li[this.WFN]){var _54=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(_54,e);ok=(ok&&ret);}}return ok;},getLegacyIndex:function(el,_56){var key=this.generateId(el)+_56;if(typeof _29[key]=="undefined"){return -1;}else{return _29[key];}},useLegacyEvent:function(el,_58){if(!el.addEventListener&&!el.attachEvent){return true;}else{if(this.isSafari){if("click"==_58||"dblclick"==_58){return true;}}}return false;},removeListener:function(el,_59,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else{if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],_59,fn)&&ok);}return ok;}}if(!fn||!fn.call){return this.purgeElement(el,false,_59);}if("unload"==_59){for(i=0,len=_24.length;i<len;i++){var li=_24[i];if(li&&li[0]==el&&li[1]==_59&&li[2]==fn){_24.splice(i,1);return true;}}return false;}var _60=null;var _61=arguments[3];if("undefined"==typeof _61){_61=this._getCacheIndex(el,_59,fn);}if(_61>=0){_60=_23[_61];}if(!el||!_60){return false;}if(this.useLegacyEvent(el,_59)){var _62=this.getLegacyIndex(el,_59);var _63=_26[_62];if(_63){for(i=0,len=_63.length;i<len;++i){li=_63[i];if(li&&li[this.EL]==el&&li[this.TYPE]==_59&&li[this.FN]==fn){_63.splice(i,1);}}}}else{this._simpleRemove(el,_59,_60[this.WFN],false);}delete _23[_61][this.WFN];delete _23[_61][this.FN];_23.splice(_61,1);return true;},getTarget:function(ev,_65){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(_67){if(_67&&3==_67.nodeType){return _67.parentNode;}else{return _67;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}return y;},getXY:function(ev){return [this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else{if(ev.type=="mouseover"){t=ev.fromElement;}}}return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}c=c.caller;}}return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,_71,fn){for(var i=0,len=_23.length;i<len;++i){var li=_23[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==_71){return i;}}return -1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+_30;++_30;el.id=id;}return id;},_isValidCollection:function(o){return (o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){_22=true;var EU=YAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;}this.locked=true;var _75=!_22;if(!_75){_75=(_27>0);}var _76=[];for(var i=0,len=_28.length;i<len;++i){var _77=_28[i];if(_77){var el=this.getEl(_77.id);if(el){if(!_77.checkReady||_22||el.nextSibling||(document&&document.body)){var _78=el;if(_77.override){if(_77.override===true){_78=_77.obj;}else{_78=_77.override;}}_77.fn.call(_78,_77.obj);delete _28[i];}}else{_76.push(_77);}}}_27=(_76.length===0)?0:_27-1;if(_75){this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;return true;},purgeElement:function(el,_79,_80){var _81=this.getListeners(el,_80);if(_81){for(var i=0,len=_81.length;i<len;++i){var l=_81[i];this.removeListener(el,l.type,l.fn);}}if(_79&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],_79,_80);}}},getListeners:function(el,_83){var _84=[];if(_23&&_23.length>0){for(var i=0,len=_23.length;i<len;++i){var l=_23[i];if(l&&l[this.EL]===el&&(!_83||_83===l[this.TYPE])){_84.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}return (_84.length)?_84:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=_24.length;i<len;++i){l=_24[i];if(l){var _85=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){_85=l[EU.OBJ];}else{_85=l[EU.ADJ_SCOPE];}}l[EU.FN].call(_85,EU.getEvent(e),l[EU.OBJ]);delete _24[i];l=null;_85=null;}}if(_23&&_23.length>0){j=_23.length;while(j){index=j-1;l=_23[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);}j=j-1;}l=null;EU.clearCache();}for(i=0,len=_25.length;i<len;++i){delete _25[i][0];delete _25[i];}EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return [dd.scrollTop,dd.scrollLeft];}else{if(db){return [db.scrollTop,db.scrollLeft];}else{return [0,0];}}},_simpleAdd:function(){if(window.addEventListener){return function(el,_87,fn,_88){el.addEventListener(_87,fn,(_88));};}else{if(window.attachEvent){return function(el,_89,fn,_90){el.attachEvent("on"+_89,fn);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,_91,fn,_92){el.removeEventListener(_91,fn,(_92));};}else{if(window.detachEvent){return function(el,_93,fn){el.detachEvent("on"+_93,fn);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(document&&document.body){EU._load();}else{EU._simpleAdd(window,"load",EU._load);}EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(_94,_95,_96,_97){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_94];if(ce){ce.subscribe(_95,_96,_97);}else{this.__yui_subscribers=this.__yui_subscribers||{};var _99=this.__yui_subscribers;if(!_99[_94]){_99[_94]=[];}_99[_94].push({fn:_95,obj:_96,override:_97});}},unsubscribe:function(_100,p_fn,_102){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_100];if(ce){return ce.unsubscribe(p_fn,_102);}else{return false;}},createEvent:function(_103,_104){this.__yui_events=this.__yui_events||{};var opts=_104||{};var _106=this.__yui_events;if(_106[_103]){}else{var _107=opts.scope||this;var _108=opts.silent||null;var ce=new YAHOO.util.CustomEvent(_103,_107,_108,YAHOO.util.CustomEvent.FLAT);_106[_103]=ce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscribe(opts.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[_103];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}}return _106[_103];},fireEvent:function(_110,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[_110];if(ce){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i]);}return ce.fire.apply(ce,args);}else{return null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_events[type]){return true;}}return false;}};YAHOO.util.Anim=function(el,_157,_158,_159){if(el){this.init(el,_157,_158,_159);}};YAHOO.util.Anim.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return ("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,_15d,end){return this.method(this.currentFrame,_15d,end-_15d,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;}YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=="auto"&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);}var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,"position")=="absolute"&&pos)){val=el["offset"+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;}return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return "px";}return "";},setRuntimeAttribute:function(attr){var _16a;var end;var _16c=this.attributes;this.runtimeAttributes[attr]={};var _16d=function(prop){return (typeof prop!=="undefined");};if(!_16d(_16c[attr]["to"])&&!_16d(_16c[attr]["by"])){return false;}_16a=(_16d(_16c[attr]["from"]))?_16c[attr]["from"]:this.getAttribute(attr);if(_16d(_16c[attr]["to"])){end=_16c[attr]["to"];}else{if(_16d(_16c[attr]["by"])){if(_16a.constructor==Array){end=[];for(var i=0,len=_16a.length;i<len;++i){end[i]=_16a[i]+_16c[attr]["by"][i];}}else{end=_16a+_16c[attr]["by"];}}}this.runtimeAttributes[attr].start=_16a;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(_16d(_16c[attr].unit))?_16c[attr]["unit"]:this.getDefaultUnit(attr);},init:function(el,_171,_172,_173){var _174=false;var _175=null;var _176=0;el=YAHOO.util.Dom.get(el);this.attributes=_171||{};this.duration=_172||1;this.method=_173||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return _174;};this.getStartTime=function(){return _175;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(_177){if(_177){this.currentFrame=this.totalFrames;this._onTween.fire();}YAHOO.util.AnimMgr.stop(this);};var _178=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);}_174=true;_176=0;_175=new Date();};var _17a=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return ("duration: "+data.duration+", currentFrame: "+data.currentFrame);};this.onTween.fire(data);var _17c=this.runtimeAttributes;for(var attr in _17c){this.setAttribute(attr,this.doMethod(attr,_17c[attr].start,_17c[attr].end),_17c[attr].unit);}_176+=1;};var _17e=function(){var _17f=(new Date()-_175)/1000;var data={duration:_17f,frames:_176,fps:_176/_17f};data.toString=function(){return ("duration: "+data.duration+", frames: "+data.frames+", fps: "+data.fps);};_174=false;_176=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent("_start",this,true);this.onStart=new YAHOO.util.CustomEvent("start",this);this.onTween=new YAHOO.util.CustomEvent("tween",this);this._onTween=new YAHOO.util.CustomEvent("_tween",this,true);this.onComplete=new YAHOO.util.CustomEvent("complete",this);this._onComplete=new YAHOO.util.CustomEvent("_complete",this,true);this._onStart.subscribe(_178);this._onTween.subscribe(_17a);this._onComplete.subscribe(_17e);}};YAHOO.util.AnimMgr=new function(){var _181=null;var _182=[];var _183=0;this.fps=200;this.delay=1;this.registerElement=function(_184){_182[_182.length]=_184;_183+=1;_184._onStart.fire();this.start();};this.unRegister=function(_185,_186){_185._onComplete.fire();_186=_186||getIndex(_185);if(_186!=-1){_182.splice(_186,1);}_183-=1;if(_183<=0){this.stop();}};this.start=function(){if(_181===null){_181=setInterval(this.run,this.delay);}};this.stop=function(_187){if(!_187){clearInterval(_181);for(var i=0,len=_182.length;i<len;++i){if(_182[i].isAnimated()){this.unRegister(_187,i);}}_182=[];_181=null;_183=0;}else{this.unRegister(_187);}};this.run=function(){for(var i=0,len=_182.length;i<len;++i){var _18a=_182[i];if(!_18a||!_18a.isAnimated()){continue;}if(_18a.currentFrame<_18a.totalFrames||_18a.totalFrames===null){_18a.currentFrame+=1;if(_18a.useSeconds){correctFrame(_18a);}_18a._onTween.fire();}else{YAHOO.util.AnimMgr.stop(_18a,i);}}};var _18b=function(anim){for(var i=0,len=_182.length;i<len;++i){if(_182[i]==anim){return i;}}return -1;};var _18e=function(_18f){var _190=_18f.totalFrames;var _191=_18f.currentFrame;var _192=(_18f.currentFrame*_18f.duration*1000/_18f.totalFrames);var _193=(new Date()-_18f.getStartTime());var _194=0;if(_193<_18f.duration*1000){_194=Math.round((_193/_192-1)*_18f.currentFrame);}else{_194=_190-(_191+1);}if(_194>0&&isFinite(_194)){if(_18f.currentFrame+_194>=_190){_194=_190-(_191+1);}_18f.currentFrame+=_194;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(_195,t){var n=_195.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[_195[i][0],_195[i][1]];}for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}return [tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,_19c,_19d,_19e){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,_19c,_19d,_19e);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var _1a0=Y.ColorAnim.superclass;var _1a1=Y.ColorAnim.prototype;_1a1.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return ("ColorAnim "+id);};_1a1.patterns.color=/color$/i;_1a1.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;_1a1.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;_1a1.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;_1a1.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;_1a1.parseColor=function(s){if(s.length==3){return s;}var c=this.patterns.hex.exec(s);if(c&&c.length==4){return [parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];}c=this.patterns.rgb.exec(s);if(c&&c.length==4){return [parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];}c=this.patterns.hex3.exec(s);if(c&&c.length==4){return [parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}return null;};_1a1.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var _1a9=el.parentNode;val=Y.Dom.getStyle(_1a9,attr);while(_1a9&&this.patterns.transparent.test(val)){_1a9=_1a9.parentNode;val=Y.Dom.getStyle(_1a9,attr);if(_1a9.tagName.toUpperCase()=="HTML"){val="#fff";}}}}else{val=_1a0.getAttribute.call(this,attr);}return val;};_1a1.doMethod=function(attr,_1ab,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=_1ab.length;i<len;++i){val[i]=_1a0.doMethod.call(this,attr,_1ab[i],end[i]);}val="rgb("+Math.floor(val[0])+","+Math.floor(val[1])+","+Math.floor(val[2])+")";}else{val=_1a0.doMethod.call(this,attr,_1ab,end);}return val;};_1a1.setRuntimeAttribute=function(attr){_1a0.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var _1b0=this.attributes;var _1b1=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof _1b0[attr]["to"]==="undefined"&&typeof _1b0[attr]["by"]!=="undefined"){end=this.parseColor(_1b0[attr].by);for(var i=0,len=_1b1.length;i<len;++i){end[i]=_1b1[i]+end[i];}}this.runtimeAttributes[attr].start=_1b1;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return -c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;}return -c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return -c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t*t*t+b;}return -c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0){return b;}if((t/=d)==1){return b+c;}if(!p){p=d*0.3;}if(!a||a<Math.abs(c)){a=c;var s=p/4;}else{var s=p/(2*Math.PI)*Math.asin(c/a);}return -(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0){return b;}if((t/=d)==1){return b+c;}if(!p){p=d*0.3;}if(!a||a<Math.abs(c)){a=c;var s=p/4;}else{var s=p/(2*Math.PI)*Math.asin(c/a);}return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0){return b;}if((t/=d/2)==2){return b+c;}if(!p){p=d*(0.3*1.5);}if(!a||a<Math.abs(c)){a=c;var s=p/4;}else{var s=p/(2*Math.PI)*Math.asin(c/a);}if(t<1){return -0.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;}return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*0.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=="undefined"){s=1.70158;}return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=="undefined"){s=1.70158;}return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=="undefined"){s=1.70158;}if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;}return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else{if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+0.75)+b;}else{if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+0.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+0.984375)+b;}}}},bounceBoth:function(t,b,c,d){if(t<d/2){return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*0.5+b;}return YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*0.5+c*0.5+b;}};(function(){YAHOO.util.Motion=function(el,_204,_205,_206){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,_204,_205,_206);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var _208=Y.Motion.superclass;var _209=Y.Motion.prototype;_209.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return ("Motion "+id);};_209.patterns.points=/^points$/i;_209.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||"px";_208.setAttribute.call(this,"left",val[0],unit);_208.setAttribute.call(this,"top",val[1],unit);}else{_208.setAttribute.call(this,attr,val,unit);}};_209.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[_208.getAttribute.call(this,"left"),_208.getAttribute.call(this,"top")];}else{val=_208.getAttribute.call(this,attr);}return val;};_209.doMethod=function(attr,_212,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=_208.doMethod.call(this,attr,_212,end);}return val;};_209.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var _218=this.attributes;var _219;var _21a=_218["points"]["control"]||[];var end;var i,len;if(_21a.length>0&&!(_21a[0] instanceof Array)){_21a=[_21a];}else{var tmp=[];for(i=0,len=_21a.length;i<len;++i){tmp[i]=_21a[i];}_21a=tmp;}if(Y.Dom.getStyle(el,"position")=="static"){Y.Dom.setStyle(el,"position","relative");}if(isset(_218["points"]["from"])){Y.Dom.setXY(el,_218["points"]["from"]);}else{Y.Dom.setXY(el,Y.Dom.getXY(el));}_219=this.getAttribute("points");if(isset(_218["points"]["to"])){end=translateValues.call(this,_218["points"]["to"],_219);var _21e=Y.Dom.getXY(this.getEl());for(i=0,len=_21a.length;i<len;++i){_21a[i]=translateValues.call(this,_21a[i],_219);}}else{if(isset(_218["points"]["by"])){end=[_219[0]+_218["points"]["by"][0],_219[1]+_218["points"]["by"][1]];for(i=0,len=_21a.length;i<len;++i){_21a[i]=[_219[0]+_21a[i][0],_219[1]+_21a[i][1]];}}}this.runtimeAttributes[attr]=[_219];if(_21a.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(_21a);}this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;}else{_208.setRuntimeAttribute.call(this,attr);}};var _21f=function(val,_221){var _222=Y.Dom.getXY(this.getEl());val=[val[0]-_222[0]+_221[0],val[1]-_222[1]+_221[1]];return val;};var _223=function(prop){return (typeof prop!=="undefined");};})();(function(){YAHOO.util.Scroll=function(el,_226,_227,_228){if(el){YAHOO.util.Scroll.superclass.constructor.call(this,el,_226,_227,_228);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var Y=YAHOO.util;var _22a=Y.Scroll.superclass;var _22b=Y.Scroll.prototype;_22b.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return ("Scroll "+id);};_22b.doMethod=function(attr,_22f,end){var val=null;if(attr=="scroll"){val=[this.method(this.currentFrame,_22f[0],end[0]-_22f[0],this.totalFrames),this.method(this.currentFrame,_22f[1],end[1]-_22f[1],this.totalFrames)];}else{val=_22a.doMethod.call(this,attr,_22f,end);}return val;};_22b.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=="scroll"){val=[el.scrollLeft,el.scrollTop];}else{val=_22a.getAttribute.call(this,attr);}return val;};_22b.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=="scroll"){el.scrollLeft=val[0];el.scrollTop=val[1];}else{_22a.setAttribute.call(this,attr,val,unit);}};})();(function(){var _1=YAHOO.util.Event;var _2=YAHOO.util.Dom;YAHOO.util.DragDrop=function(id,_4,_5){if(id){this.init(id,_4,_5);}};YAHOO.util.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=_2.get(this.id);}return this._domRef;},getDragEl:function(){return _2.get(this.dragElId);},init:function(id,_9,_10){this.initTarget(id,_9,_10);_1.on(this.id,"mousedown",this.handleMouseDown,this,true);},initTarget:function(id,_11,_12){this.config=_12||{};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.id=id;this.addToGroup((_11)?_11:"default");this.handleElId=id;_1.onAvailable(id,this.handleOnAvailable,this,true);this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(_13,_14,_15,_16){if(!_14&&0!==_14){this.padding=[_13,_13,_13,_13];}else{if(!_15&&0!==_15){this.padding=[_13,_14,_13,_14];}else{this.padding=[_13,_14,_15,_16];}}},setInitPosition:function(_17,_18){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;}var dx=_17||0;var dy=_18||0;var p=_2.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||_2.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(_24){this.groups[_24]=true;this.DDM.regDragDrop(this,_24);},removeFromGroup:function(_25){if(this.groups[_25]){delete this.groups[_25];}this.DDM.removeDDFromGroup(this,_25);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}_1.on(id,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(id);this.hasOuterHandles=true;},unreg:function(){_1.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return (this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){var _27=e.which||e.button;if(this.primaryButtonOnly&&_27>1){return;}if(this.isLocked()){return;}this.DDM.refreshCache(this.groups);var pt=new YAHOO.util.Point(_1.getPageX(e),_1.getPageY(e));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}else{}}},clickValidator:function(e){var _29=_1.getTarget(e);return (this.isValidHandleChild(_29)&&(this.id==this.handleElId||this.DDM.handleWasClicked(_29,this.id)));},addInvalidHandleType:function(_30){var _31=_30.toUpperCase();this.invalidHandleTypes[_31]=_31;},addInvalidHandleId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(_32){this.invalidHandleClasses.push(_32);},removeInvalidHandleType:function(_33){var _34=_33.toUpperCase();delete this.invalidHandleTypes[_34];},removeInvalidHandleId:function(id){if(typeof id!=="string"){YAHOO.log("id is not a string, assuming it is an HTMLElement");id=_2.generateId(id);}delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(_35){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==_35){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(_37){var _38=true;var _39;try{_39=_37.nodeName.toUpperCase();}catch(e){_39=_37.nodeName;}_38=_38&&!this.invalidHandleTypes[_39];_38=_38&&!this.invalidHandleIds[_37.id];for(var i=0,len=this.invalidHandleClasses.length;_38&&i<len;++i){_38=!_2.hasClass(_37,this.invalidHandleClasses[i]);}return _38;},setXTicks:function(_40,_41){this.xTicks=[];this.xTickSize=_41;var _42={};for(var i=this.initPageX;i>=this.minX;i=i-_41){if(!_42[i]){this.xTicks[this.xTicks.length]=i;_42[i]=true;}}for(i=this.initPageX;i<=this.maxX;i=i+_41){if(!_42[i]){this.xTicks[this.xTicks.length]=i;_42[i]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(_43,_44){this.yTicks=[];this.yTickSize=_44;var _45={};for(var i=this.initPageY;i>=this.minY;i=i-_44){if(!_45[i]){this.yTicks[this.yTicks.length]=i;_45[i]=true;}}for(i=this.initPageY;i<=this.maxY;i=i+_44){if(!_45[i]){this.yTicks[this.yTicks.length]=i;_45[i]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(_46,_47,_48){this.leftConstraint=_46;this.rightConstraint=_47;this.minX=this.initPageX-_46;this.maxX=this.initPageX+_47;if(_48){this.setXTicks(this.initPageX,_48);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(iUp,_50,_51){this.topConstraint=iUp;this.bottomConstraint=_50;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+_50;if(_51){this.setYTicks(this.initPageY,_51);}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(val,_53){if(!_53){return val;}else{if(_53[0]>=val){return _53[0];}else{for(var i=0,len=_53.length;i<len;++i){var _54=i+1;if(_53[_54]&&_53[_54]>=val){var _55=val-_53[i];var _56=_53[_54]-val;return (_56>_55)?_53[i]:_53[_54];}}return _53[_53.length-1];}}},toString:function(){return ("DragDrop "+this.id);}};})();if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var _57=YAHOO.util.Event;return {ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(_58,_59){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;}oDD[_58].apply(oDD,_59);}}},_onLoad:function(){this.init();_57.on(document,"mouseup",this.handleMouseUp,this,true);_57.on(document,"mousemove",this.handleMouseMove,this,true);_57.on(window,"unload",this._onUnload,this,true);_57.on(window,"resize",this._onResize,this,true);},_onResize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,_61){if(!this.initialized){this.init();}if(!this.ids[_61]){this.ids[_61]={};}this.ids[_61][oDD.id]=oDD;},removeDDFromGroup:function(oDD,_62){if(!this.ids[_62]){this.ids[_62]={};}var obj=this.ids[_62];if(obj&&obj[oDD.id]){delete obj[oDD.id];}},_remove:function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}}delete this.handleIds[oDD.id];},regHandle:function(_65,_66){if(!this.handleIds[_65]){this.handleIds[_65]={};}this.handleIds[_65][_66]=_66;},isDragDrop:function(id){return (this.getDDById(id))?true:false;},getRelated:function(_67,_68){var _69=[];for(var i in _67.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;}if(!_68||dd.isTarget){_69[_69.length]=dd;}}}return _69;},isLegalTarget:function(oDD,_71){var _72=this.getRelated(oDD,true);for(var i=0,len=_72.length;i<len;++i){if(_72[i].id==_71.id){return true;}}return false;},isTypeOfDD:function(oDD){return (oDD&&oDD.__ygDragDrop);},isHandle:function(_73,_74){return (this.handleIds[_73]&&this.handleIds[_73][_74]);},getDDById:function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}}return null;},handleMouseDown:function(e,oDD){this.currentTarget=YAHOO.util.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=YAHOO.util.Event.getPageX(e);this.startY=YAHOO.util.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=YAHOO.util.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDrag(x,y);}this.dragThreshMet=true;},handleMouseUp:function(e){if(!this.dragCurrent){return;}clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{}this.stopDrag(e);this.stopEvent(e);},stopEvent:function(e){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(e);}if(this.preventDefault){YAHOO.util.Event.preventDefault(e);}},stopDrag:function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(e);this.dragCurrent.endDrag(e);}this.dragCurrent.onMouseUp(e);}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(e){if(!this.dragCurrent){return true;}if(YAHOO.util.Event.isIE&&!e.button){this.stopEvent(e);return this.handleMouseUp(e);}if(!this.dragThreshMet){var _76=Math.abs(this.startX-YAHOO.util.Event.getPageX(e));var _77=Math.abs(this.startY-YAHOO.util.Event.getPageY(e));if(_76>this.clickPixelThresh||_77>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);this.fireEvents(e,false);}this.stopEvent(e);return true;},fireEvents:function(e,_78){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;}var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);var pt=new YAHOO.util.Point(x,y);var _80=[];var _81=[];var _82=[];var _83=[];var _84=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;}if(!this.isOverTarget(pt,ddo,this.mode)){_81.push(ddo);}_80[i]=true;delete this.dragOvers[i];}for(var _86 in dc.groups){if("string"!=typeof _86){continue;}for(i in this.ids[_86]){var oDD=this.ids[_86][i];if(!this.isTypeOfDD(oDD)){continue;}if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(_78){_83.push(oDD);}else{if(!_80[oDD.id]){_84.push(oDD);}else{_82.push(oDD);}this.dragOvers[oDD.id]=oDD;}}}}}if(this.mode){if(_81.length){dc.b4DragOut(e,_81);dc.onDragOut(e,_81);}if(_84.length){dc.onDragEnter(e,_84);}if(_82.length){dc.b4DragOver(e,_82);dc.onDragOver(e,_82);}if(_83.length){dc.b4DragDrop(e,_83);dc.onDragDrop(e,_83);}}else{var len=0;for(i=0,len=_81.length;i<len;++i){dc.b4DragOut(e,_81[i].id);dc.onDragOut(e,_81[i].id);}for(i=0,len=_84.length;i<len;++i){dc.onDragEnter(e,_84[i].id);}for(i=0,len=_82.length;i<len;++i){dc.b4DragOver(e,_82[i].id);dc.onDragOver(e,_82[i].id);}for(i=0,len=_83.length;i<len;++i){dc.b4DragDrop(e,_83[i].id);dc.onDragDrop(e,_83[i].id);}}if(_78&&!_83.length){dc.onInvalidDrop(e);}},getBestMatch:function(dds){var _89=null;var len=dds.length;if(len==1){_89=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){_89=dd;break;}else{if(!_89||_89.overlap.getArea()<dd.overlap.getArea()){_89=dd;}}}}return _89;},refreshCache:function(_90){for(var _91 in _90){if("string"!=typeof _91){continue;}for(var i in this.ids[_91]){var oDD=this.ids[_91][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var _93=el.offsetParent;if(_93){return true;}}}catch(e){}return false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;}var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=YAHOO.util.Dom.getXY(el);}catch(e){}if(!pos){return null;}x1=pos[0];x2=x1+el.offsetWidth;y1=pos[1];y2=y1+el.offsetHeight;t=y1-oDD.padding[0];r=x2+oDD.padding[1];b=y2+oDD.padding[2];l=x1-oDD.padding[3];return new YAHOO.util.Region(t,r,b,l);},isOverTarget:function(pt,_94,_95){var loc=this.locationCache[_94.id];if(!loc||!this.useCache){loc=this.getLocation(_94);this.locationCache[_94.id]=loc;}if(!loc){return false;}_94.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||(!_95&&!dc.constrainX&&!dc.constrainY)){return _94.cursorIsOver;}_94.overlap=null;var pos=dc.getTargetCoord(pt.x,pt.y);var el=dc.getDragEl();var _96=new YAHOO.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x);var _97=_96.intersect(loc);if(_97){_94.overlap=_97;return (_95)?true:_94.cursorIsOver;}else{return false;}},_onUnload:function(e,me){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];}this.elementCache={};this.ids={};},elementCache:{},getElWrapper:function(id){var _99=this.elementCache[id];if(!_99||!_99.el){_99=this.elementCache[id]=new this.ElementWrapper(YAHOO.util.Dom.get(id));}return _99;},getElement:function(id){return YAHOO.util.Dom.get(id);},getCss:function(id){var el=YAHOO.util.Dom.get(id);return (el)?el.style:null;},ElementWrapper:function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;},getPosX:function(el){return YAHOO.util.Dom.getX(el);},getPosY:function(el){return YAHOO.util.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;if(s==n1){p.insertBefore(n1,n2);}else{if(n2==n1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}}}},getScroll:function(){var t,l,dde=document.documentElement,db=document.body;if(dde&&(dde.scrollTop||dde.scrollLeft)){t=dde.scrollTop;l=dde.scrollLeft;}else{if(db){t=db.scrollTop;l=db.scrollLeft;}else{YAHOO.log("could not get scroll property");}}return {top:t,left:l};},getStyle:function(el,_104){return YAHOO.util.Dom.getStyle(el,_104);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(_105,_106){var _107=YAHOO.util.Dom.getXY(_106);YAHOO.util.Dom.setXY(_105,_107);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(a,b){return (a-b);},_timeoutCount:0,_addListeners:function(){var DDM=YAHOO.util.DDM;if(YAHOO.util.Event&&document){DDM._onLoad();}else{if(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(document&&document.body){DDM._timeoutCount+=1;}}}},handleWasClicked:function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}YAHOO.util.DD=function(id,_111,_112){if(id){this.init(id,_111,_112);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(_113,_114){var x=_113-this.startPageX;var y=_114-this.startPageY;this.setDelta(x,y);},setDelta:function(_115,_116){this.deltaX=_115;this.deltaY=_116;},setDragElPos:function(_117,_118){var el=this.getDragEl();this.alignElWithMouse(el,_117,_118);},alignElWithMouse:function(el,_119,_120){var _121=this.getTargetCoord(_119,_120);if(!this.deltaSetXY){var _122=[_121.x,_121.y];YAHOO.util.Dom.setXY(el,_122);var _123=parseInt(YAHOO.util.Dom.getStyle(el,"left"),10);var _124=parseInt(YAHOO.util.Dom.getStyle(el,"top"),10);this.deltaSetXY=[_123-_121.x,_124-_121.y];}else{YAHOO.util.Dom.setStyle(el,"left",(_121.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(el,"top",(_121.y+this.deltaSetXY[1])+"px");}this.cachePosition(_121.x,_121.y);this.autoScroll(_121.x,_121.y,el.offsetHeight,el.offsetWidth);},cachePosition:function(_125,_126){if(_125){this.lastPageX=_125;this.lastPageY=_126;}else{var _127=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=_127[0];this.lastPageY=_127[1];}},autoScroll:function(x,y,h,w){if(this.scroll){var _130=this.DDM.getClientHeight();var _131=this.DDM.getClientWidth();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var _135=w+x;var _136=(_130+st-y-this.deltaY);var _137=(_131+sl-x-this.deltaX);var _138=40;var _139=(document.all)?80:30;if(bot>_130&&_136<_138){window.scrollTo(sl,st+_139);}if(y<st&&st>0&&y-st<_138){window.scrollTo(sl,st-_139);}if(_135>_131&&_137<_138){window.scrollTo(sl+_139,st);}if(x<sl&&sl>0&&x-sl<_138){window.scrollTo(sl-_139,st);}}},getTargetCoord:function(_140,_141){var x=_140-this.deltaX;var y=_141-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;}if(x>this.maxX){x=this.maxX;}}if(this.constrainY){if(y<this.minY){y=this.minY;}if(y>this.maxY){y=this.maxY;}}x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return {x:x,y:y};},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(e){this.autoOffset(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},toString:function(){return ("DD "+this.id);}});YAHOO.util.DDProxy=function(id,_142,_143){if(id){this.init(id,_142,_143);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var self=this;var body=document.body;if(!body||!body.firstChild){setTimeout(function(){self.createFrame();},50);return;}var div=this.getDragEl();if(!div){div=document.createElement("div");div.id=this.dragElId;var s=div.style;s.position="absolute";s.visibility="hidden";s.cursor="move";s.border="2px solid #aaa";s.zIndex=999;body.insertBefore(div,body.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(_147,_148){var el=this.getEl();var _149=this.getDragEl();var s=_149.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2));}this.setDragElPos(_147,_148);YAHOO.util.Dom.setStyle(_149,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var DOM=YAHOO.util.Dom;var el=this.getEl();var _151=this.getDragEl();var bt=parseInt(DOM.getStyle(_151,"borderTopWidth"),10);var br=parseInt(DOM.getStyle(_151,"borderRightWidth"),10);var bb=parseInt(DOM.getStyle(_151,"borderBottomWidth"),10);var bl=parseInt(DOM.getStyle(_151,"borderLeftWidth"),10);if(isNaN(bt)){bt=0;}if(isNaN(br)){br=0;}if(isNaN(bb)){bb=0;}if(isNaN(bl)){bl=0;}var _156=Math.max(0,el.offsetWidth-br-bl);var _157=Math.max(0,el.offsetHeight-bt-bb);DOM.setStyle(_151,"width",_156+"px");DOM.setStyle(_151,"height",_157+"px");}},b4MouseDown:function(e){var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x,y);},b4StartDrag:function(x,y){this.showFrame(x,y);},b4EndDrag:function(e){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(e){var DOM=YAHOO.util.Dom;var lel=this.getEl();var del=this.getDragEl();DOM.setStyle(del,"visibility","");DOM.setStyle(lel,"visibility","hidden");YAHOO.util.DDM.moveToEl(lel,del);DOM.setStyle(del,"visibility","hidden");DOM.setStyle(lel,"visibility","");},toString:function(){return ("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(id,_160,_161){if(id){this.initTarget(id,_160,_161);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return ("DDTarget "+this.id);}});YAHOO.util.Connect={_msxml_progid:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],_http_header:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:"application/x-www-form-urlencoded",_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,setProgId:function(id){this._msxml_progid.unshift(id);},setDefaultPostHeader:function(b){this._use_default_post_header=b;},setPollingInterval:function(i){if(typeof i=="number"&&isFinite(i)){this._polling_interval=i;}},createXhrObject:function(_350){var obj,http;try{http=new XMLHttpRequest();obj={conn:http,tId:_350};}catch(e){for(var i=0;i<this._msxml_progid.length;++i){try{http=new ActiveXObject(this._msxml_progid[i]);obj={conn:http,tId:_350};break;}catch(e){}}}finally{return obj;}},getConnectionObject:function(){var o;var tId=this._transaction_id;try{o=this.createXhrObject(tId);if(o){this._transaction_id++;}}catch(e){}finally{return o;}},asyncRequest:function(_355,uri,_357,_358){var o=this.getConnectionObject();if(!o){return null;}else{if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(o.tId,_357,uri,_358);this.releaseObject(o);return;}if(_355=="GET"){if(this._sFormData.length!=0){uri+=((uri.indexOf("?")==-1)?"?":"&")+this._sFormData;}else{uri+="?"+this._sFormData;}}else{if(_355=="POST"){_358=_358?this._sFormData+"&"+_358:this._sFormData;}}}o.conn.open(_355,uri,true);if(this._isFormSubmit||(_358&&this._use_default_post_header)){this.initHeader("Content-Type",this._default_post_header);if(this._isFormSubmit){this.resetFormState();}}if(this._has_http_headers){this.setHeader(o);}this.handleReadyState(o,_357);o.conn.send(_358||null);return o;}},handleReadyState:function(o,_35b){var _35c=this;if(_35b&&_35b.timeout){this._timeOut[o.tId]=window.setTimeout(function(){_35c.abort(o,_35b,true);},_35b.timeout);}this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(_35c._poll[o.tId]);delete _35c._poll[o.tId];if(_35b&&_35b.timeout){delete _35c._timeOut[o.tId];}_35c.handleTransactionResponse(o,_35b);}},this._polling_interval);},handleTransactionResponse:function(o,_35e,_35f){if(!_35e){this.releaseObject(o);return;}var _360,responseObject;try{if(o.conn.status!==undefined&&o.conn.status!=0){_360=o.conn.status;}else{_360=13030;}}catch(e){_360=13030;}if(_360>=200&&_360<300){try{responseObject=this.createResponseObject(o,_35e.argument);if(_35e.success){if(!_35e.scope){_35e.success(responseObject);}else{_35e.success.apply(_35e.scope,[responseObject]);}}}catch(e){}}else{try{switch(_360){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,_35e.argument,(_35f?_35f:false));if(_35e.failure){if(!_35e.scope){_35e.failure(responseObject);}else{_35e.failure.apply(_35e.scope,[responseObject]);}}break;default:responseObject=this.createResponseObject(o,_35e.argument);if(_35e.failure){if(!_35e.scope){_35e.failure(responseObject);}else{_35e.failure.apply(_35e.scope,[responseObject]);}}}}catch(e){}}this.releaseObject(o);responseObject=null;},createResponseObject:function(o,_362){var obj={};var _364={};try{var _365=o.conn.getAllResponseHeaders();var _366=_365.split("\n");for(var i=0;i<_366.length;i++){var _368=_366[i].indexOf(":");if(_368!=-1){_364[_366[i].substring(0,_368)]=_366[i].substring(_368+2);}}}catch(e){}obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=_364;obj.getAllResponseHeaders=_365;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof _362!==undefined){obj.argument=_362;}return obj;},createExceptionObject:function(tId,_36a,_36b){var _36c=0;var _36d="communication failure";var _36e=-1;var _36f="transaction aborted";var obj={};obj.tId=tId;if(_36b){obj.status=_36e;obj.statusText=_36f;}else{obj.status=_36c;obj.statusText=_36d;}if(_36a){obj.argument=_36a;}return obj;},initHeader:function(_371,_372){if(this._http_header[_371]===undefined){this._http_header[_371]=_372;}else{this._http_header[_371]=_372+","+this._http_header[_371];}this._has_http_headers=true;},setHeader:function(o){for(var prop in this._http_header){if(this._http_header.hasOwnProperty(prop)){o.conn.setRequestHeader(prop,this._http_header[prop]);}}delete this._http_header;this._http_header={};this._has_http_headers=false;},setForm:function(_375,_376,_377){this.resetFormState();var _378;if(typeof _375=="string"){_378=(document.getElementById(_375)||document.forms[_375]);}else{if(typeof _375=="object"){_378=_375;}else{return;}}if(_376){this.createFrame(_377?_377:null);this._isFormSubmit=true;this._isFileUpload=true;this._formNode=_378;return;}var _379,oName,oValue,oDisabled;var _37a=false;for(var i=0;i<_378.elements.length;i++){_379=_378.elements[i];oDisabled=_378.elements[i].disabled;oName=_378.elements[i].name;oValue=_378.elements[i].value;if(!oDisabled&&oName){switch(_379.type){case "select-one":case "select-multiple":for(var j=0;j<_379.options.length;j++){if(_379.options[j].selected){if(window.ActiveXObject){this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(_379.options[j].attributes["value"].specified?_379.options[j].value:_379.options[j].text)+"&";}else{this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(_379.options[j].hasAttribute("value")?_379.options[j].value:_379.options[j].text)+"&";}}}break;case "radio":case "checkbox":if(_379.checked){this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(oValue)+"&";}break;case "file":case undefined:case "reset":case "button":break;case "submit":if(_37a==false){this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(oValue)+"&";_37a=true;}break;default:this._sFormData+=encodeURIComponent(oName)+"="+encodeURIComponent(oValue)+"&";break;}}}this._isFormSubmit=true;this._sFormData=this._sFormData.substr(0,this._sFormData.length-1);return this._sFormData;},resetFormState:function(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";},createFrame:function(_37d){var _37e="yuiIO"+this._transaction_id;if(window.ActiveXObject){var io=document.createElement("<iframe id=\""+_37e+"\" name=\""+_37e+"\" />");if(typeof _37d=="boolean"){io.src="javascript:false";}else{if(typeof secureURI=="string"){io.src=_37d;}}}else{var io=document.createElement("iframe");io.id=_37e;io.name=_37e;}io.style.position="absolute";io.style.top="-1000px";io.style.left="-1000px";document.body.appendChild(io);},appendPostData:function(_381){var _382=new Array();var _383=_381.split("&");for(var i=0;i<_383.length;i++){var _385=_383[i].indexOf("=");if(_385!=-1){_382[i]=document.createElement("input");_382[i].type="hidden";_382[i].name=_383[i].substring(0,_385);_382[i].value=_383[i].substring(_385+1);this._formNode.appendChild(_382[i]);}}return _382;},uploadFile:function(id,_387,uri,_389){var _38a="yuiIO"+id;var io=document.getElementById(_38a);this._formNode.action=uri;this._formNode.method="POST";this._formNode.target=_38a;if(this._formNode.encoding){this._formNode.encoding="multipart/form-data";}else{this._formNode.enctype="multipart/form-data";}if(_389){var _38c=this.appendPostData(_389);}this._formNode.submit();if(_38c&&_38c.length>0){try{for(var i=0;i<_38c.length;i++){this._formNode.removeChild(_38c[i]);}}catch(e){}}this.resetFormState();var _38e=function(){var obj={};obj.tId=id;obj.argument=_387.argument;try{obj.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;obj.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;}catch(e){}if(_387.upload){if(!_387.scope){_387.upload(obj);}else{_387.upload.apply(_387.scope,[obj]);}}if(YAHOO.util.Event){YAHOO.util.Event.removeListener(io,"load",_38e);}else{if(window.detachEvent){io.detachEvent("onload",_38e);}else{io.removeEventListener("load",_38e,false);}}setTimeout(function(){document.body.removeChild(io);},100);};if(YAHOO.util.Event){YAHOO.util.Event.addListener(io,"load",_38e);}else{if(window.attachEvent){io.attachEvent("onload",_38e);}else{io.addEventListener("load",_38e,false);}}},abort:function(o,_391,_392){if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._poll[o.tId]);delete this._poll[o.tId];if(_392){delete this._timeOut[o.tId];}this.handleTransactionResponse(o,_391,true);return true;}else{return false;}},isCallInProgress:function(o){if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;}else{return false;}},releaseObject:function(o){o.conn=null;o=null;}};
102 3 \ No newline at end of file
... ...
thirdpartyjs/yui/yahoo/yahoo.js
1   -/*
2   -Copyright (c) 2006, Yahoo! Inc. All rights reserved.
3   -Code licensed under the BSD License:
4   -http://developer.yahoo.net/yui/license.txt
5   -version: 0.12.0
6   -*/
7   -
8   -/**
9   - * The YAHOO object is the single global object used by YUI Library. It
10   - * contains utility function for setting up namespaces, inheritance, and
11   - * logging. YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces
12   - * created automatically for and used by the library.
13   - * @module yahoo
14   - * @title YAHOO Global
15   - */
16   -
17   -/**
18   - * The YAHOO global namespace object
19   - * @class YAHOO
20   - * @static
21   - */
22   -if (typeof YAHOO == "undefined") {
23   - var YAHOO = {};
24   -}
25   -
26   -/**
27   - * Returns the namespace specified and creates it if it doesn't exist
28   - * <pre>
29   - * YAHOO.namespace("property.package");
30   - * YAHOO.namespace("YAHOO.property.package");
31   - * </pre>
32   - * Either of the above would create YAHOO.property, then
33   - * YAHOO.property.package
34   - *
35   - * Be careful when naming packages. Reserved words may work in some browsers
36   - * and not others. For instance, the following will fail in Safari:
37   - * <pre>
38   - * YAHOO.namespace("really.long.nested.namespace");
39   - * </pre>
40   - * This fails because "long" is a future reserved word in ECMAScript
41   - *
42   - * @method namespace
43   - * @static
44   - * @param {String*} arguments 1-n namespaces to create
45   - * @return {Object} A reference to the last namespace object created
46   - */
47   -YAHOO.namespace = function() {
48   - var a=arguments, o=null, i, j, d;
49   - for (i=0; i<a.length; ++i) {
50   - d=a[i].split(".");
51   - o=YAHOO;
52   -
53   - // YAHOO is implied, so it is ignored if it is included
54   - for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; ++j) {
55   - o[d[j]]=o[d[j]] || {};
56   - o=o[d[j]];
57   - }
58   - }
59   -
60   - return o;
61   -};
62   -
63   -/**
64   - * Uses YAHOO.widget.Logger to output a log message, if the widget is available.
65   - *
66   - * @method log
67   - * @static
68   - * @param {String} msg The message to log.
69   - * @param {String} cat The log category for the message. Default
70   - * categories are "info", "warn", "error", time".
71   - * Custom categories can be used as well. (opt)
72   - * @param {String} src The source of the the message (opt)
73   - * @return {Boolean} True if the log operation was successful.
74   - */
75   -YAHOO.log = function(msg, cat, src) {
76   - var l=YAHOO.widget.Logger;
77   - if(l && l.log) {
78   - return l.log(msg, cat, src);
79   - } else {
80   - return false;
81   - }
82   -};
83   -
84   -/**
85   - * Utility to set up the prototype, constructor and superclass properties to
86   - * support an inheritance strategy that can chain constructors and methods.
87   - *
88   - * @method extend
89   - * @static
90   - * @param {Function} subc the object to modify
91   - * @param {Function} superc the object to inherit
92   - * @param {String[]} overrides additional properties/methods to add to the
93   - * subclass prototype. These will override the
94   - * matching items obtained from the superclass
95   - * if present.
96   - */
97   -YAHOO.extend = function(subc, superc, overrides) {
98   - var F = function() {};
99   - F.prototype=superc.prototype;
100   - subc.prototype=new F();
101   - subc.prototype.constructor=subc;
102   - subc.superclass=superc.prototype;
103   - if (superc.prototype.constructor == Object.prototype.constructor) {
104   - superc.prototype.constructor=superc;
105   - }
106   -
107   - if (overrides) {
108   - for (var i in overrides) {
109   - subc.prototype[i]=overrides[i];
110   - }
111   - }
112   -};
113   -
114   -/**
115   - * Applies all prototype properties in the supplier to the receiver if the
116   - * receiver does not have these properties yet. Optionally, one or more
117   - * methods/properties can be specified (as additional parameters). This
118   - * option will overwrite the property if receiver has it already.
119   - *
120   - * @method augment
121   - * @static
122   - * @param {Function} r the object to receive the augmentation
123   - * @param {Function} s the object that supplies the properties to augment
124   - * @param {String*} arguments zero or more properties methods to augment the
125   - * receiver with. If none specified, everything
126   - * in the supplier will be used unless it would
127   - * overwrite an existing property in the receiver
128   - */
129   -YAHOO.augment = function(r, s) {
130   - var rp=r.prototype, sp=s.prototype, a=arguments, i, p;
131   - if (a[2]) {
132   - for (i=2; i<a.length; ++i) {
133   - rp[a[i]] = sp[a[i]];
134   - }
135   - } else {
136   - for (p in sp) {
137   - if (!rp[p]) {
138   - rp[p] = sp[p];
139   - }
140   - }
141   - }
142   -};
143   -
144   -YAHOO.namespace("util", "widget", "example");
145   -
  1 +if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;++i){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}return o;};YAHOO.log=function(_2,_3,_4){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(_2,_3,_4);}else{return false;}};YAHOO.extend=function(_6,_7,_8){var F=function(){};F.prototype=_7.prototype;_6.prototype=new F();_6.prototype.constructor=_6;_6.superclass=_7.prototype;if(_7.prototype.constructor==Object.prototype.constructor){_7.prototype.constructor=_7;}if(_8){for(var i in _8){_6.prototype[i]=_8[i];}}};YAHOO.augment=function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;++i){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}};YAHOO.namespace("util","widget","example");
146 2 \ No newline at end of file
... ...