diff --git a/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php b/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php index b47c916291..cc428cfabc 100644 --- a/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php +++ b/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php @@ -84,13 +84,13 @@ class Step35 implements DatasUpgraderInterface try { $this->updateMetadatas($record, $row['xml']); - } catch (Exception $e) { + } catch (\Exception $e) { $this->app['monolog']->addError(sprintf("Error while upgrading metadatas for record %d on databox %d : %s", $record->get_record_id(), $record->get_sbas_id(), $e->getMessage())); } try { $record->set_binary_status($row['status']); - } catch (Exception $e) { + } catch (\Exception $e) { $this->app['monolog']->addError(sprintf("Error while upgrading status for record %d on databox %d : %s", $record->get_record_id(), $record->get_sbas_id(), $e->getMessage())); } unset($record); diff --git a/lib/Alchemy/Phrasea/Controller/Admin/Users.php b/lib/Alchemy/Phrasea/Controller/Admin/Users.php index f9da5d13c9..14a0cdca95 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/Users.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/Users.php @@ -74,9 +74,15 @@ class Users implements ControllerProviderInterface try { $rights = new UserHelper\Edit($app, $app['request']); - $rights->apply_rights(); + + if (!$app['request']->request->get('reset_before_apply')) { + $rights->apply_rights(); + } if ($app['request']->request->get('template')) { + if ($app['request']->request->get('reset_before_apply')) { + $rights->resetRights(); + } $rights->apply_template(); } @@ -200,6 +206,9 @@ class Users implements ControllerProviderInterface $controllers->post('/apply_template/', function () use ($app) { $users = new UserHelper\Edit($app, $app['request']); + if ($app['request']->request->get('reset_before_apply')) { + $users->resetRights(); + } $users->apply_template(); return $app->redirectPath('admin_users_search'); diff --git a/lib/Alchemy/Phrasea/Controller/Root/Account.php b/lib/Alchemy/Phrasea/Controller/Root/Account.php index 0633c143f2..6c6a20c6a6 100644 --- a/lib/Alchemy/Phrasea/Controller/Root/Account.php +++ b/lib/Alchemy/Phrasea/Controller/Root/Account.php @@ -323,7 +323,7 @@ class Account implements ControllerProviderInterface return $app['twig']->render('account/account.html.twig', array( 'user' => $app['authentication']->getUser(), 'evt_mngr' => $app['events-manager'], - 'notifications' => $app['events-manager']->list_notifications_available(), + 'notifications' => $app['events-manager']->list_notifications_available($app['authentication']->getUser()->get_id()), )); } @@ -372,6 +372,7 @@ class Account implements ControllerProviderInterface ); if (0 === count(array_diff($accountFields, array_keys($request->request->all())))) { + try { $app['phraseanet.appbox']->get_connection()->beginTransaction(); @@ -403,7 +404,7 @@ class Account implements ControllerProviderInterface $app['EM']->persist($ftpCredential); $app['EM']->flush(); $app->addFlash('success', _('login::notification: Changements enregistres')); - } catch (Exception $e) { + } catch (\Exception $e) { $app->addFlash('error', _('forms::erreurs lors de l\'enregistrement des modifications')); $app['phraseanet.appbox']->get_connection()->rollBack(); } @@ -411,15 +412,12 @@ class Account implements ControllerProviderInterface $requestedNotifications = (array) $request->request->get('notifications', array()); - foreach ($app['events-manager']->list_notifications_available() as $notifications) { + foreach ($app['events-manager']->list_notifications_available($app['authentication']->getUser()->get_id()) as $notifications) { foreach ($notifications as $notification) { - $notifId = $notification['id']; - $notifName = sprintf('notification_%s', $notifId); - - if (isset($requestedNotifications[$notifId])) { - $app['authentication']->getUser()->setPrefs($notifName, '1'); + if (isset($requestedNotifications[$notification['id']])) { + $app['authentication']->getUser()->set_notification_preference($app, $notification['id'], '1'); } else { - $app['authentication']->getUser()->setPrefs($notifName, '0'); + $app['authentication']->getUser()->set_notification_preference($app, $notification['id'], '0'); } } } diff --git a/lib/Alchemy/Phrasea/Controller/Thesaurus/Xmlhttp.php b/lib/Alchemy/Phrasea/Controller/Thesaurus/Xmlhttp.php index e1e52e3762..5f150dc91b 100644 --- a/lib/Alchemy/Phrasea/Controller/Thesaurus/Xmlhttp.php +++ b/lib/Alchemy/Phrasea/Controller/Thesaurus/Xmlhttp.php @@ -66,12 +66,12 @@ class Xmlhttp implements ControllerProviderInterface $connbas = $databox->get_connection(); $domct = $databox->get_dom_cterms(); - if (!($domct instanceof DOMDocument)) { + if (!($domct instanceof \DOMDocument)) { throw new \Exception('Unable to load cterms'); } $domth = $databox->get_dom_thesaurus(); - if (!($domth instanceof DOMDocument)) { + if (!($domth instanceof \DOMDocument)) { throw new \Exception('Unable to load thesaurus'); } @@ -83,10 +83,6 @@ class Xmlhttp implements ControllerProviderInterface $q = "/thesaurus//te[@id='" . $request->get("tid") . "']"; } - if ($request->get("debug")) { - printf("qth: %s
\n", $q); - } - $parentnode = $xpathth->query($q)->item(0); if (!$parentnode) { throw new \Exception('Unable to find branch'); @@ -165,9 +161,6 @@ class Xmlhttp implements ControllerProviderInterface if ($ct2->nodeType != XML_ELEMENT_NODE || $ct2->nodeName != 'sy') { continue; } - if ($request->get('debug')) { - printf("ct2:%s \n", var_export($ct2, true)); - } $nid = $parentnode->getAttribute("nextid"); $parentnode->setAttribute("nextid", (int) $nid + 1); @@ -526,10 +519,6 @@ class Xmlhttp implements ControllerProviderInterface $xpath = $databox->get_xpath_thesaurus(); $q = "/thesaurus//sy[@id='" . $request->get('id') . "']"; - if ($request->get('debug')) { - print("q:" . $q . "
\n"); - } - $nodes = $xpath->query($q); if ($nodes->length > 0) { $n2 = $nodes->item(0); @@ -859,10 +848,6 @@ class Xmlhttp implements ControllerProviderInterface $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); - if ($request->get('debug')) { - printf("/*\n thid=%s\n %s \n */\n", $thid, $sql); - } - foreach ($rs as $rowbas) { $t_nrec[$thid] = $rowbas; } @@ -879,10 +864,6 @@ class Xmlhttp implements ControllerProviderInterface $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); - if ($request->get('debug')) { - printf("/*\n thid=%s\n %s \n */\n", $thid, $sql); - } - foreach ($rs as $rowbas) { $t_nrec[$thid . $rowbas['k']] = $rowbas; } @@ -900,10 +881,6 @@ class Xmlhttp implements ControllerProviderInterface $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); - if ($request->get('debug')) { - printf("/*\n thid=%s\n %s \n */\n", $thid, $sql); - } - foreach ($rs as $rowbas) { $t_nrec[$thid] = $rowbas; } @@ -920,19 +897,11 @@ class Xmlhttp implements ControllerProviderInterface $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); - if ($request->get('debug')) { - printf("/*\n thid=%s\n %s \n */\n", $thid, $sql); - } - foreach ($rs as $rowbas) { $t_nrec[$thid . '.' . $rowbas['k']] = $rowbas; } } - if ($request->get('debug')) { - printf("/* %s */\n", var_export($t_nrec, true)); - } - $databox = $app['phraseanet.appbox']->get_databox($sbid); if ($request->get('type') == 'T') { $xqroot = 'thesaurus'; @@ -953,9 +922,6 @@ class Xmlhttp implements ControllerProviderInterface } else { $q = '/' . $xqroot . '//te[@id=\'' . $thid . '\']'; } - if ($request->get('debug')) { - print("q:" . $q . "
\n"); - } $nodes = $xpath->query($q); if ($nodes->length > 0) { @@ -1009,10 +975,6 @@ class Xmlhttp implements ControllerProviderInterface } } - if ($request->get('debug')) { - printf("tts(%s) :
%s

\n", $nts, var_export($tts, true)); - } - if ($nts > 0) { $field0 = $node0->getAttribute('field'); if ($field0) { @@ -1026,9 +988,6 @@ class Xmlhttp implements ControllerProviderInterface } elseif ($request->get('type') == 'C') { $tts = array_reverse($tts); } - if ($request->get('debug')) { - printf("%s: type=%s :
%s

\n", __LINE__, $request->get('type'), var_export($tts, true)); - } foreach ($tts as $ts) { $class = ''; @@ -1155,9 +1114,6 @@ class Xmlhttp implements ControllerProviderInterface $xpath = $databox->get_xpath_thesaurus(); $q = '/thesaurus'; - if ($request->get('debug')) { - print('q:' . $q . '
\n'); - } if (($znode = $xpath->query($q)->item(0))) { $q2 = '//sy'; if ($request->get('t')) { @@ -1194,9 +1150,6 @@ class Xmlhttp implements ControllerProviderInterface $html .= '

'; } } - if ($request->get('debug')) { - printf('zhtml=%s
\n', $html); - } } return new Response($html); @@ -1282,11 +1235,11 @@ class Xmlhttp implements ControllerProviderInterface $ret->preserveWhiteSpace = false; $root = $ret->appendChild($ret->createElement('result')); $root->appendChild($ret->createCDATASection(var_export(array( - 'bid' => $request->get('bid'), - 't' => $request->get('t'), - 'mod' => $request->get('mod'), - 'debug' => $request->get('debug'), - ), true))); + 'bid' => $request->get('bid'), + 't' => $request->get('t'), + 'mod' => $request->get('mod'), + 'debug' => $request->get('debug'), + ), true))); $html = $root->appendChild($ret->createElement('html')); @@ -1304,10 +1257,6 @@ class Xmlhttp implements ControllerProviderInterface $xpath = $databox->get_xpath_thesaurus(); $q = '/thesaurus'; - if ($request->get('debug')) { - print('q:' . $q . '
\n'); - } - if (($znode = $xpath->query($q)->item(0))) { $q2 = '//sy'; if ($request->get('t')) { @@ -1317,18 +1266,12 @@ class Xmlhttp implements ControllerProviderInterface $q2 .= ' and starts-with(@k, \'' . \thesaurus::xquery_escape($app['unicode']->remove_indexer_chars($t[1])) . '\')'; $q2 = '//sy[' . $q2 . ']'; } - if ($request->get('debug')) { - print('q2:' . $q2 . '
\n'); - } $nodes = $xpath->query($q2, $znode); if ($mod == 'TREE') { for ($i = 0; $i < $nodes->length; $i++) { $nodes->item($i)->setAttribute('bold', '1'); for ($n = $nodes->item($i)->parentNode; $n && $n->nodeType == XML_ELEMENT_NODE && $n->nodeName == 'te'; $n = $n->parentNode) { $n->setAttribute('open', '1'); - if ($request->get('debug')) { - printf('opening node te id=%s
\n', $n->getAttribute('id')); - } } } @@ -1346,9 +1289,6 @@ class Xmlhttp implements ControllerProviderInterface $zhtml .= '

'; } } - if ($request->get('debug')) { - printf('zhtml=%s
\n', $zhtml); - } $html->appendChild($ret->createTextNode($zhtml)); } @@ -1434,10 +1374,6 @@ class Xmlhttp implements ControllerProviderInterface $tsbas['b' . $sbas_id]['tids'][] = implode('.', $id); } - if ($request->get('debug')) { - var_dump($tsbas); - } - $appbox = $app['phraseanet.appbox']; // first, count the number of records to update @@ -1489,22 +1425,12 @@ class Xmlhttp implements ControllerProviderInterface $stmt = $connbas->prepare($sql); $stmt->execute(); - if ($request->get('debug')) { - printf("(%d) sql: \n", __LINE__); - var_dump($sql); - } - $tsbas[$ksbas]['trids'] = $stmt->fetchAll(\PDO::FETCH_COLUMN, 0); $stmt->closeCursor(); $ret['nRecsToUpdate'] += count($tsbas[$ksbas]['trids']); } - if ($request->get('debug')) { - printf("(%d) nRecsToUpdate = %d \ntsbas: \n", __LINE__, $ret['nRecsToUpdate']); - print_r($tsbas); - } - if ($ret['nRecsToUpdate'] <= self::SEARCH_REPLACE_MAXREC) { foreach ($tsbas as $sbas) { @@ -1518,10 +1444,6 @@ class Xmlhttp implements ControllerProviderInterface // fix caption of records foreach ($sbas['trids'] as $rid) { - - if ($request->get('debug')) { - printf("(%d) ======== working on record_id = %d ======= \n", __LINE__, $rid); - } try { $record = $databox->get_record($rid); @@ -1531,17 +1453,10 @@ class Xmlhttp implements ControllerProviderInterface /* @var $field caption_field */ foreach ($record->get_caption()->get_fields(null, true) as $field) { $meta_struct_id = $field->get_meta_struct_id(); - if ($request->get('debug')) { - printf("(%d) field '%s' meta_struct_id=%s \n", __LINE__, $field->get_name(), $meta_struct_id); - } - /* @var $v caption_Field_Value */ $fname = $field->get_name(); if (!array_key_exists($fname, $sbas['tvals'])) { foreach ($field->get_values() as $v) { - if ($request->get('debug')) { - printf("(%d) ...v = '%s' (meta_id=%s) keep \n", __LINE__, $v->getValue(), $v->getId()); - } $metadatask[] = array( 'meta_struct_id' => $meta_struct_id, 'meta_id' => $v->getId(), @@ -1558,9 +1473,6 @@ class Xmlhttp implements ControllerProviderInterface } } - if ($request->get('debug')) { - printf("(%d) ...v = '%s' (meta_id=%s) %s \n", __LINE__, $v->getValue(), $v->getId(), ($keep ? '' : '!!! drop !!!')); - } if ($keep) { $metadatask[] = array( 'meta_struct_id' => $meta_struct_id, @@ -1578,13 +1490,6 @@ class Xmlhttp implements ControllerProviderInterface } } - if ($request->get('debug')) { - printf("(%d) metadatask: \n", __LINE__); - var_dump($metadatask); - printf("(%d) metadatasd: \n", __LINE__); - var_dump($metadatasd); - } - if (count($metadatasd) > 0) { if (!$request->get('debug')) { $record->set_metadatas($metadatasd, true); @@ -1596,10 +1501,6 @@ class Xmlhttp implements ControllerProviderInterface } } - // delete the branch from the cterms - if ($request->get('debug')) { - printf("cterms before :\n%s \n", $sbas['domct']->saveXML()); - } foreach ($sbas['tvals'] as $tval) { foreach ($tval as $sy) { // remove candidate from cterms @@ -1608,9 +1509,6 @@ class Xmlhttp implements ControllerProviderInterface $ret['ctermsDeleted'][] = $sbas['sbas_id'] . '.' . $te->getAttribute('id'); } } - if ($request->get('debug')) { - printf("cterms after :\n%s \n", $sbas['domct']->saveXML()); - } if (!$request->get('debug')) { $databox->saveCterms($sbas['domct']); } @@ -1669,21 +1567,13 @@ class Xmlhttp implements ControllerProviderInterface if (($q !== null) && $domth) { $xpath = new \DOMXPath($domth); - if ($request->get('debug')) - print('q:' . $q . "\n"); - $t = $this->splitTermAndContext($request->get('t')); $q2 = 'starts-with(@w, \'' . \thesaurus::xquery_escape($app['unicode']->remove_indexer_chars($t[0])) . '\')'; if ($t[1]) $q2 .= ' and starts-with(@k, \'' . \thesaurus::xquery_escape($app['unicode']->remove_indexer_chars($t[1])) . '\')'; $q2 = '//sy[' . $q2 . ' and @lng=\'' . $lng . '\']'; - if ($request->get('debug')) - print('q2:' . $q2 . "\n"); - $q .= $q2; - if ($request->get('debug')) - print('q:' . $q . "\n"); $nodes = $xpath->query($q); @@ -1691,8 +1581,6 @@ class Xmlhttp implements ControllerProviderInterface $nodes->item($i)->setAttribute('bold', '1'); for ($n = $nodes->item($i)->parentNode; $n && $n->nodeType == XML_ELEMENT_NODE && $n->nodeName == 'te'; $n = $n->parentNode) { $n->setAttribute('open', '1'); - if ($request->get('debug')) - printf("opening node te id=%s \n", $n->getAttribute('id')); } } diff --git a/lib/Alchemy/Phrasea/SearchEngine/Phrasea/PhraseaEngine.php b/lib/Alchemy/Phrasea/SearchEngine/Phrasea/PhraseaEngine.php index 03b6081ea6..f5e2f2a497 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Phrasea/PhraseaEngine.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Phrasea/PhraseaEngine.php @@ -431,7 +431,7 @@ class PhraseaEngine implements SearchEngineInterface $data['record_id'], $resultNumber )); - } catch (Exception $e) { + } catch (\Exception $e) { } $resultNumber++; diff --git a/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/SphinxSearchEngine.php b/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/SphinxSearchEngine.php index 611c3677d5..9a72d64e9d 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/SphinxSearchEngine.php +++ b/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/SphinxSearchEngine.php @@ -506,7 +506,7 @@ class SphinxSearchEngine implements SearchEngineInterface ); $results->add($record); - } catch (Exception $e) { + } catch (\Exception $e) { } $resultOffset++; diff --git a/lib/classes/User/Adapter.php b/lib/classes/User/Adapter.php index 7603b5e060..cf49980ad9 100644 --- a/lib/classes/User/Adapter.php +++ b/lib/classes/User/Adapter.php @@ -69,7 +69,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface * * @var array */ - protected static $def_values = array( + public static $def_values = array( 'view' => 'thumbs', 'images_per_page' => 20, 'images_size' => 120, @@ -275,6 +275,9 @@ class User_Adapter implements User_Interface, cache_cacheableInterface protected $password; + protected $preferences_loaded = false; + protected $notifications_preferences_loaded = false; + /** * * @param Integer $id @@ -1030,7 +1033,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface protected function load_preferences() { - if ($this->_prefs) { + if ($this->preferences_loaded) { return $this; } @@ -1051,42 +1054,49 @@ class User_Adapter implements User_Interface, cache_cacheableInterface } $this->_prefs[$k] = $v; - $this->update_pref($k, $v); } } - $this->load_notifications_preferences($this->app); + $this->preferences_loaded = true; return $this; } protected function load_notifications_preferences(Application $app) { - $notifications = $app['events-manager']->list_notifications_available(); + $this->load_preferences(); + + $notifications = $app['events-manager']->list_notifications_available($this->id); foreach ($notifications as $notification_group => $nots) { foreach ($nots as $notification) { if (!isset($this->_prefs['notification_' . $notification['id']])) { $this->_prefs['notification_' . $notification['id']] = '1'; - - $this->update_pref('notification_' . $notification['id'], '1'); } } } + $this->notification_preferences_loaded = true; } public function get_notifications_preference(Application $app, $notification_id) { - $this->load_preferences($app); + if (!$this->notifications_preferences_loaded) + $this->load_notifications_preferences($app); - return isset($this->_prefs['notification_' . $notification_id]) ? $this->_prefs['notification_' . $notification_id] : null; + return isset($this->_prefs['notification_' . $notification_id]) ? $this->_prefs['notification_' . $notification_id] : '0'; } public function set_notification_preference(Application $app, $notification_id, $value) { - $this->load_preferences($app); + if (!$this->notifications_preferences_loaded) + $this->load_notifications_preferences($app); - return $this->_prefs['notification_' . $notification_id] = $value ? '1' : '0'; + $prop = 'notification_' . $notification_id; + $value = $value ? '1' : '0'; + + $this->setPrefs($prop, $value); + + return ; } public function get_display_name() @@ -1172,15 +1182,11 @@ class User_Adapter implements User_Interface, cache_cacheableInterface return $this->_prefs[$prop]; } - public function getPrefs($prop) + public function getPrefs($prop, $default = null) { $this->load_preferences(); - if (!isset($this->_prefs[$prop])) { - $this->_prefs[$prop] = null; - $this->update_pref($prop, null); - } - return $this->_prefs[$prop]; + return array_key_exists($prop, $this->_prefs) ? $this->_prefs[$prop] : $default; } public static function get_sys_admins(Application $app) diff --git a/lib/classes/eventsmanager/broker.php b/lib/classes/eventsmanager/broker.php index 8a4436e420..977eaa4db2 100644 --- a/lib/classes/eventsmanager/broker.php +++ b/lib/classes/eventsmanager/broker.php @@ -56,7 +56,7 @@ class eventsmanager_broker foreach ($this->pool_classes[$classname]->get_events() as $event) $this->bind($event, $classname); - if ($type === 'notify' && $this->pool_classes[$classname]->is_available()) + if ($type === 'notify' && $this->pool_classes[$classname]) $this->notifications[] = $classname; } } @@ -273,11 +273,14 @@ class eventsmanager_broker return $this; } - public function list_notifications_available() + public function list_notifications_available($usr_id) { $personnal_notifications = array(); foreach ($this->notifications as $notification) { + if (!$this->pool_classes[$notification]->is_available($usr_id)) { + continue; + } $group = $this->pool_classes[$notification]->get_group(); $group = $group === null ? _('Notifications globales') : $group; diff --git a/lib/classes/eventsmanager/notify/autoregister.php b/lib/classes/eventsmanager/notify/autoregister.php index 185e22eec9..17a8c88177 100644 --- a/lib/classes/eventsmanager/notify/autoregister.php +++ b/lib/classes/eventsmanager/notify/autoregister.php @@ -214,21 +214,22 @@ class eventsmanager_notify_autoregister extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { - $bool = false; - - if ( ! $this->app['authentication']->isAuthenticated() || ! $this->app['registration.enabled']) { + if (!$this->app['registration.enabled']) { return false; } - if ($this->app['acl']->get($this->app['authentication']->getUser())->has_right('manageusers') === true) { - $bool = true; + try { + $user = \User_Adapter::getInstance($usr_id, $this->app); + } catch (\Exception $e) { + return false; } - return $bool; + return $user->ACL()->has_right('manageusers'); } } diff --git a/lib/classes/eventsmanager/notify/bridgeuploadfail.php b/lib/classes/eventsmanager/notify/bridgeuploadfail.php index 4e062ee96c..692ab2ad54 100644 --- a/lib/classes/eventsmanager/notify/bridgeuploadfail.php +++ b/lib/classes/eventsmanager/notify/bridgeuploadfail.php @@ -159,10 +159,11 @@ class eventsmanager_notify_bridgeuploadfail extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/downloadmailfail.php b/lib/classes/eventsmanager/notify/downloadmailfail.php index 8ca9d55593..b73e55b5cd 100644 --- a/lib/classes/eventsmanager/notify/downloadmailfail.php +++ b/lib/classes/eventsmanager/notify/downloadmailfail.php @@ -144,10 +144,11 @@ class eventsmanager_notify_downloadmailfail extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/feed.php b/lib/classes/eventsmanager/notify/feed.php index 5d1205e4fb..f566989653 100644 --- a/lib/classes/eventsmanager/notify/feed.php +++ b/lib/classes/eventsmanager/notify/feed.php @@ -176,10 +176,11 @@ class eventsmanager_notify_feed extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/order.php b/lib/classes/eventsmanager/notify/order.php index 4b41677299..6f29cc405c 100644 --- a/lib/classes/eventsmanager/notify/order.php +++ b/lib/classes/eventsmanager/notify/order.php @@ -182,20 +182,18 @@ class eventsmanager_notify_order extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { - $bool = false; - if ( !$this->app['authentication']->isAuthenticated()) { + try { + $user = \User_Adapter::getInstance($usr_id, $this->app); + } catch (\Exception $e) { return false; } - if ($this->app['acl']->get($this->app['authentication']->getUser())->has_right('order_master')) { - $bool = true; - } - - return $bool; + return $user->ACL()->has_right('order_master'); } } diff --git a/lib/classes/eventsmanager/notify/orderdeliver.php b/lib/classes/eventsmanager/notify/orderdeliver.php index 5ac5833779..ca41782a65 100644 --- a/lib/classes/eventsmanager/notify/orderdeliver.php +++ b/lib/classes/eventsmanager/notify/orderdeliver.php @@ -196,10 +196,11 @@ class eventsmanager_notify_orderdeliver extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/ordernotdelivered.php b/lib/classes/eventsmanager/notify/ordernotdelivered.php index bd92be9074..b555eedf07 100644 --- a/lib/classes/eventsmanager/notify/ordernotdelivered.php +++ b/lib/classes/eventsmanager/notify/ordernotdelivered.php @@ -141,10 +141,11 @@ class eventsmanager_notify_ordernotdelivered extends eventsmanager_notifyAbstrac } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/push.php b/lib/classes/eventsmanager/notify/push.php index cfad060a02..b9a2143ff7 100644 --- a/lib/classes/eventsmanager/notify/push.php +++ b/lib/classes/eventsmanager/notify/push.php @@ -162,10 +162,11 @@ class eventsmanager_notify_push extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/register.php b/lib/classes/eventsmanager/notify/register.php index 96632a40e0..5fe9364239 100644 --- a/lib/classes/eventsmanager/notify/register.php +++ b/lib/classes/eventsmanager/notify/register.php @@ -193,21 +193,24 @@ class eventsmanager_notify_register extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { - $bool = false; - - if ( !$this->app['authentication']->isAuthenticated() || ! $this->app['registration.enabled']) { + if (!$this->app['registration.enabled']) { return false; } + try { + $user = \User_Adapter::getInstance($usr_id, $this->app); + } catch (\Exception $e) { + return false; if ($this->app['acl']->get($this->app['authentication']->getUser())->has_right('manageusers')) { $bool = true; } - return $bool; + return $user->ACL()->has_right('manageusers'); } } diff --git a/lib/classes/eventsmanager/notify/uploadquarantine.php b/lib/classes/eventsmanager/notify/uploadquarantine.php index a0fb5e4b76..186ceb687d 100644 --- a/lib/classes/eventsmanager/notify/uploadquarantine.php +++ b/lib/classes/eventsmanager/notify/uploadquarantine.php @@ -182,15 +182,18 @@ class eventsmanager_notify_uploadquarantine extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { - if (null !== $this->app['authentication']->getUser()) { - return $this->app['acl']->get($this->app['authentication']->getUser())->has_right('addrecord'); + try { + $user = \User_Adapter::getInstance($usr_id, $this->app); + } catch (\Exception $e) { + return false; } - return false; + return $user->ACL()->has_right('addrecord'); } } diff --git a/lib/classes/eventsmanager/notify/validate.php b/lib/classes/eventsmanager/notify/validate.php index 7a8d46d8ed..491836d52f 100644 --- a/lib/classes/eventsmanager/notify/validate.php +++ b/lib/classes/eventsmanager/notify/validate.php @@ -190,10 +190,11 @@ class eventsmanager_notify_validate extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notify/validationdone.php b/lib/classes/eventsmanager/notify/validationdone.php index a0742f5235..f8cde00545 100644 --- a/lib/classes/eventsmanager/notify/validationdone.php +++ b/lib/classes/eventsmanager/notify/validationdone.php @@ -178,21 +178,18 @@ class eventsmanager_notify_validationdone extends eventsmanager_notifyAbstract } /** + * @param integer $usr_id The id of the user to check * * @return boolean */ - public function is_available() + public function is_available($usr_id) { - $bool = false; - - if ( ! $this->app['authentication']->isAuthenticated()) { + try { + $user = \User_Adapter::getInstance($usr_id, $this->app); + } catch (\Exception $e) { return false; } - if ($this->app['acl']->get($this->app['authentication']->getUser())->has_right('push')) { - $bool = true; - } - - return $bool; + return $user->ACL()->has_right('push'); } } diff --git a/lib/classes/eventsmanager/notify/validationreminder.php b/lib/classes/eventsmanager/notify/validationreminder.php index 56f6908c98..b8b898134f 100644 --- a/lib/classes/eventsmanager/notify/validationreminder.php +++ b/lib/classes/eventsmanager/notify/validationreminder.php @@ -187,10 +187,11 @@ class eventsmanager_notify_validationreminder extends eventsmanager_notifyAbstra } /** + * @param integer $usr_id The id of the user to check * * @return string */ - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/eventsmanager/notifyAbstract.php b/lib/classes/eventsmanager/notifyAbstract.php index 272a7f82a3..2a7bb3372d 100644 --- a/lib/classes/eventsmanager/notifyAbstract.php +++ b/lib/classes/eventsmanager/notifyAbstract.php @@ -11,7 +11,7 @@ abstract class eventsmanager_notifyAbstract extends eventsmanager_eventAbstract abstract public function datas($datas, $unread); - public function is_available() + public function is_available($usr_id) { return true; } diff --git a/lib/classes/patch/381alpha3a.php b/lib/classes/patch/381alpha3a.php new file mode 100644 index 0000000000..4d391c529c --- /dev/null +++ b/lib/classes/patch/381alpha3a.php @@ -0,0 +1,73 @@ +release; + } + + /** + * {@inheritdoc} + */ + public function require_all_upgrades() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function concern() + { + return $this->concern; + } + + /** + * {@inheritdoc} + */ + public function apply(base $appbox, Application $app) + { + $propSql = $propArgs = array(); + $n = 0; + + foreach (\User_Adapter::$def_values as $prop => $value) { + if ('start_page_query' === $prop) { + continue; + } + $propSql[] = '(prop = :prop_'.$n.' AND value = :value_'.$n.')'; + $propArgs[':prop_'.$n] = $prop; + $propArgs[':value_'.$n] = $value; + $n++; + } + + $sql = "DELETE FROM usr_settings + WHERE 1 AND (".implode(' OR ', $propSql)." OR value IS NULL OR (value = 1 AND prop LIKE 'notification_%'))"; + + $stmt = $appbox->get_connection()->prepare($sql); + $stmt->execute($propArgs); + $stmt->closeCursor(); + + return true; + } +} diff --git a/lib/conf.d/minifyGroupsConfig.php b/lib/conf.d/minifyGroupsConfig.php index 96917c9f49..727d5a35be 100644 --- a/lib/conf.d/minifyGroupsConfig.php +++ b/lib/conf.d/minifyGroupsConfig.php @@ -42,9 +42,11 @@ $groups = array( , '//assets/jquery.ui/i18n/jquery-ui-i18n.js' , '//include/jquery.kb-event.js' , '//skins/admin/users.js' + , '//skins/admin/template-dialogs.js' , '//skins/admin/editusers.js' , '//include/jquery.common.js' , '//include/jquery.tooltip.js' + , '//skins/prod/jquery.Dialog.js' , '//include/jslibs/jquery.contextmenu_scroll.js' , '//assets/blueimp-load-image/load-image.js' , '//assets/jquery-file-upload/jquery.iframe-transport.js' diff --git a/templates/web/account/account.html.twig b/templates/web/account/account.html.twig index e23ff26884..4ee167d3dd 100644 --- a/templates/web/account/account.html.twig +++ b/templates/web/account/account.html.twig @@ -154,7 +154,7 @@ {% for notification in nots %}
  • diff --git a/templates/web/admin/index.html.twig b/templates/web/admin/index.html.twig index 8fe1b82766..c188e0e518 100644 --- a/templates/web/admin/index.html.twig +++ b/templates/web/admin/index.html.twig @@ -18,10 +18,8 @@ - - - - - - - - - -
    -
    - - -
    - -
    -
    -   -
    -
    -
    - - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validate.password/demo/milk.css b/www/include/jslibs/jquery-validate.password/demo/milk.css deleted file mode 100644 index 49adb66911..0000000000 --- a/www/include/jslibs/jquery-validate.password/demo/milk.css +++ /dev/null @@ -1,236 +0,0 @@ -/* GENERAL ELEMENTS */ - -* { margin: 0; padding: 0; } - -body, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; } -body { color: #333; background-color: #fff; text-align: center; } - -a:link { color:#0060BF; text-decoration: underline; } -a:visited { color:#0060BF; text-decoration: underline; } -a:active { color:#0060BF; text-decoration: underline; } -a:hover { color:#000000; text-decoration: underline; } - -h1, h2, h3, h4, h5, h6 { font-family: "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; } -h1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; } -h2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; } -h3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; } -h4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; } -h5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; } -h6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; } - -img { border: 0px; } - -p { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; } -li > p { margin-top: 0.2em; } -pre { font-family: monospace; font-size: 1.0em; } -strong, b { font-weight: bold; } - -/* PAGE ELEMENTS */ - -/* Content */ - -#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ } -.content { margin-left: 4.5em; margin-right: 4.5em; } -.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; } -.content ol.terms li { margin-bottom: 1em; } - -/* Header */ - -#header { padding-bottom: 10em; } -#headerlogo { float: left; } -#headerlogo img { width: 188px; height: 83px; } -#headernav { float: right; } - -label { font-weight: bold; } -#reminders label { font-weight: normal; } - -table.tabbedtable { padding-left: 3em; } -table.tabbedtable td { padding-bottom: 5px; } -table.tabbedtable label { text-align: right; padding-right: 9px; } -.hiddenlabel { visibility: hidden; } -.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; } -.largelinkwrap { padding-top: 10px; padding-bottom: 10px; } - - - -#signuptab { - float:left; - width:100%; - background:#fff url("bg.gif") repeat-x bottom; - font-size: 1.0em; - line-height: normal; -} -#signuptab ul { - margin:0; - padding: 0px 10px 0px 10px; - list-style:none; -} -#signuptab li { - float:left; - background:url("left_white.png") no-repeat left top; - margin:0; - padding:0 3px 0 9px; - border-bottom:1px solid #CACACA; -} -#signuptab a { - float:left; - display:block; - width:.1em; - background:url("right_white.png") no-repeat right top; - padding:2px 15px 0px 6px; - text-decoration:none; - font-weight:bold; - color:#fff; - white-space: nowrap; -} -#signuptab > ul a {width:auto;} -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#signuptab a {float:none;} -/* End IE5-Mac hack */ -#signuptab a:hover { - color:#333; -} -#signuptab #signupcurrent { - background-position:0 -150px; - border-width:0; -} -#signuptab #signupcurrent a { - background-position:100% -150px; - padding-bottom:1px; - color:#000; -} -#signuptab li:hover, #signuptab li:hover a { - background-position:0% -150px; - color:#000; -} -#signuptab li:hover a { - background-position:100% -150px; -} - -/* Signup box */ - -#signupbox { - width: 100%; - text-align: center; - margin: 0em auto; -} - -#signupwrap { - border: 1px solid #CACACA; - border-top: 0; - text-align: left; - padding: 35px 10px 20px 30px; - clear: both; -} - -/* Unsupported browsers */ - -.orange_rbcontent { padding: 0.4em; } -.orange_rbroundbox { width: 100%; } - -#unsupported { - font-weight: bold; - text-align: left; -} - -/*#content { - padding-top: 15px; -}*/ - -/* Signup form */ - -#signupform table { - border-spacing: 0px; - border-collapse: collapse; - empty-cells: show; -} - -#signupform .label { - padding-top: 2px; - padding-right: 8px; - vertical-align: top; - text-align: right; - width: 125px; - white-space: nowrap; -} - -#signupform .field { - padding-bottom: 10px; - white-space: nowrap; -} - -#signupform .status { - padding-top: 2px; - padding-left: 8px; - vertical-align: top; - width: 246px; - white-space: nowrap; -} - -#signupform .textfield { - width: 150px; -} - -#signupform label.error { - background:url("unchecked.gif") no-repeat 0px 0px; - padding-left: 16px; - padding-bottom: 2px; - font-weight: bold; - color: #EA5200; -} - -#signupform label.checked { - background:url("checked.gif") no-repeat 0px 0px; -} - -#signupform .success_msg { - font-weight: bold; - color: #0060BF; - margin-left: 19px; -} - -#signupform #dateformatStatus, #signupform #termsStatus { - margin-left: 6px; -} - -#signupform #dateformat_eu { - vertical-align: middle; -} - -#signupform #ldateformat_eu { - font-weight: normal; - vertical-align: middle; -} - -#signupform #dateformat_am { - vertical-align: middle; -} - -#signupform #ldateformat_am { - font-weight: normal; - vertical-align: middle; -} - -#signupform #termswrap { - float: left; -} - -#signupform #terms { - vertical-align: middle; - float: left; - display: block; - margin-right: 5px; -} - -#signupform #lterms { - font-weight: normal; - vertical-align: middle; - float: left; - display: block; - width: 350px; - white-space: normal; -} - -#signupform #lsignupsubmit { - visibility: hidden; -} \ No newline at end of file diff --git a/www/include/jslibs/jquery-validate.password/demo/milk.html b/www/include/jslibs/jquery-validate.password/demo/milk.html deleted file mode 100644 index 043a6efb35..0000000000 --- a/www/include/jslibs/jquery-validate.password/demo/milk.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -jQuery Validation Plugin Password Extension demo - - - - - - - - - - - - - -
    - -
    - - -
    - - -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    -
    -
     
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    - - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validate.password/demo/milk.png b/www/include/jslibs/jquery-validate.password/demo/milk.png deleted file mode 100644 index b5e7151578..0000000000 Binary files a/www/include/jslibs/jquery-validate.password/demo/milk.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validate.password/demo/plain.html b/www/include/jslibs/jquery-validate.password/demo/plain.html deleted file mode 100644 index f06c98cd0e..0000000000 --- a/www/include/jslibs/jquery-validate.password/demo/plain.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - -jQuery Validation Plugin Password Extension demo - - - - - - - - - - - - - -
    - - -
    -
     
    -
    -
    -
    -
    -
    - - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validate.password/demo/right_white.png b/www/include/jslibs/jquery-validate.password/demo/right_white.png deleted file mode 100644 index 393bbe2bab..0000000000 Binary files a/www/include/jslibs/jquery-validate.password/demo/right_white.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validate.password/demo/unchecked.gif b/www/include/jslibs/jquery-validate.password/demo/unchecked.gif deleted file mode 100644 index 06ecaba118..0000000000 Binary files a/www/include/jslibs/jquery-validate.password/demo/unchecked.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/ajaxSubmit-intergration-demo.html b/www/include/jslibs/jquery-validation/demo/ajaxSubmit-intergration-demo.html deleted file mode 100644 index 5d531bb476..0000000000 --- a/www/include/jslibs/jquery-validation/demo/ajaxSubmit-intergration-demo.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -
    - Login Form (Enter "foobar" as password) -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - -
    Please login!
    - -
    - - - -

    Backend file: form.phps

    - -Back to main page - -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/captcha/captcha.js b/www/include/jslibs/jquery-validation/demo/captcha/captcha.js deleted file mode 100644 index 245bc45ab4..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/captcha.js +++ /dev/null @@ -1,27 +0,0 @@ -$(function(){ - $("#refreshimg").click(function(){ - $.post('newsession.php'); - $("#captchaimage").load('image_req.php'); - return false; - }); - - $("#captchaform").validate({ - rules: { - captcha: { - required: true, - remote: "process.php" - } - }, - messages: { - captcha: "Correct captcha is required. Click the captcha to generate a new one" - }, - submitHandler: function() { - alert("Correct captcha!"); - }, - success: function(label) { - label.addClass("valid").text("Valid captcha!") - }, - onkeyup: false - }); - -}); diff --git a/www/include/jslibs/jquery-validation/demo/captcha/fonts/Anorexia.ttf b/www/include/jslibs/jquery-validation/demo/captcha/fonts/Anorexia.ttf deleted file mode 100644 index 453eeb00e8..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/captcha/fonts/Anorexia.ttf and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/captcha/image_req.php b/www/include/jslibs/jquery-validation/demo/captcha/image_req.php deleted file mode 100644 index d79a47bd27..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/image_req.php +++ /dev/null @@ -1,6 +0,0 @@ -Captcha image'; - -?> diff --git a/www/include/jslibs/jquery-validation/demo/captcha/images/.htaccess b/www/include/jslibs/jquery-validation/demo/captcha/images/.htaccess deleted file mode 100644 index f480ff4e48..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/images/.htaccess +++ /dev/null @@ -1 +0,0 @@ -AddType application/x-httpd-php .jpg \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/captcha/images/button.png b/www/include/jslibs/jquery-validation/demo/captcha/images/button.png deleted file mode 100644 index 7ef79de5a1..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/captcha/images/button.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/captcha/images/button.psd b/www/include/jslibs/jquery-validation/demo/captcha/images/button.psd deleted file mode 100644 index a3bee84844..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/captcha/images/button.psd and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/captcha/images/image.php b/www/include/jslibs/jquery-validation/demo/captcha/images/image.php deleted file mode 100644 index 049256ca3b..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/images/image.php +++ /dev/null @@ -1,35 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/captcha/index.php b/www/include/jslibs/jquery-validation/demo/captcha/index.php deleted file mode 100644 index 13f8880dae..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/index.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - AJAX CAPTCHA - - - - - - - - - - - - - - -

    AJAX CAPTCHA, based on http://psyrens.com/captcha/

    - -
    -
    -
    Captcha image
    - - - -
    -
    - -

    If you can't decipher the text on the image, click it to dynamically generate a new one.

    - - - - diff --git a/www/include/jslibs/jquery-validation/demo/captcha/newsession.php b/www/include/jslibs/jquery-validation/demo/captcha/newsession.php deleted file mode 100644 index 145ca9bfb6..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/newsession.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/captcha/process.php b/www/include/jslibs/jquery-validation/demo/captcha/process.php deleted file mode 100644 index 3fbc617782..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/process.php +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/captcha/rand.php b/www/include/jslibs/jquery-validation/demo/captcha/rand.php deleted file mode 100644 index e3e9389ed5..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/rand.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/captcha/style.css b/www/include/jslibs/jquery-validation/demo/captcha/style.css deleted file mode 100644 index c0bbe5f907..0000000000 --- a/www/include/jslibs/jquery-validation/demo/captcha/style.css +++ /dev/null @@ -1,140 +0,0 @@ -body { - margin: 3% 5%; - padding: 0; - background-color: #fff; - color: #333; - font: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif; -} - -a:link, a:visited { - background-color: #fff; - color: #333; - text-decoration: underline; -} - -a:hover, a:focus, a:active { - background-color: #ffb; - color: #454545; - text-decoration: underline; -} - -h1 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.5em Helvetica, Arial, Verdana, Sans-serif; -} - -h2 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.3em Helvetica, Arial, Verdana, Sans-serif; -} - -h3 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.2em Helvetica, Arial, Verdana, Sans-serif; -} - -table { - margin: 0; - padding: 0; - width: 100%; -} - -table th { - border: 1px solid #ddd; - font-weight: bold; - text-align: left; - padding: 1%; -} - -table td { - border: 1px solid #ddd; - padding: 1%; -} - -dl, dt, dd { - margin: 0; - padding: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - border: 1px solid #ddd; - margin: 0% 0% 2% 0%; - padding: 2%; -} - -fieldset legend { - margin: 0; - padding: 0 4px; - background-color: inherit; - color: #333; -} - -code { - font: 1em "Courier New", Courier, Monospace; -} - -pre code { - font: 1.1em "Courier New", Courier, Monospace; - border-bottom: 1px solid #eee; -} - -img { - border: 1px solid #eee; -} - -p#statusgreen { - font-size: 1.2em; - background-color: #fff; - color: #0a0; -} - -p#statusred { - font-size: 1.2em; - background-color: #fff; - color: #a00; -} - -fieldset label { - display: block; -} - -fieldset label.error { - color: red; -} - -fieldset label.valid { - color: green; -} - -fieldset div#captchaimage { - float: left; - margin-right: 15px; -} - -fieldset input#captcha { - width: 25%; - border: 1px solid #ddd; - padding: 2px; -} - -fieldset input#submit { - display: block; - margin: 2% 0% 0% 0%; -} \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/css/chili.css b/www/include/jslibs/jquery-validation/demo/css/chili.css deleted file mode 100644 index 6990449fce..0000000000 --- a/www/include/jslibs/jquery-validation/demo/css/chili.css +++ /dev/null @@ -1,15 +0,0 @@ -.jscom, .mix htcom { color: #4040c2; } -.com { color: green; } -.regexp { color: maroon; } -.string { color: teal; } -.keywords { color: blue; } -.global { color: #008; } -.numbers { color: #880; } -.comm { color: green; } -.tag { color: blue; } -.entity { color: blue; } -.string { color: teal; } -.aname { color: maroon; } -.avalue { color: maroon; } -.jquery { color: #00a; } -.plugin { color: red; } \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/css/cmxform.css b/www/include/jslibs/jquery-validation/demo/css/cmxform.css deleted file mode 100644 index 120f5a473c..0000000000 --- a/www/include/jslibs/jquery-validation/demo/css/cmxform.css +++ /dev/null @@ -1,46 +0,0 @@ -/********************************** - -Name: cmxform Styles - -***********************************/ -form.cmxform { - width: 370px; - font-size: 1.0em; - color: #333; -} - -form.cmxform legend { - padding-left: 0; -} - -form.cmxform legend, form.cmxform label { - color: #333; -} - -form.cmxform fieldset { - border: none; - border-top: 1px solid #C9DCA6; - background: url(../images/cmxform-fieldset.gif) left bottom repeat-x; - background-color: #F8FDEF; -} - -form.cmxform fieldset fieldset { - background: none; -} - -form.cmxform fieldset p, form.cmxform fieldset fieldset { - padding: 5px 10px 7px; - background: url(../images/cmxform-divider.gif) left bottom repeat-x; -} - -form.cmxform label.error, label.error { - /* remove the next line when you have trouble in IE6 with labels in list */ - color: red; - font-style: italic -} -div.error { display: none; } -input { border: 1px solid black; } -input.checkbox { border: none } -input:focus { border: 1px dotted black; } -input.error { border: 1px dotted red; } -form.cmxform .gray * { color: gray; } \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/css/cmxformTemplate.css b/www/include/jslibs/jquery-validation/demo/css/cmxformTemplate.css deleted file mode 100644 index ac52f71b43..0000000000 --- a/www/include/jslibs/jquery-validation/demo/css/cmxformTemplate.css +++ /dev/null @@ -1,55 +0,0 @@ -/********************************** - -Use: cmxform template - -***********************************/ -form.cmxform fieldset { - margin-bottom: 10px; -} - -form.cmxform legend { - padding: 0 2px; - font-weight: bold; - _margin: 0 -7px; /* IE Win */ -} - -form.cmxform label { - display: inline-block; - line-height: 1.8; - vertical-align: top; - cursor: hand; -} - -form.cmxform fieldset p { - list-style: none; - padding: 5px; - margin: 0; -} - -form.cmxform fieldset fieldset { - border: none; - margin: 3px 0 0; -} - -form.cmxform fieldset fieldset legend { - padding: 0 0 5px; - font-weight: normal; -} - -form.cmxform fieldset fieldset label { - display: block; - width: auto; -} - -form.cmxform label { width: 100px; } /* Width of labels */ -form.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */ -form.cmxform label.error { - margin-left: 103px; - width: 220px; -} - -form.cmxform input.submit { - margin-left: 103px; -} - -/*\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */ \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/css/core.css b/www/include/jslibs/jquery-validation/demo/css/core.css deleted file mode 100644 index 84494e8732..0000000000 --- a/www/include/jslibs/jquery-validation/demo/css/core.css +++ /dev/null @@ -1,21 +0,0 @@ -body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif } -body { margin: 0; padding: 0; font-size: small; color: #333 } -h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 } -h1 { font-size: large } -#main { padding: 1em; } -#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc; - background: url(../images/bg.gif) repeat-x; text-align: center } -#banner a { color: white; } - -p { margin: 10px 0; } - -li { margin-left: 10px; } - -h3 { margin: 1em 0 0; } - -h1 { font-size: 2em; } -h2 { font-size: 1.8em; } -h3 { font-size: 1.6em; } -h4 { font-size: 1.4em; } -h5 { font-size: 1.2em; } - diff --git a/www/include/jslibs/jquery-validation/demo/css/reset.css b/www/include/jslibs/jquery-validation/demo/css/reset.css deleted file mode 100644 index 5c376b3744..0000000000 --- a/www/include/jslibs/jquery-validation/demo/css/reset.css +++ /dev/null @@ -1,61 +0,0 @@ -/********************************** - -Use: Reset Styles for all browsers - -***********************************/ - -body, p, blockquote { - margin: 0; - padding: 0; -} - -a img, iframe { border: none; } - -/* Headers -------------------------------*/ - -h1, h2, h3, h4, h5, h6 { - margin: 0; - padding: 0; - font-size: 100%; -} - -/* Lists -------------------------------*/ - -ul, ol, dl, li, dt, dd { - margin: 0; - padding: 0; -} - -/* Links -------------------------------*/ - -a, a:link {} -a:visited {} -a:hover {} -a:active {} - -/* Forms -------------------------------*/ - -form, fieldset { - margin: 0; - padding: 0; -} - -fieldset { border: 1px solid #000; } - -legend { - padding: 0; - color: #000; -} - -input, textarea, select { - margin: 0; - padding: 1px; - font-size: 100%; - font-family: inherit; -} - -select { padding: 0; } \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/css/screen.css b/www/include/jslibs/jquery-validation/demo/css/screen.css deleted file mode 100644 index 840f572bb6..0000000000 --- a/www/include/jslibs/jquery-validation/demo/css/screen.css +++ /dev/null @@ -1,11 +0,0 @@ -/********************************** - -Use: Main Screen Import - -***********************************/ - -@import "reset.css"; -@import "core.css"; - -@import "cmxformTemplate.css"; -@import "cmxform.css"; \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/custom-messages-metadata-demo.html b/www/include/jslibs/jquery-validation/demo/custom-messages-metadata-demo.html deleted file mode 100644 index 46e3d6ec0f..0000000000 --- a/www/include/jslibs/jquery-validation/demo/custom-messages-metadata-demo.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -jQuery validation plug-in - comment form example - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -

    Take a look at the source to see how messages can be customized with metadata.

    - - -
    -
    - Please enter your email address -

    - - - -

    -

    - -

    -
    -
    - -
    -
    - Please enter your email address -

    - - - -

    -

    - -

    -
    -
    - -
    -
    - Please enter your email address -

    - - - -

    -

    - -

    -
    -
    - -Back to main page - - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/custom-methods-demo.html b/www/include/jslibs/jquery-validation/demo/custom-methods-demo.html deleted file mode 100644 index 89b8fa6a1d..0000000000 --- a/www/include/jslibs/jquery-validation/demo/custom-methods-demo.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -

    - -
    - Example with custom methods and heavily customized error display - - - - - - - - - - - - - - - - -
    -
    - -
    -
    - -

    Your form contains tons of errors! Please try again.

    - -

    Back to main page

    - -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/dynamic-totals.html b/www/include/jslibs/jquery-validation/demo/dynamic-totals.html deleted file mode 100644 index 5ea4582678..0000000000 --- a/www/include/jslibs/jquery-validation/demo/dynamic-totals.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - -jQuery validation plug-in - dynamic forms demo - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - - - -
    -

    - -
    - Example with custom methods and heavily customized error display - - - - - - - - - - - - - - - -
     
    -
    -
    - - - -

    Your form contains tons of errors! Please try again.

    - -

    Back to main page

    - -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/errorcontainer-demo.html b/www/include/jslibs/jquery-validation/demo/errorcontainer-demo.html deleted file mode 100644 index 2c062ea5c0..0000000000 --- a/www/include/jslibs/jquery-validation/demo/errorcontainer-demo.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -
    - Login Form -

    - - -

    -

    - - -

    -
    -
    -

    - -

    -
    -
    - - -
    -

    There are serious errors in your form submission, please see below for details.

    -
      -
    1. -
    2. -
    3. -
    4. -
    5. -
    -
    - -
    -
    - Validating a complete form -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    -
    - -
    -

    There are serious errors in your form submission, please see details above the form!

    -
    - -Back to main page - -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/example.html b/www/include/jslibs/jquery-validation/demo/example.html deleted file mode 100644 index 5b83f6d005..0000000000 --- a/www/include/jslibs/jquery-validation/demo/example.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - -jQuery validation plug-in - comment form example - - - - - - - - - - - - - -
    -
    - Please provide your name, email address (won't be published) and a comment -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/form.php b/www/include/jslibs/jquery-validation/demo/form.php deleted file mode 100644 index 6d2768b8eb..0000000000 --- a/www/include/jslibs/jquery-validation/demo/form.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/form.phps b/www/include/jslibs/jquery-validation/demo/form.phps deleted file mode 100644 index b25c6ef481..0000000000 --- a/www/include/jslibs/jquery-validation/demo/form.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/images/bg.gif b/www/include/jslibs/jquery-validation/demo/images/bg.gif deleted file mode 100644 index 846add0714..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/images/bg.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/images/checked.gif b/www/include/jslibs/jquery-validation/demo/images/checked.gif deleted file mode 100644 index 5e33a78dc0..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/images/checked.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/images/cmxform-divider.gif b/www/include/jslibs/jquery-validation/demo/images/cmxform-divider.gif deleted file mode 100644 index 718a977cf1..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/images/cmxform-divider.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/images/cmxform-fieldset.gif b/www/include/jslibs/jquery-validation/demo/images/cmxform-fieldset.gif deleted file mode 100644 index 9c48ea4bac..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/images/cmxform-fieldset.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/images/loading.gif b/www/include/jslibs/jquery-validation/demo/images/loading.gif deleted file mode 100644 index 93c46a6cbb..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/images/loading.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/images/unchecked.gif b/www/include/jslibs/jquery-validation/demo/images/unchecked.gif deleted file mode 100644 index 06ecaba118..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/images/unchecked.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/index.html b/www/include/jslibs/jquery-validation/demo/index.html deleted file mode 100644 index 20087f77f8..0000000000 --- a/www/include/jslibs/jquery-validation/demo/index.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - -jQuery validation plug-in - main demo - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -

    Default submitHandler is set to display an alert into of submitting the form

    - -
    -
    - Please provide your name, email address (won't be published) and a comment -

    - - -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - -
    -
    - Validating a complete form -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    - Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo - - - - -
    -

    - -

    -
    -
    - -

    Syntetic examples

    - -

    Real-world examples

    - - -

    Testsuite

    - - -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/js/chili-1.7.pack.js b/www/include/jslibs/jquery-validation/demo/js/chili-1.7.pack.js deleted file mode 100644 index 90e7735cbf..0000000000 --- a/www/include/jslibs/jquery-validation/demo/js/chili-1.7.pack.js +++ /dev/null @@ -1 +0,0 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8={3b:"1.6",2o:"1B.1Y,1B.23,1B.2e",2i:"",2H:1a,12:"",2C:1a,Z:"",2a:\'$$\',R:"&#F;",1j:"&#F;&#F;&#F;&#F;",1f:"&#F;<1W/>",3c:5(){9 $(y).39("1k")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3=="1h")?h.3:h.3.1w;k.1m({A:A,3:"("+3+")",u:1+(3.c(/\\\\./g,"%").c(/\\[.*?\\]/g,"%").3a(/\\((?!\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$("2d").1O($W)}v{$("2d").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l="";l=l.c(/\\r\\n?/g,"\\n");4 C=1J(l,a);7(8.1j){C=C.c(/\\t/g,8.1j)}7(8.1f){C=C.c(/\\n/g,8.1f)}$(e).38(C)}5 1o(q,13){4 1l={12:8.12,2x:q+".1d",Z:8.Z,2w:q+".2u"};4 B;7(13&&1v 13=="2l")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:"2l.15"});4 2n=x 1u("\\\\b"+8.2i+"\\\\b","2j");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i("V");7(!1n){9}4 q=$.3u(1n.c(2n,""));7(\'\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$("."+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t("a 3w Q: "+q+\'@\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\'\'==p){9""}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\<1W[^>]*?\\>/3y,16);4 e=J.1L(\'<1k>\');e.3l=p;p=e.3m.c(x 1u(16,"g"),\'\\r\\n\');9 p}4 T="";4 18=1G;$(1e).3j().G("1k").U("2c",5(){18=y}).U("1M",5(){7(18==y)T=J.1i.29().3k});$("3n").U("3q",5(){7(\'\'!=T){2p.3r.3o(\'3p\',22(T));2V.2R=1a}}).U("2c",5(){T=""}).U("1M",5(){18=1G})}})})(1Z);8.I["1Y.1d"]={k:{2M:{3:/\\/\\*[^*]*\\*+(?:[^\\/][^*]*\\*+)*\\//},25:{3:/\\ - -
    - - - - -
    - - -
    - - - -
    - - - - -
    - - - - -

    Step 1 of 2

    -

    -

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -

    Login Information

    -
    - -
    - -
    - -
    -
    -
    - - -
    - -


    -
    -
    - - -
    - - - -
    -
    -
    - - - - -
    - - - - - - -
    - - - - diff --git a/www/include/jslibs/jquery-validation/demo/marketo/jquery.maskedinput.js b/www/include/jslibs/jquery-validation/demo/marketo/jquery.maskedinput.js deleted file mode 100644 index 0cd5cfcd52..0000000000 --- a/www/include/jslibs/jquery-validation/demo/marketo/jquery.maskedinput.js +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2007 Josh Bush (digitalbush.com) - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Version: 1.1 - * Release: 2007-09-08 - */ -(function($) { - //Helper Functions for Caret positioning - function getCaretPosition(ctl){ - var res = {begin: 0, end: 0 }; - if (ctl.setSelectionRange){ - res.begin = ctl.selectionStart; - res.end = ctl.selectionEnd; - }else if (document.selection && document.selection.createRange){ - var range = document.selection.createRange(); - res.begin = 0 - range.duplicate().moveStart('character', -100000); - res.end = res.begin + range.text.length; - } - return res; - }; - - function setCaretPosition(ctl, pos){ - if(ctl.setSelectionRange){ - ctl.focus(); - ctl.setSelectionRange(pos,pos); - }else if (ctl.createTextRange){ - var range = ctl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - }; - - //Predefined character definitions - var charMap={ - '9':"[0-9]", - 'a':"[A-Za-z]", - '*':"[A-Za-z0-9]" - }; - - //Helper method to inject character definitions - $.mask={ - addPlaceholder : function(c,r){ - charMap[c]=r; - } - }; - - $.fn.unmask=function(){ - return this.trigger("unmask"); - }; - - //Main Method - $.fn.mask = function(mask,settings) { - settings = $.extend({ - placeholder: "_", - completed: null - }, settings); - - //Build Regex for format validation - var reString="^"; - for(var i=0;i 16 && k < 32 ) || (k > 32 && k < 41)); - - //delete selection before proceeding - if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){ - clearBuffer(pos.begin,pos.end); - } - //backspace and delete get special treatment - if(k==8){//backspace - while(pos.begin-->=0){ - if(!locked[pos.begin]){ - buffer[pos.begin]=settings.placeholder; - if($.browser.opera){ - //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character. - writeBuffer(pos.begin); - setCaretPosition(this,pos.begin+1); - }else{ - writeBuffer(); - setCaretPosition(this,pos.begin); - } - return false; - } - } - }else if(k==46){//delete - clearBuffer(pos.begin,pos.begin+1); - writeBuffer(); - setCaretPosition(this,pos.begin); - return false; - }else if (k==27){ - clearBuffer(0,mask.length); - writeBuffer(); - setCaretPosition(this,0); - return false; - } - - }; - input.bind("keydown",keydownEvent); - - function keypressEvent(e){ - if(ignore){ - ignore=false; - return; - } - e=e||window.event; - var k=e.charCode||e.keyCode||e.which; - - var pos=getCaretPosition(this); - var caretPos=pos.begin; - - if(e.ctrlKey || e.altKey){//Ignore - return true; - }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters - while(pos.begin=buffer.length) - settings.completed.call(input); - else - setCaretPosition(this,caretPos); - - return false; - }; - input.bind("keypress",keypressEvent); - - /*Helper Methods*/ - function clearBuffer(start,end){ - for(var i=start;i= 6 && /\d/.test(value) && /[a-z]/i.test(value); - if (!result) { - element.value = ""; - var validator = this; - setTimeout(function() { - validator.blockFocusCleanup = true; - element.focus(); - validator.blockFocusCleanup = false; - }, 1); - } - return result; - }, "Your password must be at least 6 characters long and contain at least one number and one character."); - - // a custom method making the default value for companyurl ("http://") invalid, without displaying the "invalid url" message - jQuery.validator.addMethod("defaultInvalid", function(value, element) { - return value != element.defaultValue; - }, ""); - - jQuery.validator.addMethod("billingRequired", function(value, element) { - if ($("#bill_to_co").is(":checked")) - return $(element).parents(".subTable").length; - return !this.optional(element); - }, ""); - - jQuery.validator.messages.required = ""; - $("form").validate({ - invalidHandler: function(e, validator) { - var errors = validator.numberOfInvalids(); - if (errors) { - var message = errors == 1 - ? 'You missed 1 field. It has been highlighted below' - : 'You missed ' + errors + ' fields. They have been highlighted below'; - $("div.error span").html(message); - $("div.error").show(); - } else { - $("div.error").hide(); - } - }, - onkeyup: false, - submitHandler: function() { - $("div.error").hide(); - alert("submit! use link below to go to the other step"); - }, - messages: { - password2: { - required: " ", - equalTo: "Please enter the same password as above" - }, - email: { - required: " ", - email: "Please enter a valid email address, example: you@yourdomain.com", - remote: jQuery.validator.format("{0} is already taken, please enter a different address.") - } - }, - debug:true - }); - - $(".resize").vjustify(); - $("div.buttonSubmit").hoverClass("buttonSubmitHover"); - - if ($.browser.safari) { - $("body").addClass("safari"); - } - - $("input.phone").mask("(999) 999-9999"); - $("input.zipcode").mask("99999"); - var creditcard = $("#creditcard").mask("9999 9999 9999 9999"); - - $("#cc_type").change( - function() { - switch ($(this).val()){ - case 'amex': - creditcard.unmask().mask("9999 999999 99999"); - break; - default: - creditcard.unmask().mask("9999 9999 9999 9999"); - break; - } - } - ); - - // toggle optional billing address - var subTableDiv = $("div.subTableDiv"); - var toggleCheck = $("input.toggleCheck"); - toggleCheck.is(":checked") - ? subTableDiv.hide() - : subTableDiv.show(); - $("input.toggleCheck").click(function() { - if (this.checked == true) { - subTableDiv.slideUp("medium"); - $("form").valid(); - } else { - subTableDiv.slideDown("medium"); - } - }); - - -}); - -$.fn.vjustify = function() { - var maxHeight=0; - $(".resize").css("height","auto"); - this.each(function(){ - if (this.offsetHeight > maxHeight) { - maxHeight = this.offsetHeight; - } - }); - this.each(function(){ - $(this).height(maxHeight); - if (this.offsetHeight > maxHeight) { - $(this).height((maxHeight-(this.offsetHeight-maxHeight))); - } - }); -}; - -$.fn.hoverClass = function(classname) { - return this.hover(function() { - $(this).addClass(classname); - }, function() { - $(this).removeClass(classname); - }); -}; \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/marketo/step2.htm b/www/include/jslibs/jquery-validation/demo/marketo/step2.htm deleted file mode 100644 index 933d682658..0000000000 --- a/www/include/jslibs/jquery-validation/demo/marketo/step2.htm +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - - - - -Subscription Signup | Marketo - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - - - -
    - - - - -
    - - - - -

    Step 2 of 2

    -

    Billing Information

    -

    -

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Billing Address: -
    - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    Credit Card Type: - -
    Expiration: - - -
    - -
    - -
    -
    - - -

    - -
    -
    -
    - -
    - - - -
    -
    -
    - - - - -
    - - - - - - -
    - - - - - - - diff --git a/www/include/jslibs/jquery-validation/demo/marketo/stylesheet.css b/www/include/jslibs/jquery-validation/demo/marketo/stylesheet.css deleted file mode 100644 index 7040c4fb05..0000000000 --- a/www/include/jslibs/jquery-validation/demo/marketo/stylesheet.css +++ /dev/null @@ -1,1179 +0,0 @@ -:-moz-any-link :focus { - outline: none; -} - -:focus { - -moz-outline-style: none; - outline: none; -} - -body { - font-size: 80%; - margin: 0; - padding: 0; - font-family: tahoma, geneva, sans-serif; - background-color: #000000; -} - -a { - color: #0653AB; - outline: 0px; - text-decoration: none; -} - -a:hover { - outline: 0px; - text-decoration: underline; -} - -img { - border: 0px; -} - -/* s1.0 - Page Containers */ -#letterbox { - margin: 10px auto; - width: 883px; - background-color: #364158; - border: 8px solid #D4D4D4; - padding: 1px 1px 10px 1px; -} - -#header-background { - background: url(images/back_nav_blue.gif) repeat-x; - margin: 0px auto; - padding: 0px; - height: 73px; - width: 883px; - border-top: 4px solid #CCEAFE; - border-bottom: 4px solid #D4D4D4; -} - -#page-container { - width: 866px; - margin: 0px auto; - margin-top: 33px; /* pad from top menu to actions buts*/ - margin-bottom: -11px; - padding-top: 8px; - padding-bottom: 8px; - background-color: #D4D4D4; /* light grey*/ - border-right: 1px solid #464646; -} - -#page-content-inner { - width: 849px; - margin: 0px auto; - border-top: 1px solid #9F9FA0; - border-left: 1px solid #A2A09A; - background-color: #F4F1E9; - position: relative; -} - -#page-content-inner #col-left { - width: 210px; - float: left; - background-color: #F4F1E9; -} - -#page-content-inner #col-main { - width: 639px; - background-color: #ffffff; - position: absolute; - right: 0px; - top: 0px; -} - -#footer-container { - width: 866px; - position: relative; - left: 8px; - padding: 2px 0px 10px 0px; - background-color: #D4D4D4; /* light grey*/ -} - -/* s2.0 - Global navigation bar */ -.nav-global-container { - width: 880px; - margin: 0px auto; - position: relative; -} - -* html .nav-global-container { /* ie6 fix*/ - margin-bottom: -6px; -} - -.login { - position: absolute; - right: 20px; - text-align: center; -} - -.login a,.login a span { - display: block; - height: 18px; - font-size: 11px; - background: url(images/login-sprite.gif) right -5px no-repeat; - text-decoration: none; - font-weight: bold; - padding: 5px 10px 5px 10px; - position: relative; -} - -.login a:hover { - color: #000000; - text-decoration: underline; -} - -div.login a span { - background-position: left -105px; - width: 4px; - position: absolute; - top: 0px; - left: 0px; - padding: 5px 0px 5px 0px;; -} - -div.login a:hover span { - -} - -.logo { - float: left; - margin: 0px 0px -5px 0px; /* neg marging for ie6 */ -} - -.logo img { - border: 0px; - margin-left: -1px; -} - -.nav-global { - float: left; - width: 645px; - margin: 40px 0px 0px 40px; - background-color: transparent; -} - -.nav-global ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-global li { - float: left; - white-space: nowrap; -} - -div.nav-global li a,div.nav-global li a span { - background-image: url(images/tab-sprite.gif); - background-position: right 100px; - background-repeat: no-repeat; - height: 32px; - color: #666666; - text-decoration: none; - font: bold 16px 'trebuchet ms'; - margin-right: 15px; - display: block; - position: relative; - padding: 7px 15px 0px 15px; -} - -div.nav-global li a:hover { - background-position: right 0px; - color: #333333; -} - -div.nav-global li a:hover span { - background-position: left -100px; - display: block !important; -} - -div.nav-global li a span { - background-position: left 150px; - width: 4px; - position: absolute; - left: 0px; - top: 0px; - padding: 7px 0px 0px 0px; -} - -body.safari div.nav-global li a span { - display: none; -} - -div.nav-global li a.on,div.nav-global li a.on:hover { - background-position: right -55px; - color: #FFFFFF; -} - -div.nav-global li a.on span,div.nav-global li a.on:hover span { - background-position: left -155px; - display: block !important; -} - -div.action-container { - position: relative; - top: -45px; - cursor: pointer; -} - -div.action-icon-container { - position: absolute; - top: -17px; - left: -17px; - z-index: 10; - width: 100px; - height: 100px; - overflow: hidden; -} - -div.action-icon { - border: 0px; - position: absolute; - top: -0px; - left: 0px; -} - -div.action-button-container { - height: 106px; - width: 180px; - overflow: hidden; - position: absolute; - top: 0px; - left: 0px; - z-index: 5; -} - -img.action-icon { - border: 0px; - position: absolute; - top: 0px; - left: 0px; - z-index: 0 -} - -div.action-text { - z-index: 20; - color: #FFFFFF; - position: absolute; - left: 40px; - top: 12px; - font: 14px tahoma, geneva; - padding-top: 30px; -} - -div.bigbuttons { - top: -20px; -} - -div.action-header { - z-index: 21; - position: absolute; - left: 40px; - top: 10px; -} - -div.action-header b { - font: bold 17px tahoma, geneva; - display: block; - margin-bottom: 10px; - color: #0b2c89; - position: absolute; - top: 0px; - left: 0px; - width: 130px; -} - -div.action-header b.shadow { - top: 1px; - left: 1px; - color: #d5d5d5; -} - -img.action-button { - position: relative; -} - -div.hover img.action-button { - top: -131px; -} - -div.on img.action-button { - top: -261px; -} - -/* s3.0 - top of content Action Buttons */ -.action-buttons { - width: 100%; /* ie6 requires */ -} - -.action-buttons ul { - position: relative; - padding: 0px; -} - -.action-buttons li { - position: relative; /* ie6 fix */ - float: left; - list-style: none; - text-align: center; - line-height: 16px; - margin: -61px 0px 0px 0px; -} - -.action-home li { - margin: -49px 0px 0px 0px; -} - -.action-buttons a { - display: block; - height: 110px; - width: 175px; - padding: 14px 0px 0px 25px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; -} - -.action-buttons li span { - color: #053880; - line-height: 47px; - font-size: 17px; -} - -div.action-bottom { - margin: 15px 0px 10px 0px; - float: left; -} - -div.action-bottom a { - height: 61px; - width: 178px; - border: 0px; - background: url(images/action-bottom.gif) no-repeat 0px 0px; - color: #0b2c89; - float: left; - position: relative; - font: bold 17px tahoma, geneva; - text-decoration: none; - margin-right: 10px; -} - -div.action-bottom a span { - position: absolute; - top: 15px; - left: 40px; -} - -div.action-bottom a span.shadow { - top: 16px; - left: 41px; - color: #d4d4d4; -} - -.line-grey { - background: url(images/line-grey.gif) 0 0 repeat-x; - height: 2px; - margin: 8px 25px 20px 0; -} - -/* s4.0 - Home Hero Area */ -.hero-background { - position: relative; - width: 880px; - background: url(images/back_home-hero.jpg) 10px 0px no-repeat; - height: 211px; - margin: -20px 0px 45px 0px; -} - -.hero-text { - float: right; - width: 626px; - margin-top: 26px; -} - -.hero-text a { /* Sign Up Now Button */ - padding: 5px 32px 0px 0px; - float: right; -} - -.hero-text h1 { - font-size: 2.3em; - line-height: 1.2em; - color: #333333; - font-family: Trebuchet MS; - margin: 12px 0px 10px 10px; -} - -.hero-text h2 { - margin: 0px; - font-weight: normal; - font-size: 1.35em; - margin: 5px 0px 13px 10px -} - -/* s4.1 - Home Left Header tab */ -.col-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 30px; - width: 166px; - text-align: center; - color: #ffffff; - font: 20px 'trebuchet ms'; - padding-top: 2px; - margin-top: -41px; - margin-left: 20px; - line-height: 29px; - margin-bottom: 8px; - display: block; -} - -.col-left-header-tab a { - color: #FFFFFF; -} - -.callout-green { - background: url(images/back_green-fade.gif) 0 0 repeat-x; - font-size: 1.2em; - padding: 10px 15px 20px 13px; - color: #303B52; - line-height: 1.4em; -} - -/* s4.2 - Home Left Quote */ -.callout-tan { - color: #666666; -} - -.callout-tan h1 { - background: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y; - font-size: 1.1em; - text-align: center; - margin: 0px; - padding: 11px 5px 11px 2px; - color: #333333; -} - -.callout-tan p { - margin: 0px; - margin-top: 5px; - line-height: 1.4em; - padding: 5px 10px 7px 13px; -} - -.callout-tan p img { - float: left; - margin: 5px 10px 5px 0px; -} - -.callout-tan div { - text-align: left; - padding: 5px 10px 7px 0px; - font-weight: bold; -} - -/* s4.3 - purple home boxes */ -.box-purple { - background: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x; - border-left: 1px solid #ffffff; - color: #333333; - width: 581px; - padding: 10px 15px 20px 15px; -} - -div.box-purple a { - -} - -.box-purple h1 { - font-size: 1.5em; - margin: 10px 0px -15px 0px; -} - -.box-purple li { - margin: 0px 0px 0px -23px; - line-height: 1.6em; - font-size: 1em; -} - -.box-purple div { - padding: 0px 0px 0px 110px; -} - -.icon-text01 { - background-image: url(images/icon_search-engine-market.png); - background-repeat: no-repeat; -} - -* html .icon-text01 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_search-engine-market.png", - sizingMethod = "crop"); -} - -.icon-text02 { - background: url(images/icon_landing-pages.png) 0 0 no-repeat; -} - -* html .icon-text02 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_landing-pages.png", sizingMethod = - "crop"); -} - -.icon-text03 { - background: url(images/icon_salesforce.png) 0 0 no-repeat; -} - -* html .icon-text03 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_salesforce.png", sizingMethod = - "crop"); -} - -/* s4.4 - news home boxes */ -.callout-news { - color: #555555; - float: left; - width: 49%; - margin: 10px 1px 0px 0px; - padding-bottom: 20px; - text-align: left; -} - -.line-news-r { - border-right: 1px solid #D4D4D4; -} - -.callout-news h1 { - background-color: #EEEEEE; - font-size: 1.2em; - margin: 0px; - padding: 11px 5px 11px 15px; - color: #333333; -} - -.callout-news p { - margin: 10px 0px 0px 10px; - padding: 0px 10px 7px 20px; - background: url(images/news.gif) no-repeat left 1px; -} - -.callout-news p a { - -} - -.callout-news ul { - list-style-type: none; - padding: 0; - margin: 10px 0 0 10px; -} - -.callout-news li { - background: url(images/icon_news.gif) no-repeat left 2px; - padding: 0px 5px 5px 20px; -} - -.callout-news li a { - display: block; - margin-bottom: 5px; -} - -.callout-news div { - text-align: right; -} - -#scrollup { - position: relative; - overflow: hidden; - height: 440px; - width: 200px -} - -.headline { - position: absolute; - top: 600px; - left: 5px; - height: 585px; - width: 190px; - font: normal 12px tahoma, geneva !important; -} - -div.more { - margin: 5px 0px 0px 0px; - padding: 0px 10px 0px 0px; - letter-spacing: inherit; -} - -div.more a { - background: transparent url(images/arrow_r-blue.gif) no-repeat right 2px - ; - font-weight: bold; - padding: 0px 20px 0px 0px; - font-weight: bold; - text-decoration: none; -} - -div.more a:hover { - text-decoration: underline; -} - -/* sX.0 - Left Nav */ -.nav-left-back { - background: url(images/back_nav_side.gif) 0 0 repeat-x; -} - -div.empty { - background: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x; -} - -div.empty div.callout-green { - -} - -.nav-left { - padding-top: 12px; - /*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/ - width: 210px; -} - -.nav-left ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-left li a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; - border-top: 1px solid #B3D38D; - border-bottom: 1px solid #7CA84E; - border-left: 1px solid #97B973; - padding: 6px 0px 0px 20px; -} - -.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover { - color: #4C6F28; - background-color: #F4F1E9; -} - -.nav-left a.open { - background-image: url(images/arrow_d-green.gif); - background-repeat: no-repeat; - background-position: 6px 11px; -} - -.nav-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 32px; - width: 166px; - text-align: center; - color: #ffffff; - margin: -41px 0px 0px 22px; - line-height: 22px; - margin-bottom: 8px; - display: block; -} - -div.empty div.nav-left-header-tab { - background: url(images/tab_green2.gif) 0 0 no-repeat; -} - -.nav-left a.active { - /* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */ - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #F4F1E9; - color: #4C6F28; - border-top: 1px solid #D1E5BB; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #DADADA; - padding: 6px 0px 0px 20px; -} - -#nav-left-sub a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #D6E8C4; - color: #4C6F28; - border-top: 1px solid #D6E8C4; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 1px solid #8DBE5A; - padding: 6px 0px 0px 30px; -} - -* html #nav-left-sub { /* ie6 fix */ - margin-top: -1px; -} - -*+html #nav-left-sub { /* ie7 fix */ - margin-top: -1px; -} - -#nav-left-sub a.active-page { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #ffffff; - color: #666666; - border-top: 0px solid #7CA84E; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 0px solid #8DBE5A; - padding: 6px 0px 0px 30px; - cursor: default; /* turns off hand icon for link */ -} - -/* sX.0 - Main Content */ -.main-content { - color: #666666; - position: absolute; - right: 20px; - padding-top: 20px; - width: 585px; - padding-bottom: 20px; -} - -div.main-content div.main-content { - -} - -.main-content h1 { - color: #5890D1; - font-size: 1.9em; - font-family: Trebuchet MS; - border-bottom: 1px solid #cccccc; - margin: 0px 10px 0px 0px; -} - -.main-content h2 { - color: #666666; - font-size: 1.3em; - font-weight: normal; - margin: 10px 10px 5px 0px; -} - -.main-content p { - margin: 10px 10px 10px 0px; - line-height: 1.55em; -} - -/* sX.1 - Main Content Sub Styles */ -.sub-grey { - border-top: 1px solid #D4D4D4; - border-bottom: 1px solid #D4D4D4; - background-color: #F4F4F4; - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -.sub-white { - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -img.screen-grab-r { - margin-right: -8px; - text-align: right; - padding: 0px 0px 0px 10px; -} - -div.main-content a.screenshot { - float: right; - padding: 10px 10px 0px 0px -} - -.content-foot { - border-top: 1px solid #D4D4D4; - font-size: .9em; - line-height: 1.45em; - margin: 10px 20px 0px 0px; - padding: 10px 10px 30px 0px; -} - -div.main-content ul { - position: relative; - left: -25px; -} - -div.main-content li { - margin-bottom: 5px; - list-style-type: disc -} - -div.main-content li a { - color: #6A6CB0; -} - -/* sX.0 - Footer */ -div.footer { - color: #666666; - font-size: .85em; - font-weight: normal; - height: 18px; - margin: 0px auto; - font-family: Tahoma, Geneva, sans-serif; - margin-top: 10px; -} - -.footer ul { - list-style-type: none; -} - -.footer li { - float: left; - border-right: 1px solid #666666; - padding: 0px 7px 0px 7px; - margin-top: 3px; -} - -.footer a { - color: #666666; - text-decoration: none; -} - -.footer a:hover { - color: #0653AB; - text-decoration: none; -} - -.footer li.line-off { - border-right: 0px solid #ffffff; -} - -div.footer strong { - font-weight: normal; -} - -/* sX.0 - General Colors */ -.line-grey,.line-grey-tier { - border-top: 1px solid #A3A3A2; -} - -.line-grey-tier { - padding-bottom: 25px; -} - -.bottom { - height: 10px; -} - -div.p10bottom { - padding-bottom: 10px; -} - -.clear { - clear: both; -} - -table.grid { - background: #EEEEEE; -} - -table.grid th { - background-color: #F4F4F4; -} - -table.grid td { - background-color: #FFFFFF; -} - -div.buttonSubmit { - position: relative; -} - -div.buttonSubmit input,div.buttonSubmit span { - height: 36px; - position: relative; - background-image: url(images/button-submit.gif); - background-repeat: no-repeat; - background-position: right 0px; - float: left; - color: #FFFFFF; - font-weight: bold; - padding: 0px 15px 2px 15px; - margin: 20px 0px 20px 0px; - border: 0px; - cursor: pointer; - z-index: 5; -} - -div.buttonSubmit input { - width: auto; -} - -div.buttonSubmit span { - width: 4px; - position: absolute; - left: 0px; - top: 0px; - background-position: left -36px; - padding: 0px 0px 0px 0px; - z-index: 10; -} - -body.safari div.buttonSubmit span { - display: none -} - -div.buttonSubmitHover input { - background-position: right -72px; -} - -div.buttonSubmitHover span { - background-position: left -108px; -} - -a.demoLink { - padding: 1px 10px 0px 17px; - height: 24px; - background: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px; - display: block; - float: left; -} - -div.callout-tan a { - background: none; - color: #0653AB; - margin: auto; - display: block; -} - -div.callout-tan a:hover { - background: none; - color: #0653AB; -} - -label.error { - display: block; - color: red; - font-style: italic; - font-weight: normal; -} - -input.error { - border: 2px solid red; -} - -p.demoBlock { - border-bottom: 1px solid #DDDDDD; - padding-bottom: 10px; -} - -div.left-nav-callout { - height: 200px; - width: 190px; - top: 55px; - left: 5px; - position: relative; - padding-left: 9px; - padding-top: 13px; -} - -div.left-nav-callout img.png { - position: absolute; - z-index: 0; - top: 0px; - left: 0px; -} - -div.left-nav-callout h6 { - font: bold 14px tahoma, geneva; - color: #333333; - height: 36px; - padding-left: 5px; - margin: 0px; - position: relative; - z-index: 10; -} - -div.left-nav-callout a { - background: url(images/monitor24.gif) no-repeat 0px center; - padding: 5px 0px 5px 30px; - display: block; - font: bold 12px tahoma, geneva; - color: #336699; - margin-bottom: 5px; - position: relative; - z-index: 10; - width: 140px; -} - -form table td { - padding: 5px; -} - -form table input { - width: 200px; - padding: 3px; - margin: 0px; -} - -textarea { - width: 400px -} - -td.label { - width: 150px; -} - -tr.required td.label { - font-weight: bold; - background: url(/images/forms/backRequiredGray.gif) no-repeat right - center; -} - -div.subTableDiv { - width: 500px; -} - -div.subTableDiv td.label { - width: 135px; -} - -ul#homeBlog li div.description { - display: none; -} - -td.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select { - border: 2px solid red; - background-color: #FFFFD5; - margin: 0px; - color: red; -} - -tr td.field div.formError { - display: none; - color: #FF0000; -} - -tr.errorRow td.field div.formError { - display: block; - font-weight: normal; -} - -div.error { - color: red; -} - -div.error a { - color: #336699; - font-size: 12px; - text-decoration: underline -} - -div.tooltip { - position: absolute; - left: 30px; - bottom: 0px; - display: none; /* in case javascript is disabled */ - width: 170px; - background-color: #F4F1E9; - z-index: 100; - padding: 10px; - border: 1px solid #CCCCCC; -} - -div.offerbox { - width: 125px; - float: left; - position: relative; -} - -div.offerbox h3 { - font: bold 17px tahoma, geneva; - color: #333333; - height: 55px; - margin: 0px auto; - text-align: center; -} - -div.offerbox h4 { - height: 100px; - font: normal 13px tahoma, geneva; - margin: 0px; -} - -div.offerbox h5 { - font: bold 14px tahoma, geneva; - margin: 0px; - height: 55px; -} - -div.offerbox h5 small { - float: left; - font-weight: normal; - font-size: 10px; -} - -div.offerbox div.learnmore { - padding-left: 25px; -} - -div#marketoEditions { - background: url(images/buynowBack.gif) no-repeat; - width: 584px; - height: 376px; - float: left; - position: relative; - margin-bottom: 10px; -} - -div.offerHeader { - background: #0D8BBD; - position: absolute; - top: 20px; - width: 266px; - height: 34px; - border: 1px solid #e1e4e2; -} - -div.offerHeader span { - font: 20px 'trebuchet ms'; - color: #FFFFFF; - position: absolute; - left: 0px; - top: 0px; -} - -div.offerHeader span.shadow { - font: 20px 'trebuchet ms'; - color: #333333; - position: absolute; -} - -div.offerbox div.buttonSubmit { - margin: 5px 0px 0px 10px; -} - -div.footerAddress { - position: absolute; - bottom: 30px; - left: 20px; - color: #666666; - font-size: 11px; - display: none; -} \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/milk/bg.gif b/www/include/jslibs/jquery-validation/demo/milk/bg.gif deleted file mode 100644 index 2c7c358780..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/milk/bg.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/milk/emails.php b/www/include/jslibs/jquery-validation/demo/milk/emails.php deleted file mode 100644 index 18b6754d63..0000000000 --- a/www/include/jslibs/jquery-validation/demo/milk/emails.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/milk/emails.phps b/www/include/jslibs/jquery-validation/demo/milk/emails.phps deleted file mode 100644 index d2219cc92f..0000000000 --- a/www/include/jslibs/jquery-validation/demo/milk/emails.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/milk/index.html b/www/include/jslibs/jquery-validation/demo/milk/index.html deleted file mode 100644 index 3516800a42..0000000000 --- a/www/include/jslibs/jquery-validation/demo/milk/index.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - -Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    - - -
    - - -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    - - - - - - -
    -
      -
    - - -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    - - - - - - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/milk/left_white.png b/www/include/jslibs/jquery-validation/demo/milk/left_white.png deleted file mode 100644 index b889960cb0..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/milk/left_white.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/milk/milk.css b/www/include/jslibs/jquery-validation/demo/milk/milk.css deleted file mode 100644 index d5f128bf2a..0000000000 --- a/www/include/jslibs/jquery-validation/demo/milk/milk.css +++ /dev/null @@ -1,236 +0,0 @@ -/* GENERAL ELEMENTS */ - -* { margin: 0; padding: 0; } - -body, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; } -body { color: #333; background-color: #fff; text-align: center; } - -a:link { color:#0060BF; text-decoration: underline; } -a:visited { color:#0060BF; text-decoration: underline; } -a:active { color:#0060BF; text-decoration: underline; } -a:hover { color:#000000; text-decoration: underline; } - -h1, h2, h3, h4, h5, h6 { font-family: "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; } -h1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; } -h2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; } -h3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; } -h4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; } -h5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; } -h6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; } - -img { border: 0px; } - -p { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; } -li > p { margin-top: 0.2em; } -pre { font-family: monospace; font-size: 1.0em; } -strong, b { font-weight: bold; } - -/* PAGE ELEMENTS */ - -/* Content */ - -#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ } -.content { margin-left: 4.5em; margin-right: 4.5em; } -.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; } -.content ol.terms li { margin-bottom: 1em; } - -/* Header */ - -#header { padding-bottom: 10em; } -#headerlogo { float: left; } -#headerlogo img { width: 188px; height: 83px; } -#headernav { float: right; } - -label { font-weight: bold; } -#reminders label { font-weight: normal; } - -table.tabbedtable { padding-left: 3em; } -table.tabbedtable td { padding-bottom: 5px; } -table.tabbedtable label { text-align: right; padding-right: 9px; } -.hiddenlabel { visibility: hidden; } -.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; } -.largelinkwrap { padding-top: 10px; padding-bottom: 10px; } - - - -#signuptab { - float:left; - width:100%; - background:#fff url("bg.gif") repeat-x bottom; - font-size: 1.0em; - line-height: normal; -} -#signuptab ul { - margin:0; - padding: 0px 10px 0px 10px; - list-style:none; -} -#signuptab li { - float:left; - background:url("left_white.png") no-repeat left top; - margin:0; - padding:0 3px 0 9px; - border-bottom:1px solid #CACACA; -} -#signuptab a { - float:left; - display:block; - width:.1em; - background:url("right_white.png") no-repeat right top; - padding:2px 15px 0px 6px; - text-decoration:none; - font-weight:bold; - color:#fff; - white-space: nowrap; -} -#signuptab > ul a {width:auto;} -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#signuptab a {float:none;} -/* End IE5-Mac hack */ -#signuptab a:hover { - color:#333; -} -#signuptab #signupcurrent { - background-position:0 -150px; - border-width:0; -} -#signuptab #signupcurrent a { - background-position:100% -150px; - padding-bottom:1px; - color:#000; -} -#signuptab li:hover, #signuptab li:hover a { - background-position:0% -150px; - color:#000; -} -#signuptab li:hover a { - background-position:100% -150px; -} - -/* Signup box */ - -#signupbox { - width: 100%; - text-align: center; - margin: 0em auto; -} - -#signupwrap { - border: 1px solid #CACACA; - border-top: 0; - text-align: left; - padding: 35px 10px 20px 30px; - clear: both; -} - -/* Unsupported browsers */ - -.orange_rbcontent { padding: 0.4em; } -.orange_rbroundbox { width: 100%; } - -#unsupported { - font-weight: bold; - text-align: left; -} - -/*#content { - padding-top: 15px; -}*/ - -/* Signup form */ - -#signupform table { - border-spacing: 0px; - border-collapse: collapse; - empty-cells: show; -} - -#signupform .label { - padding-top: 2px; - padding-right: 8px; - vertical-align: top; - text-align: right; - width: 125px; - white-space: nowrap; -} - -#signupform .field { - padding-bottom: 10px; - white-space: nowrap; -} - -#signupform .status { - padding-top: 2px; - padding-left: 8px; - vertical-align: top; - width: 246px; - white-space: nowrap; -} - -#signupform .textfield { - width: 150px; -} - -#signupform label.error { - background:url("../images/unchecked.gif") no-repeat 0px 0px; - padding-left: 16px; - padding-bottom: 2px; - font-weight: bold; - color: #EA5200; -} - -#signupform label.checked { - background:url("../images/checked.gif") no-repeat 0px 0px; -} - -#signupform .success_msg { - font-weight: bold; - color: #0060BF; - margin-left: 19px; -} - -#signupform #dateformatStatus, #signupform #termsStatus { - margin-left: 6px; -} - -#signupform #dateformat_eu { - vertical-align: middle; -} - -#signupform #ldateformat_eu { - font-weight: normal; - vertical-align: middle; -} - -#signupform #dateformat_am { - vertical-align: middle; -} - -#signupform #ldateformat_am { - font-weight: normal; - vertical-align: middle; -} - -#signupform #termswrap { - float: left; -} - -#signupform #terms { - vertical-align: middle; - float: left; - display: block; - margin-right: 5px; -} - -#signupform #lterms { - font-weight: normal; - vertical-align: middle; - float: left; - display: block; - width: 350px; - white-space: normal; -} - -#signupform #lsignupsubmit { - visibility: hidden; -} \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/milk/milk.png b/www/include/jslibs/jquery-validation/demo/milk/milk.png deleted file mode 100644 index b5e7151578..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/milk/milk.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/milk/right_white.png b/www/include/jslibs/jquery-validation/demo/milk/right_white.png deleted file mode 100644 index 393bbe2bab..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/milk/right_white.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/milk/users.php b/www/include/jslibs/jquery-validation/demo/milk/users.php deleted file mode 100644 index 3008a03f83..0000000000 --- a/www/include/jslibs/jquery-validation/demo/milk/users.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/demo/milk/users.phps b/www/include/jslibs/jquery-validation/demo/milk/users.phps deleted file mode 100644 index dfe4c8e9cb..0000000000 --- a/www/include/jslibs/jquery-validation/demo/milk/users.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/multipart/index.html b/www/include/jslibs/jquery-validation/demo/multipart/index.html deleted file mode 100644 index 2fc5973d67..0000000000 --- a/www/include/jslibs/jquery-validation/demo/multipart/index.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - -jQuery accordion form with validation - - - - - - - - - - - - - - - -
    -
    - -

    Help me Buy and Sell a House

    -

    This form is quick & easy to complete - in only 3 steps!

    -
    - - -
      -
    • -
      -
      Step 1 of 3 -
      *Required Field
      -

      Tell us about the property you're buying

      -   No:      Yes: -
      -
      -
      -
      - -
      -
      -
      -
      -
    • -
    • - - -
      -
      Step 2 of 3 -
      *Required Field
      -

      Tell us about the property you're selling

      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
    • -
    • - - -
      -
      Step 3 of 3 -
      *Required Field
      -

      Tell us about yourself

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      This is a sample form, no information is sent anywhere.

      -
      -
      -
      -
    • -
    -
    - -
    -
    - - - diff --git a/www/include/jslibs/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js b/www/include/jslibs/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js deleted file mode 100644 index 9ba3ecfa15..0000000000 --- a/www/include/jslibs/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) 2007 Josh Bush (digitalbush.com) - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Version: 1.0 - * Release: 2007-07-25 - */ -(function($) { - //Helper Functions for Caret positioning - function getCaretPosition(ctl){ - var res = {begin: 0, end: 0 }; - if (ctl.setSelectionRange){ - res.begin = ctl.selectionStart; - res.end = ctl.selectionEnd; - }else if (document.selection && document.selection.createRange){ - var range = document.selection.createRange(); - res.begin = 0 - range.duplicate().moveStart('character', -100000); - res.end = res.begin + range.text.length; - } - return res; - }; - - function setCaretPosition(ctl, pos){ - if(ctl.setSelectionRange){ - ctl.focus(); - ctl.setSelectionRange(pos,pos); - }else if (ctl.createTextRange){ - var range = ctl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - }; - - //Predefined character definitions - var charMap={ - '9':"[0-9]", - 'a':"[A-Za-z]", - '*':"[A-Za-z0-9]" - }; - - //Helper method to inject character definitions - $.mask={ - addPlaceholder : function(c,r){ - charMap[c]=r; - } - }; - - //Main Method - $.fn.mask = function(mask,settings) { - settings = $.extend({ - placeholder: "_", - completed: null - }, settings); - - //Build Regex for format validation - var reString="^"; - for(var i=0;i 16 && k < 32 ) || (k > 32 && k < 41)); - - //delete selection before proceeding - if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){ - clearBuffer(pos.begin,pos.end); - } - //backspace and delete get special treatment - if(k==8){//backspace - while(pos.begin-->=0){ - if(!locked[pos.begin]){ - buffer[pos.begin]=settings.placeholder; - if($.browser.opera){ - //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character. - writeBuffer(pos.begin); - setCaretPosition(this,pos.begin+1); - }else{ - writeBuffer(); - setCaretPosition(this,pos.begin); - } - return false; - } - } - }else if(k==46){//delete - clearBuffer(pos.begin,pos.begin+1); - writeBuffer(); - setCaretPosition(this,pos.begin); - return false; - }else if (k==27){ - clearBuffer(0,mask.length); - writeBuffer(); - setCaretPosition(this,0); - return false; - } - - }); - - input.keypress(function(e){ - if(ignore){ - ignore=false; - return; - } - e=e||window.event; - var k=e.charCode||e.keyCode||e.which; - - var pos=getCaretPosition(this); - var caretPos=pos.begin; - - if(e.ctrlKey || e.altKey){//Ignore - return true; - }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters - while(pos.begin=buffer.length) - settings.completed.call(input); - else - setCaretPosition(this,caretPos); - - return false; - }); - - /*Helper Methods*/ - function clearBuffer(start,end){ - for(var i=start;i").addClass("ui-icon " + o.icons.header).prependTo(this.headers); - this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected); - - // IE7-/Win - Extra vertical space in lists fixed - if ($.browser.msie) { - this.element.find('a').css('zoom', '1'); - } - - this.resize(); - - //ARIA - this.element.attr('role','tablist'); - - this.headers - .attr('role','tab') - .bind('keydown', function(event) { return self._keydown(event); }) - .next() - .attr('role','tabpanel'); - - this.headers - .not(this.active || "") - .attr('aria-expanded','false') - .attr("tabIndex", "-1") - .next() - .hide(); - - // make sure at least one header is in the tab order - if (!this.active.length) { - this.headers.eq(0).attr('tabIndex','0'); - } else { - this.active - .attr('aria-expanded','true') - .attr('tabIndex', '0'); - } - - // only need links in taborder for Safari - if (!$.browser.safari) - this.headers.find('a').attr('tabIndex','-1'); - - if (o.event) { - this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); }); - } - - }, - - destroy: function() { - var o = this.options; - - this.element - .removeClass("ui-accordion ui-widget ui-helper-reset") - .removeAttr("role") - .unbind('.accordion') - .removeData('accordion'); - - this.headers - .unbind(".accordion") - .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top") - .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex"); - - this.headers.find("a").removeAttr("tabindex"); - this.headers.children(".ui-icon").remove(); - var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active"); - if (o.autoHeight || o.fillHeight) { - contents.css("height", ""); - } - }, - - _setData: function(key, value) { - if(key == 'alwaysOpen') { key = 'collapsible'; value = !value; } - $.widget.prototype._setData.apply(this, arguments); - }, - - _keydown: function(event) { - - var o = this.options, keyCode = $.ui.keyCode; - - if (o.disabled || event.altKey || event.ctrlKey) - return; - - var length = this.headers.length; - var currentIndex = this.headers.index(event.target); - var toFocus = false; - - switch(event.keyCode) { - case keyCode.RIGHT: - case keyCode.DOWN: - toFocus = this.headers[(currentIndex + 1) % length]; - break; - case keyCode.LEFT: - case keyCode.UP: - toFocus = this.headers[(currentIndex - 1 + length) % length]; - break; - case keyCode.SPACE: - case keyCode.ENTER: - return this._clickHandler({ target: event.target }, event.target); - } - - if (toFocus) { - $(event.target).attr('tabIndex','-1'); - $(toFocus).attr('tabIndex','0'); - toFocus.focus(); - return false; - } - - return true; - - }, - - resize: function() { - - var o = this.options, maxHeight; - - if (o.fillSpace) { - - if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); } - maxHeight = this.element.parent().height(); - if($.browser.msie) { this.element.parent().css('overflow', defOverflow); } - - this.headers.each(function() { - maxHeight -= $(this).outerHeight(); - }); - - var maxPadding = 0; - this.headers.next().each(function() { - maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height()); - }).height(Math.max(0, maxHeight - maxPadding)) - .css('overflow', 'auto'); - - } else if ( o.autoHeight ) { - maxHeight = 0; - this.headers.next().each(function() { - maxHeight = Math.max(maxHeight, $(this).outerHeight()); - }).height(maxHeight); - } - - }, - - activate: function(index) { - // call clickHandler with custom event - var active = this._findActive(index)[0]; - this._clickHandler({ target: active }, active); - }, - - _findActive: function(selector) { - return selector - ? typeof selector == "number" - ? this.headers.filter(":eq(" + selector + ")") - : this.headers.not(this.headers.not(selector)) - : selector === false - ? $([]) - : this.headers.filter(":eq(0)"); - }, - - _clickHandler: function(event, target) { - - var o = this.options; - if (o.disabled) return false; - - // called only when using activate(false) to close all parts programmatically - if (!event.target && o.collapsible) { - this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all") - .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header); - this.active.next().addClass('ui-accordion-content-active'); - var toHide = this.active.next(), - data = { - options: o, - newHeader: $([]), - oldHeader: o.active, - newContent: $([]), - oldContent: toHide - }, - toShow = (this.active = $([])); - this._toggle(toShow, toHide, data); - return false; - } - - // get the click target - var clicked = $(event.currentTarget || target); - var clickedIsActive = clicked[0] == this.active[0]; - - // if animations are still active, or the active header is the target, ignore click - if (this.running || (!o.collapsible && clickedIsActive)) { - return false; - } - - // switch classes - this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all") - .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header); - this.active.next().addClass('ui-accordion-content-active'); - if (!clickedIsActive) { - clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top") - .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected); - clicked.next().addClass('ui-accordion-content-active'); - } - - // find elements to show and hide - var toShow = clicked.next(), - toHide = this.active.next(), - data = { - options: o, - newHeader: clickedIsActive && o.collapsible ? $([]) : clicked, - oldHeader: this.active, - newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'), - oldContent: toHide.find('> *') - }, - down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] ); - - this.active = clickedIsActive ? $([]) : clicked; - this._toggle(toShow, toHide, data, clickedIsActive, down); - - return false; - - }, - - _toggle: function(toShow, toHide, data, clickedIsActive, down) { - - var o = this.options, self = this; - - this.toShow = toShow; - this.toHide = toHide; - this.data = data; - - var complete = function() { if(!self) return; return self._completed.apply(self, arguments); }; - - // trigger changestart event - this._trigger("changestart", null, this.data); - - // count elements to animate - this.running = toHide.size() === 0 ? toShow.size() : toHide.size(); - - if (o.animated) { - - var animOptions = {}; - - if ( o.collapsible && clickedIsActive ) { - animOptions = { - toShow: $([]), - toHide: toHide, - complete: complete, - down: down, - autoHeight: o.autoHeight || o.fillSpace - }; - } else { - animOptions = { - toShow: toShow, - toHide: toHide, - complete: complete, - down: down, - autoHeight: o.autoHeight || o.fillSpace - }; - } - - if (!o.proxied) { - o.proxied = o.animated; - } - - if (!o.proxiedDuration) { - o.proxiedDuration = o.duration; - } - - o.animated = $.isFunction(o.proxied) ? - o.proxied(animOptions) : o.proxied; - - o.duration = $.isFunction(o.proxiedDuration) ? - o.proxiedDuration(animOptions) : o.proxiedDuration; - - var animations = $.ui.accordion.animations, - duration = o.duration, - easing = o.animated; - - if (!animations[easing]) { - animations[easing] = function(options) { - this.slide(options, { - easing: easing, - duration: duration || 700 - }); - }; - } - - animations[easing](animOptions); - - } else { - - if (o.collapsible && clickedIsActive) { - toShow.toggle(); - } else { - toHide.hide(); - toShow.show(); - } - - complete(true); - - } - - toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur(); - toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus(); - - }, - - _completed: function(cancel) { - - var o = this.options; - - this.running = cancel ? 0 : --this.running; - if (this.running) return; - - if (o.clearStyle) { - this.toShow.add(this.toHide).css({ - height: "", - overflow: "" - }); - } - - this._trigger('change', null, this.data); - } - -}); - - -$.extend($.ui.accordion, { - version: "1.7.1", - defaults: { - active: null, - alwaysOpen: true, //deprecated, use collapsible - animated: 'slide', - autoHeight: true, - clearStyle: false, - collapsible: false, - event: "click", - fillSpace: false, - header: "> li > :first-child,> :not(li):even", - icons: { - header: "ui-icon-triangle-1-e", - headerSelected: "ui-icon-triangle-1-s" - }, - navigation: false, - navigationFilter: function() { - return this.href.toLowerCase() == location.href.toLowerCase(); - } - }, - animations: { - slide: function(options, additions) { - options = $.extend({ - easing: "swing", - duration: 300 - }, options, additions); - if ( !options.toHide.size() ) { - options.toShow.animate({height: "show"}, options); - return; - } - if ( !options.toShow.size() ) { - options.toHide.animate({height: "hide"}, options); - return; - } - var overflow = options.toShow.css('overflow'), - percentDone, - showProps = {}, - hideProps = {}, - fxAttrs = [ "height", "paddingTop", "paddingBottom" ], - originalWidth; - // fix width before calculating height of hidden element - var s = options.toShow; - originalWidth = s[0].style.width; - s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) ); - - $.each(fxAttrs, function(i, prop) { - hideProps[prop] = 'hide'; - - var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/); - showProps[prop] = { - value: parts[1], - unit: parts[2] || 'px' - }; - }); - options.toShow.css({ height: 0, overflow: 'hidden' }).show(); - options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{ - step: function(now, settings) { - // only calculate the percent when animating height - // IE gets very inconsistent results when animating elements - // with small values, which is common for padding - if (settings.prop == 'height') { - percentDone = (settings.now - settings.start) / (settings.end - settings.start); - } - - options.toShow[0].style[settings.prop] = - (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit; - }, - duration: options.duration, - easing: options.easing, - complete: function() { - if ( !options.autoHeight ) { - options.toShow.css("height", ""); - } - options.toShow.css("width", originalWidth); - options.toShow.css({overflow: overflow}); - options.complete(); - } - }); - }, - bounceslide: function(options) { - this.slide(options, { - easing: options.down ? "easeOutBounce" : "swing", - duration: options.down ? 1000 : 200 - }); - }, - easeslide: function(options) { - this.slide(options, { - easing: "easeinout", - duration: 700 - }); - } - } -}); - -})(jQuery); diff --git a/www/include/jslibs/jquery-validation/demo/multipart/js/ui.core.js b/www/include/jslibs/jquery-validation/demo/multipart/js/ui.core.js deleted file mode 100644 index 6be9993b98..0000000000 --- a/www/include/jslibs/jquery-validation/demo/multipart/js/ui.core.js +++ /dev/null @@ -1,519 +0,0 @@ -/* - * jQuery UI 1.7.1 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI - */ -;jQuery.ui || (function($) { - -var _remove = $.fn.remove, - isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9); - -//Helper functions and ui object -$.ui = { - version: "1.7.1", - - // $.ui.plugin is deprecated. Use the proxy pattern instead. - plugin: { - add: function(module, option, set) { - var proto = $.ui[module].prototype; - for(var i in set) { - proto.plugins[i] = proto.plugins[i] || []; - proto.plugins[i].push([option, set[i]]); - } - }, - call: function(instance, name, args) { - var set = instance.plugins[name]; - if(!set || !instance.element[0].parentNode) { return; } - - for (var i = 0; i < set.length; i++) { - if (instance.options[set[i][0]]) { - set[i][1].apply(instance.element, args); - } - } - } - }, - - contains: function(a, b) { - return document.compareDocumentPosition - ? a.compareDocumentPosition(b) & 16 - : a !== b && a.contains(b); - }, - - hasScroll: function(el, a) { - - //If overflow is hidden, the element might have extra content, but the user wants to hide it - if ($(el).css('overflow') == 'hidden') { return false; } - - var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop', - has = false; - - if (el[scroll] > 0) { return true; } - - // TODO: determine which cases actually cause this to happen - // if the element doesn't have the scroll set, see if it's possible to - // set the scroll - el[scroll] = 1; - has = (el[scroll] > 0); - el[scroll] = 0; - return has; - }, - - isOverAxis: function(x, reference, size) { - //Determines when x coordinate is over "b" element axis - return (x > reference) && (x < (reference + size)); - }, - - isOver: function(y, x, top, left, height, width) { - //Determines when x, y coordinates is over "b" element - return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); - }, - - keyCode: { - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - NUMPAD_ADD: 107, - NUMPAD_DECIMAL: 110, - NUMPAD_DIVIDE: 111, - NUMPAD_ENTER: 108, - NUMPAD_MULTIPLY: 106, - NUMPAD_SUBTRACT: 109, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SHIFT: 16, - SPACE: 32, - TAB: 9, - UP: 38 - } -}; - -// WAI-ARIA normalization -if (isFF2) { - var attr = $.attr, - removeAttr = $.fn.removeAttr, - ariaNS = "http://www.w3.org/2005/07/aaa", - ariaState = /^aria-/, - ariaRole = /^wairole:/; - - $.attr = function(elem, name, value) { - var set = value !== undefined; - - return (name == 'role' - ? (set - ? attr.call(this, elem, name, "wairole:" + value) - : (attr.apply(this, arguments) || "").replace(ariaRole, "")) - : (ariaState.test(name) - ? (set - ? elem.setAttributeNS(ariaNS, - name.replace(ariaState, "aaa:"), value) - : attr.call(this, elem, name.replace(ariaState, "aaa:"))) - : attr.apply(this, arguments))); - }; - - $.fn.removeAttr = function(name) { - return (ariaState.test(name) - ? this.each(function() { - this.removeAttributeNS(ariaNS, name.replace(ariaState, "")); - }) : removeAttr.call(this, name)); - }; -} - -//jQuery plugins -$.fn.extend({ - remove: function() { - // Safari has a native remove event which actually removes DOM elements, - // so we have to use triggerHandler instead of trigger (#3037). - $("*", this).add(this).each(function() { - $(this).triggerHandler("remove"); - }); - return _remove.apply(this, arguments ); - }, - - enableSelection: function() { - return this - .attr('unselectable', 'off') - .css('MozUserSelect', '') - .unbind('selectstart.ui'); - }, - - disableSelection: function() { - return this - .attr('unselectable', 'on') - .css('MozUserSelect', 'none') - .bind('selectstart.ui', function() { return false; }); - }, - - scrollParent: function() { - var scrollParent; - if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { - scrollParent = this.parents().filter(function() { - return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); - }).eq(0); - } else { - scrollParent = this.parents().filter(function() { - return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); - }).eq(0); - } - - return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; - } -}); - - -//Additional selectors -$.extend($.expr[':'], { - data: function(elem, i, match) { - return !!$.data(elem, match[3]); - }, - - focusable: function(element) { - var nodeName = element.nodeName.toLowerCase(), - tabIndex = $.attr(element, 'tabindex'); - return (/input|select|textarea|button|object/.test(nodeName) - ? !element.disabled - : 'a' == nodeName || 'area' == nodeName - ? element.href || !isNaN(tabIndex) - : !isNaN(tabIndex)) - // the element and all of its ancestors must be visible - // the browser may report that the area is hidden - && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length; - }, - - tabbable: function(element) { - var tabIndex = $.attr(element, 'tabindex'); - return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable'); - } -}); - - -// $.widget is a factory to create jQuery plugins -// taking some boilerplate code out of the plugin code -function getter(namespace, plugin, method, args) { - function getMethods(type) { - var methods = $[namespace][plugin][type] || []; - return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods); - } - - var methods = getMethods('getter'); - if (args.length == 1 && typeof args[0] == 'string') { - methods = methods.concat(getMethods('getterSetter')); - } - return ($.inArray(method, methods) != -1); -} - -$.widget = function(name, prototype) { - var namespace = name.split(".")[0]; - name = name.split(".")[1]; - - // create plugin method - $.fn[name] = function(options) { - var isMethodCall = (typeof options == 'string'), - args = Array.prototype.slice.call(arguments, 1); - - // prevent calls to internal methods - if (isMethodCall && options.substring(0, 1) == '_') { - return this; - } - - // handle getter methods - if (isMethodCall && getter(namespace, name, options, args)) { - var instance = $.data(this[0], name); - return (instance ? instance[options].apply(instance, args) - : undefined); - } - - // handle initialization and non-getter methods - return this.each(function() { - var instance = $.data(this, name); - - // constructor - (!instance && !isMethodCall && - $.data(this, name, new $[namespace][name](this, options))._init()); - - // method call - (instance && isMethodCall && $.isFunction(instance[options]) && - instance[options].apply(instance, args)); - }); - }; - - // create widget constructor - $[namespace] = $[namespace] || {}; - $[namespace][name] = function(element, options) { - var self = this; - - this.namespace = namespace; - this.widgetName = name; - this.widgetEventPrefix = $[namespace][name].eventPrefix || name; - this.widgetBaseClass = namespace + '-' + name; - - this.options = $.extend({}, - $.widget.defaults, - $[namespace][name].defaults, - $.metadata && $.metadata.get(element)[name], - options); - - this.element = $(element) - .bind('setData.' + name, function(event, key, value) { - if (event.target == element) { - return self._setData(key, value); - } - }) - .bind('getData.' + name, function(event, key) { - if (event.target == element) { - return self._getData(key); - } - }) - .bind('remove', function() { - return self.destroy(); - }); - }; - - // add widget prototype - $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype); - - // TODO: merge getter and getterSetter properties from widget prototype - // and plugin prototype - $[namespace][name].getterSetter = 'option'; -}; - -$.widget.prototype = { - _init: function() {}, - destroy: function() { - this.element.removeData(this.widgetName) - .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled') - .removeAttr('aria-disabled'); - }, - - option: function(key, value) { - var options = key, - self = this; - - if (typeof key == "string") { - if (value === undefined) { - return this._getData(key); - } - options = {}; - options[key] = value; - } - - $.each(options, function(key, value) { - self._setData(key, value); - }); - }, - _getData: function(key) { - return this.options[key]; - }, - _setData: function(key, value) { - this.options[key] = value; - - if (key == 'disabled') { - this.element - [value ? 'addClass' : 'removeClass']( - this.widgetBaseClass + '-disabled' + ' ' + - this.namespace + '-state-disabled') - .attr("aria-disabled", value); - } - }, - - enable: function() { - this._setData('disabled', false); - }, - disable: function() { - this._setData('disabled', true); - }, - - _trigger: function(type, event, data) { - var callback = this.options[type], - eventName = (type == this.widgetEventPrefix - ? type : this.widgetEventPrefix + type); - - event = $.Event(event); - event.type = eventName; - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if (event.originalEvent) { - for (var i = $.event.props.length, prop; i;) { - prop = $.event.props[--i]; - event[prop] = event.originalEvent[prop]; - } - } - - this.element.trigger(event, data); - - return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false - || event.isDefaultPrevented()); - } -}; - -$.widget.defaults = { - disabled: false -}; - - -/** Mouse Interaction Plugin **/ - -$.ui.mouse = { - _mouseInit: function() { - var self = this; - - this.element - .bind('mousedown.'+this.widgetName, function(event) { - return self._mouseDown(event); - }) - .bind('click.'+this.widgetName, function(event) { - if(self._preventClickEvent) { - self._preventClickEvent = false; - event.stopImmediatePropagation(); - return false; - } - }); - - // Prevent text selection in IE - if ($.browser.msie) { - this._mouseUnselectable = this.element.attr('unselectable'); - this.element.attr('unselectable', 'on'); - } - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind('.'+this.widgetName); - - // Restore text selection in IE - ($.browser.msie - && this.element.attr('unselectable', this._mouseUnselectable)); - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - // TODO: figure out why we have to use originalEvent - event.originalEvent = event.originalEvent || {}; - if (event.originalEvent.mouseHandled) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var self = this, - btnIsLeft = (event.which == 1), - elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - self.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return self._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return self._mouseUp(event); - }; - $(document) - .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - // preventDefault() is used to prevent the selection of text here - - // however, in Safari, this causes select boxes not to be selectable - // anymore, so this fix is needed - ($.browser.safari || event.preventDefault()); - - event.originalEvent.mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.browser.msie && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - this._preventClickEvent = (event.target == this._mouseDownEvent.target); - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(event) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(event) {}, - _mouseDrag: function(event) {}, - _mouseStop: function(event) {}, - _mouseCapture: function(event) { return true; } -}; - -$.ui.mouse.defaults = { - cancel: null, - distance: 1, - delay: 0 -}; - -})(jQuery); diff --git a/www/include/jslibs/jquery-validation/demo/multipart/style.css b/www/include/jslibs/jquery-validation/demo/multipart/style.css deleted file mode 100644 index fbf08c24f8..0000000000 --- a/www/include/jslibs/jquery-validation/demo/multipart/style.css +++ /dev/null @@ -1,705 +0,0 @@ -/******************************************** - AUTHOR: Erwin Aligam - WEBSITE: http://www.styleshout.com/ - TEMPLATE NAME: Techmania 1.0 - TEMPLATE CODE: S-0003 - VERSION: 1.1 - *******************************************/ - /******************************************** - HTML ELEMENTS -********************************************/ /* Top elements */ - /** { margin:0; padding: 0; }*/ -body { - background-color: #000; - color: #555; - font: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif; - text-align: center; - margin: 15px 0; -} - -/* links */ -a { - color: #213540; - background: inherit; - text-decoration: none; -} - -a:hover { - color: #3e4255; - text-decoration: underline; - background: inherit; -} - -/* headers */ -h1,h2,h3 { - font-family: 'Trebuchet MS', Arial, sans-serif; - font-weight: bold; -} - -h1 { - font-size: 1.5em; - margin: 10px 15px; -} - -h2 { - font-size: 1.3em; - text-transform: uppercase; - color: #339900; - margin: 10px 15px; -} - -h3 { - font-size: 1.1em; - color: #333; - margin: 16px 0 0 18px; -} - -h1,h2,h3 { - padding: 0; -} - -p { - line-height: 1.4em; - padding: 0 15px; -} - -p.error { - color: #CC0033; -} - -ul,ol { - margin: 10px 6px; - padding: 0 15px; - color: #006699; -} - -ul span,ol span { - color: #666666; -} - -/* images */ -img { - border: 2px solid #CCC; -} - -img.float-right { - margin: 5px 0px 10px 10px; -} - -img.float-left { - margin: 5px 10px 10px 0px; -} - -code { - margin: 5px 0; - padding: 10px; - text-align: left; - display: block; - overflow: auto; - font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace; - /* white-space: pre; */ - background: #FAFAFA; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; -} - -acronym { - cursor: help; - border-bottom: 1px solid #777; -} - -blockquote { - margin: 15px; - padding: 0 0 0 32px; - background: #FAFAFA url(quote.gif) no-repeat 5px 10px !important; - background-position: 8px 10px; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; - font-weight: bold; -} - -/* form elements */ -fieldset { - margin: 12px 12px 18px; - padding-left: 6px; - border: 1px solid #004080; - color: #006699; -} - -fieldset fieldset { - border: 1px solid #9ea190; - margin: 17px 14px; -} - -form { - margin: 10px 15px; - padding: 0; -} - -label { - font-weight: bold; - margin: 5px 3px 0 0; - width: 160px; - text-align: right; - float: left; -} - -legend { - font-size: 1.2em; - padding: 0 12px; - font-weight: 900; - background-color: #F9F9F9; -} - -fieldset fieldset legend { - font-size: 1em; - color: #1a2129; - padding: 0 18px; - margin-left: 75px; -} - -input { - padding: 3px; - margin: 4px 0; - border: 1px solid #CFCED3; - font: normal 1em Verdana, sans-serif; - color: #777; -} - -textarea { - width: 400px; - padding: 4px; - font: normal 1em Verdana, sans-serif; - border: 1px solid #eee; - height: 100px; - display: block; - color: #777; -} - -input.button { - margin: 0; - font: bold 12px Arial, Sans-serif; - border: 1px solid #EAEAEA; - padding: 3px 4px; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - color: #333; /* color: #339900; */ - cursor: pointer; -} - -input.submitbutton { - background-color: #006699; - color: #FFF; - background-image: none; - font-weight: 900; - border: 1px solid #EAEAEA; - margin: 0 0 0 200px; -} - -/* search */ -#sidebar #search { - background: #f2f2f2; - margin: 0 15px; - padding: 5px 0; -} - -#sidebar #search img { - vertical-align: bottom; -} - -#sidebar #search .textbox { - background: #FFF url(input.png) no-repeat top left; - border: 1px solid #EAEAEA; - font-size: 11px; - padding: 3px; - width: 110px; -} - -#sidebar #search input.searchbutton { - margin: 0; - font: bold 100% Arial, Sans-serif; - border: 1px solid #CCC; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - padding: 1px; - height: 25px; - color: #333; - width: 55px; -} - -/***************************** - LAYOUT -******************************/ -#wrap { - margin: 0 auto; - padding: 0; - text-align: left; - background-color: #FFF; - width: 790px; -} - -#content-wrap { - clear: both; - margin: 0; - padding: 0; - width: 790px; -} - -/* header */ -#header { - position: relative; - clear: left; - width: 790px; - height: 137px; - margin: 0; - padding: 0; - background: #000 url(headerbg.jpg) no-repeat left bottom; -} - -#header h1#logo-text { - float: right; - margin: 39px 58px 0 0; - padding: 0; - font: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif; - letter-spacing: -2px; - color: #FFF; - text-transform: none; - /* change the values of top and right to adjust the position of the logo*/ - top: 35px; - right: 30px; -} - -#header h2#slogan { - float: right; - margin: 0 38px 0 0; - padding: 0; - font: bold 1.5em 'Trebuchet MS', Arial, Sans-serif; - text-transform: none; - letter-spacing: 1px; - color: #FFF; - clear: both; - text-align: right; -} - -#header h1#logo-text span { - color: #CFCED3; -} - -/* menu tabs */ -#header #header-tabs { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 25px; - background: #000; - font: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif; -} - -#header-tabs ul { - margin: 0; - padding: 2px 0px 0px 0px; - list-style: none; -} - -#header-tabs li { - display: inline; - margin: 0; - padding: 0; -} - -#header-tabs a { - float: left; - background: url(tableft.gif) no-repeat left top; - margin: 0; - padding: 0 0 0 4px; - text-decoration: none; -} - -#header-tabs a span { - float: left; - display: block; - background: url(tabright.gif) no-repeat right top; - padding: 7px 15px 4px 8px; - color: #CCC; -} - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#header-tabs a span { - float: none; -} - -/* End IE5-Mac hack */ -#header-tabs a:hover span { - color: #FFF; -} - -#header-tabs a:hover { - background-position: 0% -42px; -} - -#header-tabs a:hover span { - background-position: 100% -42px; -} - -#header-tabs #current a { - background-position: 0% -42px; -} - -#header-tabs #current a span { - background-position: 100% -42px; - color: #FFF; -} - -/* main content */ -#main { - width: 748px; - margin: 0; - padding: 8px 16px; - background-color: #F9F9F9; - border-left: 5px solid #000; - border-right: 5px solid #000; -} - -#main h1 { - padding: 8px 0 3px 25px; - text-transform: none; - border-bottom: 2px solid #f2f2f2; - color: #339900; -} - -/* sidebar */ -#sidebar { /* float: right; - width: 245px; - margin: 0 0 10px 0; padding: 0; - background-color: inherit; */ - display: none; -} - -#sidebar h1 { - padding: 8px 0px 3px 25px; - background: url(square_arrow.gif) no-repeat 0% .7em; - text-transform: none; - color: #339900; -} - -#sidebar ul.sidemenu { - list-style: none; - margin: 10px 15px; - padding: 0; -} - -#sidebar ul.sidemenu li { - margin-bottom: 1px; - border: 1px solid #f2f2f2; -} - -#sidebar ul.sidemenu a { - display: block; - font-weight: bold; - color: #333; - text-decoration: none; - padding: 2px 5px 2px 10px; - background: #f2f2f2; - border-left: 5px solid #CCC; - min-height: 18px; -} - -* html body #sidebar ul.sidemenu a { - height: 18px; -} - -#sidebar ul.sidemenu a:hover { - padding: 2px 5px 2px 10px; - background: #f2f2f2; - color: #339900; - border-left: 5px solid #72A545; -} - -/* footer */ -#footer { - clear: both; - height: 40px; - color: #CCC; - background: #000; - margin: 0; - font-size: 92%; -} - -#footer a { - text-decoration: none; - font-weight: bold; - color: #FFF; -} - -#footer #footer-left { - width: 68%; - float: left; - text-align: left; - margin: 0; - padding: 10px; -} - -#footer #footer-right { - width: 25%; - float: right; - text-align: right; - margin: 0; - padding: 10px; -} - -/* alignment classes */ -.float-left { - float: left; -} - -.float-right { - float: right; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -/* additional classes */ -.clear { - clear: both; -} - -.hide { - display: none; -} - -.gray { - color: #CCC; -} - -.comments { - color: #333; - background: #FFF; - text-align: right; - border-top: 1px dashed #EFF0F1; - border-bottom: 1px dashed #EFF0F1; - padding: 5px 0; - margin-top: 20px; -} - -html { - min-height: 100.1%; -} - -/* ------ one ------------*/ -body .mainText { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; -} - -#demoText h1,.mainText h1 { - font-size: 130%; - color: #0099FF; - text-decoration: none; - font-family: Arial, Helvetica, sans-serif; - margin: 5px 4px 5px 24px; - background: none; - padding: 0; - border: none; - text-transform: capitalize; -} - -.mainText h2 { - font-size: 110%; - color: #000033; - font-family: Arial, Helvetica, sans-serif; - text-decoration: none; - background: none; - margin: 4px 32px 6px 22px; - text-transform: capitalize; -} - -.mainText h3 { - font-size: 120%; - font-weight: 900; - margin: 14px 0 0 0; - text-align: center; - color: #000033; -} - -.mainText table { - width: 95%; - border: 1px solid #0099FF; - border-collapse: collapse; - margin: 18px 7px; -} - -.mainText table td { - background-color: #99CCFF; - color: #000033; - padding: 4px; -} - -.mainText table th { - background-color: #000033; - color: #99CCFF; - padding: 4px; -} - -.mainText .linkPar a { - color: #000033; - text-decoration: underline; -} - -.mainText .linkPar a:hover { - color: #660033; - text-decoration: none; - font-weight: 900; -} - -.pusher { - cursor: pointer; - padding: 3px 10px 3px 22px; - font-weight: 900; - font-size: 14px; -} - -/* ------------- form specific styles are here -------------- */ -fieldset { - margin: 0; - border: 1px solid #C3DE00; - padding: 10px; - /*border:none; -padding:0;*/ - color: #7563A5; -} - -legend { - background-color: #FFFFFF; - text-align: center; - color: #097981; - padding: 0 12px; -} - -label { - text-align: right; - width: 298px; - border-right: 1px dotted #099; - padding-right: 5px; - margin: 0 0 8px 0; - float: left; - clear: left; - display: block; - color: #7563A5; -} - -label.checkbox,label.textarea { - border: none; -} - -label.lgfield { - border: none; - text-align: center; - clear: both; - float: none; - width: 100%; -} - -fieldset input,fieldset select,fieldset textarea { - margin-left: 10px; - margin-bottom: 8px; -} - -select.longfield { - margin: 0 0 0 115px; -} - -input [type="radio"],input [type="checkbox"] { - margin: 2px 0 0 4px; -} - -textarea { - width: 250px; - float: left; -} - -/*Get Help Form Styles*/ -p.formDisclaimer { - text-align: center; - margin: 32px 24px 12px 0; - font-style: italic; -} - -div.buttonWrapper { - margin: 28px 0 14px 0; - clear: both; - text-align: center; -} - -.formspacer { - height: 1em; - clear: both; -} - -.hideField { - display: none; -} - -.pushOpen { - height: 18em; -} - -/* ----- error message for field validation ----- */ -#stepForm label.warning { - text-align: left; - width: auto; - padding: 0; - margin: 0 0 0 10px; - float: none; - clear: none; - display: inline; - color: #CC3366; - font-size: 10px; - border: none; - border-top: 1px dotted #CC3366; -} - -div.requiredNotice { - width: 140px; - float: right; - margin: 0 24px 0 0; - padding: 0; -} - -h3.stepHeader { - text-align: left; - font-size: 16px; - font-weight: bold; - margin: 0 0 24px 24px; - color: #676cac; -} - -ul#stepForm,ul#stepForm li { - margin: 0; - padding: 0; -} - -ul#stepForm li { - list-style: none; -} - -/* Form Buttons */ -input.submitbutton,.nextbutton,.prevbutton { - width: 100px; - height: 40px; - background-color: #663399; - padding: 4px; - border: 1px solid #339933; - cursor: pointer; - text-align: center; - color: #FFFFFF; - margin: 7px; -} - -input.submitbutton { - background-color: #006699; -} \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/radio-checkbox-select-demo.html b/www/include/jslibs/jquery-validation/demo/radio-checkbox-select-demo.html deleted file mode 100644 index 12c417ca09..0000000000 --- a/www/include/jslibs/jquery-validation/demo/radio-checkbox-select-demo.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -
    - Validating a form with a radio and checkbox buttons -
    - Gender - - - -
    -
    - Family - - - - -
    -

    - - -
    - -

    -
    - Spam - - - - -
    -

    - -

    -
    -
    - -
    -

    Some tests with selects

    -

    -
    - -

    - -

    -
    - -

    - -

    -
    - -

    - -

    -
    - -

    - -

    -
    - -Back to main page - -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/tabs/index.html b/www/include/jslibs/jquery-validation/demo/tabs/index.html deleted file mode 100644 index 8a9f69c3b9..0000000000 --- a/www/include/jslibs/jquery-validation/demo/tabs/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - -jQuery UI tabs integration demo - - - - - - - - - - - - - - -
    - -
    - -
    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    -
    -

    - - -

    -

    - - -

    -

    - - - - -

    -
    -
    -

    - - -

    -

    - - -

    -

    - - -

    -
    -
    - - -
    - - - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/themerollered.html b/www/include/jslibs/jquery-validation/demo/themerollered.html deleted file mode 100644 index 445a22bde2..0000000000 --- a/www/include/jslibs/jquery-validation/demo/themerollered.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -jQuery validation plug-in - main demo - - - - - - - - - - - - - - - - - - - - -
    -
    - Please provide your name, email address (won't be published) and a comment -

    - - -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - -
    -
    - Validating a complete form -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    - Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo - - - - -
    -

    - -

    -
    -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/tinymce/index.html b/www/include/jslibs/jquery-validation/demo/tinymce/index.html deleted file mode 100644 index 8bfd18220d..0000000000 --- a/www/include/jslibs/jquery-validation/demo/tinymce/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -jQuery Validation plugin: integration with TinyMCE - - - - - - - - - - -
    -

    TinyMCE and Validation Plugin integration example

    - - - - -
    - - - - -
    - -
    - - - diff --git a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/editor_template.js b/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/editor_template.js deleted file mode 100644 index d19fb53f72..0000000000 --- a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/editor_template.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/img/icons.gif b/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/img/icons.gif deleted file mode 100644 index 16af141ff0..0000000000 Binary files a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/img/icons.gif and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/langs/en.js b/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/langs/en.js deleted file mode 100644 index 6f095311d2..0000000000 --- a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/langs/en.js +++ /dev/null @@ -1,11 +0,0 @@ -tinyMCE.addI18n('en.simple',{ -bold_desc:"Bold (Ctrl+B)", -italic_desc:"Italic (Ctrl+I)", -underline_desc:"Underline (Ctrl+U)", -striketrough_desc:"Strikethrough", -bullist_desc:"Unordered list", -numlist_desc:"Ordered list", -undo_desc:"Undo (Ctrl+Z)", -redo_desc:"Redo (Ctrl+Y)", -cleanup_desc:"Cleanup messy code" -}); \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css b/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css deleted file mode 100644 index 32feae628d..0000000000 --- a/www/include/jslibs/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css +++ /dev/null @@ -1,32 +0,0 @@ -/* Reset */ -.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} - -/* Containers */ -.defaultSimpleSkin {position:relative} -.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;} -.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;} -.defaultSimpleSkin .mceToolbar {height:24px;} - -/* Layout */ -.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px} -.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} - -/* Button */ -.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px} -.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} -.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} - -/* Separator */ -.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px} - -/* Theme */ -.defaultSimpleSkin span.mce_bold {background-position:0 0} -.defaultSimpleSkin span.mce_italic {background-position:-60px 0} -.defaultSimpleSkin span.mce_underline {background-position:-140px 0} -.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0} -.defaultSimpleSkin span.mce_undo {background-position:-160px 0} -.defaultSimpleSkin span.mce_redo {background-position:-100px 0} -.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0} -.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} -.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0} diff --git a/www/include/jslibs/jquery-validation/demo/tinymce/tiny_mce.js b/www/include/jslibs/jquery-validation/demo/tinymce/tiny_mce.js deleted file mode 100644 index 55aba6e3b2..0000000000 --- a/www/include/jslibs/jquery-validation/demo/tinymce/tiny_mce.js +++ /dev/null @@ -1 +0,0 @@ -var tinymce={majorVersion:'3',minorVersion:'2.1.1',releaseDate:'2008-11-27',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;t.isAir=/adobeair/i.test(ua);if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i=items.length){for(i=0,l=base.length;i=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0,l=base.length-(bp-1);i=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n,xp;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(!t.selectorRe)t.selectorRe=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i;;if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp='';each(v.split(' '),function(v){v=t.selectorRe.exec(v);xp+=v[1]?'//'+v[1]:'//*';if(v[2])xp+="[@id='"+v[2]+"']";if(v[3]){each(v[3].split('.'),function(n){xp+="[@class = '"+n+"' or contains(concat(' ', @class, ' '), ' "+n+" ')]";});}});t.cache[v]=xp;}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext())o.push(n);});return o;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;t.setAttribs(e,a);if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(!is(v,'string')){each(v,function(v,n){t.setStyle(e,n,v);});return;}if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case"shape":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':case'checked':case'disabled':case'readonly':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647||v==='32768')v='';break;case'compact':case'noshade':case'nowrap':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return!e||e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='
    '+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='
    '+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/

    <\/p>|]+)><\/p>|/gi,' 

    ');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/

    ]+)>|

    /g,'

    ');h=h.replace(/<\/p>/g,'
    ');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x|]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|]+)>/gi,'<$1i$2>');}else if(isIE){h=h.replace(/'/g,''');h=h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,'');}h=h.replace(/]+)\/>|/gi,'');if(s.keep_values){if(/)/g,'\n');s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,'');return s;};h=h.replace(/]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type="text/javascript"';if(b)b='';return''+b+'';});h=h.replace(/]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return''+b+'';});}h=h.replace(//g,'');h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e,n,v;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;n=e.firstChild;v='';if(n){do{v+=n.nodeValue;}while(n.nextSibling);}return v||s;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&';case'"':return'"';case'<':return'<';case'>':return'>';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.get(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;if(e.domLoaded)return;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,element_format:s.element_format,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('','g'),'');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'
    ');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='
    '+o.content+'
    ';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;if(e){o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;}},save:function(o){var t=this,e=t.getElement(),h,f;if(!e||!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'
    ');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&(c==91||c==93))||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'']);t.addShortcut('ctrl+7','',['FormatBlock',false,'

    ']);t.addShortcut('ctrl+8','',['FormatBlock',false,'

    ']);t.addShortcut('ctrl+9','',['FormatBlock',false,'
    ']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(tinymce.isMac&&o.ctrl!=e.metaKey)return;else if(!tinymce.isMac&&o.ctrl!=e.ctrlKey)return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function process(no){var n,sp,nl,x;if(!s.inline_styles)return;nl=t.dom.select('font',no);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}};t.onPreProcess.add(function(ed,o){if(o.get)process(o.node);});t.onSetContent.add(function(ed,o){if(o.initial)process(o.node);});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;function isBlock(n){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);};tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else{if(ed.settings.convert_fonts_to_spans)t._applyInlineStyle('span',{style:{fontFamily:v}});else ed.getDoc().execCommand('FontName',false,v);}},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fc,fs;if(s.convert_fonts_to_spans&&v>=1&&v<=7){fs=tinymce.explode(s.font_size_style_values);fc=tinymce.explode(s.font_size_classes);if(fc)v=fc[v-1]||v;else v=fs[v-1]||v;}if(v>=1&&v<=7)ed.getDoc().execCommand('FontSize',false,v);else this._applyInlineStyle('span',{style:{fontSize:v}});},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontSize;if(!v&&(isOpera||isWebKit)){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return v||this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontFamily.replace(/, /g,',').replace(/[\'\"]/g,'').toLowerCase();if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('
    ');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},ForeColor:function(ui,v){var ed=this.editor;if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{color:v}});return;}else ed.getDoc().execCommand('ForeColor',false,v);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{backgroundColor:val}});return;}function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'

    '):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!ed.settings.inline_styles&&!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE'));},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),isBlock);eb=dom.getParent(s.getEnd(),isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_applyInlineStyle:function(na,at,op){var t=this,ed=t.editor,dom=ed.dom,bm,lo={},kh;na=na.toUpperCase();if(op&&op.check_classes&&at['class'])op.check_classes.push(at['class']);function replaceFonts(){var bm;each(dom.select(tinymce.isWebKit&&!tinymce.isAir?'span':'font'),function(n){if(n.style.fontFamily=='mceinline'||n.face=='mceinline'){if(!bm)bm=ed.selection.getBookmark();at._mce_new='1';dom.replace(dom.create(na,at),n,1);}});each(dom.select(na),function(n){if(n.getAttribute('_mce_new')){function removeStyle(n){if(n.nodeType==1){each(at.style,function(v,k){dom.setStyle(n,k,'');});if(at['class']&&n.className&&op){each(op.check_classes,function(c){if(dom.hasClass(n,c))dom.removeClass(n,c);});}}};each(dom.select(na,n),removeStyle);if(n.parentNode&&n.parentNode.nodeType==1&&n.parentNode.childNodes.length==1)removeStyle(n.parentNode);dom.getParent(n.parentNode,function(pn){if(pn.nodeType==1){if(at.style){each(at.style,function(v,k){var sv;if(!lo[k]&&(sv=dom.getStyle(pn,k))){if(sv===v)dom.setStyle(n,k,'');lo[k]=1;}});}if(at['class']&&pn.className&&op){each(op.check_classes,function(c){if(dom.hasClass(pn,c))dom.removeClass(n,c);});}}return false;});n.removeAttribute('_mce_new');}});each(dom.select(na).reverse(),function(n){var c=0;each(dom.getAttribs(n),function(an){if(an.nodeName.substring(0,1)!='_'&&dom.getAttrib(n,an.nodeName)!=''){c++;}});if(c==0)dom.remove(n,1);});ed.selection.moveToBookmark(bm);return!!bm;};ed.focus();ed.getDoc().execCommand('FontName',false,'mceinline');replaceFonts();if(kh=t._applyInlineStyle.keyhandler){ed.onKeyUp.remove(kh);ed.onKeyPress.remove(kh);ed.onKeyDown.remove(kh);ed.onSetContent.remove(t._applyInlineStyle.chandler);}if(ed.selection.isCollapsed()){t._pendingStyles=tinymce.extend(t._pendingStyles||{},at.style);t._applyInlineStyle.chandler=ed.onSetContent.add(function(){delete t._pendingStyles;});t._applyInlineStyle.keyhandler=kh=function(e){if(t._pendingStyles){at.style=t._pendingStyles;delete t._pendingStyles;}if(replaceFonts()){ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);}if(e.type=='keyup')ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);};ed.onKeyDown.add(kh);ed.onKeyPress.add(kh);ed.onKeyUp.add(kh);}else t._pendingStyles=0;},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),isBlock);eb=dom.getParent(en||s.getEnd(),isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index','gi');t.rePadd=new RegExp(']+)><\\\/p>|]+)\\\/>|]+)>\\s+<\\\/p>|

    <\\\/p>||

    \\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp(']+)>[\\s\\u00a0]+<\\\/p>|

    [\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp(']+)>( | )<\\\/p>|

    ( | )<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp(']+)>\\s*
    \\s*<\\\/p>|

    \\s*
    \\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*
    \\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2>
    ');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2>
    ');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0');o.content=o.content.replace(t.reTrailBr,'');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('
    ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i,n,eid;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(r.startContainer.nodeType==1&&(n=r.startContainer.childNodes[r.startOffset])&&n.nodeType==1){eid=n.getAttribute("id");n.setAttribute("id","__mce");}else{if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}else if(!isIE&&(n=ed.dom.get('__mce'))){if(eid)n.setAttribute('id',eid);else n.removeAttribute('id');r=d.createRange();r.setStartBefore(n);r.setEndBefore(n);se.setRng(r);}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch,car;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'
    ');aft=ed.dom.add(sn,se.element,null,'
    ');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='
    ';function appendStyles(e,en){var nl=[],nn,n,i;e.innerHTML='';if(se.keep_styles){n=en;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)){nn=n.cloneNode(false);dom.setAttrib(nn,'id','');nl.push(nn);}}while(n=n.parentNode);}if(nl.length>0){for(i=nl.length-1,nn=e;i>=0;i--)nn=nn.appendChild(nl[i]);nl[0].innerHTML=isOpera?' ':'
    ';return nl[0];}else e.innerHTML=isOpera?' ':'
    ';};if(isEmpty(aft))car=appendStyles(aft,en);if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(car||aft):car||aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(yvp.y+vp.h){ed.getWin().scrollTo(0,y - - - -Test for jQuery validate() plugin - - - - - - - - - - - -

    -
    - A simple comment form with submit validation and default messages -

    - - -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - - - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/test/firebug/errorIcon.png b/www/include/jslibs/jquery-validation/test/firebug/errorIcon.png deleted file mode 100644 index 2d75261bb6..0000000000 Binary files a/www/include/jslibs/jquery-validation/test/firebug/errorIcon.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/test/firebug/firebug.css b/www/include/jslibs/jquery-validation/test/firebug/firebug.css deleted file mode 100644 index 1f041c4da9..0000000000 --- a/www/include/jslibs/jquery-validation/test/firebug/firebug.css +++ /dev/null @@ -1,209 +0,0 @@ - -html, body { - margin: 0; - background: #FFFFFF; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - overflow: hidden; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.toolbar { - height: 14px; - border-top: 1px solid ThreeDHighlight; - border-bottom: 1px solid ThreeDShadow; - padding: 2px 6px; - background: ThreeDFace; -} - -.toolbarRight { - position: absolute; - top: 4px; - right: 6px; -} - -#log { - overflow: auto; - position: absolute; - left: 0; - width: 100%; -} - -#commandLine { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 18px; - border: none; - border-top: 1px solid ThreeDShadow; -} - -/************************************************************************************************/ - -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; -} - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - font-family: Monaco, monospace; - color: red; - white-space: pre; -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - font-family: Monaco, monospace; - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; -} - -/************************************************************************************************/ - -.logRow-info, -.logRow-error, -.logRow-warning { - background: #FFFFFF no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png); -} - -.errorMessage { - vertical-align: top; - color: #FF0000; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ - -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - margin-left: 16px; -} - -.nodeTag { - color: blue; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText, -.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; -} - -.nodeComment { - color: DarkGreen; -} - -/************************************************************************************************/ - -.propertyNameCell { - vertical-align: top; -} - -.propertyName { - font-weight: bold; -} diff --git a/www/include/jslibs/jquery-validation/test/firebug/firebug.html b/www/include/jslibs/jquery-validation/test/firebug/firebug.html deleted file mode 100644 index 861e639326..0000000000 --- a/www/include/jslibs/jquery-validation/test/firebug/firebug.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - Firebug - - - - -
    - Clear - - Close - -
    -
    - - - - - diff --git a/www/include/jslibs/jquery-validation/test/firebug/firebug.js b/www/include/jslibs/jquery-validation/test/firebug/firebug.js deleted file mode 100644 index eb853b8244..0000000000 --- a/www/include/jslibs/jquery-validation/test/firebug/firebug.js +++ /dev/null @@ -1,672 +0,0 @@ - -if (!("console" in window) || !("firebug" in console)) { -(function() -{ - window.console = - { - log: function() - { - logFormatted(arguments, ""); - }, - - debug: function() - { - logFormatted(arguments, "debug"); - }, - - info: function() - { - logFormatted(arguments, "info"); - }, - - warn: function() - { - logFormatted(arguments, "warning"); - }, - - error: function() - { - logFormatted(arguments, "error"); - }, - - assert: function(truth, message) - { - if (!truth) - { - var args = []; - for (var i = 1; i < arguments.length; ++i) - args.push(arguments[i]); - - logFormatted(args.length ? args : ["Assertion Failure"], "error"); - throw message ? message : "Assertion Failure"; - } - }, - - dir: function(object) - { - var html = []; - - var pairs = []; - for (var name in object) - { - try - { - pairs.push([name, object[name]]); - } - catch (exc) - { - } - } - - pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; }); - - html.push(''); - for (var i = 0; i < pairs.length; ++i) - { - var name = pairs[i][0], value = pairs[i][1]; - - html.push('', - '', ''); - } - html.push('
    ', - escapeHTML(name), ''); - appendObject(value, html); - html.push('
    '); - - logRow(html, "dir"); - }, - - dirxml: function(node) - { - var html = []; - - appendNode(node, html); - logRow(html, "dirxml"); - }, - - group: function() - { - logRow(arguments, "group", pushGroup); - }, - - groupEnd: function() - { - logRow(arguments, "", popGroup); - }, - - time: function(name) - { - timeMap[name] = (new Date()).getTime(); - }, - - timeEnd: function(name) - { - if (name in timeMap) - { - var delta = (new Date()).getTime() - timeMap[name]; - logFormatted([name+ ":", delta+"ms"]); - delete timeMap[name]; - } - }, - - count: function() - { - this.warn(["count() not supported."]); - }, - - trace: function() - { - this.warn(["trace() not supported."]); - }, - - profile: function() - { - this.warn(["profile() not supported."]); - }, - - profileEnd: function() - { - }, - - clear: function() - { - consoleBody.innerHTML = ""; - }, - - open: function() - { - toggleConsole(true); - }, - - close: function() - { - if (frameVisible) - toggleConsole(); - } - }; - - // ******************************************************************************************** - - var consoleFrame = null; - var consoleBody = null; - var commandLine = null; - - var frameVisible = false; - var messageQueue = []; - var groupStack = []; - var timeMap = {}; - - var clPrefix = ">>> "; - - var isFirefox = navigator.userAgent.indexOf("Firefox") != -1; - var isIE = navigator.userAgent.indexOf("MSIE") != -1; - var isOpera = navigator.userAgent.indexOf("Opera") != -1; - var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1; - - // ******************************************************************************************** - - function toggleConsole(forceOpen) - { - frameVisible = forceOpen || !frameVisible; - if (consoleFrame) - consoleFrame.style.visibility = frameVisible ? "visible" : "hidden"; - else - waitForBody(); - } - - function focusCommandLine() - { - toggleConsole(true); - if (commandLine) - commandLine.focus(); - } - - function waitForBody() - { - if (document.body) - createFrame(); - else - setTimeout(waitForBody, 200); - } - - function createFrame() - { - if (consoleFrame) - return; - - window.onFirebugReady = function(doc) - { - window.onFirebugReady = null; - - var toolbar = doc.getElementById("toolbar"); - toolbar.onmousedown = onSplitterMouseDown; - - commandLine = doc.getElementById("commandLine"); - addEvent(commandLine, "keydown", onCommandLineKeyDown); - - addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown); - - consoleBody = doc.getElementById("log"); - layout(); - flush(); - } - - var baseURL = getFirebugURL(); - - consoleFrame = document.createElement("iframe"); - consoleFrame.setAttribute("src", baseURL+"/firebug.html"); - consoleFrame.setAttribute("frameBorder", "0"); - consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden"); - consoleFrame.style.zIndex = "2147483647"; - consoleFrame.style.position = "fixed"; - consoleFrame.style.width = "100%"; - consoleFrame.style.left = "0"; - consoleFrame.style.bottom = "0"; - consoleFrame.style.height = "200px"; - document.body.appendChild(consoleFrame); - } - - function getFirebugURL() - { - var scripts = document.getElementsByTagName("script"); - for (var i = 0; i < scripts.length; ++i) - { - if (scripts[i].src.indexOf("firebug.js") != -1) - { - var lastSlash = scripts[i].src.lastIndexOf("/"); - return scripts[i].src.substr(0, lastSlash); - } - } - } - - function evalCommandLine() - { - var text = commandLine.value; - commandLine.value = ""; - - logRow([clPrefix, text], "command"); - - var value; - try - { - value = eval(text); - } - catch (exc) - { - } - - console.log(value); - } - - function layout() - { - var toolbar = consoleBody.ownerDocument.getElementById("toolbar"); - var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight); - consoleBody.style.top = toolbar.offsetHeight + "px"; - consoleBody.style.height = height + "px"; - - commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px"; - } - - function logRow(message, className, handler) - { - if (consoleBody) - writeMessage(message, className, handler); - else - { - messageQueue.push([message, className, handler]); - waitForBody(); - } - } - - function flush() - { - var queue = messageQueue; - messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - writeMessage(queue[i][0], queue[i][1], queue[i][2]); - } - - function writeMessage(message, className, handler) - { - var isScrolledToBottom = - consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight; - - if (!handler) - handler = writeRow; - - handler(message, className); - - if (isScrolledToBottom) - consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight; - } - - function appendRow(row) - { - var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody; - container.appendChild(row); - } - - function writeRow(message, className) - { - var row = consoleBody.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - appendRow(row); - } - - function pushGroup(message, className) - { - logFormatted(message, className); - - var groupRow = consoleBody.ownerDocument.createElement("div"); - groupRow.className = "logGroup"; - var groupRowBox = consoleBody.ownerDocument.createElement("div"); - groupRowBox.className = "logGroupBox"; - groupRow.appendChild(groupRowBox); - appendRow(groupRowBox); - groupStack.push(groupRowBox); - } - - function popGroup() - { - groupStack.pop(); - } - - // ******************************************************************************************** - - function logFormatted(objects, className) - { - var html = []; - - var format = objects[0]; - var objIndex = 0; - - if (typeof(format) != "string") - { - format = ""; - objIndex = -1; - } - - var parts = parseFormat(format); - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - part.appender(object, html); - } - else - appendText(part, html); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - if (typeof(object) == "string") - appendText(object, html); - else - appendObject(object, html); - } - - logRow(html, className); - } - - function parseFormat(format) - { - var parts = []; - - var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/; - var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat}; - - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - var type = m[8] ? m[8] : m[5]; - var appender = type in appenderMap ? appenderMap[type] : appendObject; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({appender: appender, precision: precision}); - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - - return parts; - } - - function escapeHTML(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function objectToString(object) - { - try - { - return object+""; - } - catch (exc) - { - return null; - } - } - - // ******************************************************************************************** - - function appendText(object, html) - { - html.push(escapeHTML(objectToString(object))); - } - - function appendNull(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendString(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - } - - function appendInteger(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendFloat(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendFunction(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - } - - function appendObject(object, html) - { - try - { - if (object == undefined) - appendNull("undefined", html); - else if (object == null) - appendNull("null", html); - else if (typeof object == "string") - appendString(object, html); - else if (typeof object == "number") - appendInteger(object, html); - else if (typeof object == "function") - appendFunction(object, html); - else if (object.nodeType == 1) - appendSelector(object, html); - else if (typeof object == "object") - appendObjectFormatted(object, html); - else - appendText(object, html); - } - catch (exc) - { - } - } - - function appendObjectFormatted(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - } - - function appendSelector(object, html) - { - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - } - - function appendNode(node, html) - { - if (node.nodeType == 1) - { - html.push( - '
    ', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified) - continue; - - html.push(' ', attr.nodeName.toLowerCase(), - '="', escapeHTML(attr.nodeValue), - '"') - } - - if (node.firstChild) - { - html.push('>
    '); - - for (var child = node.firstChild; child; child = child.nextSibling) - appendNode(child, html); - - html.push('
    </', - node.nodeName.toLowerCase(), '>
    '); - } - else - html.push('/>
    '); - } - else if (node.nodeType == 3) - { - html.push('
    ', escapeHTML(node.nodeValue), - '
    '); - } - } - - // ******************************************************************************************** - - function addEvent(object, name, handler) - { - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); - } - - function removeEvent(object, name, handler) - { - if (document.all) - object.detachEvent("on"+name, handler); - else - object.removeEventListener(name, handler, false); - } - - function cancelEvent(event) - { - if (document.all) - event.cancelBubble = true; - else - event.stopPropagation(); - } - - function onError(msg, href, lineNo) - { - var html = []; - - var lastSlash = href.lastIndexOf("/"); - var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1); - - html.push( - '', msg, '', - '' - ); - - logRow(html, "error"); - }; - - function onKeyDown(event) - { - if (event.keyCode == 123) - toggleConsole(); - else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey - && (event.metaKey || event.ctrlKey)) - focusCommandLine(); - else - return; - - cancelEvent(event); - } - - function onSplitterMouseDown(event) - { - if (isSafari || isOpera) - return; - - addEvent(document, "mousemove", onSplitterMouseMove); - addEvent(document, "mouseup", onSplitterMouseUp); - - for (var i = 0; i < frames.length; ++i) - { - addEvent(frames[i].document, "mousemove", onSplitterMouseMove); - addEvent(frames[i].document, "mouseup", onSplitterMouseUp); - } - } - - function onSplitterMouseMove(event) - { - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - var clientY = event.clientY; - if (win != win.parent) - clientY += win.frameElement ? win.frameElement.offsetTop : 0; - - var height = consoleFrame.offsetTop + consoleFrame.clientHeight; - var y = height - clientY; - - consoleFrame.style.height = y + "px"; - layout(); - } - - function onSplitterMouseUp(event) - { - removeEvent(document, "mousemove", onSplitterMouseMove); - removeEvent(document, "mouseup", onSplitterMouseUp); - - for (var i = 0; i < frames.length; ++i) - { - removeEvent(frames[i].document, "mousemove", onSplitterMouseMove); - removeEvent(frames[i].document, "mouseup", onSplitterMouseUp); - } - } - - function onCommandLineKeyDown(event) - { - if (event.keyCode == 13) - evalCommandLine(); - else if (event.keyCode == 27) - commandLine.value = ""; - } - - window.onerror = onError; - addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown); - - if (document.documentElement.getAttribute("debug") == "true") - toggleConsole(true); -})(); -} diff --git a/www/include/jslibs/jquery-validation/test/firebug/firebugx.js b/www/include/jslibs/jquery-validation/test/firebug/firebugx.js deleted file mode 100644 index 5a467fc143..0000000000 --- a/www/include/jslibs/jquery-validation/test/firebug/firebugx.js +++ /dev/null @@ -1,10 +0,0 @@ - -if (!("console" in window) || !("firebug" in console)) -{ - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", - "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; - - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {} -} \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/test/firebug/infoIcon.png b/www/include/jslibs/jquery-validation/test/firebug/infoIcon.png deleted file mode 100644 index da1e5334c1..0000000000 Binary files a/www/include/jslibs/jquery-validation/test/firebug/infoIcon.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/test/firebug/warningIcon.png b/www/include/jslibs/jquery-validation/test/firebug/warningIcon.png deleted file mode 100644 index de51084e84..0000000000 Binary files a/www/include/jslibs/jquery-validation/test/firebug/warningIcon.png and /dev/null differ diff --git a/www/include/jslibs/jquery-validation/test/index-14.html b/www/include/jslibs/jquery-validation/test/index-14.html deleted file mode 100644 index b8ee2f18e3..0000000000 --- a/www/include/jslibs/jquery-validation/test/index-14.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - jQuery - Validation Test Suite - - - - - - - - - - - - - -

    jQuery Validation Plugin Test Suite

    - -

    - - - -
    -

    See this blog entry for more information.

    -

    - Here are some links in a normal paragraph: Google, - Google Groups. - This link has class="blog": - diveintomark - -

    -
    -

    Everything inside the red border is inside a div with id="foo".

    -

    This is a normal link: Yahoo

    -

    This link has class="blog": Simon Willison's Weblog

    - -
    -

    Try them out:

    -
      -
        - -
        - - - - -
        - -
        - - - - -
        - -
        - - -
        - -
        - - -
        - -
        - - -
        - -
        - -
        -
        -
          -
        • - -
        • -
        -
        - -
        - - -
        - -
        - - -
        - -
        - - -
        - -
        - -
        - -
        - - - -
        - -
        - - -
        - -
        - -
        - -
        -

        -
        - -
        - -
          - -
          - - - - - - -
            -
          -
          - -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          - -
          - - - - - - - -
          - -
          - - - -
          - - -
          -
          - - -
          -
          - -
          - -
          - -
          - -
          - -
          - -
          -
          - -
            - - - diff --git a/www/include/jslibs/jquery-validation/test/index.html b/www/include/jslibs/jquery-validation/test/index.html deleted file mode 100644 index 1a4b7ab21e..0000000000 --- a/www/include/jslibs/jquery-validation/test/index.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - jQuery - Validation Test Suite - - - - - - - - - - - - - -

            jQuery Validation Plugin Test Suite

            -

            -
            -

            -
              -
              test markup
              - - - -
              -

              See this blog entry for more information.

              -

              - Here are some links in a normal paragraph: Google, - Google Groups. - This link has class="blog": - diveintomark - -

              -
              -

              Everything inside the red border is inside a div with id="foo".

              -

              This is a normal link: Yahoo

              -

              This link has class="blog": Simon Willison's Weblog

              - -
              -

              Try them out:

              -
                -
                  - -
                  - - - - -
                  - -
                  - - - - -
                  - -
                  - - -
                  - -
                  - - -
                  - -
                  - - -
                  - -
                  - -
                  -
                  -
                    -
                  • - -
                  • -
                  -
                  - -
                  - - -
                  - -
                  - - -
                  - -
                  - - -
                  - -
                  - -
                  - -
                  - - - -
                  - -
                  - - -
                  - -
                  - -
                  - -
                  -

                  -
                  - -
                  - -
                    - -
                    - - - - - - -
                      -
                    -
                    - -
                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    - -
                    - - - - - - - -
                    - -
                    - - - -
                    - - -
                    -
                    - - -
                    -
                    - -
                    - -
                    - -
                    - -
                    - -
                    - -
                    -
                    - - - diff --git a/www/include/jslibs/jquery-validation/test/large.html b/www/include/jslibs/jquery-validation/test/large.html deleted file mode 100644 index 82c47f1f82..0000000000 --- a/www/include/jslibs/jquery-validation/test/large.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - -
                    -
                    - A simple comment form with submit validation and default messages -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -

                    - -

                    -
                    -
                    - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/test/messages.js b/www/include/jslibs/jquery-validation/test/messages.js deleted file mode 100644 index 0faf984ed8..0000000000 --- a/www/include/jslibs/jquery-validation/test/messages.js +++ /dev/null @@ -1,62 +0,0 @@ -module("messages"); - -test("predefined message not overwritten by addMethod(a, b, undefined)", function() { - var message = "my custom message"; - $.validator.messages.custom = message; - $.validator.addMethod("custom", function() {}); - same(message, $.validator.messages.custom); - delete $.validator.messages.custom; - delete $.validator.methods.custom; -}); - -test("group error messages", function() { - $.validator.addClassRules({ - requiredDateRange: {required:true, date:true, dateRange:true} - }); - $.validator.addMethod("dateRange", function() { - return new Date($("#fromDate").val()) < new Date($("#toDate").val()); - }, "Please specify a correct date range."); - var form = $("#dateRangeForm"); - form.validate({ - groups: { - dateRange: "fromDate toDate" - }, - errorPlacement: function(error) { - form.find(".errorContainer").append(error); - } - }); - ok( !form.valid() ); - equals( 1, form.find(".errorContainer *").length ); - equals( "Please enter a valid date.", form.find(".errorContainer label.error").text() ); - - $("#fromDate").val("12/03/2006"); - $("#toDate").val("12/01/2006"); - ok( !form.valid() ); - equals( "Please specify a correct date range.", form.find(".errorContainer label.error").text() ); - - $("#toDate").val("12/04/2006"); - ok( form.valid() ); - ok( form.find(".errorContainer label.error").is(":hidden") ); -}); - -test("read messages from metadata", function() { - var form = $("#testForm9") - form.validate(); - var e = $("#testEmail9") - e.valid(); - equals( form.find("label").text(), "required" ); - e.val("bla").valid(); - equals( form.find("label").text(), "email" ); -}); - - -test("read messages from metadata, with meta option specified, but no metadata in there", function() { - var form = $("#testForm1clean") - form.validate({ - meta: "validate", - rules: { - firstname: "required" - } - }); - ok(!form.valid(), "not valid"); -}); \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/test/methods.js b/www/include/jslibs/jquery-validation/test/methods.js deleted file mode 100644 index 15ce325090..0000000000 --- a/www/include/jslibs/jquery-validation/test/methods.js +++ /dev/null @@ -1,584 +0,0 @@ -(function($) { - -function methodTest( methodName ) { - var v = jQuery("#form").validate(); - var method = $.validator.methods[methodName]; - var element = $("#firstname")[0]; - return function(value, param) { - element.value = value; - return method.call( v, value, element, param ); - }; -} - -module("methods"); - -test("default messages", function() { - var m = $.validator.methods; - $.each(m, function(key) { - ok( jQuery.validator.messages[key], key + " has a default message." ); - }); -}); - -test("digit", function() { - var method = methodTest("digits"); - ok( method( "123" ), "Valid digits" ); - ok(!method( "123.000" ), "Invalid digits" ); - ok(!method( "123.000,00" ), "Invalid digits" ); - ok(!method( "123.0.0,0" ), "Invalid digits" ); - ok(!method( "x123" ), "Invalid digits" ); - ok(!method( "100.100,0,0" ), "Invalid digits" ); -}); - -test("url", function() { - var method = methodTest("url"); - ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" ); - ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" ); - ok( method( "http://192.168.8.5" ), "Valid IP Address" ) - ok(!method( "http://192.168.8." ), "Invalid IP Address" ) - ok(!method( "http://bassistance" ), "Invalid url" ); // valid - ok(!method( "http://bassistance." ), "Invalid url" ); // valid - ok(!method( "http://bassistance,de" ), "Invalid url" ); - ok(!method( "http://bassistance;de" ), "Invalid url" ); - ok(!method( "http://.bassistancede" ), "Invalid url" ); - ok(!method( "bassistance.de" ), "Invalid url" ); -}); - -test("url2 (tld optional)", function() { - var method = methodTest("url2"); - ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" ); - ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" ); - ok( method( "http://192.168.8.5" ), "Valid IP Address" ) - ok(!method( "http://192.168.8." ), "Invalid IP Address" ) - ok( method( "http://bassistance" ), "Invalid url" ); - ok( method( "http://bassistance." ), "Invalid url" ); - ok(!method( "http://bassistance,de" ), "Invalid url" ); - ok(!method( "http://bassistance;de" ), "Invalid url" ); - ok(!method( "http://.bassistancede" ), "Invalid url" ); - ok(!method( "bassistance.de" ), "Invalid url" ); -}); - -test("email", function() { - var method = methodTest("email"); - ok( method( "name@domain.tld" ), "Valid email" ); - ok( method( "name@domain.tl" ), "Valid email" ); - ok( method( "bart+bart@tokbox.com" ), "Valid email" ); - ok( method( "bart+bart@tokbox.travel" ), "Valid email" ); - ok( method( "n@d.tld" ), "Valid email" ); - ok( method( "ole@føtex.dk"), "Valid email" ); - ok( method( "jörn@bassistance.de"), "Valid email" ); - ok( method( "bla.blu@g.mail.com"), "Valid email" ); - ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" ); - ok( method( "\"Scott González\"@example.com" ), "Valid email" ); - ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label - ok(!method( "name" ), "Invalid email" ); - ok(!method( "name@" ), "Invalid email" ); - ok(!method( "name@domain" ), "Invalid email" ); - ok(!method( "name.@domain.tld" ), "Invalid email" ); - ok(!method( "name,@domain.tld" ), "Invalid email" ); - ok(!method( "name;@domain.tld" ), "Invalid email" ); -}); - -test("email2 (tld optional)", function() { - var method = methodTest("email2"); - ok( method( "name@domain.tld" ), "Valid email" ); - ok( method( "name@domain.tl" ), "Valid email" ); - ok( method( "bart+bart@tokbox.com" ), "Valid email" ); - ok( method( "bart+bart@tokbox.travel" ), "Valid email" ); - ok( method( "n@d.tld" ), "Valid email" ); - ok( method( "ole@føtex.dk"), "Valid email" ); - ok( method( "jörn@bassistance.de"), "Valid email" ); - ok( method( "bla.blu@g.mail.com"), "Valid email" ); - ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" ); - ok( method( "\"Scott González\"@example.com" ), "Valid email" ); - ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label - ok(!method( "name" ), "Invalid email" ); - ok(!method( "name@" ), "Invalid email" ); - ok( method( "name@domain" ), "Invalid email" ); - ok(!method( "name.@domain.tld" ), "Invalid email" ); - ok(!method( "name,@domain.tld" ), "Invalid email" ); - ok(!method( "name;@domain.tld" ), "Invalid email" ); -}); - -test("number", function() { - var method = methodTest("number"); - ok( method( "123" ), "Valid number" ); - ok( method( "-123" ), "Valid number" ); - ok( method( "123,000" ), "Valid number" ); - ok( method( "-123,000" ), "Valid number" ); - ok( method( "123,000.00" ), "Valid number" ); - ok( method( "-123,000.00" ), "Valid number" ); - ok(!method( "123.000,00" ), "Invalid number" ); - ok(!method( "123.0.0,0" ), "Invalid number" ); - ok(!method( "x123" ), "Invalid number" ); - ok(!method( "100.100,0,0" ), "Invalid number" ); - - ok( method( "" ), "Blank is valid" ); - ok( method( "123" ), "Valid decimal" ); - ok( method( "123000" ), "Valid decimal" ); - ok( method( "123000.12" ), "Valid decimal" ); - ok( method( "-123000.12" ), "Valid decimal" ); - ok( method( "123.000" ), "Valid decimal" ); - ok( method( "123,000.00" ), "Valid decimal" ); - ok( method( "-123,000.00" ), "Valid decimal" ); - ok(!method( "1230,000.00" ), "Invalid decimal" ); - ok(!method( "123.0.0,0" ), "Invalid decimal" ); - ok(!method( "x123" ), "Invalid decimal" ); - ok(!method( "100.100,0,0" ), "Invalid decimal" ); -}); - -/* disabled for now, need to figure out how to test localized methods -test("numberDE", function() { - var method = methodTest("numberDE"); - ok( method( "123" ), "Valid numberDE" ); - ok( method( "-123" ), "Valid numberDE" ); - ok( method( "123.000" ), "Valid numberDE" ); - ok( method( "-123.000" ), "Valid numberDE" ); - ok( method( "123.000,00" ), "Valid numberDE" ); - ok( method( "-123.000,00" ), "Valid numberDE" ); - ok(!method( "123,000.00" ), "Invalid numberDE" ); - ok(!method( "123,0,0.0" ), "Invalid numberDE" ); - ok(!method( "x123" ), "Invalid numberDE" ); - ok(!method( "100,100.0.0" ), "Invalid numberDE" ); - - ok( method( "" ), "Blank is valid" ); - ok( method( "123" ), "Valid decimalDE" ); - ok( method( "123000" ), "Valid decimalDE" ); - ok( method( "123000,12" ), "Valid decimalDE" ); - ok( method( "-123000,12" ), "Valid decimalDE" ); - ok( method( "123.000" ), "Valid decimalDE" ); - ok( method( "123.000,00" ), "Valid decimalDE" ); - ok( method( "-123.000,00" ), "Valid decimalDE" ) - ok(!method( "123.0.0,0" ), "Invalid decimalDE" ); - ok(!method( "x123" ), "Invalid decimalDE" ); - ok(!method( "100,100.0.0" ), "Invalid decimalDE" ); -}); -*/ - -test("date", function() { - var method = methodTest("date"); - ok( method( "06/06/1990" ), "Valid date" ); - ok( method( "6/6/06" ), "Valid date" ); - ok(!method( "1990x-06-06" ), "Invalid date" ); -}); - -test("dateISO", function() { - var method = methodTest("dateISO"); - ok( method( "1990-06-06" ), "Valid date" ); - ok( method( "1990/06/06" ), "Valid date" ); - ok( method( "1990-6-6" ), "Valid date" ); - ok( method( "1990/6/6" ), "Valid date" ); - ok(!method( "1990-106-06" ), "Invalid date" ); - ok(!method( "190-06-06" ), "Invalid date" ); -}); - -/* disabled for now, need to figure out how to test localized methods -test("dateDE", function() { - var method = methodTest("dateDE"); - ok( method( "03.06.1984" ), "Valid dateDE" ); - ok( method( "3.6.84" ), "Valid dateDE" ); - ok(!method( "6-6-06" ), "Invalid dateDE" ); - ok(!method( "1990-06-06" ), "Invalid dateDE" ); - ok(!method( "06/06/1990" ), "Invalid dateDE" ); - ok(!method( "6/6/06" ), "Invalid dateDE" ); -}); -*/ - -test("required", function() { - var v = jQuery("#form").validate(), - method = $.validator.methods.required, - e = $('#text1, #text1b, #hidden2, #select1, #select2'); - ok( method.call( v, e[0].value, e[0]), "Valid text input" ); - ok(!method.call( v, e[1].value, e[1]), "Invalid text input" ); - ok(!method.call( v, e[1].value, e[2]), "Invalid text input" ); - - ok(!method.call( v, e[2].value, e[3]), "Invalid select" ); - ok( method.call( v, e[3].value, e[4]), "Valid select" ); - - e = $('#area1, #area2, #pw1, #pw2'); - ok( method.call( v, e[0].value, e[0]), "Valid textarea" ); - ok(!method.call( v, e[1].value, e[1]), "Invalid textarea" ); - ok( method.call( v, e[2].value, e[2]), "Valid password input" ); - ok(!method.call( v, e[3].value, e[3]), "Invalid password input" ); - - e = $('#radio1, #radio2, #radio3'); - ok(!method.call( v, e[0].value, e[0]), "Invalid radio" ); - ok( method.call( v, e[1].value, e[1]), "Valid radio" ); - ok( method.call( v, e[2].value, e[2]), "Valid radio" ); - - e = $('#check1, #check2'); - ok( method.call( v, e[0].value, e[0]), "Valid checkbox" ); - ok(!method.call( v, e[1].value, e[1]), "Invalid checkbox" ); - - e = $('#select1, #select2, #select3, #select4'); - ok(!method.call( v, e[0].value, e[0]), "Invalid select" ); - ok( method.call( v, e[1].value, e[1]), "Valid select" ); - ok( method.call( v, e[2].value, e[2]), "Valid select" ); - ok( method.call( v, e[3].value, e[3]), "Valid select" ); -}); - -test("required with dependencies", function() { - var v = jQuery("#form").validate(), - method = $.validator.methods.required, - e = $('#hidden2, #select1, #area2, #radio1, #check2'); - ok( method.call( v, e[0].value, e[0], "asffsaa"), "Valid text input due to depencie not met" ); - ok(!method.call( v, e[0].value, e[0], "input"), "Invalid text input" ); - ok( method.call( v, e[0].value, e[0], function() { return false; }), "Valid text input due to depencie not met" ); - ok(!method.call( v, e[0].value, e[0], function() { return true; }), "Invalid text input" ); - ok( method.call( v, e[1].value, e[1], "asfsfa"), "Valid select due to dependency not met" ); - ok(!method.call( v, e[1].value, e[1], "input"), "Invalid select" ); - ok( method.call( v, e[2].value, e[2], "asfsafsfa"), "Valid textarea due to dependency not met" ); - ok(!method.call( v, e[2].value, e[2], "input"), "Invalid textarea" ); - ok( method.call( v, e[3].value, e[3], "asfsafsfa"), "Valid radio due to dependency not met" ); - ok(!method.call( v, e[3].value, e[3], "input"), "Invalid radio" ); - ok( method.call( v, e[4].value, e[4], "asfsafsfa"), "Valid checkbox due to dependency not met" ); - ok(!method.call( v, e[4].value, e[4], "input"), "Invalid checkbox" ); -}); - -test("minlength", function() { - var v = jQuery("#form").validate(), - method = $.validator.methods.minlength, - param = 2, - e = $('#text1, #text1c, #text2, #text3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); - ok( method.call( v, e[3].value, e[3], param), "Valid text input" ); - - e = $('#check1, #check2, #check3'); - ok(!method.call( v, e[0].value, e[0], param), "Valid checkbox" ); - ok( method.call( v, e[1].value, e[1], param), "Valid checkbox" ); - ok( method.call( v, e[2].value, e[2], param), "Invalid checkbox" ); - - e = $('#select1, #select2, #select3, #select4, #select5'); - ok(method.call( v, e[0].value, e[0], param), "Valid select " + e[0].id ); - ok(!method.call( v, e[1].value, e[1], param), "Invalid select " + e[1].id ); - ok( method.call( v, e[2].value, e[2], param), "Valid select " + e[2].id ); - ok( method.call( v, e[3].value, e[3], param), "Valid select " + e[3].id ); - ok( method.call( v, e[4].value, e[4], param), "Valid select " + e[4].id ); -}); - -test("maxlength", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.maxlength, - param = 4, - e = $('#text1, #text2, #text3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); - - e = $('#check1, #check2, #check3'); - ok( method.call( v, e[0].value, e[0], param), "Valid checkbox" ); - ok( method.call( v, e[1].value, e[1], param), "Invalid checkbox" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid checkbox" ); - - e = $('#select1, #select2, #select3, #select4'); - ok( method.call( v, e[0].value, e[0], param), "Valid select" ); - ok( method.call( v, e[1].value, e[1], param), "Valid select" ); - ok( method.call( v, e[2].value, e[2], param), "Valid select" ); - ok(!method.call( v, e[3].value, e[3], param), "Invalid select" ); -}); - -test("rangelength", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.rangelength, - param = [2, 4], - e = $('#text1, #text2, #text3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); -}); - -test("min", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.min, - param = 8, - e = $('#value1, #value2, #value3'); - ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok( method.call( v, e[2].value, e[2], param), "Valid text input" ); -}); - -test("max", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.max, - param = 12, - e = $('#value1, #value2, #value3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); -}); - -test("range", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.range, - param = [4,12], - e = $('#value1, #value2, #value3'); - ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); -}); - -test("equalTo", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.equalTo, - e = $('#text1, #text2'); - ok( method.call( v, "Test", e[0], "#text1"), "Text input" ); - ok( method.call( v, "T", e[1], "#text2"), "Another one" ); -}); - -test("creditcard", function() { - var method = methodTest("creditcard"); - ok( method( "446-667-651" ), "Valid creditcard number" ); - ok( !method( "asdf" ), "Invalid creditcard number" ); -}); - -test("accept", function() { - var method = methodTest("accept"); - ok( method( "picture.gif" ), "Valid default accept type" ); - ok( method( "picture.jpg" ), "Valid default accept type" ); - ok( method( "picture.jpeg" ), "Valid default accept type" ); - ok( method( "picture.png" ), "Valid default accept type" ); - ok( !method( "picture.pgn" ), "Invalid default accept type" ); - - var v = jQuery("#form").validate(), - method = function(value, param) { - return $.validator.methods.accept.call(v, value, $('#text1')[0], param) - }; - ok( method( "picture.doc", "doc"), "Valid custom accept type" ); - ok( method( "picture.pdf", "doc|pdf"), "Valid custom accept type" ); - ok( method( "picture.pdf", "pdf|doc"), "Valid custom accept type" ); - ok( !method( "picture.pdf", "doc"), "Invalid custom accept type" ); - ok( !method( "picture.doc", "pdf"), "Invalid custom accept type" ); - - ok( method( "picture.pdf", "doc,pdf"), "Valid custom accept type, comma seperated" ); - ok( method( "picture.pdf", "pdf,doc"), "Valid custom accept type, comma seperated" ); - ok( !method( "picture.pdf", "gop,top"), "Invalid custom accept type, comma seperated" ); -}); - -test("remote", function() { - expect(7); - stop(); - var e = $("#username"); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: "users.php" - } - }, - messages: { - username: { - required: "Please", - remote: jQuery.validator.format("{0} in use") - } - }, - submitHandler: function() { - ok( false, "submitHandler may never be called when validating only elements"); - } - }); - $(document).ajaxStop(function() { - $(document).unbind("ajaxStop"); - equals( 1, v.size(), "There must be one error" ); - equals( "Peter in use", v.errorList[0].message ); - - $(document).ajaxStop(function() { - $(document).unbind("ajaxStop"); - equals( 1, v.size(), "There must be one error" ); - equals( "Peter2 in use", v.errorList[0].message ); - start(); - }); - e.val("Peter2"); - ok( !v.element(e), "new value, new request" ); - }); - ok( !v.element(e), "invalid element, nothing entered yet" ); - e.val("Peter"); - ok( !v.element(e), "still invalid, because remote validation must block until it returns" ); -}); - -test("remote, customized ajax options", function() { - expect(2); - stop(); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: { - url: "users.php", - type: "post", - beforeSend: function(request, settings) { - same(settings.type, "post"); - same(settings.data, "username=asdf&email=email.com"); - }, - data: { - email: function() { - return "email.com"; - } - }, - complete: function() { - start(); - } - } - } - } - }); - $("#username").val("asdf"); - $("#userForm").valid(); -}); - - -test("remote extensions", function() { - expect(5); - stop(); - var e = $("#username"); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: "users2.php" - } - }, - messages: { - username: { - required: "Please" - } - }, - submitHandler: function() { - ok( false, "submitHandler may never be called when validating only elements"); - } - }); - $(document).ajaxStop(function() { - $(document).unbind("ajaxStop"); - equals( 1, v.size(), "There must be one error" ); - equals( v.errorList[0].message, "asdf is already taken, please try something else" ); - v.element(e); - equals( v.errorList[0].message, "asdf is already taken, please try something else", "message doesn't change on revalidation" ); - start(); - }); - ok( !v.element(e), "invalid element, nothing entered yet" ); - e.val("asdf"); - ok( !v.element(e), "still invalid, because remote validation must block until it returns" ); -}); - -module("additional methods"); - -test("phone (us)", function() { - var method = methodTest("phoneUS"); - ok( method( "1(212)-999-2345" ), "Valid us phone number" ); - ok( method( "212 999 2344" ), "Valid us phone number" ); - ok( method( "212-999-0983" ), "Valid us phone number" ); - ok(!method( "111-123-5434" ), "Invalid us phone number" ); - ok(!method( "212 123 4567" ), "Invalid us phone number" ); -}); - -test("dateITA", function() { - var method = methodTest("dateITA"); - ok( method( "01/01/1900" ), "Valid date ITA" ); - ok(!method( "01/13/1990" ), "Invalid date ITA" ); - ok(!method( "01.01.1900" ), "Invalid date ITA" ); -}); - -test("time", function() { - var method = methodTest("time"); - ok( method("00:00"), "Valid time, lower bound" ); - ok( method("23:59"), "Valid time, upper bound" ); - ok( !method("24:60"), "Invalid time" ); - ok( !method("24:00"), "Invalid time" ); - ok( !method("29:59"), "Invalid time" ); - ok( !method("30:00"), "Invalid time" ); -}); - -test("minWords", function() { - var method = methodTest("minWords"); - ok( method("hello worlds", 2), "plain text, valid" ); - ok( method("hello world", 2), "html, valid" ); - ok( !method("hello", 2), "plain text, invalid" ); - ok( !method("world", 2), "html, invalid" ); - ok( !method("world
                    ", 2), "html, invalid" ); -}); - -test("maxWords", function() { - var method = methodTest("maxWords"); - ok( method("hello", 2), "plain text, valid" ); - ok( method("world", 2), "html, valid" ); - ok( method("world
                    ", 2), "html, valid" ); - ok( !method("hello worlds", 2), "plain text, invalid" ); - ok( !method("hello world", 2), "html, invalid" ); -}); - -function testCardTypeByNumber(number, cardname, expected) { - $("#cardnumber").val(number); - var actual = $("#ccform").valid(); - equals(actual, expected, $.format("Expect card number {0} to validate to {1}, actually validated to ", number, expected)); -} - -test('creditcardtypes, all', function() { - $("#ccform").validate({ - rules: { - cardnumber: { - creditcard: true, - creditcardtypes: { - all: true - } - } - } - }); - - testCardTypeByNumber("4111-1111-1111-1111", "VISA", true) - testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", true) - testCardTypeByNumber("6111-1111-1111-1116", "Discover", true) - testCardTypeByNumber("3400-0000-0000-009", "AMEX", true); - - testCardTypeByNumber("4111-1111-1111-1110", "VISA", false) - testCardTypeByNumber("5432-1111-1111-1111", "MasterCard", false) - testCardTypeByNumber("6611-6611-6611-6611", "Discover", false) - testCardTypeByNumber("3777-7777-7777-7777", "AMEX", false) - -}); - -test('creditcardtypes, visa', function() { - $("#ccform").validate({ - rules: { - cardnumber: { - creditcard: true, - creditcardtypes: { - visa: true - } - } - } - }); - - testCardTypeByNumber("4111-1111-1111-1111", "VISA", true) - testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", false) - testCardTypeByNumber("6111-1111-1111-1116", "Discover", false) - testCardTypeByNumber("3400-0000-0000-009", "AMEX", false); -}); - -test('creditcardtypes, mastercard', function() { - $("#ccform").validate({ - rules: { - cardnumber: { - creditcard: true, - creditcardtypes: { - mastercard: true - } - } - } - }); - - testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", true) - testCardTypeByNumber("6111-1111-1111-1116", "Discover", false) - testCardTypeByNumber("3400-0000-0000-009", "AMEX", false); - testCardTypeByNumber("4111-1111-1111-1111", "VISA", false); -}); - -})(jQuery); \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/test/qunit/qunit.css b/www/include/jslibs/jquery-validation/test/qunit/qunit.css deleted file mode 100644 index a6a831c2ce..0000000000 --- a/www/include/jslibs/jquery-validation/test/qunit/qunit.css +++ /dev/null @@ -1,197 +0,0 @@ -/** Font Family and Sizes */ - -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; -} - -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } -#qunit-tests { font-size: smaller; } - - -/** Resets */ - -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { - margin: 0; - padding: 0; -} - - -/** Header */ - -#qunit-header { - padding: 0.5em 0 0.5em 1em; - - color: #8699a4; - background-color: #0d3349; - - font-size: 1.5em; - line-height: 1em; - font-weight: normal; - - border-radius: 15px 15px 0 0; - -moz-border-radius: 15px 15px 0 0; - -webkit-border-top-right-radius: 15px; - -webkit-border-top-left-radius: 15px; -} - -#qunit-header a { - text-decoration: none; - color: #c2ccd1; -} - -#qunit-header a:hover, -#qunit-header a:focus { - color: #fff; -} - -#qunit-banner { - height: 5px; -} - -#qunit-testrunner-toolbar { - padding: 0.5em 0 0.5em 2em; - color: #5E740B; - background-color: #eee; -} - -#qunit-userAgent { - padding: 0.5em 0 0.5em 2.5em; - background-color: #2b81af; - color: #fff; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} - - -/** Tests: Pass/Fail */ - -#qunit-tests { - list-style-position: inside; -} - -#qunit-tests li { - padding: 0.4em 0.5em 0.4em 2.5em; - border-bottom: 1px solid #fff; - list-style-position: inside; -} - -#qunit-tests li strong { - cursor: pointer; -} - -#qunit-tests ol { - margin-top: 0.5em; - padding: 0.5em; - - background-color: #fff; - - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - - box-shadow: inset 0px 2px 13px #999; - -moz-box-shadow: inset 0px 2px 13px #999; - -webkit-box-shadow: inset 0px 2px 13px #999; -} - -#qunit-tests table { - border-collapse: collapse; - margin-top: .2em; -} - -#qunit-tests th { - text-align: right; - vertical-align: top; - padding: 0 .5em 0 0; -} - -#qunit-tests td { - vertical-align: top; -} - -#qunit-tests pre { - margin: 0; - white-space: pre-wrap; - word-wrap: break-word; -} - -#qunit-tests del { - background-color: #e0f2be; - color: #374e0c; - text-decoration: none; -} - -#qunit-tests ins { - background-color: #ffcaca; - color: #500; - text-decoration: none; -} - -/*** Test Counts */ - -#qunit-tests b.counts { color: black; } -#qunit-tests b.passed { color: #5E740B; } -#qunit-tests b.failed { color: #710909; } - -#qunit-tests li li { - margin: 0.5em; - padding: 0.4em 0.5em 0.4em 0.5em; - background-color: #fff; - border-bottom: none; - list-style-position: inside; -} - -/*** Passing Styles */ - -#qunit-tests li li.pass { - color: #5E740B; - background-color: #fff; - border-left: 26px solid #C6E746; -} - -#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } -#qunit-tests .pass .test-name { color: #366097; } - -#qunit-tests .pass .test-actual, -#qunit-tests .pass .test-expected { color: #999999; } - -#qunit-banner.qunit-pass { background-color: #C6E746; } - -/*** Failing Styles */ - -#qunit-tests li li.fail { - color: #710909; - background-color: #fff; - border-left: 26px solid #EE5757; -} - -#qunit-tests .fail { color: #000000; background-color: #EE5757; } -#qunit-tests .fail .test-name, -#qunit-tests .fail .module-name { color: #000000; } - -#qunit-tests .fail .test-actual { color: #EE5757; } -#qunit-tests .fail .test-expected { color: green; } - -#qunit-banner.qunit-fail { background-color: #EE5757; } - - -/** Footer */ - -#qunit-testresult { - padding: 0.5em 0.5em 0.5em 2.5em; - - color: #2b81af; - background-color: #D2E0E6; - - border-radius: 0 0 15px 15px; - -moz-border-radius: 0 0 15px 15px; - -webkit-border-bottom-right-radius: 15px; - -webkit-border-bottom-left-radius: 15px; -} - -/** Fixture */ - -#qunit-fixture { - position: absolute; - top: -10000px; - left: -10000px; -} diff --git a/www/include/jslibs/jquery-validation/test/qunit/qunit.js b/www/include/jslibs/jquery-validation/test/qunit/qunit.js deleted file mode 100644 index 7a5c2703ce..0000000000 --- a/www/include/jslibs/jquery-validation/test/qunit/qunit.js +++ /dev/null @@ -1,1414 +0,0 @@ -/* - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2011 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - */ - -(function(window) { - -var defined = { - setTimeout: typeof window.setTimeout !== "undefined", - sessionStorage: (function() { - try { - return !!sessionStorage.getItem; - } catch(e){ - return false; - } - })() -} - -var testId = 0; - -var Test = function(name, testName, expected, testEnvironmentArg, async, callback) { - this.name = name; - this.testName = testName; - this.expected = expected; - this.testEnvironmentArg = testEnvironmentArg; - this.async = async; - this.callback = callback; - this.assertions = []; -}; -Test.prototype = { - init: function() { - var tests = id("qunit-tests"); - if (tests) { - var b = document.createElement("strong"); - b.innerHTML = "Running " + this.name; - var li = document.createElement("li"); - li.appendChild( b ); - li.id = this.id = "test-output" + testId++; - tests.appendChild( li ); - } - }, - setup: function() { - if (this.module != config.previousModule) { - if ( config.previousModule ) { - QUnit.moduleDone( { - name: config.previousModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - config.previousModule = this.module; - config.moduleStats = { all: 0, bad: 0 }; - QUnit.moduleStart( { - name: this.module - } ); - } - - config.current = this; - this.testEnvironment = extend({ - setup: function() {}, - teardown: function() {} - }, this.moduleTestEnvironment); - if (this.testEnvironmentArg) { - extend(this.testEnvironment, this.testEnvironmentArg); - } - - QUnit.testStart( { - name: this.testName - } ); - - // allow utility functions to access the current test environment - // TODO why?? - QUnit.current_testEnvironment = this.testEnvironment; - - try { - if ( !config.pollution ) { - saveGlobal(); - } - - this.testEnvironment.setup.call(this.testEnvironment); - } catch(e) { - QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message ); - } - }, - run: function() { - if ( this.async ) { - QUnit.stop(); - } - - if ( config.notrycatch ) { - this.callback.call(this.testEnvironment); - return; - } - try { - this.callback.call(this.testEnvironment); - } catch(e) { - fail("Test " + this.testName + " died, exception and test follows", e, this.callback); - QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) ); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if ( config.blocking ) { - start(); - } - } - }, - teardown: function() { - try { - checkPollution(); - this.testEnvironment.teardown.call(this.testEnvironment); - } catch(e) { - QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message ); - } - }, - finish: function() { - if ( this.expected && this.expected != this.assertions.length ) { - QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" ); - } - - var good = 0, bad = 0, - tests = id("qunit-tests"); - - config.stats.all += this.assertions.length; - config.moduleStats.all += this.assertions.length; - - if ( tests ) { - var ol = document.createElement("ol"); - - for ( var i = 0; i < this.assertions.length; i++ ) { - var assertion = this.assertions[i]; - - var li = document.createElement("li"); - li.className = assertion.result ? "pass" : "fail"; - li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed"); - ol.appendChild( li ); - - if ( assertion.result ) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - // store result when possible - defined.sessionStorage && sessionStorage.setItem("qunit-" + this.testName, bad); - - if (bad == 0) { - ol.style.display = "none"; - } - - var b = document.createElement("strong"); - b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; - - addEvent(b, "click", function() { - var next = b.nextSibling, display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function(e) { - var target = e && e.target ? e.target : window.event.srcElement; - if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { - target = target.parentNode; - } - if ( window.location && target.nodeName.toLowerCase() === "strong" ) { - window.location.search = "?" + encodeURIComponent(getText([target]).replace(/\(.+\)$/, "").replace(/(^\s*|\s*$)/g, "")); - } - }); - - var li = id(this.id); - li.className = bad ? "fail" : "pass"; - li.style.display = resultDisplayStyle(!bad); - li.removeChild( li.firstChild ); - li.appendChild( b ); - li.appendChild( ol ); - - } else { - for ( var i = 0; i < this.assertions.length; i++ ) { - if ( !this.assertions[i].result ) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - try { - QUnit.reset(); - } catch(e) { - fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset); - } - - QUnit.testDone( { - name: this.testName, - failed: bad, - passed: this.assertions.length - bad, - total: this.assertions.length - } ); - }, - - queue: function() { - var test = this; - synchronize(function() { - test.init(); - }); - function run() { - // each of these can by async - synchronize(function() { - test.setup(); - }); - synchronize(function() { - test.run(); - }); - synchronize(function() { - test.teardown(); - }); - synchronize(function() { - test.finish(); - }); - } - // defer when previous test run passed, if storage is available - var bad = defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.testName); - if (bad) { - run(); - } else { - synchronize(run); - }; - } - -} - -var QUnit = { - - // call on start of module test to prepend name to all tests - module: function(name, testEnvironment) { - config.currentModule = name; - config.currentModuleTestEnviroment = testEnvironment; - }, - - asyncTest: function(testName, expected, callback) { - if ( arguments.length === 2 ) { - callback = expected; - expected = 0; - } - - QUnit.test(testName, expected, callback, true); - }, - - test: function(testName, expected, callback, async) { - var name = '' + testName + '', testEnvironmentArg; - - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - // is 2nd argument a testEnvironment? - if ( expected && typeof expected === 'object') { - testEnvironmentArg = expected; - expected = null; - } - - if ( config.currentModule ) { - name = '' + config.currentModule + ": " + name; - } - - if ( !validTest(config.currentModule + ": " + testName) ) { - return; - } - - var test = new Test(name, testName, expected, testEnvironmentArg, async, callback); - test.module = config.currentModule; - test.moduleTestEnvironment = config.currentModuleTestEnviroment; - test.queue(); - }, - - /** - * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - */ - expect: function(asserts) { - config.current.expected = asserts; - }, - - /** - * Asserts true. - * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - */ - ok: function(a, msg) { - a = !!a; - var details = { - result: a, - message: msg - }; - msg = escapeHtml(msg); - QUnit.log(details); - config.current.assertions.push({ - result: a, - message: msg - }); - }, - - /** - * Checks that the first two arguments are equal, with an optional message. - * Prints out both actual and expected values. - * - * Prefered to ok( actual == expected, message ) - * - * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); - * - * @param Object actual - * @param Object expected - * @param String message (optional) - */ - equal: function(actual, expected, message) { - QUnit.push(expected == actual, actual, expected, message); - }, - - notEqual: function(actual, expected, message) { - QUnit.push(expected != actual, actual, expected, message); - }, - - deepEqual: function(actual, expected, message) { - QUnit.push(QUnit.equiv(actual, expected), actual, expected, message); - }, - - notDeepEqual: function(actual, expected, message) { - QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message); - }, - - strictEqual: function(actual, expected, message) { - QUnit.push(expected === actual, actual, expected, message); - }, - - notStrictEqual: function(actual, expected, message) { - QUnit.push(expected !== actual, actual, expected, message); - }, - - raises: function(block, expected, message) { - var actual, ok = false; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - if (actual) { - // we don't want to validate thrown error - if (!expected) { - ok = true; - // expected is a regexp - } else if (QUnit.objectType(expected) === "regexp") { - ok = expected.test(actual); - // expected is a constructor - } else if (actual instanceof expected) { - ok = true; - // expected is a validation function which returns true is validation passed - } else if (expected.call({}, actual) === true) { - ok = true; - } - } - - QUnit.ok(ok, message); - }, - - start: function() { - config.semaphore--; - if (config.semaphore > 0) { - // don't start until equal number of stop-calls - return; - } - if (config.semaphore < 0) { - // ignore if start is called more often then stop - config.semaphore = 0; - } - // A slight delay, to avoid any current callbacks - if ( defined.setTimeout ) { - window.setTimeout(function() { - if ( config.timeout ) { - clearTimeout(config.timeout); - } - - config.blocking = false; - process(); - }, 13); - } else { - config.blocking = false; - process(); - } - }, - - stop: function(timeout) { - config.semaphore++; - config.blocking = true; - - if ( timeout && defined.setTimeout ) { - clearTimeout(config.timeout); - config.timeout = window.setTimeout(function() { - QUnit.ok( false, "Test timed out" ); - QUnit.start(); - }, timeout); - } - } - -}; - -// Backwards compatibility, deprecated -QUnit.equals = QUnit.equal; -QUnit.same = QUnit.deepEqual; - -// Maintain internal state -var config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true -}; - -// Load paramaters -(function() { - var location = window.location || { search: "", protocol: "file:" }, - GETParams = location.search.slice(1).split('&'); - - for ( var i = 0; i < GETParams.length; i++ ) { - GETParams[i] = decodeURIComponent( GETParams[i] ); - if ( GETParams[i] === "noglobals" ) { - GETParams.splice( i, 1 ); - i--; - config.noglobals = true; - } else if ( GETParams[i] === "notrycatch" ) { - GETParams.splice( i, 1 ); - i--; - config.notrycatch = true; - } else if ( GETParams[i].search('=') > -1 ) { - GETParams.splice( i, 1 ); - i--; - } - } - - // restrict modules/tests by get parameters - config.filters = GETParams; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = !!(location.protocol === 'file:'); -})(); - -// Expose the API as global variables, unless an 'exports' -// object exists, in that case we assume we're in CommonJS -if ( typeof exports === "undefined" || typeof require === "undefined" ) { - extend(window, QUnit); - window.QUnit = QUnit; -} else { - extend(exports, QUnit); - exports.QUnit = QUnit; -} - -// define these after exposing globals to keep them in these QUnit namespace only -extend(QUnit, { - config: config, - - // Initialize the configuration options - init: function() { - extend(config, { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date, - updateRate: 1000, - blocking: false, - autostart: true, - autorun: false, - filters: [], - queue: [], - semaphore: 0 - }); - - var tests = id("qunit-tests"), - banner = id("qunit-banner"), - result = id("qunit-testresult"); - - if ( tests ) { - tests.innerHTML = ""; - } - - if ( banner ) { - banner.className = ""; - } - - if ( result ) { - result.parentNode.removeChild( result ); - } - }, - - /** - * Resets the test setup. Useful for tests that modify the DOM. - * - * If jQuery is available, uses jQuery's html(), otherwise just innerHTML. - */ - reset: function() { - if ( window.jQuery ) { - jQuery( "#main, #qunit-fixture" ).html( config.fixture ); - } else { - var main = id( 'main' ) || id( 'qunit-fixture' ); - if ( main ) { - main.innerHTML = config.fixture; - } - } - }, - - /** - * Trigger an event on an element. - * - * @example triggerEvent( document.body, "click" ); - * - * @param DOMElement elem - * @param String type - */ - triggerEvent: function( elem, type, event ) { - if ( document.createEvent ) { - event = document.createEvent("MouseEvents"); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - elem.dispatchEvent( event ); - - } else if ( elem.fireEvent ) { - elem.fireEvent("on"+type); - } - }, - - // Safe object type checking - is: function( type, obj ) { - return QUnit.objectType( obj ) == type; - }, - - objectType: function( obj ) { - if (typeof obj === "undefined") { - return "undefined"; - - // consider: typeof null === object - } - if (obj === null) { - return "null"; - } - - var type = Object.prototype.toString.call( obj ) - .match(/^\[object\s(.*)\]$/)[1] || ''; - - switch (type) { - case 'Number': - if (isNaN(obj)) { - return "nan"; - } else { - return "number"; - } - case 'String': - case 'Boolean': - case 'Array': - case 'Date': - case 'RegExp': - case 'Function': - return type.toLowerCase(); - } - if (typeof obj === "object") { - return "object"; - } - return undefined; - }, - - push: function(result, actual, expected, message) { - var details = { - result: result, - message: message, - actual: actual, - expected: expected - }; - - message = escapeHtml(message) || (result ? "okay" : "failed"); - message = '' + message + ""; - expected = escapeHtml(QUnit.jsDump.parse(expected)); - actual = escapeHtml(QUnit.jsDump.parse(actual)); - var output = message + ''; - if (actual != expected) { - output += ''; - output += ''; - } - if (!result) { - var source = sourceFromStacktrace(); - if (source) { - details.source = source; - output += ''; - } - } - output += "
                    Expected:
                    ' + expected + '
                    Result:
                    ' + actual + '
                    Diff:
                    ' + QUnit.diff(expected, actual) +'
                    Source:
                    ' + source +'
                    "; - - QUnit.log(details); - - config.current.assertions.push({ - result: !!result, - message: output - }); - }, - - // Logging callbacks; all receive a single argument with the listed properties - // run test/logs.html for any related changes - begin: function() {}, - // done: { failed, passed, total, runtime } - done: function() {}, - // log: { result, actual, expected, message } - log: function() {}, - // testStart: { name } - testStart: function() {}, - // testDone: { name, failed, passed, total } - testDone: function() {}, - // moduleStart: { name } - moduleStart: function() {}, - // moduleDone: { name, failed, passed, total } - moduleDone: function() {} -}); - -if ( typeof document === "undefined" || document.readyState === "complete" ) { - config.autorun = true; -} - -addEvent(window, "load", function() { - QUnit.begin({}); - - // Initialize the config, saving the execution queue - var oldconfig = extend({}, config); - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - var userAgent = id("qunit-userAgent"); - if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; - } - var banner = id("qunit-header"); - if ( banner ) { - var paramsIndex = location.href.lastIndexOf(location.search); - if ( paramsIndex > -1 ) { - var mainPageLocation = location.href.slice(0, paramsIndex); - if ( mainPageLocation == location.href ) { - banner.innerHTML = ' ' + banner.innerHTML + ' '; - } else { - var testName = decodeURIComponent(location.search.slice(1)); - banner.innerHTML = '' + banner.innerHTML + '' + testName + ''; - } - } - } - - var toolbar = id("qunit-testrunner-toolbar"); - if ( toolbar ) { - var filter = document.createElement("input"); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - addEvent( filter, "click", function() { - var li = document.getElementsByTagName("li"); - for ( var i = 0; i < li.length; i++ ) { - if ( li[i].className.indexOf("pass") > -1 ) { - li[i].style.display = filter.checked ? "none" : ""; - } - } - if ( defined.sessionStorage ) { - sessionStorage.setItem("qunit-filter-passed-tests", filter.checked ? "true" : ""); - } - }); - if ( defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) { - filter.checked = true; - } - toolbar.appendChild( filter ); - - var label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-pass"); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild( label ); - } - - var main = id('main') || id('qunit-fixture'); - if ( main ) { - config.fixture = main.innerHTML; - } - - if (config.autostart) { - QUnit.start(); - } -}); - -function done() { - config.autorun = true; - - // Log the last module results - if ( config.currentModule ) { - QUnit.moduleDone( { - name: config.currentModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - - var banner = id("qunit-banner"), - tests = id("qunit-tests"), - runtime = +new Date - config.started, - passed = config.stats.all - config.stats.bad, - html = [ - 'Tests completed in ', - runtime, - ' milliseconds.
                    ', - '', - passed, - ' tests of ', - config.stats.all, - ' passed, ', - config.stats.bad, - ' failed.' - ].join(''); - - if ( banner ) { - banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); - } - - if ( tests ) { - var result = id("qunit-testresult"); - - if ( !result ) { - result = document.createElement("p"); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore( result, tests.nextSibling ); - } - - result.innerHTML = html; - } - - QUnit.done( { - failed: config.stats.bad, - passed: passed, - total: config.stats.all, - runtime: runtime - } ); -} - -function validTest( name ) { - var i = config.filters.length, - run = false; - - if ( !i ) { - return true; - } - - while ( i-- ) { - var filter = config.filters[i], - not = filter.charAt(0) == '!'; - - if ( not ) { - filter = filter.slice(1); - } - - if ( name.indexOf(filter) !== -1 ) { - return !not; - } - - if ( not ) { - run = true; - } - } - - return run; -} - -// so far supports only Firefox, Chrome and Opera (buggy) -// could be extended in the future to use something like https://github.com/csnover/TraceKit -function sourceFromStacktrace() { - try { - throw new Error(); - } catch ( e ) { - if (e.stacktrace) { - // Opera - return e.stacktrace.split("\n")[6]; - } else if (e.stack) { - // Firefox, Chrome - return e.stack.split("\n")[4]; - } - } -} - -function resultDisplayStyle(passed) { - return passed && id("qunit-filter-pass") && id("qunit-filter-pass").checked ? 'none' : ''; -} - -function escapeHtml(s) { - if (!s) { - return ""; - } - s = s + ""; - return s.replace(/[\&"<>\\]/g, function(s) { - switch(s) { - case "&": return "&"; - case "\\": return "\\\\"; - case '"': return '\"'; - case "<": return "<"; - case ">": return ">"; - default: return s; - } - }); -} - -function synchronize( callback ) { - config.queue.push( callback ); - - if ( config.autorun && !config.blocking ) { - process(); - } -} - -function process() { - var start = (new Date()).getTime(); - while ( config.queue.length && !config.blocking ) { - if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) { - config.queue.shift()(); - } else { - window.setTimeout( process, 13 ); - break; - } - } - if (!config.blocking && !config.queue.length) { - done(); - } -} - -function saveGlobal() { - config.pollution = []; - - if ( config.noglobals ) { - for ( var key in window ) { - config.pollution.push( key ); - } - } -} - -function checkPollution( name ) { - var old = config.pollution; - saveGlobal(); - - var newGlobals = diff( old, config.pollution ); - if ( newGlobals.length > 0 ) { - ok( false, "Introduced global variable(s): " + newGlobals.join(", ") ); - config.current.expected++; - } - - var deletedGlobals = diff( config.pollution, old ); - if ( deletedGlobals.length > 0 ) { - ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") ); - config.current.expected++; - } -} - -// returns a new Array with the elements that are in a but not in b -function diff( a, b ) { - var result = a.slice(); - for ( var i = 0; i < result.length; i++ ) { - for ( var j = 0; j < b.length; j++ ) { - if ( result[i] === b[j] ) { - result.splice(i, 1); - i--; - break; - } - } - } - return result; -} - -function fail(message, exception, callback) { - if ( typeof console !== "undefined" && console.error && console.warn ) { - console.error(message); - console.error(exception); - console.warn(callback.toString()); - - } else if ( window.opera && opera.postError ) { - opera.postError(message, exception, callback.toString); - } -} - -function extend(a, b) { - for ( var prop in b ) { - a[prop] = b[prop]; - } - - return a; -} - -function addEvent(elem, type, fn) { - if ( elem.addEventListener ) { - elem.addEventListener( type, fn, false ); - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, fn ); - } else { - fn(); - } -} - -function id(name) { - return !!(typeof document !== "undefined" && document && document.getElementById) && - document.getElementById( name ); -} - -// Test for equality any JavaScript type. -// Discussions and reference: http://philrathe.com/articles/equiv -// Test suites: http://philrathe.com/tests/equiv -// Author: Philippe Rathé -QUnit.equiv = function () { - - var innerEquiv; // the real equiv function - var callers = []; // stack to decide between skip/abort functions - var parents = []; // stack to avoiding loops from circular referencing - - // Call the o related callback with the given arguments. - function bindCallbacks(o, callbacks, args) { - var prop = QUnit.objectType(o); - if (prop) { - if (QUnit.objectType(callbacks[prop]) === "function") { - return callbacks[prop].apply(callbacks, args); - } else { - return callbacks[prop]; // or undefined - } - } - } - - var callbacks = function () { - - // for string, boolean, number and null - function useStrictEquality(b, a) { - if (b instanceof a.constructor || a instanceof b.constructor) { - // to catch short annotaion VS 'new' annotation of a declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string": useStrictEquality, - "boolean": useStrictEquality, - "number": useStrictEquality, - "null": useStrictEquality, - "undefined": useStrictEquality, - - "nan": function (b) { - return isNaN(b); - }, - - "date": function (b, a) { - return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf(); - }, - - "regexp": function (b, a) { - return QUnit.objectType(b) === "regexp" && - a.source === b.source && // the regex itself - a.global === b.global && // and its modifers (gmi) ... - a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function": function () { - var caller = callers[callers.length - 1]; - return caller !== Object && - typeof caller !== "undefined"; - }, - - "array": function (b, a) { - var i, j, loop; - var len; - - // b could be an object literal here - if ( ! (QUnit.objectType(b) === "array")) { - return false; - } - - len = a.length; - if (len !== b.length) { // safe and faster - return false; - } - - //track reference to avoid circular references - parents.push(a); - for (i = 0; i < len; i++) { - loop = false; - for(j=0;j= 0) { - type = "array"; - } else { - type = typeof obj; - } - return type; - }, - separator:function() { - return this.multiline ? this.HTML ? '
                    ' : '\n' : this.HTML ? ' ' : ' '; - }, - indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing - if ( !this.multiline ) - return ''; - var chr = this.indentChar; - if ( this.HTML ) - chr = chr.replace(/\t/g,' ').replace(/ /g,' '); - return Array( this._depth_ + (extra||0) ).join(chr); - }, - up:function( a ) { - this._depth_ += a || 1; - }, - down:function( a ) { - this._depth_ -= a || 1; - }, - setParser:function( name, parser ) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote:quote, - literal:literal, - join:join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers:{ - window: '[Window]', - document: '[Document]', - error:'[ERROR]', //when no parser is found, shouldn't happen - unknown: '[Unknown]', - 'null':'null', - undefined:'undefined', - 'function':function( fn ) { - var ret = 'function', - name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE - if ( name ) - ret += ' ' + name; - ret += '('; - - ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join(''); - return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' ); - }, - array: array, - nodelist: array, - arguments: array, - object:function( map ) { - var ret = [ ]; - QUnit.jsDump.up(); - for ( var key in map ) - ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(map[key]) ); - QUnit.jsDump.down(); - return join( '{', ret, '}' ); - }, - node:function( node ) { - var open = QUnit.jsDump.HTML ? '<' : '<', - close = QUnit.jsDump.HTML ? '>' : '>'; - - var tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for ( var a in QUnit.jsDump.DOMAttrs ) { - var val = node[QUnit.jsDump.DOMAttrs[a]]; - if ( val ) - ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' ); - } - return ret + close + open + '/' + tag + close; - }, - functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function - var l = fn.length; - if ( !l ) return ''; - - var args = Array(l); - while ( l-- ) - args[l] = String.fromCharCode(97+l);//97 is 'a' - return ' ' + args.join(', ') + ' '; - }, - key:quote, //object calls it internally, the key part of an item in a map - functionCode:'[code]', //function calls it internally, it's the content of the function - attribute:quote, //node calls it internally, it's an html attribute value - string:quote, - date:quote, - regexp:literal, //regex - number:literal, - 'boolean':literal - }, - DOMAttrs:{//attributes to dump from nodes, name=>realName - id:'id', - name:'name', - 'class':'className' - }, - HTML:false,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar:' ',//indentation unit - multiline:true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; -})(); - -// from Sizzle.js -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -}; - -/* - * Javascript Diff Algorithm - * By John Resig (http://ejohn.org/) - * Modified by Chu Alan "sprite" - * - * Released under the MIT license. - * - * More Info: - * http://ejohn.org/projects/javascript-diff-algorithm/ - * - * Usage: QUnit.diff(expected, actual) - * - * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over" - */ -QUnit.diff = (function() { - function diff(o, n){ - var ns = new Object(); - var os = new Object(); - - for (var i = 0; i < n.length; i++) { - if (ns[n[i]] == null) - ns[n[i]] = { - rows: new Array(), - o: null - }; - ns[n[i]].rows.push(i); - } - - for (var i = 0; i < o.length; i++) { - if (os[o[i]] == null) - os[o[i]] = { - rows: new Array(), - n: null - }; - os[o[i]].rows.push(i); - } - - for (var i in ns) { - if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) { - n[ns[i].rows[0]] = { - text: n[ns[i].rows[0]], - row: os[i].rows[0] - }; - o[os[i].rows[0]] = { - text: o[os[i].rows[0]], - row: ns[i].rows[0] - }; - } - } - - for (var i = 0; i < n.length - 1; i++) { - if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null && - n[i + 1] == o[n[i].row + 1]) { - n[i + 1] = { - text: n[i + 1], - row: n[i].row + 1 - }; - o[n[i].row + 1] = { - text: o[n[i].row + 1], - row: i + 1 - }; - } - } - - for (var i = n.length - 1; i > 0; i--) { - if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null && - n[i - 1] == o[n[i].row - 1]) { - n[i - 1] = { - text: n[i - 1], - row: n[i].row - 1 - }; - o[n[i].row - 1] = { - text: o[n[i].row - 1], - row: i - 1 - }; - } - } - - return { - o: o, - n: n - }; - } - - return function(o, n){ - o = o.replace(/\s+$/, ''); - n = n.replace(/\s+$/, ''); - var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/)); - - var str = ""; - - var oSpace = o.match(/\s+/g); - if (oSpace == null) { - oSpace = [" "]; - } - else { - oSpace.push(" "); - } - var nSpace = n.match(/\s+/g); - if (nSpace == null) { - nSpace = [" "]; - } - else { - nSpace.push(" "); - } - - if (out.n.length == 0) { - for (var i = 0; i < out.o.length; i++) { - str += '' + out.o[i] + oSpace[i] + ""; - } - } - else { - if (out.n[0].text == null) { - for (n = 0; n < out.o.length && out.o[n].text == null; n++) { - str += '' + out.o[n] + oSpace[n] + ""; - } - } - - for (var i = 0; i < out.n.length; i++) { - if (out.n[i].text == null) { - str += '' + out.n[i] + nSpace[i] + ""; - } - else { - var pre = ""; - - for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { - pre += '' + out.o[n] + oSpace[n] + ""; - } - str += " " + out.n[i].text + nSpace[i] + pre; - } - } - } - - return str; - }; -})(); - -})(this); diff --git a/www/include/jslibs/jquery-validation/test/rules.js b/www/include/jslibs/jquery-validation/test/rules.js deleted file mode 100644 index 3eaa377fae..0000000000 --- a/www/include/jslibs/jquery-validation/test/rules.js +++ /dev/null @@ -1,267 +0,0 @@ -module("rules"); - -test("rules() - internal - input", function() { - var element = $('#firstname'); - var v = $('#testForm1').validate(); - same( element.rules(), { required: true, minlength: 2 } ); -}); - -test("rules(), ignore method:false", function() { - var element = $('#firstnamec'); - var v = $('#testForm1clean').validate({ - rules: { - firstname: { required: false, minlength: 2 } - } - }); - same( element.rules(), { minlength: 2 } ); -}); - -test("rules() - internal - select", function() { - var element = $('#meal'); - var v = $('#testForm3').validate(); - same( element.rules(), {required: true} ); -}); - -test("rules() - external", function() { - var element = $('#text1'); - var v = $('#form').validate({ - rules: { - action: {date: true, min: 5} - } - }); - same( element.rules(), {date: true, min: 5} ); -}); - -test("rules() - external - complete form", function() { - expect(1); - - var methods = $.extend({}, $.validator.methods); - var messages = $.extend({}, $.validator.messages); - - $.validator.addMethod("verifyTest", function() { - ok( true, "method executed" ); - return true; - }); - var v = $('#form').validate({ - rules: { - action: {verifyTest: true} - } - }); - v.form(); - - $.validator.methods = methods; - $.validator.messages = messages; -}); - -test("rules() - internal - input", function() { - var element = $('#form8input'); - var v = $('#testForm8').validate(); - same( element.rules(), {required: true, number: true, rangelength: [2, 8]}); -}); - -test("rules(), merge min/max to range, minlength/maxlength to rangelength", function() { - jQuery.validator.autoCreateRanges = true; - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - min: 5, - max: 12 - }, - lastname: { - minlength: 2, - maxlength: 8 - } - } - }); - same( $("#firstnamec").rules(), {range: [5, 12]}); - - same( $("#lastnamec").rules(), {rangelength: [2, 8]} ); - jQuery.validator.autoCreateRanges = false; -}); - -test("rules(), gurantee that required is at front", function() { - $("#testForm1").validate(); - var v = $("#v2").validate(); - $("#subformRequired").validate(); - function flatRules(element) { - var result = []; - jQuery.each($(element).rules(), function(key, value) { result.push(key) }); - return result.join(" "); - } - equals( "required minlength", flatRules("#firstname") ); - equals( "required maxlength minlength", flatRules("#v2-i6") ); - equals( "required maxlength", flatRules("#co_name") ); - - QUnit.reset(); - jQuery.validator.autoCreateRanges = true; - v = $("#v2").validate(); - equals( "required rangelength", flatRules("#v2-i6") ); - - $("#subformRequired").validate({ - rules: { - co_name: "required" - } - }); - $("#co_name").removeClass(); - equals( "required maxlength", flatRules("#co_name") ); - jQuery.validator.autoCreateRanges = false; -}); - -test("rules(), evaluate dynamic parameters", function() { - expect(2); - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - min: function(element) { - equals( $("#firstnamec")[0], element ); - return 12; - } - } - } - }); - same( $("#firstnamec").rules(), {min:12}); -}); - -test("rules(), class and attribute combinations", function() { - - $.validator.addMethod("customMethod1", function() { - return false; - }, ""); - $.validator.addMethod("customMethod2", function() { - return false; - }, ""); - var v = $("#v2").validate({ - rules: { - 'v2-i7': { - required: true, - minlength: 2, - customMethod: true - } - } - }); - same( $("#v2-i1").rules(), { required: true }); - same( $("#v2-i2").rules(), { required: true, email: true }); - same( $("#v2-i3").rules(), { url: true }); - same( $("#v2-i4").rules(), { required: true, minlength: 2 }); - same( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" }); - jQuery.validator.autoCreateRanges = true; - same( $("#v2-i5").rules(), { required: true, customMethod1: "123", rangelength: [2, 5] }); - same( $("#v2-i6").rules(), { required: true, customMethod2: true, rangelength: [2, 5] }); - jQuery.validator.autoCreateRanges = false; - same( $("#v2-i7").rules(), { required: true, minlength: 2, customMethod: true }); - - delete $.validator.methods.customMethod1; - delete $.validator.messages.customMethod1; - delete $.validator.methods.customMethod2; - delete $.validator.messages.customMethod2; -}); - -test("rules(), dependency checks", function() { - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - min: { - param: 5, - depends: function(el) { - return /^a/.test($(el).val()); - } - } - }, - lastname: { - max: { - param: 12 - }, - email: { - depends: function() { return true; } - } - } - } - }); - - var rules = $("#firstnamec").rules(); - equals( 0, v.objectLength(rules) ); - - $("#firstnamec").val('ab'); - same( $("#firstnamec").rules(), {min:5}); - - same( $("#lastnamec").rules(), {max:12, email:true}); -}); - -test("rules(), add and remove", function() { - $.validator.addMethod("customMethod1", function() { - return false; - }, ""); - $("#v2").validate(); - var removedAttrs = $("#v2-i5").removeClass("required").removeAttrs("minlength maxlength"); - same( $("#v2-i5").rules(), { customMethod1: "123" }); - - $("#v2-i5").addClass("required").attr(removedAttrs); - same( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" }); - - $("#v2-i5").addClass("email").attr({min: 5}); - same( $("#v2-i5").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: 5, customMethod1: "123" }); - - $("#v2-i5").removeClass("required email").removeAttrs("minlength maxlength customMethod1 min"); - same( $("#v2-i5").rules(), {}); - - delete $.validator.methods.customMethod1; - delete $.validator.messages.customMethod1; -}); - -test("rules(), add and remove static rules", function() { - var v = $("#testForm1clean").validate({ - rules: { - firstname: "required date" - } - }); - same( $("#firstnamec").rules(), { required: true, date: true } ); - - $("#firstnamec").rules("remove", "date") - same( $("#firstnamec").rules(), { required: true } ); - $("#firstnamec").rules("add", "email"); - same( $("#firstnamec").rules(), { required: true, email: true } ); - - $("#firstnamec").rules("remove", "required"); - same( $("#firstnamec").rules(), { email: true } ); - - same( $("#firstnamec").rules("remove"), { email: true } ); - same( $("#firstnamec").rules(), { } ); - - $("#firstnamec").rules("add", "required email"); - same( $("#firstnamec").rules(), { required: true, email: true } ); - - - same( $("#lastnamec").rules(), {} ); - $("#lastnamec").rules("add", "required"); - $("#lastnamec").rules("add", { - minlength: 2 - }); - same( $("#lastnamec").rules(), { required: true, minlength: 2 } ); - - - var removedRules = $("#lastnamec").rules("remove", "required email"); - same( $("#lastnamec").rules(), { minlength: 2 } ); - $("#lastnamec").rules("add", removedRules); - same( $("#lastnamec").rules(), { required: true, minlength: 2 } ); -}); - -test("rules(), add messages", function() { - $("#firstnamec").attr("title", null); - var v = $("#testForm1clean").validate({ - rules: { - firstname: "required" - } - }); - $("#testForm1clean").valid(); - $("#firstnamec").valid(); - same( v.settings.messages.firstname, undefined ); - - $("#firstnamec").rules("add", { - messages: { - required: "required" - } - }); - - $("#firstnamec").valid(); - same( v.errorList[0] && v.errorList[0].message, "required" ); -}); diff --git a/www/include/jslibs/jquery-validation/test/selects/index.html b/www/include/jslibs/jquery-validation/test/selects/index.html deleted file mode 100644 index 8bc8f8f83a..0000000000 --- a/www/include/jslibs/jquery-validation/test/selects/index.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - -Fun with jQuery - - - - - - - - - - - -Mission: - - -CODE - - - - - -
                    - - - - - - - - - diff --git a/www/include/jslibs/jquery-validation/test/tabs.html b/www/include/jslibs/jquery-validation/test/tabs.html deleted file mode 100644 index 2fb8a00a85..0000000000 --- a/www/include/jslibs/jquery-validation/test/tabs.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - - - - -
                    - -
                    - -
                    -
                    - A simple comment form with submit validation and default messages -

                    - - -

                    - - -

                    -

                    - - -

                    -

                    - - -

                    -
                    - -
                    -
                    - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. -
                    -
                    - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. -
                    -
                    -

                    - -

                    - -
                    - - - \ No newline at end of file diff --git a/www/include/jslibs/jquery-validation/test/test.js b/www/include/jslibs/jquery-validation/test/test.js deleted file mode 100644 index 2ec0968c59..0000000000 --- a/www/include/jslibs/jquery-validation/test/test.js +++ /dev/null @@ -1,1121 +0,0 @@ -jQuery.validator.defaults.debug = true; - -module("validator"); - -test("Constructor", function() { - var v1 = $("#testForm1").validate(); - var v2 = $("#testForm1").validate(); - equals( v1, v2, "Calling validate() multiple times must return the same validator instance" ); - equals( v1.elements().length, 3, "validator elements" ); -}); - -test("validate() without elements, with non-form elements", function() { - $("#doesn'texist").validate(); -}); - -test("valid() plugin method", function() { - var form = $("#userForm"); - form.validate(); - ok ( !form.valid(), "Form isn't valid yet" ); - var input = $("#username"); - ok ( !input.valid(), "Input isn't valid either" ); - input.val("Hello world"); - ok ( form.valid(), "Form is now valid" ); - ok ( input.valid(), "Input is valid, too" ); -}); - -test("valid() plugin method", function() { - var form = $("#testForm1"); - form.validate(); - var inputs = form.find("input"); - ok( !inputs.valid(), "all invalid" ); - inputs.not(":first").val("ok"); - ok( !inputs.valid(), "just one invalid" ); - inputs.val("ok"); - ok( inputs.valid(), "all valid" ); -}); - -test("valid() plugin method, special handling for checkable groups", function() { - // rule is defined on first checkbox, must apply to others, too - var checkable = $("#checkable2"); - ok( !checkable.valid(), "must be invalid, not checked yet" ); - checkable.attr("checked", true); - ok( checkable.valid(), "valid, is now checked" ); - checkable.attr("checked", false); - ok( !checkable.valid(), "invalid again" ); - $("#checkable3").attr("checked", true); - ok( checkable.valid(), "valid, third box is checked" ); -}); - -test("addMethod", function() { - expect( 3 ); - $.validator.addMethod("hi", function(value) { - return value == "hi"; - }, "hi me too"); - var method = $.validator.methods.hi, - e = $('#text1')[0]; - ok( !method(e.value, e), "Invalid" ); - e.value = "hi"; - ok( method(e.value, e), "Invalid" ); - ok( jQuery.validator.messages.hi == "hi me too", "Check custom message" ); -}); - -test("addMethod2", function() { - expect( 4 ); - $.validator.addMethod("complicatedPassword", function(value, element, param) { - return this.optional(element) || /\D/.test(value) && /\d/.test(value) - }, "Your password must contain at least one number and one letter"); - var v = jQuery("#form").validate({ - rules: { - action: { complicatedPassword: true } - } - }); - var rule = $.validator.methods.complicatedPassword, - e = $('#text1')[0]; - e.value = ""; - ok( v.element(e) === undefined, "Rule is optional, valid" ); - equals( 0, v.size() ); - e.value = "ko"; - ok( !v.element(e), "Invalid, doesn't contain one of the required characters" ); - e.value = "ko1"; - ok( v.element(e) ); -}); - -test("form(): simple", function() { - expect( 2 ); - var form = $('#testForm1')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $('#firstname').val("hi"); - $('#lastname').val("hi"); - ok( v.form(), 'Valid form' ); -}); - -test("form(): checkboxes: min/required", function() { - expect( 3 ); - var form = $('#testForm6')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $('#form6check1').attr("checked", true); - ok( !v.form(), 'Invalid form' ); - $('#form6check2').attr("checked", true); - ok( v.form(), 'Valid form' ); -}); -test("form(): selects: min/required", function() { - expect( 3 ); - var form = $('#testForm7')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $("#optionxa").attr("selected", true); - ok( !v.form(), 'Invalid form' ); - $("#optionxb").attr("selected", true); - ok( v.form(), 'Valid form' ); -}); - -test("form(): with equalTo", function() { - expect( 2 ); - var form = $('#testForm5')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $('#x1, #x2').val("hi"); - ok( v.form(), 'Valid form' ); -}); - -test("check(): simple", function() { - expect( 3 ); - var element = $('#firstname')[0]; - var v = $('#testForm1').validate(); - ok( v.size() == 0, 'No errors yet' ); - v.check(element); - ok( v.size() == 1, 'error exists' ); - v.errorList = []; - $('#firstname').val("hi"); - v.check(element); - ok( !v.size() == 1, 'No more errors' ); -}); - -test("hide(): input", function() { - expect( 3 ); - var errorLabel = $('#errorFirstname'); - var element = $('#firstname')[0]; - element.value ="bla"; - var v = $('#testForm1').validate(); - errorLabel.show(); - ok( errorLabel.is(":visible"), "Error label visible before validation" ); - ok( v.element(element) ); - ok( errorLabel.is(":hidden"), "Error label not visible after validation" ); -}); - -test("hide(): radio", function() { - expect( 2 ); - var errorLabel = $('#agreeLabel'); - var element = $('#agb')[0]; - element.checked = true; - var v = $('#testForm2').validate({ errorClass: "xerror" }); - errorLabel.show(); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - v.element(element); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); -}); - -test("hide(): errorWrapper", function() { - expect(2); - var errorLabel = $('#errorWrapper'); - var element = $('#meal')[0]; - element.selectedIndex = 1; - - errorLabel.show(); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - var v = $('#testForm3').validate({ wrapper: "li", errorLabelContainer: $("#errorContainer") }); - v.element(element); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); -}); - -test("hide(): container", function() { - expect(4); - var errorLabel = $('#errorContainer'); - var element = $('#testForm3')[0]; - var v = $('#testForm3').validate({ errorWrapper: "li", errorContainer: $("#errorContainer") }); - v.form(); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - $('#meal')[0].selectedIndex = 1; - v.form(); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); - $('#meal')[0].selectedIndex = -1; - v.element("#meal"); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - $('#meal')[0].selectedIndex = 1; - v.element("#meal"); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); -}); - -test("valid()", function() { - expect(4); - var errorList = [{name:"meal",message:"foo", element:$("#meal")[0]}]; - var v = $('#testForm3').validate(); - ok( v.valid(), "No errors, must be valid" ); - v.errorList = errorList; - ok( !v.valid(), "One error, must be invalid" ); - QUnit.reset(); - v = $('#testForm3').validate({ submitHandler: function() { - ok( false, "Submit handler was called" ); - }}); - ok( v.valid(), "No errors, must be valid and returning true, even with the submit handler" ); - v.errorList = errorList; - ok( !v.valid(), "One error, must be invalid, no call to submit handler" ); -}); - -test("submitHandler keeps submitting button", function() { - $("#userForm").validate({ - debug: true, - submitHandler: function(form) { - // dunno how to test this better; this tests the implementation that uses a hidden input - var hidden = $(form).find("input:hidden")[0]; - same(hidden.value, button.value) - same(hidden.name, button.name) - } - }); - $("#username").val("bla"); - var button = $("#userForm :submit")[0] - $(button).triggerHandler("click"); - $("#userForm").submit(); -}); - -test("showErrors()", function() { - expect( 4 ); - var errorLabel = $('#errorFirstname').hide(); - var element = $('#firstname')[0]; - var v = $('#testForm1').validate(); - ok( errorLabel.is(":hidden") ); - equals( 0, $("label.error[for=lastname]").size() ); - v.showErrors({"firstname": "required", "lastname": "bla"}); - equals( true, errorLabel.is(":visible") ); - equals( true, $("label.error[for=lastname]").is(":visible") ); -}); - -test("showErrors(), allow empty string and null as default message", function() { - $("#userForm").validate({ - rules: { - username: { - required: true, - minlength: 3 - } - }, - messages: { - username: { - required: "", - minlength: "too short" - } - } - }); - ok( !$("#username").valid() ); - equals( "", $("label.error[for=username]").text() ); - - $("#username").val("ab"); - ok( !$("#username").valid() ); - equals( "too short", $("label.error[for=username]").text() ); - - $("#username").val("abc"); - ok( $("#username").valid() ); - ok( $("label.error[for=username]").is(":hidden") ); -}); - -test("showErrors() - external messages", function() { - expect( 4 ); - var methods = $.extend({}, $.validator.methods); - var messages = $.extend({}, $.validator.messages); - $.validator.addMethod("foo", function() { return false; }); - $.validator.addMethod("bar", function() { return false; }); - equals( 0, $("#testForm4 label.error[for=f1]").size() ); - equals( 0, $("#testForm4 label.error[for=f2]").size() ); - var form = $('#testForm4')[0]; - var v = $(form).validate({ - messages: { - f1: "Please!", - f2: "Wohoo!" - } - }); - v.form(); - equals( $("#testForm4 label.error[for=f1]").text(), "Please!" ); - equals( $("#testForm4 label.error[for=f2]").text(), "Wohoo!" ); - - $.validator.methods = methods; - $.validator.messages = messages; -}); - -test("showErrors() - custom handler", function() { - expect(5); - var v = $('#testForm1').validate({ - showErrors: function(errorMap, errorList) { - equals( v, this ); - equals( v.errorList, errorList ); - equals( v.errorMap, errorMap ); - equals( "buga", errorMap.firstname ); - equals( "buga", errorMap.lastname ); - } - }); - v.form(); -}); - -test("option: (un)highlight, default", function() { - $("#testForm1").validate(); - var e = $("#firstname") - ok( !e.hasClass("error") ); - ok( !e.hasClass("valid") ); - e.valid() - ok( e.hasClass("error") ); - ok( !e.hasClass("valid") ); - e.val("hithere").valid() - ok( !e.hasClass("error") ); - ok( e.hasClass("valid") ); -}); - -test("option: (un)highlight, nothing", function() { - expect(3); - $("#testForm1").validate({ - highlight: false, - unhighlight: false - }); - var e = $("#firstname") - ok( !e.hasClass("error") ); - e.valid() - ok( !e.hasClass("error") ); - e.valid() - ok( !e.hasClass("error") ); -}); - -test("option: (un)highlight, custom", function() { - expect(5); - $("#testForm1clean").validate({ - highlight: function(element, errorClass) { - equals( "invalid", errorClass ); - $(element).hide(); - }, - unhighlight: function(element, errorClass) { - equals( "invalid", errorClass ) - $(element).show(); - }, - errorClass: "invalid", - rules: { - firstname: "required" - } - }); - var e = $("#firstnamec") - ok( e.is(":visible") ); - e.valid() - ok( !e.is(":visible") ); - e.val("hithere").valid() - ok( e.is(":visible") ); -}); - -test("option: (un)highlight, custom2", function() { - expect(6); - $("#testForm1").validate({ - highlight: function(element, errorClass) { - $(element).addClass(errorClass); - $(element.form).find("label[for=" + element.id + "]").addClass(errorClass); - }, - unhighlight: function(element, errorClass) { - $(element).removeClass(errorClass); - $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass); - }, - errorClass: "invalid" - }); - var e = $("#firstname") - var l = $("#errorFirstname") - ok( !e.is(".invalid") ); - ok( !l.is(".invalid") ); - e.valid() - ok( e.is(".invalid") ); - ok( l.is(".invalid") ); - e.val("hithere").valid() - ok( !e.is(".invalid") ); - ok( !l.is(".invalid") ); -}); - -test("option: focusCleanup default false", function() { - var form = $("#userForm") - form.validate(); - form.valid(); - ok( form.is(":has(label.error[for=username]:visible)")); - $("#username").focus(); - ok( form.is(":has(label.error[for=username]:visible)")); -}); - -test("option: focusCleanup true", function() { - var form = $("#userForm") - form.validate({ - focusCleanup: true - }); - form.valid(); - ok( form.is(":has(label.error[for=username]:visible)") ); - $("#username").focus().trigger("focusin"); - ok( !form.is(":has(label.error[for=username]:visible)") ); -}); - -test("option: focusCleanup with wrapper", function() { - var form = $("#userForm") - form.validate({ - focusCleanup: true, - wrapper: "span" - }); - form.valid(); - ok( form.is(":has(span:visible:has(label.error[for=username]))") ); - $("#username").focus().trigger("focusin"); - ok( !form.is(":has(span:visible:has(label.error[for=username]))") ); -}); - -test("elements() order", function() { - var container = $("#orderContainer"); - var v = $("#elementsOrder").validate({ - errorLabelContainer: container, - wrap: "li" - }); - deepEqual( v.elements().map(function() { - return $(this).attr("id"); - }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "elements must be in document order" ); - v.form(); - deepEqual( container.children().map(function() { - return $(this).attr("for"); - }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "labels in error container must be in document order" ); -}); - -test("defaultMessage(), empty title is ignored", function() { - var v = $("#userForm").validate(); - equals( "This field is required.", v.defaultMessage($("#username")[0], "required") ); -}); - -test("formatAndAdd", function() { - expect(4); - var v = $("#form").validate(); - var fakeElement = { form: $("#form")[0], name: "bar" }; - v.formatAndAdd(fakeElement, {method: "maxlength", parameters: 2}) - equals( "Please enter no more than 2 characters.", v.errorList[0].message ); - equals( "bar", v.errorList[0].element.name ); - - v.formatAndAdd(fakeElement, {method: "range", parameters:[2,4]}) - equals( "Please enter a value between 2 and 4.", v.errorList[1].message ); - - v.formatAndAdd(fakeElement, {method: "range", parameters:[0,4]}) - equals( "Please enter a value between 0 and 4.", v.errorList[2].message ); -}); - -test("formatAndAdd2", function() { - expect(3); - var v = $("#form").validate(); - var fakeElement = { form: $("#form")[0], name: "bar" }; - jQuery.validator.messages.test1 = function(param, element) { - equals( v, this ); - equals( 0, param ); - return "element " + element.name + " is not valid"; - }; - v.formatAndAdd(fakeElement, {method: "test1", parameters: 0}) - equals( "element bar is not valid", v.errorList[0].message ); -}); - -test("formatAndAdd, auto detect substitution string", function() { - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - required: true, - rangelength: [5, 10] - } - }, - messages: { - firstname: { - rangelength: "at least ${0}, up to {1}" - } - } - }); - $("#firstnamec").val("abc"); - v.form(); - equals( "at least 5, up to 10", v.errorList[0].message ); -}) - -test("error containers, simple", function() { - expect(14); - var container = $("#simplecontainer"); - var v = $("#form").validate({ - errorLabelContainer: container, - showErrors: function() { - container.find("h3").html( jQuery.validator.format("There are {0} errors in your form.", this.size()) ); - this.defaultShowErrors(); - } - }); - - v.prepareForm(); - ok( v.valid(), "form is valid" ); - equals( 0, container.find("label").length, "There should be no error labels" ); - equals( "", container.find("h3").html() ); - - v.prepareForm(); - v.errorList = [{message:"bar", element: {name:"foo"}}, {message: "necessary", element: {name:"required"}}]; - ok( !v.valid(), "form is not valid after adding errors manually" ); - v.showErrors(); - equals( container.find("label").length, 2, "There should be two error labels" ); - ok( container.is(":visible"), "Check that the container is visible" ); - container.find("label").each(function() { - ok( $(this).is(":visible"), "Check that each label is visible" ); - }); - equals( "There are 2 errors in your form.", container.find("h3").html() ); - - v.prepareForm(); - ok( v.valid(), "form is valid after a reset" ); - v.showErrors(); - equals( container.find("label").length, 2, "There should still be two error labels" ); - ok( container.is(":hidden"), "Check that the container is hidden" ); - container.find("label").each(function() { - ok( $(this).is(":hidden"), "Check that each label is hidden" ); - }); -}); - -test("error containers, with labelcontainer I", function() { - expect(16); - var container = $("#container"), - labelcontainer = $("#labelcontainer"); - var v = $("#form").validate({ - errorContainer: container, - errorLabelContainer: labelcontainer, - wrapper: "li" - }); - - ok( v.valid(), "form is valid" ); - equals( 0, container.find("label").length, "There should be no error labels in the container" ); - equals( 0, labelcontainer.find("label").length, "There should be no error labels in the labelcontainer" ); - equals( 0, labelcontainer.find("li").length, "There should be no lis labels in the labelcontainer" ); - - v.errorList = [{message:"bar", element: {name:"foo"}}, {name: "required", message: "necessary", element: {name:"required"}}]; - ok( !v.valid(), "form is not valid after adding errors manually" ); - v.showErrors(); - equals( 0, container.find("label").length, "There should be no error label in the container" ); - equals( 2, labelcontainer.find("label").length, "There should be two error labels in the labelcontainer" ); - equals( 2, labelcontainer.find("li").length, "There should be two error lis in the labelcontainer" ); - ok( container.is(":visible"), "Check that the container is visible" ); - ok( labelcontainer.is(":visible"), "Check that the labelcontainer is visible" ); - var labels = labelcontainer.find("label").each(function() { - ok( $(this).is(":visible"), "Check that each label is visible1" ); - equals( "li", $(this).parent()[0].tagName.toLowerCase(), "Check that each label is wrapped in an li" ); - ok( $(this).parent("li").is(":visible"), "Check that each parent li is visible" ); - }); -}); - -test("errorcontainer, show/hide only on submit", function() { - expect(14); - var container = $("#container"); - var labelContainer = $("#labelcontainer"); - var v = $("#testForm1").bind("invalid-form.validate", function() { - ok( true, "invalid-form event triggered called" ); - }).validate({ - errorContainer: container, - errorLabelContainer: labelContainer, - showErrors: function() { - container.html( jQuery.validator.format("There are {0} errors in your form.", this.numberOfInvalids()) ); - ok( true, "showErrors called" ); - this.defaultShowErrors(); - } - }); - equals( "", container.html(), "must be empty" ); - equals( "", labelContainer.html(), "must be empty" ); - // validate whole form, both showErrors and invalidHandler must be called once - // preferably invalidHandler first, showErrors second - ok( !v.form(), "invalid form" ); - equals( 2, labelContainer.find("label").length ); - equals( "There are 2 errors in your form.", container.html() ); - ok( labelContainer.is(":visible"), "must be visible" ); - ok( container.is(":visible"), "must be visible" ); - - $("#firstname").val("hix").keyup(); - $("#testForm1").triggerHandler("keyup", [jQuery.event.fix({ type: "keyup", target: $("#firstname")[0] })]); - equals( 1, labelContainer.find("label:visible").length ); - equals( "There are 1 errors in your form.", container.html() ); - - $("#lastname").val("abc"); - ok( v.form(), "Form now valid, trigger showErrors but not invalid-form" ); -}); - -test("option invalidHandler", function() { - expect(1); - var v = $("#testForm1clean").validate({ - invalidHandler: function() { - ok( true, "invalid-form event triggered called" ); - start(); - } - }); - $("#usernamec").val("asdf").rules("add", { required: true, remote: "users.php" }); - stop(); - $("#testForm1clean").submit(); -}); - -test("findByName()", function() { - deepEqual( new $.validator({}, document.getElementById("form")).findByName(document.getElementById("radio1").name).get(), $("#form").find("[name=radio1]").get() ); -}); - -test("focusInvalid()", function() { - expect(1); - var inputs = $("#testForm1 input").focus(function() { - equals( inputs[0], this, "focused first element" ); - }); - var v = $("#testForm1").validate(); - v.form(); - v.focusInvalid(); -}); - -test("findLastActive()", function() { - expect(3); - var v = $("#testForm1").validate(); - ok( !v.findLastActive() ); - v.form(); - v.focusInvalid(); - equals( v.findLastActive(), $("#firstname")[0] ); - var lastActive = $("#lastname").trigger("focus").trigger("focusin")[0]; - equals( v.lastActive, lastActive ); -}); - -test("validating multiple checkboxes with 'required'", function() { - expect(3); - var checkboxes = $("#form input[name=check3]").attr("checked", false); - equal(checkboxes.size(), 5); - var v = $("#form").validate({ - rules: { - check3: "required" - } - }); - v.form(); - equal(v.size(), 1); - checkboxes.filter(":last").attr("checked", true); - v.form(); - equal(v.size(), 0); -}); - -test("dynamic form", function() { - var counter = 0; - function add() { - $("").appendTo("#testForm2"); - } - function errors(expected, message) { - equals(expected, v.size(), message ); - } - var v = $("#testForm2").validate(); - v.form(); - errors(1); - add(); - v.form(); - errors(2); - add(); - v.form(); - errors(3); - $("#testForm2 input[name=list1]").remove(); - v.form(); - errors(2); - add(); - v.form(); - errors(3); - $("#testForm2 input[name^=list]").remove(); - v.form(); - errors(1); - $("#agb").attr("disabled", true); - v.form(); - errors(0); - $("#agb").attr("disabled", false); - v.form(); - errors(1); -}); - -test("idOrName()", function() { - expect(4); - var v = $("#testForm1").validate(); - equals( "form8input", v.idOrName( $("#form8input")[0] ) ); - equals( "check", v.idOrName( $("#form6check1")[0] ) ); - equals( "agree", v.idOrName( $("#agb")[0] ) ); - equals( "button", v.idOrName( $("#form :button")[0] ) ); -}); - -test("resetForm()", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - var v = $("#testForm1").validate(); - v.form(); - errors(2); - $("#firstname").val("hiy"); - v.resetForm(); - errors(0); - equals("", $("#firstname").val(), "form plugin is included, therefor resetForm must also reset inputs, not only errors"); -}); - -test("message from title", function() { - var v = $("#withTitle").validate(); - v.checkForm(); - equals(v.errorList[0].message, "fromtitle", "title not used"); -}); - -test("ignoreTitle", function() { - var v = $("#withTitle").validate({ignoreTitle:true}); - v.checkForm(); - equals(v.errorList[0].message, $.validator.messages["required"], "title used when it should have been ignored"); -}); - -test("ajaxSubmit", function() { - expect(1); - stop(); - $("#user").val("Peter"); - $("#password").val("foobar"); - jQuery("#signupForm").validate({ - submitHandler: function(form) { - jQuery(form).ajaxSubmit({ - success: function(response) { - equals("Hi Peter, welcome back.", response); - start(); - } - }); - } - }); - jQuery("#signupForm").triggerHandler("submit"); -}); - - -module("misc"); - -test("success option", function() { - expect(7); - equals( "", $("#firstname").val() ); - var v = $("#testForm1").validate({ - success: "valid" - }); - var label = $("#testForm1 label"); - ok( label.is(".error") ); - ok( !label.is(".valid") ); - v.form(); - ok( label.is(".error") ); - ok( !label.is(".valid") ); - $("#firstname").val("hi"); - v.form(); - ok( label.is(".error") ); - ok( label.is(".valid") ); -}); - -test("success option2", function() { - expect(5); - equals( "", $("#firstname").val() ); - var v = $("#testForm1").validate({ - success: "valid" - }); - var label = $("#testForm1 label"); - ok( label.is(".error") ); - ok( !label.is(".valid") ); - $("#firstname").val("hi"); - v.form(); - ok( label.is(".error") ); - ok( label.is(".valid") ); -}); - -test("success option3", function() { - expect(5); - equals( "", $("#firstname").val() ); - $("#errorFirstname").remove(); - var v = $("#testForm1").validate({ - success: "valid" - }); - equals( 0, $("#testForm1 label").size() ); - $("#firstname").val("hi"); - v.form(); - var labels = $("#testForm1 label"); - equals( 3, labels.size() ); - ok( labels.eq(0).is(".valid") ); - ok( !labels.eq(1).is(".valid") ); -}); - -test("successlist", function() { - var v = $("#form").validate({ success: "xyz" }); - v.form(); - equals(0, v.successList.length); -}); - -test("success isn't called for optional elements", function() { - expect(4); - equals( "", $("#firstname").removeClass().val() ); - $("#something").remove(); - $("#lastname").remove(); - $("#errorFirstname").remove(); - var v = $("#testForm1").validate({ - success: function() { - ok( false, "don't call success for optional elements!" ); - }, - rules: { - firstname: "email" - } - }); - equals( 0, $("#testForm1 label").size() ); - v.form(); - equals( 0, $("#testForm1 label").size() ); - $("#firstname").valid(); - equals( 0, $("#testForm1 label").size() ); -}); - -test("all rules are evaluated even if one returns a dependency-mistmatch", function() { - expect(6); - equals( "", $("#firstname").removeClass().val() ); - $("#lastname").remove(); - $("#errorFirstname").remove(); - $.validator.addMethod("custom1", function() { - ok( true, "custom method must be evaluated" ); - return true; - }, ""); - var v = $("#testForm1").validate({ - rules: { - firstname: {email:true, custom1: true} - } - }); - equals( 0, $("#testForm1 label").size() ); - v.form(); - equals( 0, $("#testForm1 label").size() ); - $("#firstname").valid(); - equals( 0, $("#testForm1 label").size() ); - - delete $.validator.methods.custom1; - delete $.validator.messages.custom1; -}); - -test("messages", function() { - var m = jQuery.validator.messages; - equals( "Please enter no more than 0 characters.", m.maxlength(0) ); - equals( "Please enter at least 1 characters.", m.minlength(1) ); - equals( "Please enter a value between 1 and 2 characters long.", m.rangelength([1, 2]) ); - equals( "Please enter a value less than or equal to 1.", m.max(1) ); - equals( "Please enter a value greater than or equal to 0.", m.min(0) ); - equals( "Please enter a value between 1 and 2.", m.range([1, 2]) ); -}); - -test("jQuery.validator.format", function() { - equals( "Please enter a value between 0 and 1.", jQuery.validator.format("Please enter a value between {0} and {1}.", 0, 1) ); - equals( "0 is too fast! Enter a value smaller then 0 and at least -15", jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}", 0, -15) ); - var template = jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}"); - equals( "0 is too fast! Enter a value smaller then 0 and at least -15", template(0, -15) ); - template = jQuery.validator.format("Please enter a value between {0} and {1}."); - equals( "Please enter a value between 1 and 2.", template([1, 2]) ); -}); - -test("option: ignore", function() { - var v = $("#testForm1").validate({ - ignore: "[name=lastname]" - }); - v.form(); - equals( 1, v.size() ); -}); - -test("option: subformRequired", function() { - jQuery.validator.addMethod("billingRequired", function(value, element) { - if ($("#bill_to_co").is(":checked")) - return $(element).parents("#subform").length; - return !this.optional(element); - }, ""); - var v = $("#subformRequired").validate(); - v.form(); - equals( 1, v.size() ); - $("#bill_to_co").attr("checked", false); - v.form(); - equals( 2, v.size() ); - - delete $.validator.methods.billingRequired; - delete $.validator.messages.billingRequired; -}); - -module("expressions"); - -test("expression: :blank", function() { - var e = $("#lastname")[0]; - equals( 1, $(e).filter(":blank").length ); - e.value = " "; - equals( 1, $(e).filter(":blank").length ); - e.value = " " - equals( 1, $(e).filter(":blank").length ); - e.value= " a "; - equals( 0, $(e).filter(":blank").length ); -}); - -test("expression: :filled", function() { - var e = $("#lastname")[0]; - equals( 0, $(e).filter(":filled").length ); - e.value = " "; - equals( 0, $(e).filter(":filled").length ); - e.value = " " - equals( 0, $(e).filter(":filled").length ); - e.value= " a "; - equals( 1, $(e).filter(":filled").length ); -}); - -test("expression: :unchecked", function() { - var e = $("#check2")[0]; - equals( 1, $(e).filter(":unchecked").length ); - e.checked = true; - equals( 0, $(e).filter(":unchecked").length ); - e.checked = false; - equals( 1, $(e).filter(":unchecked").length ); -}); - -module("events"); - -test("validate on blur", function() { - function errors(expected, message) { - equals(v.size(), expected, message ); - } - function labels(expected) { - equals(v.errors().filter(":visible").size(), expected); - } - function blur(target) { - target.trigger("blur").trigger("focusout"); - } - $("#errorFirstname").hide(); - var e = $("#firstname"); - var v = $("#testForm1").validate(); - $("#something").val(""); - blur(e); - errors(0, "No value yet, required is skipped on blur"); - labels(0); - e.val("h"); - blur(e); - errors(1, "Required was ignored, but as something was entered, check other rules, minlength isn't met"); - labels(1); - e.val("hh"); - blur(e); - errors(0, "All is fine"); - labels(0); - e.val(""); - v.form(); - errors(3, "Submit checks all rules, both fields invalid"); - labels(3); - blur(e); - errors(1, "Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error" ); - labels(3); - e.val("h"); - blur(e); - errors(1, "Entering a single character fulfills required, but not minlength: 2, still invalid"); - labels(3); - e.val("hh"); - blur(e); - errors(0, "Both required and minlength are met, no errors left"); - labels(2); -}); - -test("validate on keyup", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - function keyup(target) { - target.trigger("keyup"); - } - var e = $("#firstname"); - var v = $("#testForm1").validate(); - keyup(e); - errors(0, "No value, no errors"); - e.val("a"); - keyup(e); - errors(0, "Value, but not invalid"); - e.val(""); - v.form(); - errors(2, "Both invalid"); - keyup(e); - errors(1, "Only one field validated, still invalid"); - e.val("hh"); - keyup(e); - errors(0, "Not invalid anymore"); - e.val("h"); - keyup(e); - errors(1, "Field didn't loose focus, so validate again, invalid"); - e.val("hh"); - keyup(e); - errors(0, "Valid"); -}); - -test("validate on not keyup, only blur", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - var e = $("#firstname"); - var v = $("#testForm1").validate({ - onkeyup: false - }); - errors(0); - e.val("a"); - e.trigger("keyup"); - e.keyup(); - errors(0); - e.trigger("blur").trigger("focusout"); - errors(1); -}); - -test("validate on keyup and blur", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - var e = $("#firstname"); - var v = $("#testForm1").validate(); - errors(0); - e.val("a"); - e.trigger("keyup"); - errors(0); - e.trigger("blur").trigger("focusout"); - errors(1); -}); - -test("validate email on keyup and blur", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - var e = $("#firstname"); - var v = $("#testForm1").validate(); - v.form(); - errors(2); - e.val("a"); - e.trigger("keyup"); - errors(1); - e.val("aa"); - e.trigger("keyup"); - errors(0); -}); - -test("validate checkbox on click", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e = $("#check2"); - var v = $("#form").validate({ - rules: { - check2: "required" - } - }); - trigger(e); - errors(0); - trigger(e); - equals( false, v.form() ); - errors(1); - trigger(e); - errors(0); - trigger(e); - errors(1); -}); - -test("validate multiple checkbox on click", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e1 = $("#check1").attr("checked", false); - var e2 = $("#check1b"); - var v = $("#form").validate({ - rules: { - check: { - required: true, - minlength: 2 - } - } - }); - trigger(e1); - trigger(e2); - errors(0); - trigger(e2); - equals( false, v.form() ); - errors(1); - trigger(e2); - errors(0); - trigger(e2); - errors(1); -}); - -test("validate radio on click", function() { - function errors(expected, message) { - equals(expected, v.size(), message ); - } - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e1 = $("#radio1"); - var e2 = $("#radio1a"); - var v = $("#form").validate({ - rules: { - radio1: "required" - } - }); - errors(0); - equals( false, v.form() ); - errors(1); - trigger(e2); - errors(0); - trigger(e1); - errors(0); -}); - -module("ajax"); - -test("check the serverside script works", function() { - stop(); - $.getJSON("users.php", {value: 'asd'}, function(response) { - ok( response, "yet available" ); - $.getJSON("users.php", {username: "asdf"}, function(response) { - ok( !response, "already taken" ); - start(); - }); - }); -}); - -test("check the serverside script works2", function() { - stop(); - $.getJSON("users2.php", {value: 'asd'}, function(response) { - ok( response, "yet available" ); - $.getJSON("users.php", {username: "asdf"}, function(response) { - ok( !response, "asdf is already taken, please try something else" ); - start(); - }); - }); -}); diff --git a/www/include/jslibs/jquery-validation/test/users.php b/www/include/jslibs/jquery-validation/test/users.php deleted file mode 100644 index d79d1869ef..0000000000 --- a/www/include/jslibs/jquery-validation/test/users.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/www/include/jslibs/jquery-validation/test/users2.php b/www/include/jslibs/jquery-validation/test/users2.php deleted file mode 100644 index d787f763ce..0000000000 --- a/www/include/jslibs/jquery-validation/test/users2.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/www/skins/admin/editusers.js b/www/skins/admin/editusers.js index a444fca23e..f223a3ab3e 100644 --- a/www/skins/admin/editusers.js +++ b/www/skins/admin/editusers.js @@ -74,18 +74,29 @@ function ini_edit_usrs() { template: $('#users_rights_form select[name="template"]').val(), user_infos: $('#user_infos_form').serialize() }; - $.ajax({ - type: 'POST', - url: '../admin/users/rights/apply/', - dataType: 'json', - data: datas, - success: function (data) { - if (!data.error) - $('a.zone_editusers').trigger('click'); - else - alert(data.message); - } - }); + + var callback = function (reset_before_apply) { + datas.reset_before_apply = reset_before_apply; + $.ajax({ + type: 'POST', + url: '../admin/users/rights/apply/', + dataType: 'json', + data: datas, + success: function (data) { + if (!data.error) + $('a.zone_editusers').trigger('click'); + else + alert(data.message); + } + }); + }; + + if (datas.template !== '') { + dialogUserTemplate(callback); + } else { + callback('0'); + } + return false; }); diff --git a/www/skins/admin/template-dialogs.js b/www/skins/admin/template-dialogs.js new file mode 100644 index 0000000000..950854757e --- /dev/null +++ b/www/skins/admin/template-dialogs.js @@ -0,0 +1,33 @@ + +var dialogUserResetTemplateConfirm = function (callback) { + var buttons = {}; + buttons[language.reset_template_do_reset_apply_button] = function () { p4.Dialog.Close(2); callback('1'); }; + + var $dialog = p4.Dialog.Create({ + size : '500x150', + closeOnEscape : true, + closeButton:false, + cancelButton:true, + title : language.reset_template_confirm_dialog_title, + buttons : buttons + }, 2); + + $dialog.setContent(language.reset_template_do_confirm_choice); +} + +var dialogUserTemplate = function (callback) { + var buttons = {}; + buttons[language.reset_template_do_not_reset_button] = function () { p4.Dialog.Close(1); callback('0'); }; + buttons[language.reset_template_do_reset_button] = function () { p4.Dialog.Close(1); dialogUserResetTemplateConfirm(callback); }; + + var $dialog = p4.Dialog.Create({ + size : '500x150', + closeOnEscape : true, + closeButton:false, + cancelButton:true, + title : language.reset_template_dialog_title, + buttons : buttons + }); + + $dialog.setContent(language.reset_template_ask_choice); +} diff --git a/www/skins/admin/users.js b/www/skins/admin/users.js index 6c944af51d..928dbce047 100644 --- a/www/skins/admin/users.js +++ b/www/skins/admin/users.js @@ -283,19 +283,22 @@ $(document).ready(function () { return false; } - $('#right-ajax').empty().addClass('loading'); - p4.users.sel = []; + dialogUserTemplate(function (reset_before_apply) { + $('#right-ajax').empty().addClass('loading'); + p4.users.sel = []; - $.ajax({ - type: $this.attr('method'), - url: $this.attr('action'), - data: { - users: users, - template: template - }, - success: function (data) { - $('#right-ajax').removeClass('loading').html(data); - } + $.ajax({ + type: $this.attr('method'), + url: $this.attr('action'), + data: { + users: users, + template: template, + reset_before_apply: reset_before_apply + }, + success: function (data) { + $('#right-ajax').removeClass('loading').html(data); + } + }); }); return false; }); diff --git a/www/skins/prod/jquery.Dialog.js b/www/skins/prod/jquery.Dialog.js index 1fdf31f801..4e4426c959 100644 --- a/www/skins/prod/jquery.Dialog.js +++ b/www/skins/prod/jquery.Dialog.js @@ -75,24 +75,30 @@ var p4 = p4 || {}; this.options.buttons = addButtons(this.options.buttons, this); - switch (this.options.size) { - case 'Full': - height = bodySize.y - 30; - width = bodySize.x - 30; - break; - case 'Medium': - width = Math.min(bodySize.x - 30, 730); - height = Math.min(bodySize.y - 30, 520); - break; - default: - case 'Small': - width = Math.min(bodySize.x - 30, 420); - height = Math.min(bodySize.y - 30, 300); - break; - case 'Alert': - width = Math.min(bodySize.x - 30, 300); - height = Math.min(bodySize.y - 30, 150); - break; + if (/\d+x\d+/.test(this.options.size)) { + var dimension = this.options.size.split('x'); + height = dimension[1]; + width = dimension[0]; + } else { + switch (this.options.size) { + case 'Full': + height = bodySize.y - 30; + width = bodySize.x - 30; + break; + case 'Medium': + width = Math.min(bodySize.x - 30, 730); + height = Math.min(bodySize.y - 30, 520); + break; + default: + case 'Small': + width = Math.min(bodySize.x - 30, 420); + height = Math.min(bodySize.y - 30, 300); + break; + case 'Alert': + width = Math.min(bodySize.x - 30, 300); + height = Math.min(bodySize.y - 30, 150); + break; + } } /*