Commit 6be5bc685cf1c4969b21cf37ef0bc2715922c42b

Authored by kevin_fourie
1 parent b2f39ae4

Merged in from DEV trunk...

KTS-2625
"Fatal error occurs when attempting to archiving a folder."
Fixed. Archive function was using a folder object in place of a document object.

Reviewed by: Jonathan Byrne
Committed by: Megan Watson

KTS-2622
"Copying a folder containing Checkout documents results in the copied documents also being checked out like the originals."
Fixed. Added code to cancel the checkout.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

KTC-189
"Deleting a fieldset does not remove all instances of itself and existing field and document type associations"
Fixed. On deleting the fieldset it checks for any document type associations and removes them.

KTS-2487
"Deleting an assigned fieldset causes a fatal error"
Fixed. Removing the document type associations fixes the error on viewing the document.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

KTS-1447
"Add a delete "bin" icon to "Items that require your attention..." Dashboard item and don't delete the item automatically"
Fixed. Removed the delete call on viewing the document/folder/etc. Added the standard delete icon next the the 'Clear Alert' link.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

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/trunk@7602 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 52 changed files with 1441 additions and 7224 deletions
lib/dashboard/Notification.inc.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -58,7 +58,7 @@ class KTNotification extends KTEntity {
58 58 /** primary key value */
59 59 var $iId = -1;
60 60 var $iUserId;
61   -
  61 +
62 62 // sType and sLabel provide the title of the dashboard alert.
63 63 var $sLabel; // a simple label - e.g. the document's title, or so forth.
64 64 var $sType; // namespaced item type. (e.g. ktcore/subscriptions, word/officeupload)
... ... @@ -73,34 +73,34 @@ class KTNotification extends KTEntity {
73 73 var $iData2;
74 74 // sData1 and sData2 are 255-length character fields
75 75 var $sData1;
76   - var $sData2;
  76 + var $sData2;
77 77 // sText1 is a 65535-length text field
78   - var $sText1;
79   -
  78 + var $sText1;
  79 +
80 80 var $_bUsePearError = true;
81   -
  81 +
82 82 function getId() { return $this->iId; }
83   -
84   - function getLabel() { return $this->sLabel; }
  83 +
  84 + function getLabel() { return $this->sLabel; }
85 85 function setLabel($sLabel) { $this->sLabel = $sLabel; }
86   - function getType() { return $this->sType; }
  86 + function getType() { return $this->sType; }
87 87 function setType($sType) { $this->sType = $sType; }
88   -
89   - function getIntData1() { return $this->iData1; }
  88 +
  89 + function getIntData1() { return $this->iData1; }
90 90 function setIntData1($iData1) { $this->iData1 = $iData1; }
91   - function getIntData2() { return $this->iData2; }
  91 + function getIntData2() { return $this->iData2; }
92 92 function setIntData2($iData2) { $this->iData2 = $iData2; }
93   - function getStrData1() { return $this->sData1; }
  93 + function getStrData1() { return $this->sData1; }
94 94 function setStrData1($sData1) { $this->sData1 = $sData1; }
95   - function getStrData2() { return $this->sData2; }
96   - function setStrData2($sData2) { $this->sData2 = $sData2; }
97   - function getTextData1() { return $this->sText1; }
98   - function setTextData1($mValue) { $this->sText1 = $mValue; }
  95 + function getStrData2() { return $this->sData2; }
  96 + function setStrData2($sData2) { $this->sData2 = $sData2; }
  97 + function getTextData1() { return $this->sText1; }
  98 + function setTextData1($mValue) { $this->sText1 = $mValue; }
99 99  
100 100 var $_aFieldToSelect = array(
101 101 "iId" => "id",
102 102 "iUserId" => "user_id",
103   - "sLabel" => "label",
  103 + "sLabel" => "label",
104 104 "sType" => "type",
105 105 "dCreationDate" => "creation_date",
106 106 "iData1" => "data_int_1",
... ... @@ -109,7 +109,7 @@ class KTNotification extends KTEntity {
109 109 "sData2" => "data_str_2",
110 110 "sText1" => "data_text_1",
111 111 );
112   -
  112 +
113 113 function _table () {
114 114 return KTUtil::getTableName('notifications');
115 115 }
... ... @@ -118,11 +118,11 @@ class KTNotification extends KTEntity {
118 118 $notificationRegistry =& KTNotificationRegistry::getSingleton();
119 119 $handler = $notificationRegistry->getHandler($this->sType);
120 120  
121   - if (is_null($handler)) { return null; }
122   -
  121 + if (is_null($handler)) { return null; }
  122 +
123 123 return $handler->handleNotification($this);
124 124 }
125   -
  125 +
126 126 function &getHandler() {
127 127 $notificationRegistry =& KTNotificationRegistry::getSingleton();
128 128 $handler =& $notificationRegistry->getHandler($this->sType);
... ... @@ -131,10 +131,10 @@ class KTNotification extends KTEntity {
131 131  
132 132 // Static function
133 133 function &get($iId) { return KTEntityUtil::get('KTNotification', $iId); }
134   - function &getList($sWhereClause = null, $aOptions = null ) {
  134 + function &getList($sWhereClause = null, $aOptions = null ) {
135 135 if(!is_array($aOptions)) $aOptions = array($aOptions);
136 136 $aOptions['orderby'] = KTUtil::arrayGet($aOptions, 'orderby', 'creation_date DESC');
137   - return KTEntityUtil::getList2('KTNotification', $sWhereClause, $aOptions);
  137 + return KTEntityUtil::getList2('KTNotification', $sWhereClause, $aOptions);
138 138 }
139 139  
140 140 function &createFromArray($aOptions) { return KTEntityUtil::createFromArray('KTNotification', $aOptions); }
... ... @@ -151,14 +151,15 @@ class KTNotificationHandler extends KTStandardDispatcher {
151 151 function handleNotification($oKTNotification) {
152 152 $oTemplating =& KTTemplating::getSingleton();
153 153 $oTemplate = $oTemplating->loadTemplate("kt3/notifications/generic");
154   - $aTemplateData = array("context" => $oKTNotification,);
  154 +
  155 + $aTemplateData = array("context" => $oKTNotification, "oKTConfig" => $oKTConfig);
155 156 return $oTemplate->render($aTemplateData);
156 157 }
157 158  
158 159 function do_main() {
159 160 $this->resolveNotification($this->notification);
160 161 }
161   -
  162 +
162 163 // called to resolve the notification (typically from /notify.php?id=xxxxx
163 164 function resolveNotification($oKTNotification) {
164 165 $_SESSION['KTErrorMessage'][] = _kt("This notification handler does not support publication.");
... ... @@ -172,10 +173,10 @@ class KTSubscriptionNotification extends KTNotificationHandler {
172 173 /* Subscription Notifications
173 174 *
174 175 * Subscriptions are a large part of the notification volume.
175   - * That said, notifications cater to a larger group, so there is some
  176 + * That said, notifications cater to a larger group, so there is some
176 177 * degree of mismatch between the two.
177 178 *
178   - * Mapping the needs of subscriptions onto the provisions of notifications
  179 + * Mapping the needs of subscriptions onto the provisions of notifications
179 180 * works as:
180 181 *
181 182 * $oKTN->label: object name [e.g. Document Name]
... ... @@ -183,9 +184,9 @@ class KTSubscriptionNotification extends KTNotificationHandler {
183 184 * $oKTN->strData2: _location_ name. (e.g. folder of the subscription.)
184 185 * $oKTN->intData1: object id (e.g. document_id, folder_id)
185 186 * $oKTN->intData2: actor id (e.g. user_id)
186   - *
  187 + *
187 188 */
188   -
  189 +
189 190 var $notificationType = 'ktcore/subscriptions';
190 191  
191 192 var $_eventObjectMap = array(
... ... @@ -202,7 +203,7 @@ class KTSubscriptionNotification extends KTNotificationHandler {
202 203 "ArchivedDocument" => 'document', // can go through and request un-archival (?)
203 204 "RestoredArchivedDocument" => 'document',
204 205 "DiscussDocument" => 'document',
205   - );
  206 + );
206 207  
207 208 function KTSubscriptionNotification() {
208 209 $this->_eventTypeNames = array(
... ... @@ -218,7 +219,7 @@ class KTSubscriptionNotification extends KTNotificationHandler {
218 219 "MovedDocument" => _kt('Document moved'),
219 220 "ArchivedDocument" => _kt('Document archived'), // can go through and request un-archival (?)
220 221 "RestoredArchivedDocument" => _kt('Document restored'),
221   - "DiscussDocument" => _kt('Document Discussions updated'),
  222 + "DiscussDocument" => _kt('Document Discussions updated'),
222 223 );
223 224 //parent::KTNotificationHandler();
224 225 }
... ... @@ -233,9 +234,9 @@ class KTSubscriptionNotification extends KTNotificationHandler {
233 234 'has_actor' => false,
234 235 'notify_id' => $oKTNotification->getId(),
235 236 );
236   -
  237 +
237 238 $info['title'] = KTUtil::arrayGet($this->_eventTypeNames, $info['event_type'], 'Subscription alert:') .': ' . $info['object_name'];
238   -
  239 +
239 240 if ($info['actor_id'] !== null) {
240 241 $oTempUser = User::get($info['actor_id']);
241 242 if (PEAR::isError($oTempUser) || ($oTempUser == false)) {
... ... @@ -246,31 +247,31 @@ class KTSubscriptionNotification extends KTNotificationHandler {
246 247 $info['has_actor'] = true;
247 248 }
248 249 }
249   -
  250 +
250 251 if ($info['object_id'] !== null) {
251 252 $info['object'] = $this->_getEventObject($info['event_type'], $info['object_id']);
252 253 }
253   -
  254 +
254 255 return $info;
255 256 }
256   -
  257 +
257 258 // resolve the object type based on the alert type.
258 259 function _getEventObject($sAlertType, $id) {
259 260 $t = KTUtil::arrayGet($this->_eventObjectMap, $sAlertType ,'');
260   -
  261 +
261 262 if ($t == 'document') {
262 263 $o = Document::get($id);
263   - if (PEAR::isError($o) || ($o == false)) { return null;
  264 + if (PEAR::isError($o) || ($o == false)) { return null;
264 265 } else { return $o; }
265 266 } else if ($t == 'folder') {
266 267 $o = Folder::get($id);
267   - if (PEAR::isError($o) || ($o == false)) { return null;
  268 + if (PEAR::isError($o) || ($o == false)) { return null;
268 269 } else { return $o; }
269 270 } else {
270 271 return null;
271 272 }
272 273 }
273   -
  274 +
274 275 function _getEventObjectType($sAlertType) {
275 276 return KTUtil::arrayGet($this->_eventObjectMap, $sAlertType ,'');
276 277 }
... ... @@ -286,21 +287,21 @@ class KTSubscriptionNotification extends KTNotificationHandler {
286 287 /*
287 288 "iId" => "id",
288 289 "iUserId" => "user_id",
289   - "sLabel" => "label",
  290 + "sLabel" => "label",
290 291 "sType" => "type",
291 292 "dCreationDate" => "creation_date",
292 293 "iData1" => "data_int_1",
293 294 "iData2" => "data_int_2",
294 295 "sData1" => "data_str_1",
295 296 "sData2" => "data_str_2",
296   -
  297 +
297 298 'object_name' => $oKTNotification->getLabel(),
298 299 'event_type' => $oKTNotification->getStrData1(),
299 300 'location_name' => $oKTNotification->getStrData2(),
300 301 'object_id' => $oKTNotification->getIntData1(),
301 302 'actor_id' => $oKTNotification->getIntData2(),
302   - 'has_actor' => false,
303   -
  303 + 'has_actor' => false,
  304 +
304 305 */
305 306 $creationInfo['sLabel'] = $aOptions['target_name'];
306 307 $creationInfo['sData1'] = $aOptions['event_type'];
... ... @@ -312,20 +313,23 @@ class KTSubscriptionNotification extends KTNotificationHandler {
312 313 $creationInfo['dCreationDate'] = getCurrentDateTime(); // erk.
313 314  
314 315 global $default;
315   -
  316 +
316 317 //$default->log->debug('subscription notification: from ' . print_r($aOptions, true));
317 318 $default->log->debug('subscription notification: using ' . print_r($creationInfo, true));
318   -
  319 +
319 320 $oNotification =& KTNotification::createFromArray($creationInfo);
320   -
321   -
  321 +
  322 +
322 323 $default->log->debug('subscription notification: created ' . print_r($oNotification, true));
323   -
  324 +
324 325 return $oNotification; // $res.
325 326 }
326   -
327   -
328   -
  327 +
  328 + /**
  329 + * View the notification, and clear if requested
  330 + *
  331 + * @param unknown_type $oKTNotification
  332 + */
329 333 function resolveNotification($oKTNotification) {
330 334 $notify_action = KTUtil::arrayGet($_REQUEST, 'notify_action', null);
331 335 if ($notify_action == 'clear') {
... ... @@ -333,38 +337,38 @@ class KTSubscriptionNotification extends KTNotificationHandler {
333 337 $oKTNotification->delete();
334 338 exit(redirect(generateControllerLink('dashboard')));
335 339 }
336   -
  340 +
337 341 // otherwise, we want to redirect the to object represented by the item.
338 342 // - viewDocument and viewFolder are the appropriate items.
339   - // - object_id
  343 + // - object_id
340 344 $info = $this->_getSubscriptionData($oKTNotification);
341   -
  345 +
342 346 $object_type = $this->_getEventObjectType($info['event_type']);
343   -
  347 +
344 348 if ($object_type == '') {
345   - $_SESSION['KTErrorMessage'][] = 'This notification has no "target". Please report as a bug that this subscription should only have a clear action.' . $object_type;
  349 + $_SESSION['KTErrorMessage'][] = 'This notification has no "target". Please report as a bug that this subscription should only have a clear action.' . $object_type;
346 350 exit(redirect(generateControllerLink('dashboard')));
347   - }
348   -
  351 + }
  352 +
349 353 if ($object_type == 'document') {
350 354 if ($info['object_id'] !== null) { // fails and generates an error with no doc-id.
351 355 $params = 'fDocumentId=' . $info['object_id'];
352 356 $url = generateControllerLink('viewDocument', $params);
353   - $oKTNotification->delete(); // clear the alert.
  357 + //$oKTNotification->delete(); // clear the alert.
354 358 exit(redirect($url));
355   - }
  359 + }
356 360 } else if ($object_type == 'folder') {
357 361 if ($info['object_id'] !== null) { // fails and generates an error with no doc-id.
358 362 $params = 'fFolderId=' . $info['object_id'];
359 363 $url = generateControllerLink('browse', $params);
360   - $oKTNotification->delete(); // clear the alert.
  364 + //$oKTNotification->delete(); // clear the alert.
361 365 exit(redirect($url));
362   - }
  366 + }
363 367 }
364   - $_SESSION['KTErrorMessage'][] = sprintf('This notification has no "target". Please inform the %s developers that there is a target bug with type: ' . $info['event_type'], APP_NAME);
  368 + $_SESSION['KTErrorMessage'][] = sprintf('This notification has no "target". Please inform the %s developers that there is a target bug with type: ' . $info['event_type'], APP_NAME);
365 369 exit(redirect(generateControllerLink('dashboard')));
366 370 }
367   -
  371 +
368 372 }
369 373  
370 374 class KTWorkflowNotification extends KTNotificationHandler {
... ... @@ -374,41 +378,41 @@ class KTWorkflowNotification extends KTNotificationHandler {
374 378 foreach ($aNotifications as $oNotification) {
375 379 $oNotification->delete();
376 380 }
377   -
  381 +
378 382 }
379 383  
380   - function & newNotificationForDocument($oDocument, $oUser, $oState, $oActor, $sComments) {
381   - $aInfo = array();
  384 + function & newNotificationForDocument($oDocument, $oUser, $oState, $oActor, $sComments) {
  385 + $aInfo = array();
382 386 $aInfo['sData1'] = $oState->getName();
383 387 $aInfo['sData2'] = $sComments;
384 388 $aInfo['iData1'] = $oDocument->getId();
385 389 $aInfo['iData2'] = $oActor->getId();
386 390 $aInfo['sType'] = 'ktcore/workflow';
387   - $aInfo['dCreationDate'] = getCurrentDateTime();
  391 + $aInfo['dCreationDate'] = getCurrentDateTime();
388 392 $aInfo['iUserId'] = $oUser->getId();
389 393 $aInfo['sLabel'] = $oDocument->getName();
390   -
  394 +
391 395 $oNotification = KTNotification::createFromArray($aInfo);
392   -
  396 +
393 397 $handler = new KTWorkflowNotification();
394   -
  398 +
395 399 if ($oUser->getEmailNotification() && (strlen($oUser->getEmail()) > 0)) {
396 400 $emailContent = $handler->handleNotification($oNotification);
397 401 $emailSubject = sprintf(_kt('Workflow Notification: %s'), $oDocument->getName());
398 402 $oEmail = new EmailAlert($oUser->getEmail(), $emailSubject, $emailContent);
399 403 $oEmail->send();
400 404 }
401   -
  405 +
402 406 return $oNotification;
403 407 }
404 408  
405   - function handleNotification($oKTNotification) {
  409 + function handleNotification($oKTNotification) {
406 410 $oTemplating =& KTTemplating::getSingleton();
407 411 $oTemplate =& $oTemplating->loadTemplate('ktcore/workflow/workflow_notification');
408   -
  412 +
409 413 $oDoc = Document::get($oKTNotification->getIntData1());
410 414 $isBroken = (PEAR::isError($oDoc) || ($oDoc->getStatusID() != LIVE));
411   -
  415 +
412 416 $oTemplate->setData(array(
413 417 'context' => $this,
414 418 'document_id' => $oKTNotification->getIntData1(),
... ... @@ -421,7 +425,7 @@ class KTWorkflowNotification extends KTNotificationHandler {
421 425 ));
422 426 return $oTemplate->render();
423 427 }
424   -
  428 +
425 429 function resolveNotification($oKTNotification) {
426 430 $notify_action = KTUtil::arrayGet($_REQUEST, 'notify_action', null);
427 431 if ($notify_action == 'clear') {
... ... @@ -429,10 +433,10 @@ class KTWorkflowNotification extends KTNotificationHandler {
429 433 $oKTNotification->delete();
430 434 exit(redirect(generateControllerLink('dashboard')));
431 435 }
432   -
  436 +
433 437 $params = 'fDocumentId=' . $oKTNotification->getIntData1();
434 438 $url = generateControllerLink('viewDocument', $params);
435   - $oKTNotification->delete(); // clear the alert.
  439 + //$oKTNotification->delete(); // clear the alert.
436 440 exit(redirect($url));
437 441 }
438 442 }
... ...
lib/documentmanagement/documentutil.inc.php
... ... @@ -10,32 +10,32 @@
10 10 * KnowledgeTree Open Source Edition
11 11 * Document Management Made Simple
12 12 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
13   - *
  13 + *
14 14 * This program is free software; you can redistribute it and/or modify it under
15 15 * the terms of the GNU General Public License version 3 as published by the
16 16 * Free Software Foundation.
17   - *
  17 + *
18 18 * This program is distributed in the hope that it will be useful, but WITHOUT
19 19 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20 20 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21 21 * details.
22   - *
  22 + *
23 23 * You should have received a copy of the GNU General Public License
24 24 * along with this program. If not, see <http://www.gnu.org/licenses/>.
25   - *
  25 + *
26 26 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
27 27 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
28   - *
  28 + *
29 29 * The interactive user interfaces in modified source and object code versions
30 30 * of this program must display Appropriate Legal Notices, as required under
31 31 * Section 5 of the GNU General Public License version 3.
32   - *
  32 + *
33 33 * In accordance with Section 7(b) of the GNU General Public License version 3,
34 34 * these Appropriate Legal Notices must retain the display of the "Powered by
35   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  35 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
36 36 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
37   - * must display the words "Powered by KnowledgeTree" and retain the original
38   - * copyright notice.
  37 + * must display the words "Powered by KnowledgeTree" and retain the original
  38 + * copyright notice.
39 39 * Contributor( s): ______________________________________
40 40 */
41 41  
... ... @@ -191,17 +191,17 @@ class KTDocumentUtil {
191 191  
192 192 return true;
193 193 }
194   -
  194 +
195 195 function archive($oDocument, $sReason) {
196   -
  196 +
197 197 $this->startTransaction();
198 198 $oDocument->setStatusID(ARCHIVED);
199 199 $res = $oDocument->update();
200   -
  200 +
201 201 if (PEAR::isError($res) || ($res === false)) {
202 202 return PEAR::raiseError(_kt('There was a database error while trying to archive this file'));
203 203 }
204   -
  204 +
205 205 $oDocumentTransaction = & new DocumentTransaction($oDocument, sprintf(_kt('Document archived: %s'), $sReason), 'ktcore.transactions.update');
206 206 $oDocumentTransaction->create();
207 207  
... ... @@ -222,12 +222,12 @@ class KTDocumentUtil {
222 222 return $ret;
223 223 }
224 224 }
225   -
  225 +
226 226 // fire subscription alerts for the archived document
227 227 $oSubscriptionEvent = new SubscriptionEvent();
228 228 $oFolder = Folder::get($oDocument->getFolderID());
229 229 $oSubscriptionEvent->ArchivedDocument($oDocument, $oFolder);
230   -
  230 +
231 231 return true;
232 232 }
233 233  
... ... @@ -904,6 +904,10 @@ class KTDocumentUtil {
904 904 $res = KTDocumentUtil::copyMetadata($oNewDocument, $oDocument->getMetadataVersionId());
905 905 if (PEAR::isError($res)) { return $res; }
906 906  
  907 + $oNewDocument->setIsCheckedOut(false);
  908 + $oNewDocument->setCheckedOutUserID(-1);
  909 +
  910 +
907 911 // finally, copy the actual file.
908 912 $oStorage =& KTStorageManagerUtil::getSingleton();
909 913 $res = $oStorage->copy($oDocument, $oNewDocument);
... ... @@ -967,7 +971,7 @@ class KTDocumentUtil {
967 971 return $ret;
968 972 }
969 973 }
970   -
  974 +
971 975 // fire subscription alerts for the copied document
972 976 $oSubscriptionEvent = new SubscriptionEvent();
973 977 $oFolder = Folder::get($oDocument->getFolderID());
... ... @@ -1077,7 +1081,7 @@ class KTDocumentUtil {
1077 1081 return $ret;
1078 1082 }
1079 1083 }
1080   -
  1084 +
1081 1085 // fire subscription alerts for the moved document
1082 1086 $oSubscriptionEvent = new SubscriptionEvent();
1083 1087 $oSubscriptionEvent->MoveDocument($oDocument, $oFolder, $oOriginalFolder);
... ...
lib/documentmanagement/observers.inc.php
... ... @@ -70,9 +70,6 @@ class JavascriptObserver {
70 70 }
71 71  
72 72 function start() {
73   - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js');
74   - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js');
75   - $this->context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js');
76 73 $this->context->oPage->requireJSResource('resources/js/add_document.js');
77 74 $this->context->oRedirector =& $this;
78 75 $this->context->handleOutput('<div id="kt-add-document-target">&nbsp;</div>');
... ...
lib/templating/kt3template.inc.php
... ... @@ -130,7 +130,7 @@ class KTPage {
130 130 $aJS[] = 'thirdpartyjs/MochiKit/MochiKitPacked.js';
131 131 $aJS[] = 'resources/js/kt-utility.js';
132 132 $aJS[] = 'presentation/i18nJavascript.php';
133   - $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners.inc.js';
  133 + $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners_lite.inc.js';
134 134 $aJS[] = 'resources/js/loader.js';
135 135 $aJS[] = 'thirdpartyjs/yui/tools/tools.js';
136 136 $aJS[] = 'thirdpartyjs/yui/connection/connection.js';
... ...
plugins/ktcore/KTBulkActions.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -484,9 +484,9 @@ class KTBulkArchiveAction extends KTBulkAction {
484 484  
485 485 function perform_action($oEntity) {
486 486 if(is_a($oEntity, 'Document')) {
487   -
  487 +
488 488 $res = KTDocumentUtil::archive($oEntity, $this->sReason);
489   -
  489 +
490 490 if(PEAR::isError($res)){
491 491 return $res;
492 492 }
... ... @@ -530,9 +530,13 @@ class KTBulkArchiveAction extends KTBulkAction {
530 530 if(!empty($aDocuments)){
531 531 foreach($aDocuments as $sDocumentId){
532 532 $oDocument = Document::get($sDocumentId);
533   -
534   - $res = KTDocumentUtil::archive($oEntity, $this->sReason);
535   -
  533 +
  534 + if(PEAR::isError($oDocument)){
  535 + return $oDocument;
  536 + }
  537 +
  538 + $res = KTDocumentUtil::archive($oDocument, $this->sReason);
  539 +
536 540 if(PEAR::isError($res)){
537 541 return $res;
538 542 }
... ... @@ -548,7 +552,7 @@ class KTBrowseBulkExportAction extends KTBulkAction {
548 552 var $_sPermission = 'ktcore.permissions.read';
549 553 var $_bMutator = true;
550 554 var $bNotifications = true;
551   -
  555 +
552 556 function getDisplayName() {
553 557 return _kt('Export');
554 558 }
... ... @@ -580,7 +584,7 @@ class KTBrowseBulkExportAction extends KTBulkAction {
580 584 $this->startTransaction();
581 585 $oKTConfig =& KTConfig::getSingleton();
582 586 $this->bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations");
583   -
  587 +
584 588 $this->bNotifications = ($oKTConfig->get('export/enablenotifications', 'on') == 'on') ? true : false;
585 589  
586 590 $result = parent::do_performaction();
... ... @@ -600,7 +604,7 @@ class KTBrowseBulkExportAction extends KTBulkAction {
600 604 ));
601 605  
602 606 $this->commitTransaction();
603   -
  607 +
604 608 $url = KTUtil::addQueryStringSelf(sprintf('action=downloadZipFile&fFolderId=%d&exportcode=%s', $this->oFolder->getId(), $sExportCode));
605 609 $str = sprintf('<p>' . _kt('Go <a href="%s">here</a> to download the zip file if you are not automatically redirected there') . "</p>\n", $url);
606 610 $folderurl = KTBrowseUtil::getUrlForFolder($this->oFolder);
... ... @@ -611,9 +615,9 @@ class KTBrowseBulkExportAction extends KTBulkAction {
611 615 document.location.href = "%s";
612 616 }
613 617 callLater(1, kt_bulkexport_redirect);
614   -
  618 +
615 619 </script>', $url);
616   -
  620 +
617 621 return $str;
618 622 }
619 623  
... ... @@ -627,14 +631,14 @@ class KTBrowseBulkExportAction extends KTBulkAction {
627 631 $oDocumentTransaction = new DocumentTransaction($oDocument, "Document part of bulk export", 'ktstandard.transactions.bulk_export', array());
628 632 $oDocumentTransaction->create();
629 633 }
630   -
  634 +
631 635 // fire subscription alerts for the downloaded document - if global config is set
632 636 if($this->bNotifications){
633 637 $oSubscriptionEvent = new SubscriptionEvent();
634 638 $oFolder = Folder::get($oDocument->getFolderID());
635 639 $oSubscriptionEvent->DownloadDocument($oDocument, $oFolder);
636 640 }
637   -
  641 +
638 642 $this->oZip->addDocumentToZip($oDocument);
639 643  
640 644 }else if(is_a($oEntity, 'Folder')) {
... ... @@ -695,12 +699,12 @@ class KTBrowseBulkExportAction extends KTBulkAction {
695 699  
696 700 function do_downloadZipFile() {
697 701 $sCode = $this->oValidator->validateString($_REQUEST['exportcode']);
698   -
  702 +
699 703 $folderName = $this->oFolder->getName();
700 704 $this->oZip = new ZipFolder($folderName);
701   -
  705 +
702 706 $res = $this->oZip->downloadZipFile($sCode);
703   -
  707 +
704 708 if(PEAR::isError($res)){
705 709 $this->addErrorMessage($res->getMessage());
706 710 redirect(generateControllerUrl("browse", "fBrowseType=folder&fFolderId=" . $this->oFolder->getId()));
... ... @@ -798,7 +802,7 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
798 802  
799 803 $oKTConfig =& KTConfig::getSingleton();
800 804 $this->bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations");
801   -
  805 +
802 806 $folderurl = KTBrowseUtil::getUrlForFolder($this->oFolder);
803 807 $sReturn = sprintf('<p>' . _kt('Return to the original <a href="%s">folder</a>') . "</p>\n", $folderurl);
804 808  
... ... @@ -809,7 +813,7 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
809 813 $folderName = $this->oFolder->getName();
810 814 $this->oZip = new ZipFolder($folderName);
811 815 $res = $this->oZip->checkConvertEncoding();
812   -
  816 +
813 817 if(PEAR::isError($res)){
814 818 $this->addErrorMessage($res->getMessage());
815 819 return $sReturn;
... ... @@ -836,7 +840,7 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
836 840 $this->commitTransaction();
837 841  
838 842 if($this->bDownload){
839   -
  843 +
840 844 $url = KTUtil::addQueryStringSelf(sprintf('action=downloadZipFile&fFolderId=%d&exportcode=%s', $this->oFolder->getId(), $sExportCode));
841 845 $str = sprintf('<p>' . _kt('Go <a href="%s">here</a> to download the zip file if you are not automatically redirected there') . "</p>\n", $url);
842 846 $folderurl = KTBrowseUtil::getUrlForFolder($this->oFolder);
... ... @@ -847,9 +851,9 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
847 851 document.location.href = "%s";
848 852 }
849 853 callLater(1, kt_bulkexport_redirect);
850   -
  854 +
851 855 </script>', $url);
852   -
  856 +
853 857 return $str;
854 858 }
855 859 return $result;
... ... @@ -938,15 +942,15 @@ class KTBrowseBulkCheckoutAction extends KTBulkAction {
938 942 }
939 943 return true;
940 944 }
941   -
  945 +
942 946 function do_downloadZipFile() {
943 947 $sCode = $this->oValidator->validateString($_REQUEST['exportcode']);
944   -
  948 +
945 949 $folderName = $this->oFolder->getName();
946 950 $this->oZip = new ZipFolder($folderName);
947   -
  951 +
948 952 $res = $this->oZip->downloadZipFile($sCode);
949   -
  953 +
950 954 if(PEAR::isError($res)){
951 955 $this->addErrorMessage($res->getMessage());
952 956 redirect(generateControllerUrl("browse", "fBrowseType=folder&fFolderId=" . $this->oFolder->getId()));
... ...
plugins/ktcore/admin/documentFieldsv2.php
... ... @@ -6,32 +6,32 @@
6 6 * KnowledgeTree Open Source Edition
7 7 * Document Management Made Simple
8 8 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
9   - *
  9 + *
10 10 * This program is free software; you can redistribute it and/or modify it under
11 11 * the terms of the GNU General Public License version 3 as published by the
12 12 * Free Software Foundation.
13   - *
  13 + *
14 14 * This program is distributed in the hope that it will be useful, but WITHOUT
15 15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16 16 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 17 * details.
18   - *
  18 + *
19 19 * You should have received a copy of the GNU General Public License
20 20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21   - *
  21 + *
22 22 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
23 23 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
24   - *
  24 + *
25 25 * The interactive user interfaces in modified source and object code versions
26 26 * of this program must display Appropriate Legal Notices, as required under
27 27 * Section 5 of the GNU General Public License version 3.
28   - *
  28 + *
29 29 * In accordance with Section 7(b) of the GNU General Public License version 3,
30 30 * these Appropriate Legal Notices must retain the display of the "Powered by
31   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  31 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
32 32 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
33   - * must display the words "Powered by KnowledgeTree" and retain the original
34   - * copyright notice.
  33 + * must display the words "Powered by KnowledgeTree" and retain the original
  34 + * copyright notice.
35 35 * Contributor( s): ______________________________________
36 36 *
37 37 */
... ... @@ -49,7 +49,7 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
49 49 function predispatch() {
50 50 $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Document Field Management'));
51 51 $this->persistParams(array('fFieldsetId'));
52   -
  52 +
53 53 $this->oFieldset = KTFieldset::get(KTUtil::arrayGet($_REQUEST, 'fFieldsetId'));
54 54 if (PEAR::isError($this->oFieldset)) {
55 55 $this->oFieldset = null;
... ... @@ -63,7 +63,7 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
63 63  
64 64 function do_main () {
65 65 $oTemplate =& $this->oValidator->validateTemplate('ktcore/metadata/admin/list');
66   -
  66 +
67 67 $oTemplate->setData(array(
68 68 'context' => $this,
69 69 'fieldsets' => KTFieldset::getList('disabled != true'),
... ... @@ -80,10 +80,10 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
80 80 'cancel_action' => 'main',
81 81 'fail_action' => 'newfieldset',
82 82 'action' => 'create',
83   - 'context' => $this,
  83 + 'context' => $this,
84 84 ));
85   -
86   -
  85 +
  86 +
87 87 // construct the widget set.
88 88 // we use a slight variation here, because "type" is only present in certain circumstances.
89 89 $widgets = array(
... ... @@ -98,16 +98,16 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
98 98 'name' => 'description',
99 99 'required' => true,
100 100 'description' => _kt("In order to ensure that the data that users enter is useful, it is essential that you provide a good example."),
101   - )),
  101 + )),
102 102 );
103 103 if ($this->bHaveConditional) {
104   -
  104 +
105 105 // FIXME get this from some external source.
106 106 $type_vocab = array(
107 107 'normal' => _kt("Normal"),
108   - 'conditional' => _kt("Conditional"),
  108 + 'conditional' => _kt("Conditional"),
109 109 );
110   -
  110 +
111 111 $widgets[] = array('ktcore.widgets.selection', array(
112 112 'label' => _kt("Fieldset Type"),
113 113 'use_simple' => false,
... ... @@ -119,20 +119,20 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
119 119 'vocab' => $type_vocab,
120 120 ));
121 121 }
122   -
  122 +
123 123 $widgets[] = array('ktcore.widgets.boolean',array(
124 124 'label' => _kt("Generic"),
125 125 'name' => 'generic',
126 126 'description' => _kt("A generic fieldset is one that is available for every document by default. These fieldsets will be available for users to edit and add for every document in the document management system."),
127 127 ));
128   -
  128 +
129 129 $oForm->setWidgets($widgets);
130   -
  130 +
131 131 // similarly, we construct validators here.
132 132 $validators = array(
133 133 array('ktcore.validators.string', array(
134 134 'test' => 'name',
135   - 'output' => 'name',
  135 + 'output' => 'name',
136 136 )),
137 137 array('ktcore.validators.string', array(
138 138 'test' => 'description',
... ... @@ -143,65 +143,65 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
143 143 'output' => 'generic',
144 144 )),
145 145 );
146   -
  146 +
147 147 if ($this->bHaveConditional) {
148 148 $validators[] = array('ktcore.validators.string', array(
149 149 'test' => 'fieldset_type',
150 150 'output' => 'fieldset_type',
151 151 ));
152 152 }
153   -
  153 +
154 154 $oForm->setValidators($validators);
155   -
  155 +
156 156 return $oForm;
157 157 }
158 158  
159 159 function do_newfieldset() {
160 160 $this->oPage->setBreadcrumbDetails(_kt("Create New Fieldset"));
161 161 $oForm = $this->form_create();
162   -
  162 +
163 163 return $oForm->render();
164 164 }
165   -
  165 +
166 166 function do_create() {
167 167 $oForm = $this->form_create();
168 168 $res = $oForm->validate();
169   -
  169 +
170 170 $data = $res['results'];
171 171 $errors = $res['errors'];
172 172 $extra_errors = array();
173   -
  173 +
174 174 if (!empty($data['name'])) {
175 175 $oFieldset = KTFieldset::getByName($data['name']);
176 176 if (!PEAR::isError($oFieldset)) {
177 177 // means we're looking at an existing name
178 178 $extra_errors['name'] = _kt("There is already a fieldset with that name.");
179   - }
  179 + }
180 180 }
181   -
  181 +
182 182 $is_conditional = false;
183 183 // FIXME this is inelegant. get it from somewhere else.
184 184 if ($this->bHaveConditional && ($data['fieldset_type'] == 'conditional')) {
185 185 $is_conditional = true;
186 186 }
187   -
188   -
  187 +
  188 +
189 189 if (!empty($errors) || !empty($extra_errors)) {
190 190 return $oForm->handleError(null, $extra_errors);
191 191 }
192   -
  192 +
193 193 // we also need a namespace.
194 194 $temp_name = $data['name'];
195 195 $namespace = KTUtil::nameToLocalNamespace('fieldsets', $temp_name);
196 196 $oOldFieldset = KTFieldset::getByNamespace($namespace);
197   -
  197 +
198 198 while (!PEAR::isError($oOldFieldset)) {
199 199 $temp_name .= '_';
200 200 $namespace = KTUtil::nameToLocalNamespace('fieldsets', $temp_name);
201   - $oOldFieldset = KTFieldset::getByNamespace($namespace);
  201 + $oOldFieldset = KTFieldset::getByNamespace($namespace);
202 202 }
203   -
204   - // we now know its a non-conflicting one.
  203 +
  204 + // we now know its a non-conflicting one.
205 205 // FIXME handle conditional fieldsets, which should be ... a different object.
206 206 $oFieldset = KTFieldset::createFromArray(array(
207 207 "name" => $data['name'],
... ... @@ -212,29 +212,29 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
212 212 "isGeneric" => $data['generic'],
213 213 "isComplete" => false,
214 214 "isComplex" => false,
215   - "isSystem" => false,
  215 + "isSystem" => false,
216 216 ));
217 217 if (PEAR::isError($oFieldset)) {
218 218 return $oForm->handleError(sprintf(_kt("Failed to create fieldset: %s"), $oFieldset->getMessage()));
219 219 }
220   -
  220 +
221 221 $this->successRedirectTo('edit',_kt("Fieldset created."), sprintf('fFieldsetId=%d', $oFieldset->getId()));
222   - }
  222 + }
223 223  
224 224 function getTypesForFieldset($oFieldset) {
225 225 if ($oFieldset->getIsGeneric()) {
226 226 return _kt('All types use this generic fieldset.');
227 227 }
228   -
  228 +
229 229 $types = $oFieldset->getAssociatedTypes();
230 230 if (PEAR::isError($types)) {
231 231 return _kt('Error retrieving list of types.');
232 232 }
233   - if (empty($types)) {
  233 + if (empty($types)) {
234 234 return _kt('None');
235 235 }
236 236 $aNames = array();
237   - foreach ($types as $oType) {
  237 + foreach ($types as $oType) {
238 238 if (!PEAR::isError($oType)) {
239 239 $aNames[] = $oType->getName();
240 240 }
... ... @@ -247,30 +247,30 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
247 247 // here we engage in some major evil.
248 248 // we check for the subevent var
249 249 // and subdispatch if appropriate.
250   - //
  250 + //
251 251 // saves a little code-duplication (actually, a lot of code-duplication)
252   -
  252 +
253 253 // FIXME this is essentially a stub for the fieldset-delegation code.
254 254 if ($this->oFieldset->getIsConditional()) {
255 255 require_once('fieldsets/conditional.inc.php');
256   - $oSubDispatcher = new ConditionalFieldsetManagementDispatcher;
  256 + $oSubDispatcher = new ConditionalFieldsetManagementDispatcher;
257 257 } else {
258 258 require_once('fieldsets/basic.inc.php');
259 259 $oSubDispatcher = new BasicFieldsetManagementDispatcher;
260 260 }
261   -
  261 +
262 262 $subevent_var = 'fieldset_action';
263 263 $subevent = KTUtil::arrayGet($_REQUEST, $subevent_var);
264 264 if (!empty($subevent)) {
265 265 // do nothing, since this will handle everything
266 266 $this_url = KTUtil::addQueryStringSelf($this->meldPersistQuery("","edit"));
267   - $oSubDispatcher->redispatch($subevent_var, null, $this, $this_url);
  267 + $oSubDispatcher->redispatch($subevent_var, null, $this, $this_url);
268 268 exit(0);
269 269 } else {
270 270 // what we want is the "additional info" section
271 271 $additional = $oSubDispatcher->describe_fieldset($this->oFieldset);
272 272 }
273   -
  273 +
274 274 $oTemplate =& $this->oValidator->validateTemplate('ktcore/metadata/admin/edit');
275 275 $oTemplate->setData(array(
276 276 'context' => $this,
... ... @@ -279,9 +279,19 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
279 279 ));
280 280 return $oTemplate->render();
281 281 }
282   -
  282 +
283 283 function do_delete() {
284 284 $this->startTransaction();
  285 +
  286 + // check if fieldset is associated with a document type - remove association
  287 + $types = $this->oFieldset->getAssociatedTypes();
  288 + $sFieldSetId = $this->oFieldset->getId();
  289 + if(!PEAR::isError($types) AND !empty($types)){
  290 + foreach($types as $oType){
  291 + $res = KTMetadataUtil::removeSetsFromDocumentType($oType, $sFieldSetId);
  292 + }
  293 + }
  294 +
285 295 $res = $this->oFieldset->delete('true');
286 296 $this->oValidator->notErrorFalse($res, array(
287 297 'redirect_to' => array('main', ''),
... ... @@ -289,7 +299,7 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
289 299 ));
290 300 $this->successRedirectToMain(_kt('Fieldset deleted'));
291 301 }
292   -
  302 +
293 303 function form_edit() {
294 304 $oForm = new KTForm;
295 305 $oForm->setOptions(array(
... ... @@ -299,10 +309,10 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
299 309 'cancel_action' => 'edit',
300 310 'fail_action' => 'editfieldset',
301 311 'action' => 'savefieldset',
302   - 'context' => $this,
  312 + 'context' => $this,
303 313 ));
304   -
305   -
  314 +
  315 +
306 316 // construct the widget set.
307 317 // we use a slight variation here, because "type" is only present in certain circumstances.
308 318 $widgets = array(
... ... @@ -318,24 +328,24 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
318 328 'name' => 'description',
319 329 'required' => true,
320 330 'description' => _kt("In order to ensure that the data that users enter is useful, it is essential that you provide a good example."),
321   - 'value' => sanitizeForHTML($this->oFieldset->getDescription()),
322   - )),
  331 + 'value' => sanitizeForHTML($this->oFieldset->getDescription()),
  332 + )),
323 333 );
324   -
  334 +
325 335 $widgets[] = array('ktcore.widgets.boolean',array(
326 336 'label' => _kt("Generic"),
327 337 'name' => 'generic',
328 338 'description' => _kt("A generic fieldset is one that is available for every document by default. These fieldsets will be available for users to edit and add for every document in the document management system."),
329   - 'value' => $this->oFieldset->getIsGeneric(),
  339 + 'value' => $this->oFieldset->getIsGeneric(),
330 340 ));
331   -
  341 +
332 342 $oForm->setWidgets($widgets);
333   -
  343 +
334 344 // similarly, we construct validators here.
335 345 $validators = array(
336 346 array('ktcore.validators.string', array(
337 347 'test' => 'name',
338   - 'output' => 'name',
  348 + 'output' => 'name',
339 349 )),
340 350 array('ktcore.validators.string', array(
341 351 'test' => 'description',
... ... @@ -346,22 +356,22 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
346 356 'output' => 'generic',
347 357 )),
348 358 );
349   -
  359 +
350 360 $oForm->setValidators($validators);
351   -
  361 +
352 362 return $oForm;
353 363 }
354   -
355   - function do_editfieldset() {
  364 +
  365 + function do_editfieldset() {
356 366 $oForm = $this->form_edit();
357 367 $this->oPage->setBreadcrumbDetails(_kt('edit fieldset'));
358 368 return $oForm->renderPage(_kt("Edit Fieldset"));
359 369 }
360   -
361   - function do_savefieldset() {
  370 +
  371 + function do_savefieldset() {
362 372 $oForm = $this->form_edit();
363 373 $res = $oForm->validate();
364   -
  374 +
365 375 $data = $res['results'];
366 376 $errors = $res['errors'];
367 377 $extra_errors = array();
... ... @@ -371,18 +381,18 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
371 381 $extra_errors['name'][] = _kt("A fieldset with that name already exists.");
372 382 }
373 383 }
374   -
  384 +
375 385 if (!empty($errors) || !empty($extra_errors)) {
376 386 return $oForm->handleError(null, $extra_errors);
377 387 }
378   -
  388 +
379 389 $this->startTransaction();
380   -
  390 +
381 391 $this->oFieldset->setName($data['name']);
382   - $this->oFieldset->setDescription($data['description']);
  392 + $this->oFieldset->setDescription($data['description']);
383 393 $bGeneric = $data['generic'];
384 394 if ($bGeneric != $this->oFieldset->getIsGeneric() && $bGeneric == true) {
385   - // delink it from all doctypes.
  395 + // delink it from all doctypes.
386 396 $aTypes = $this->oFieldset->getAssociatedTypes();
387 397 foreach ($aTypes as $oType) {
388 398 $res = KTMetadataUtil::removeSetsFromDocumentType($oType, $this->oFieldset->getId());
... ... @@ -392,17 +402,17 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
392 402 }
393 403 }
394 404 }
395   -
396   - $this->oFieldset->setIsGeneric($data['generic']);
397   -
  405 +
  406 + $this->oFieldset->setIsGeneric($data['generic']);
  407 +
398 408 $res = $this->oFieldset->update();
399 409 if (PEAR::isError($res)) {
400 410 $this->errorRedirectTo('edit', _kt('Could not save fieldset changes'));
401 411 exit(0);
402 412 }
403   -
  413 +
404 414 return $this->successRedirectTo('edit', _kt("Fieldset details updated."));
405   - }
  415 + }
406 416 }
407 417  
408 418 ?>
... ...
plugins/ktcore/admin/fieldsets/basic.inc.php
... ... @@ -608,8 +608,6 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher {
608 608 $renderedTree = $this->_evilTreeRenderer($fieldTree);
609 609  
610 610 $this->oPage->setTitle(_kt('Edit Lookup Tree'));
611   -
612   - //$this->oPage->requireJSResource('thirdparty/js/MochiKit/Base.js');
613 611  
614 612 if ($current_node == 0) { $category_name = 'Root'; }
615 613 else {
... ...
plugins/ktstandard/KTBulkExportPlugin.php
... ... @@ -106,8 +106,6 @@ class KTBulkExportAction extends KTFolderAction {
106 106 exit(0);
107 107 }
108 108  
109   - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js');
110   - $this->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js');
111 109 $this->oPage->template = "kt3/minimal_page";
112 110 $this->handleOutput("");
113 111  
... ...
sql/mysql/install/rebuild.bat
... ... @@ -14,7 +14,7 @@ mysqladmin -u root -p -f drop %INPUT%
14 14 ECHO ---- Creating database %INPUT% ----
15 15 mysqladmin -u root -p create %INPUT%
16 16 ECHO ---- Creating structure for database %INPUT% ----
17   -mysql -u root %INPUT%<structure.sql
  17 +mysql -u root -p %INPUT%<structure.sql
18 18 ECHO ---- Inserting data into database %INPUT% ----
19 19 mysql -u root -p %INPUT%< data.sql
20 20 ECHO ---- Creating user information for database %INPUT% ----
... ...
templates/kt3/document/edit.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 <!-- unforunate, but (currently) necessary -->
8 2  
9 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
... ...
templates/kt3/notifications/subscriptions.AddDocument.smarty
1 1 <dt class="actionitem subscription">{$info.title|sanitize}</dt>
2 2 <dd class="actionmessage">
  3 +
3 4 <!-- could break this up. -->
4 5 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" was added{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}to "#location_name#"{/i18n}{/if}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 6 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
10   - {/if}
11   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  7 + <div style="float:left; position: relative;">
  8 + {if !$is_broken}
  9 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
  10 + {else}
  11 + <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
  12 + {/if}
  13 +
  14 + &nbsp;|&nbsp;
  15 +
  16 + </div>
  17 + <div>
  18 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  19 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  20 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  21 +
  22 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  23 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
  24 + </div>
12 25 </div>
13 26 </dd>
... ...
templates/kt3/notifications/subscriptions.AddFolder.smarty
... ... @@ -3,11 +3,22 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The folder "#object_name#" was added{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}to "#location_name#"{/i18n}{/if}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
  6 + <div style="float:left; position: relative;">
6 7 {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View New Folder{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Folder is no longer available{/i18n}</span>
10   - {/if}
11   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View New Folder{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Folder is no longer available{/i18n}</span>
  11 + {/if}
  12 + &nbsp;|&nbsp;
  13 +
  14 + </div>
  15 + <div>
  16 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  17 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  18 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  19 +
  20 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  21 + </div>
  22 +
12 23 </div>
13 24 </dd>
... ...
templates/kt3/notifications/subscriptions.ArchivedDocument.smarty
... ... @@ -3,6 +3,9 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#"{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}from "#location_name#"{/i18n}{/if} {i18n}was archived{/i18n}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
  6 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  7 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  8 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
6 9 <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
7 10 </div>
8 11 </dd>
... ...
templates/kt3/notifications/subscriptions.CheckInDocument.smarty
... ... @@ -3,11 +3,18 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" has been checked in{/i18n}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}{if ($info.location_name !== null)}, {i18n arg_location_name=$info.location_name}in the folder "#location_name#"{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
10   - {/if}
11   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 + <div style="float:left; position: relative;">
  7 + {if !$is_broken}
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
  11 + {/if}
  12 + &nbsp;|&nbsp;
  13 + </div>
  14 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  15 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  16 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  17 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  18 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
12 19 </div>
13 20 </dd>
... ...
templates/kt3/notifications/subscriptions.CheckOutDocument.smarty
... ... @@ -3,11 +3,18 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" has been checked out{/i18n}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}{if ($info.location_name !== null)}, {i18n arg_location_name=$info.location_name}from the folder "#location_name#"{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
10   - {/if}
11   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 + <div style="float:left; position: relative;">
  7 + {if !$is_broken}
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
  11 + {/if}
  12 + &nbsp;|&nbsp;
  13 + </div>
  14 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  15 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  16 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  17 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  18 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
12 19 </div>
13 20 </dd>
... ...
templates/kt3/notifications/subscriptions.DiscussDocument.smarty
... ... @@ -7,11 +7,20 @@
7 7 The discussion around document "{$info.object_name|sanitize}" has been updated.
8 8 {/if}
9 9 <div class="actionoptions">
10   - {if !$is_broken}
11   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
12   - {else}
13   - <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
14   - {/if}
15   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  10 + <div style="float:left; position: relative;">
  11 + {if !$is_broken}
  12 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
  13 + {else}
  14 + <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
  15 + {/if}
  16 + &nbsp;|&nbsp;
  17 + </div>
  18 +
  19 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  20 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  21 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  22 +
  23 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  24 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
16 25 </div>
17 26 </dd>
... ...
templates/kt3/notifications/subscriptions.ModifyDocument.smarty
... ... @@ -3,11 +3,20 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" has been changed{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}in the folder "#location_name#"{/i18n}{/if}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
10   - {/if}
11   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 + <div style="float:left; position: relative;">
  7 + {if !$is_broken}
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Document{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
  11 + {/if}
  12 + &nbsp;|&nbsp;
  13 + </div>
  14 +
  15 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  16 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  17 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  18 +
  19 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  20 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
12 21 </div>
13 22 </dd>
... ...
templates/kt3/notifications/subscriptions.MoveDocument.smarty
... ... @@ -3,12 +3,21 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" has been moved{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}to the folder "#location_name#"{/i18n}{/if}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View New Location{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Location is no longer available{/i18n}</span>
10   - {/if}
  6 + <div style="float:left; position: relative;">
  7 + {if !$is_broken}
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View New Location{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Location is no longer available{/i18n}</span>
  11 + {/if}
11 12  
12   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  13 + &nbsp;|&nbsp;
  14 + </div>
  15 +
  16 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  17 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  18 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  19 +
  20 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  21 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
13 22 </div>
14 23 </dd>
... ...
templates/kt3/notifications/subscriptions.RemoveChildDocument.smarty
... ... @@ -3,11 +3,20 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" has been removed{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}from the folder "#location_name#"{/i18n} ({i18n}to which you are subscribed{/i18n}){/if}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Folder{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Folder is no longer available{/i18n}</span>
10   - {/if}
11   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 + <div style="float:left; position: relative;">
  7 + {if !$is_broken}
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Folder{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Folder is no longer available{/i18n}</span>
  11 + {/if}
  12 + &nbsp;|&nbsp;
  13 + </div>
  14 +
  15 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  16 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  17 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  18 +
  19 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  20 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
12 21 </div>
13 22 </dd>
... ...
templates/kt3/notifications/subscriptions.RemoveChildFolder.smarty
... ... @@ -3,12 +3,21 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The folder "#object_name#" has been removed{/i18n}{if ($info.location_name !== null)} {i18n arg_location_name=$info.location_name}from "#location_name#"{/i18n}{/if}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - {if !$is_broken}
7   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Folder{/i18n}</a>
8   - {else}
9   - <span class="descriptiveText">{i18n}Location is no longer available{/i18n}</span>
10   - {/if}
  6 + <div style="float:left; position: relative;">
  7 + {if !$is_broken}
  8 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`"}">{i18n}View Folder{/i18n}</a>
  9 + {else}
  10 + <span class="descriptiveText">{i18n}Location is no longer available{/i18n}</span>
  11 + {/if}
11 12  
12   - | <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  13 + &nbsp;|&nbsp;
  14 + <div>
  15 +
  16 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  17 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  18 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  19 +
  20 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  21 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
13 22 </div>
14 23 </dd>
... ...
templates/kt3/notifications/subscriptions.RemoveSubscribedDocument.smarty
... ... @@ -3,6 +3,12 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" to which you were subscribed, has been removed{/i18n}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 +
  7 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  8 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  9 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  10 +
  11 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  12 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
7 13 </div>
8 14 </dd>
... ...
templates/kt3/notifications/subscriptions.RemoveSubscribedFolder.smarty
... ... @@ -3,6 +3,12 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The folder "#object_name#" to which you were subscribed, has been removed{/i18n}{if ($info.has_actor)} {i18n arg_actor_name=$info.actor_name}by #actor_name#{/i18n}{/if}.
5 5 <div class="actionoptions">
6   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 +
  7 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  8 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  9 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  10 +
  11 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  12 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
7 13 </div>
8 14 </dd>
... ...
templates/kt3/notifications/subscriptions.RestoreDocument.smarty
... ... @@ -3,6 +3,12 @@
3 3 <!-- could break this up. -->
4 4 {i18n arg_object_name=$info.object_name|sanitize}The document "#object_name#" has been restored by an administrator.{/i18n}
5 5 <div class="actionoptions">
6   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  6 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  7 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  8 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  9 +
  10 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  11 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
  12 +
7 13 </div>
8 14 </dd>
... ...
templates/kt3/notifications/subscriptions.generic.smarty
1 1 <dt class="actionitem subscription">{$info.title|sanitize}</dt>
2 2 <dd class="actionmessage">
3 3 <div class="actionoptions">
4   - <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  4 +
  5 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  6 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  7 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  8 +
  9 + <a href="{ktLink base="notify.php" query="id=`$info.notify_id`&notify_action=clear"}"
  10 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}">{i18n}Clear Alert{/i18n}</a>
5 11 </div>
6 12 </dd>
... ...
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/assist/assist_notification.smarty
... ... @@ -4,11 +4,20 @@
4 4 user, <b>#user#</b>, has requested help on the document <b>#name#</b>, and you are
5 5 the owner or an admin of this document.{/i18n}
6 6 <div class="actionoptions">
7   - {if !$is_broken}
8   - <a href="{ktLink base="notify.php" query="id=`$notify_id`"}">{i18n}View Help Request{/i18n}</a>
9   - {else}
10   - <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
11   - {/if}
12   - | <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  7 + <div style="float:left; position: relative;">
  8 + {if !$is_broken}
  9 + <a href="{ktLink base="notify.php" query="id=`$notify_id`"}">{i18n}View Help Request{/i18n}</a>
  10 + {else}
  11 + <span class="descriptiveText">{i18n}Document is no longer available{/i18n}</span>
  12 + {/if}
  13 + &nbsp;|&nbsp;
  14 + </div>
  15 +
  16 + <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  17 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  18 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  19 +
  20 + <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  21 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"">{i18n}Clear Alert{/i18n}</a>
13 22 </div>
14 23 </dd>
... ...
templates/ktcore/assist/assist_notification_details.smarty
... ... @@ -12,7 +12,16 @@
12 12 </dl>
13 13  
14 14 <div class="actionoptions">
15   - <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=view"}">{i18n}View Document{/i18n}</a>
16   - | <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}">{i18n}Clear Alert{/i18n}</a>
  15 + <div style="float:left; position: relative;">
  16 + <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=view"}">{i18n}View Document{/i18n}</a>
  17 + &nbsp;|&nbsp;
  18 + </div>
  19 +
  20 + <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  21 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
  22 + class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
  23 +
  24 + <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  25 + kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"">{i18n}Clear Alert{/i18n}</a>
17 26 </div>
18 27  
... ...
templates/ktcore/boolean_search_change.smarty
1   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
2   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
6 1 {$context->oPage->requireJSResource("resources/js/taillog.js")}
7 2 {$context->oPage->requireJSResource("resources/js/constructed_search.js")}
8 3 {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")}
... ...
templates/ktcore/boolean_search_edit.smarty
1   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
2   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
6 1 {$context->oPage->requireJSResource("resources/js/taillog.js")}
7 2 {$context->oPage->requireJSResource("resources/js/constructed_search.js")}
8 3 {$context->oPage->requireJSResource("resources/js/constructed_search_postprocess.js")}
... ...
templates/ktcore/document/add.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 <!-- unforunate, but (currently) necessary -->
8 2  
9 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
... ... @@ -50,6 +44,11 @@ function startupMetadata() {
50 44 document_type_changed();
51 45 }
52 46  
  47 +function progressIndicator(){
  48 + var indicator = document.getElementById();
  49 + indicator.style.display = "block";
  50 +}
  51 +
53 52 addLoadEvent(startupMetadata);
54 53 {/literal}
55 54 {/capture}
... ...
templates/ktcore/document/admin/deletedlist.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
4   -
5 1 {$context->oPage->requireJSResource('resources/js/toggleselect.js')}
6 2 {$context->oPage->requireJSResource('resources/js/expungeList.js')}
7 3  
... ...
templates/ktcore/document/edit.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 <!-- unforunate, but (currently) necessary -->
8 2  
9 3 {$context->oPage->requireJSResource('resources/js/taillog.js')}
... ...
templates/ktcore/folder/bulkImport.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
8 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
9 3  
... ...
templates/ktcore/folder/bulkUpload.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
8 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
9 3  
... ...
templates/ktcore/folder/roles_managegroups.smarty
1 1 <h2>{i18n arg_rolename=$rolename}Allocate Groups to Role: #rolename#{/i18n}</h2>
2 2  
3 3 {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
6   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
7 4  
8 5 <p class="descriptiveText">{i18n}Groups must be allocated to roles to ensure that the workflow transition this role is supposed to support can be acted upon by a user.{/i18n}</p>
9 6  
... ...
templates/ktcore/folder/roles_manageusers.smarty
1 1 <h2>{i18n}Allocate User to Role{/i18n}</h2>
2 2  
3 3 {$context->oPage->requireJSResource('thirdpartyjs/OptionTransfer.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
6   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
7 4  
8 5 <p class="descriptiveText">{i18n}Add or remove users for this role. {/i18n}</p>
9 6  
... ...
templates/ktcore/forms/widgets/collection.smarty
... ... @@ -7,12 +7,6 @@
7 7 <link rel="stylesheet" type="text/css" href="{$rootUrl}/resources/css/kt-headings.css" />
8 8 <!--[if lt IE 7]><style type="text/css" media="all">@import url({$rootUrl}/resources/css/kt-ie-icons.css);</style><![endif]-->
9 9  
10   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Base.js"> </script>
11   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Iter.js"> </script>
12   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/DOM.js"> </script>
13   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Logging.js"> </script>
14   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Async.js"> </script>
15   -<script type="text/javascript" src="{$rootUrl}/thirdpartyjs/MochiKit/Signal.js"> </script>
16 10 <script type="text/javascript" src="{$rootUrl}/resources/js/kt-utility.js"> </script>
17 11 <script type="text/javascript" src="{$rootUrl}/resources/js/toggleselect.js"> </script>
18 12 <script type="text/javascript" src="{$rootUrl}/presentation/i18nJavascript.php"> </script>
... ...
templates/ktcore/login.smarty
... ... @@ -11,7 +11,7 @@
11 11  
12 12 <link rel="stylesheet" href="{$rootUrl}/resources/css/kt-ie-icons.css" type="text/css" />
13 13  
14   - <script type="text/javascript" src="{$rootUrl}/thirdpartyjs/curvycorners/rounded_corners.inc.js"> </script>
  14 + <script type="text/javascript" src="{$rootUrl}/thirdpartyjs/curvycorners/rounded_corners_lite.inc.js"> </script>
15 15 <script type="text/javascript" src="{$rootUrl}/resources/js/login_loader.js"> </script>
16 16 </head>
17 17 <body>
... ... @@ -45,6 +45,7 @@
45 45 </select>
46 46 <div class="form_actions">
47 47 <input type="submit" value="{i18n}login{/i18n}" />
  48 + <p class="smaller"><a href="#" onclick="showBox();">Forgot Password?</a></p>
48 49 </div>
49 50 </form>
50 51 </div>
... ... @@ -54,24 +55,72 @@
54 55 </div>
55 56 {/if}
56 57 <p class="descriptiveText version">
57   - {i18n arg_appname="$appname"}#appname# Version{/i18n} {$versionName}<br/>
58   - {i18n}<a href="http://www.knowledgetree.com/">Document Management Software</a>{/i18n}<br>
59   - {i18n}&copy; 2007 <a href="http://www.knowledgetree.com/">The Jam Warehouse Software (Pty) Ltd.</a>{/i18n}<br><br>
60   - {if ($smallVersion == 'OSS')}
61   - {i18n}This program is free software and published under the <a href=" http://www.gnu.org/licenses/">GNU General Public License version 3</a>{/i18n}<br>
62   - {else}
63   - {i18n}All rights reserved.{/i18n}<br>
64   - {/if}
  58 + {i18n}Access to this service is subject to the KnowledgeTreeLive <a href="http://www.knowledgetree.com/about/legal/live">Terms and Conditions</a> of use.{/i18n}<br/>
  59 + {i18n}&copy; 2007 <a href="http://www.knowledgetree.com/">The Jam Warehouse Software (Pty) Ltd.</a> All Rights Reserved{/i18n}
65 60 </p>
66   -
67   -
68 61 <div id="bottomspacer"></div>
69 62 <div class="floatClear"></div>
70 63 </div>
  64 + <div id="forgot_box">
  65 + <form name="forgot_form" action="" method="POST">
  66 + <table width="80%">
  67 + <tr>
  68 + <td><div class="close_box" id="close_box" onclick="hideBox();" onmouseover="glow();" onmouseout="unglow();">Close</div></td>
  69 + </tr>
  70 + <tr>
  71 + <input type="hidden" value="request_password_reset" name="request_password_reset" id="request_password_reset">
  72 + <td>Please note that this feature is only used to reset the ADMIN password. System users should contact admin to reset their password.</td>
  73 + </tr>
  74 + <!--<tr>
  75 + <td><label for="company_name">Company Name</label>
  76 + <input type="text" id="company_name" name="company_name"></input></td>
  77 + </tr>-->
  78 + <tr>
  79 + <td><label for="email">Email Address</label>
  80 + <input type="text" id="email" name="email"></input></td>
  81 + </tr>
  82 + <tr>
  83 + <td class="form_actions"><input type="submit" value="{i18n}submit{/i18n}" /></td>
  84 + <td></td>
  85 + </tr>
  86 + </table>
  87 + </form>
  88 + </div>
  89 + <div id="reset_box">
  90 + <form name="reset_form" action="" method="POST">
  91 + <table width="80%">
  92 + <tr>
  93 + <input type="hidden" name="perform_password_reset" value="perform_password_reset" id="perform_password_reset">
  94 + <td>Please note that this feature is only used to reset the ADMIN password. System users should contact admin to reset their password.</td>
  95 + </tr>
  96 + <tr>
  97 + <td><label for="full_name">Full Name</label>
  98 + <input type="text" id="full_name" name="full_name"></input></td>
  99 + </tr>
  100 + <tr>
  101 + <td><label for="email">Email Address</label>
  102 + <input type="text" id="email" name="email"></input></td>
  103 + </tr>
  104 + <tr>
  105 + <td><label for="new_password">New password</label>
  106 + <input type="password" id="new_password" name="new_password"></input></td>
  107 + </tr>
  108 + <tr>
  109 + <td><label for="new_password_repeat">Repeat new password</label>
  110 + <input type="password" id="new_password_repeat" name="new_password_repeat"></input></td>
  111 + </tr>
  112 + <tr>
  113 + <td class="form_actions"><input type="submit" value="{i18n}submit{/i18n}" /></td>
  114 + <td></td>
  115 + </tr>
  116 + </table>
  117 + </form>
  118 + </div>
  119 + {if $reset_password == true}
  120 + <script type="text/javascript">showResetBox();</script>
  121 + {else}
  122 + <script type="text/javascript">hideResetBox();</script>
  123 + {/if}
71 124 </div>
72   -
73   -
74   -
75   -
76 125 </body>
77 126 </html>
... ...
templates/ktcore/metadata/admin/edit_lookuptree.smarty
1 1 {$context->oPage->requireCSSResource('resources/css/kt-treewidget.css')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5 2  
6 3 <h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Lookup Tree{/i18n}:<br />{$field->getName()}</h2>
7 4  
... ...
templates/ktcore/metadata/conditional/conditional_overview.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Async.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DateTime.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6 1 {$context->oPage->requireJSResource('resources/js/taillog.js')}
7 2 {$context->oPage->requireJSResource('resources/js/conditional_usage.js')}
8 3  
... ...
templates/ktcore/metadata/conditional/editcomplex.smarty
... ... @@ -35,13 +35,6 @@
35 35 {/capture}
36 36 {$context->oPage->requireCSSStandalone($sCSS)}
37 37  
38   -<!-- include the mochikit js -->
39   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
40   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
41   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
42   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
43   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
44   -
45 38 {$context->oPage->requireJSResource("resources/js/taillog.js")}
46 39 {$context->oPage->requireJSResource("resources/js/conditional_complex_edit.js")}
47 40  
... ...
templates/ktcore/metadata/conditional/editsimple.smarty
... ... @@ -46,11 +46,6 @@ td { vertical-align: top; }
46 46 {$context->oPage->requireCSSStandalone($sCSS)}
47 47  
48 48 <!-- include the mochikit js -->
49   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
50   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DateTime.js")}
51   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
52   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
53   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
54 49  
55 50 {$context->oPage->requireJSResource("resources/js/taillog.js")}
56 51 {$context->oPage->requireJSResource("resources/js/conditional_simple_edit.js")}
... ...
templates/ktcore/principals/groups_sourceusers.smarty
1 1 <h2>{i18n arg_name=$group->getName()}Manage Users in #name#{/i18n}</h2>
2 2  
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
4   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
5   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
6   -
7 3 <p class="descriptiveText">{i18n}Users may be associated with Groups which are then used to grant these users security privileges.{/i18n}</p>
8 4  
9 5  
... ...
templates/ktcore/widget_fieldset_conditional.smarty
1   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Base.js")}
2   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
3   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Async.js")}
5   -
6 1 {capture assign=sJS}
7 2 var innerUrl = {$rootUrl};
8 3 {literal}
... ...
templates/ktstandard/authentication/ldapsearchuser.smarty
1   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Base.js')}
2   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/Iter.js')}
3   -{$context->oPage->requireJSResource('thirdpartyjs/MochiKit/DOM.js')}
4   -
5 1 {$context->oPage->requireJSResource('resources/js/toggleselect.js')}
6 2  
7 3 <form method="POST" action="{$smarty.server.PHP_SELF}">
... ...
thirdpartyjs/tinymce/jscripts/tiny_mce/tiny_mce.js
1   -/**
2   - * $RCSfile$
3   - * $Revision$
4   - * $Date$
5   - *
6   - * @author Moxiecode
7   - * @copyright Copyright ยฉ 2004, Moxiecode Systems AB, All rights reserved.
8   - */
9   - function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.dialogCounter=0;this.idCounter=0;};TinyMCE.prototype.defParam=function(key,def_val){this.settings[key]=tinyMCE.getParam(key,def_val);};TinyMCE.prototype.init=function(settings){var theme;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip.php")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1)?'_src':'';src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.defParam("mode","none");this.defParam("theme","advanced");this.defParam("plugins","",true);this.defParam("language","en");this.defParam("docs_language",this.settings['language']);this.defParam("elements","");this.defParam("textarea_trigger","mce_editable");this.defParam("valid_elements","+a[name|href|target|title|class],strong/b[class],em/i[class],strike[class],u[class],+p[dir|class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],div[dir|class|align],span[class|align],pre[class|align],address[class|align],h1[dir|class|align],h2[dir|class|align],h3[dir|class|align],h4[dir|class|align],h5[dir|class|align],h6[dir|class|align],hr");this.defParam("extended_valid_elements","");this.defParam("invalid_elements","");this.defParam("encoding","");this.defParam("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE.prototype.convertURL"));this.defParam("save_callback","");this.defParam("debug",false);this.defParam("force_br_newlines",false);this.defParam("force_p_newlines",true);this.defParam("add_form_submit_trigger",true);this.defParam("relative_urls",true);this.defParam("remove_script_host",true);this.defParam("focus_alert",true);this.defParam("document_base_url",this.documentURL);this.defParam("visual",true);this.defParam("visual_table_class","mceVisualAid");this.defParam("setupcontent_callback","");this.defParam("fix_content_duplication",true);this.defParam("custom_undo_redo",true);this.defParam("custom_undo_redo_levels",-1);this.defParam("custom_undo_redo_keyboard_shortcuts",true);this.defParam("verify_css_classes",false);this.defParam("trim_span_elements",true);this.defParam("verify_html",true);this.defParam("apply_source_formatting",false);this.defParam("directionality","ltr");this.defParam("auto_cleanup_word",false);this.defParam("cleanup_on_startup",false);this.defParam("inline_styles",false);this.defParam("convert_newlines_to_brs",false);this.defParam("auto_reset_designmode",false);this.defParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,202,Ecirc,203,Euml,204,Igrave,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,217,Ugrave,219,Ucirc,220,Uuml,376,Yuml,222,THORN,224,agrave,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,234,ecirc,235,euml,236,igrave,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,249,ugrave,251,ucirc,252,uuml,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy,233,eacute");this.defParam("entity_encoding","named");this.defParam("cleanup_callback","");this.defParam("add_unload_trigger",true);this.defParam("ask",false);this.defParam("nowrap",false);this.defParam("auto_resize",false);this.defParam("auto_focus",false);this.defParam("cleanup",true);this.defParam("remove_linebreaks",true);this.defParam("button_tile_map",false);this.defParam("submit_patch",true);this.defParam("browsers","msie,safari,gecko");this.defParam("dialog_type","window");if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;var baseHREF=tinyMCE.settings['document_base_url'];if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.blockRegExp=new RegExp("^(h1|h2|h3|h4|h5|h6|p|div|address|pre|form|table|li|ol|ul|td)$","i");this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else this.settings['content_css']=cssPath;}else this.settings['content_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_content.css";if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath;}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath;}else this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_ui.css";if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg);}this._initCleanup();if(this.configs.length==0){if(this.isSafari)alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.");tinyMCE.addEvent(window,"load",TinyMCE.prototype.onLoad);if(tinyMCE.isMSIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE.prototype.unloadHandler);}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i<themePlugins.length;i++)this.loadScript(tinyMCE.baseURL+'/plugins/'+themePlugins[i]+'/editor_plugin'+tinyMCE.srcMode+'.js');}settings['index']=this.configs.length;this.configs[this.configs.length]=settings;};TinyMCE.prototype.loadScript=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.loadCSS=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<link href="'+url+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.importCSS=function(doc,css_file){if(tinyMCE.isMSIE)var styleSheet=doc.createStyleSheet(css_file);else{var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if(headArr=doc.getElementsByTagName("head"))headArr[0].appendChild(elm);}};TinyMCE.prototype.confirmAdd=function(e,settings){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true');};TinyMCE.prototype.updateContent=function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isMSIE)doc.body.innerHTML=tinyMCE._cleanupHTML(doc,this.settings,doc.body,inst.visualAid);}}};TinyMCE.prototype.addMCEControl=function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCEControl(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst.onAdd(replace_element,form_element_name,target_document);};TinyMCE.prototype.triggerSave=function(skip_cleanup,skip_callback){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];inst.switchSettings();tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(inst.getDoc(),inst.getBody().innerHTML);var htm=skip_cleanup?inst.getBody().innerHTML:tinyMCE._cleanupHTML(inst.getDoc(),this.settings,inst.getBody(),this.visualAid,true);if(tinyMCE.settings["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")htm=tinyMCE.convertStringToXML(htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(inst.formTargetElementId,htm,inst.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"&#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
... ...