Content-Type: multipart/related; start=; boundary=----------9ijr7HVovTDUXUccioAL6i Content-Location: http://cmf.ohtanz.com/blog/archives/2166 Subject: =?utf-8?Q?Opera=E3=82=92=E9=AB=98=E9=80=9F=E5=8C=96=E3=81=97=E3=81=A6=E3=81=BF=E3=81=9F=20=C2=AB=20=E3=82=82=E3=81=BF=E3=82=93=E3=81=8E=E3=82=85=E3=81=85?= MIME-Version: 1.0 ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=2166.htm Content-Type: text/html; charset=UTF-8; name=2166.htm Content-ID: Content-Location: http://cmf.ohtanz.com/blog/archives/2166 Content-Transfer-Encoding: Quoted-Printable Opera=E3=82=92=E9=AB=98=E9=80=9F=E5=8C=96=E3=81=97=E3=81=A6=E3=81= =BF=E3=81=9F « =E3=82=82=E3=81=BF=E3=82=93=E3=81=8E=E3=82=85=E3=81= =85 = = = =
3D"total" 3D"today" 3D"yesterday" 3D"logo"=E3=82=82=E3=81=BF=E3=82= =93=E3=81=8E=E3=82=85=E3=81=85 Perl=E3=81=A8=E3=81=8BPHP=E3=81=A8=E3=81=8BLinu= x=E3=81=A8=E3=81=8B=E3=81=A9=E3=81=86=E3=81=A7=E3=82=82=E3=81=84=E3=81=84= =E8=A9=B1
=
= =
Subscribe by = RSS
=
=
23
6=E6=9C=88
0
=

Opera=E3=82=92=E9=AB=98=E9=80=9F=E5=8C=96=E3= =81=97=E3=81=A6=E3=81=BF=E3=81=9F

=
by cmf@ohtan=E7=AE=A1=E7=90=86=E4=BA=BA=
------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/gif Content-Location: http://cmf.ohtanz.com/hp/bg.gif Content-Transfer-Encoding: Base64 R0lGODdhFAAaBOf/AABCbgBDbwBEcABGcgFJcBFFbBJFbQNKcRRGbgZLchVHbwhM cxdIcApNdA1OdRFQdxJReBRSeQBXjhZTegBYkBdUewBakgBbkwBclBpXeSVVdydW eR1ZeyhXegRgkh9bfAlhkxtdkCJdfyxbfiNegA5jlSRfgSZggidhgxNllyhihBZm mSpjhRhnmhpomyxlhzRkgRxpnDVlgjZmgx9rnTdnhCFsnzhohSBumzlphiNtoCJv nDpqhyRwnTxriCVxnj1siT5tiidynz9uiyhzoEBvjCp0oUFwjit1okJxjyx2oy53 pEpyiy94pTF5pkt0jEx0jTJ6pzN7qE12j093kDZ9qlB4kT98pFF5kkB9plJ6k1N7 lEJ/qFR8lUSAqVV9lkWBqlZ+mEaCq1d/mVx/k1iAmkiErV6BlUmFrl+ClkuGr2CD l0yHsE2IsmKFmWOGmk6Ks2SHm06Mr1CLtWWInGaJnViMsGeKnlmNsWiLoFqOsm+K oFKRs2mMoVuPs26MnFyQtFSTtW+OnV2RtnKNo3aNnl6St1+TuHiPn1iWuXmQoFmX unqRoWKWunuSoluZvGSXvHyTo32UpH6VpmuZuH+Wp4CXqG2buoGYqW+cvGifvXCd vYOaq3Gfv4ibpnOgwIqdqHSiwYueqXakw4ygq3elxI6hrXimxY+irnmnx5Cjr3+n wpGksICow5KlsYGqxJSns4OrxZWptJmpr4WtyJqqsIavyZyssoixy6OstKWttZ+v tYqzzYy0z6evt4210KiwuJK1y5O3zKqyuquzu5W5zqy0vK+0t5a60Je70bG2uZi8 0pq907O4u7S5vJu/1JzA1ba7vp3B1re8v57C17i+wJ/D2aTE1KbG1qjH2K/G2LDI 2qrK2rLK27PL3bTM3rXN37bO4LjQ4rrR47vS5L/T38HV4cPX48TY5MXZ5cfb6Mnd 6cre68zg7NHh6NLi6dPk6tTl69vk7Nbn7d3l7t7m79np8N/o8OHq8uPs9OXu9unu 8evw8+zx9O3y9e7z9iwAAAAAFAAaBAAI/gABCBxIsGBBCQgTKly40KBDhwwjRnxI caDEiwkFaNzIsWNHjBg9ihQJ8uLIkxstLFRZ0oDLlzBjGhDgUoCFmzhz6tQps2fP nUCB+hz6MqhRnESJAr1w9KaBAS4HSH36FOrUqgYuaN3KtWtXBGARDAgbVqrZsWC9 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 MJVUWZVWaZU3iQmYkJVaaQlb6ZVb+ZWYcJVkSZZaeZZomZZqWZZsSZVq+ZZv2ZZt iZacwAmYYJd4eZd2iZZyyZZ1+ZeAGZiCOZXaUJiFmQ3agJiGqZiImQ116QmACZmQ yQmTGZiGeZmYmZmF6Qmc2Zme+ZmfyQ3coA2jSZqkKZqmKZqqyQ2g2ZqtyQ3dEJux CZuwOZu12Q216Zq62Zmy2Zu++Zux+Zmg4AnDuZueAJzI6ZugsJzM2ZzO6ZzJGZ3d 8JzUSZ3SmZyikJ3a/qmdoCAK3bmd2tkN4BCb4yme43me5tmb4Lme7Jmd4PCe8Bmf 8imf7Vmf2gkO4RAO+Dmf/Kmf9mmf+RmgAjqgBEoKBmqg2XmgCCoKpMCgCBoO4wCh ESqgEzqhAqqgGJqhGDoOHNqhHvqhH2oKIjqipkAKJWqgImqiJlqiINqiLUqiMBqj MOqiNNqhpoAKNyqiOEqiOIoKPYqjNVqjPjqkRFqkRkoOSIqk45CkTKqkTDqkqqAK qCClU+qjVBqlUYoK5UAO5dClXvqlYOqlWDqmZFqmURqmaIqmqsAKbIqlrOCmY/qm a5qmdOqlbMqmrsAKrpCnd6qnfHqndVqnezqo/oRaqIZqDl1qDoi6qOWgqI6qqI1q DoY6qZP6qJZ6qZZKqZo6qOfQqedgDp7aqaA6qqFqDrAwqKdKqanKqaHaqq4aqrAQ q7I6q7RKq+hwDuiQq7eaq53Kq7raq7UarMGKDulArLqaDsWaq8hqrMk6C876rNAK rbAQrchardZ6rdgqC9q6rdzards6C7KAreIqrt5aruWaDuqArOlqrerQrunaruoK rbIQreDqrPMKre6ar/q6r+1Kr/7qr+qwDvsqsO66DgTrrrNQCwq7sLUArQubsA1b CwY7sRRbsRbLsBibsRhrsRzLsbdQC7cQsiIrsiD7sSGrsLfAsewwsSvr/rEj+7Iw O7LsMLM0W7M2a7Mxm7Mv2w4827M++7M/qwtCO7JCqwshO7Qia7RAu7RLW7RO+7RQ K7RMO7U9uwu6sAtWe7VFi7VWi7VaqwvuELbtELZk6w5jO7ZlG7ZOy7VXy7Vu27Zg m7ZyO7fuELVC27Vf67TvsLd827d+67e74Atuy7WCi7WCW7hYu7fwAA/vsLiM27iO C7mO6wuUW7mWe7mX67iau7mcu7iXCwyYG7q+AA/xoLnxULqLW7qnS7qnGw/A8Lqw G7uyK7vyEA/yULu4W7ut27q6Kw+z+7u/e7vCO7zEW7zAe7ywKw/zcLvz0LzMu7zF 27zDAAzDUL3W/nu92Fu9wNC83EsP3Pu93UsP3pu95Eu+9UAP51sP6Su+58u+7lsP 5Ru/1qu+9GsP6mu/9Xu/9msPxDAMxPC//QvAAvy//vu/9nDACHwPB6zACrzADjzA EBzB/3sPFFzBFnzBF3wMx0AMG8zBHezBGhzCHHzB+IAPGHzCxpDCx5DCxqDBKtzC LbzCKVzCNFzDNnzDMczCLuzCMMzCM3zDQHzDx6AMyqDBRRzCRDzEQ3zEyhDETkzD RBzFUjzFVJwPVnzFWJzFWUzFXMzFWvzFX9zFYhzFYFzGV9wMRNwMaozGbIzGU4zG +xDH+5APclzHcUzHVhzHa7zHfNzHaqwP/nEMyIKsD4NMyIZMyH7cDM6gyIu8yGrs yIJsx3YMyHWsD85wyZicyZqsyXLMD/vAD54MyqIMynHsyfuwyaiMyqO8yqy8yqn8 ypjcD7Isy/zQD7VMy7Z8y6DcD5kcDdGQyr8czM4wy8RczMYsy76czMq8zMzsD87c D84czf4gy9EMzdbMzNiMzdH8D/7wD9z8zd3szN4czdNQzuYcDeaczuo8DeE8zt78 zt38zvCMzut8zvXMzvLMzfGcz/DsD/dsz/Sczt/Mz/m8z908DdVwzgldzgtdzgE9 DQUNzwUdzv6M0OhcDRj9zwgN0QQd0fmczr5czw9dzvy8zx7tzdMQ/g0ZPdIhndIB 3dEE3c7/4NLqrNL0fNHorNIwvdP/oNLmnNAXjdFAndDV4Ms8DdM+TdREnc4NDdRH 7dFNzdA3rdQZXQ3yLM5PzdAYfdEO/dNazdExvdMLXdVCzdBmvdFPLdHenNNUfc4B ndTubNJqnc8L3dIpfdcp3dApHddXXdL6rNEajdXjHM+CTdgzbdZbDdhWPdA8TdiA /c9XTdEnjdKPXc9pzc+KXc/VIM7b3NeMzc3KfNfZHNrTLM2mDc2n7Q+jvdrRcMyu XczO4MuxHdu/fMm1PduzfcvFrNuuDcuw3MrA7cq+ncrA/cnBzQ/DncqSvNzL3ciM zMiX/NyK/vzIh1zd1n3I+5DI2r3GkxzIckzJlKzHyuDG483H5b3G4w3Gc0zH653H VjzGY2zGZgzfYizfZUzfXWzFNJwPJczf+63fUEzfSyzFT/zEIXzgIRzDCK7BBe7E PvzgEP7gQUzBNEzC97DgB67gC37CHH7BEizAHyzA9sDAFDziFTziCVzBH77ixLC/ +ovA9XDAMb6/BxzA/Vu+BHy99LvjPK6+6Ju+8Cu/8eu93jsPRW7k4pvkSk4PQh6/ ygu+UB7l00u91hu7U469wFC8Wq7lyIu8W/7lwtvlx7u7ZF7mZG65oJvmvpDmr1u5 oNu5pJu6jou6pSu6dl65cJ7nkxu4/pTL53x+uX8euYrLt4/7t+/AtoMLt4NrtWT7 DnLr6GXLt3XrtXa7tndLt5hOtovutZvetrtwtmJrtjwr6qMe6pV+6rpAtVSL6pWu 6lMLs0YL6y9bs+3ADrV+67Zu6zxLszrb6ym7Dis7s8AO7MJO7MO+Dr6usx277BOr sSjLsB/LsMzO7M5e7Qs77QFrsNlusAzrrw2bsODesPw67vr6r+b+rO6KruT+rgh7 r9oKrt86r/L+rONa79Vqrvi+rfZu7+7+7vBur/f6rOG67+Maq7MwrQb/rAY/rdCq rLpKrMn68BGPDsJa8bIaqreKq72K8bh6q7HqCrQK8qdaqyD//qom36qbuqmkiqmf iqkpr6mYGvOZ+vKVmqiI2qheuqg3n6g0P6mBSqd9eqd/2qdD//NpKqdR+qZy2qZJ P6ZGr6ZmGvVOz6V0SvVb6qVEmqVTeqVZ76NNyqRL6qRNaqRkT/ZBSqM9eqM7uqM6 qqM7evYuKqNyP6NwD6IkqqIZOqIqagp1D6Ia+vcYSqCCb6EB2qAKyqAOavgIeqCC 3/gD+p/1yZ+S/575CQ6Q356Tn/mWf/nrSZ6+CZ+fb56c3/nXCZzVefrMWfqmj/qn r/q/aZy66fq+CfuuSZuyeZu4j5uzSfuveZqo6fuFuZqoyfugqZnGj5mUOZmeSZnM H5ie/nCYxt+Yi1mYgln91d+XZXmXermXf7n9eFmX2G+WcDn+Whn+V0n+5G/+VnmW YBmWXOmV7T+W6k+VUVn/R8mUTemUGGn/9j+UL0mUAEHt2kBqAgdaQigJ4UJLCiUp bLjwWkGBFQtOpDiR4EOOHT1+pBhS5MiCH02aJJlS5EmWHKVJowYTZsyQL22+bNkS GrSb0nju9Ak0qLScLHceRZpUadGTSZ89fbYzatSkkSJJsppVa1asWZlBffYV7FNm YqE6ioRWrSO2bdOqTVtW7ly6ddvexZuXbV2+fBn9ZftXMGDCgvvSLVZMbmJFfxU9 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 ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/container.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA9IAAAABCAIAAAC9swGVAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGxJREFUeNpi1LPzYfgPgVAAZ/z4+tHW O4wBG9izuO/p06cMo2AUjIJRMApGwSigEviPA3BwcFy9elVUVJSJiYmZmZmRkZEJ DBjBYDTcRsEooDNQVVV1iS3CKnV46yoObn5o3mRkRDAYQBAgwAAVHTq6cHizNwAA AABJRU5ErkJggg== ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/navigation.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA9IAAAA2CAMAAAAccFHlAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFGhoacYyhZH6Ug6G5aIKYgJ21 YHmOYnyRWXCDoD46nj051VQK6mcLbIadnLTHLj1Mdi0qaoWcZoCWISw2ijUy//// 1WoMw2BbukZCcImeVGp8pUE8cIqgmDo28ocLskM+rUVA9sygsUZCpLzOaoSalTg1 dJCmpT456V0LNppHRrBYbIieukhEtUVBrkI98noLboqgdJCodpKq3rKZco6mb4ea ukwKeJSst1pXdI6l7HILco2kUsZncIeacIyjaIOaboieeZauboaZaICUZH2Sboqi l6/AtUhDbYigZ4GXZn6SaoKWZHySe5iwqEM+fpy0bImgbYSYd5KokdiefZqyYnqP Y3yQfpqyXHSHmTs4V22AepiwdU5SaSknUmd5boWYcoyieJOq9bJ2Zn+U740ve5ev qD46eJatqEE8jzc0aIGW75BPmzw4jkxOd5SrqEA70IdPqkQ/okA7hTMw89bBd5Kp 2HElq0I+qkA8bIWbepWsaICWd5SqX3iMaoOYZYCWdJKpdZGoR1hmrFdU46mC9ahV pT87boecKzpIZ4KX6HYpo0A8rkM+p0I9ZX+Vc42i4GMUfZqwbkw0bISXey8sf5yy dZKpfpqwa4SagZ+32JxsaYOZfJmx9uLUfZqzunh1lEYNqUYYKTZEvNXFfJeucY2k +vTwc5CnPk1Zj08pW21+bIOWXSQjepeveZSr9+vihpurY32Tb4uieZWtd5Or6XUZ aYGVqUI9XTUaoDs2bzEGyVwka4abbomfnjs4TF9wd5GnrEA7lDonMjpGjTsNUGR1 wl4KWFldn2po+MCEbYmgbYWabYeduVUaxevMaH2OedWKsUQ/bbp674QddZGpvl9a tUQ/cIibokEksU0ks4eFfZmwcY6laoGUa4eeeJOrbYWZa4OXc4+mZ3+T7qNooT04 a4SZaYKWeJCicIuidpGplz47bIGShsGP4OTnWGh4p0Quq0M0dUJFUyAenUA+pz87 fTYze5atvFAxskkyoVNP0YMd2X098p08bomh5tfTSzWRVQAAQWBJREFUeNrsnQtA VteV7ytBCSrTQoM3VqzWi2BCVSAQqlReYgUjYiyCqc2ooaihRqIJRdsopU0wxmfG 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 ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/active_tab_right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAASwAAAAoCAMAAABzRTflAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRQTFRFMDAwNjY2IyMjHx8fNDQ0HR0d ODg4AAAANTU1JiYmICAgKysrJSUlLi4uJCQkIiIiISEhKCgoMzMzMjIyJycnLS0t LCwsGxsbHBwcMTExKioqNzc3Hh4eLy8vKSkpcnJyOTk5OEVQT2FwEhYZPT09RERE VlZWX19fPDw8CQkJX3SFSUlJ994alwAAAKBJREFUeNrs0NdBAlAABMEzcWAWAbMk I/bfny3s+98pYVIh++3ukLWQ7+nvLhsRH39fs20mYj6zN4v6mTQvopojUWYNZU1F NaeizBrKmotq7kU1T6IaYWYNZb2Jaq5ENUtRzUpUcyGqeRbVvItq7kQ1C1HNTFRz Kaq5FtUcizJrKOtGVHMrqjkX1ZyIMmso61VUcybKrKGsR1HNg6j+CzAA6ACDZwmg RPkAAAAASUVORK5CYII= ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/active_tab_left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAUAAAAoCAMAAAABg8A/AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIFQTFRFAAAAMDAwIyMjNDQ0NjY2Hx8f HR0dNTU1JiYmODg4LS0tJycnICAgLi4uISEhJSUlKysrLCwsKioqMjIyMzMzGxsb MTExIiIiLy8vKSkpNzc3JCQkKCgoHh4eHBwcOEVQEhYZT2FwPT09SUlJX19fcnJy REREPDw8VlZWX3SFCQkJCFQGqwAAAGlJREFUeNo0xEcCgkAQAMFGVFgTijkCZv3/ A20PU4fi0zUtdN/i/qAp37crbfZMCdLr/0HQV1wIcsUrwVKwEWSKd4KpYCRYCOaC WrAXnARjQSmoBEdBT/FWMBNMBAPFZ8FQ8UWw1k+AAQDrvQnIzMyUFgAAAABJRU5E rkJggg== ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/after_post_rss.png Content-Transfer-Encoding: Base64 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 ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/footer.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA9IAAABQCAMAAADC3b2iAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMBQTFRFVW2AWXGFTGJ1Lz9OZn2RUWl9 Ghoac4mbYXmNLj5MTmV4fJChXXaLKTdEXHWKJTI9LTxKKjhGW3SJgpamJzRAWnOI UGZ5aoGUcIaZLDtJLj1MKzpHISw2bIKVbYSXWHCCYHiKXXSGUWh7V3CDXnaKaH+S XneMVGp+b4WYV26CZHuPXHSIVGx/Y3qOXnaId4yeW3KGX3eJX3iMSmByOktaT2R2 XnSIT2d6W3OFU2t/XnWJXXWIXHOHb4WXY3qLYHeIxr1/AQAANuVJREFUeNrsnQt3 4kby9hFrXjuMQ7Jkwc5ubAHCyBjMCDssYDB8/2/1Vj1V1RchsCfJf0/mHHq4SK2+ SapfP9XdwlP74d///vnX//znnz/+NpJw/f/O4RzO4TsJBCyw/e3Hf/7nP7/+/O9/ /1A7I30O5/A9Iy1QVyJ9PbpGOF+mcziH7yVci0pfVyMtR6//cb5O53AO30f4R2/E 3F4fUelrHNx3z0yfwzl8H0Qv4FifdrxHo+G+d10KLN/x/mGKEzsj/1VKxLGjUq6R Tzwqpdfh/ujlRT5frl4Qrjg88z8KTxQuni40PCDcINwh3N8/Pr4/Pj7eWrgMw1d6 faVXHL7w64t+Hg+/2D9+/W8D6qR//CoFbjiafhjkhA/DLd63+LjFx61suUt266Mu 5d/RcFsqFbkvL11hUeCb9E53iMPt4zvdKL5f9/f37/SBG0l38M6FG72z8vVw88Av hAsfnnx4RrjywRuRGNXoJTYyb7dixaPSt2wg3UdYnAoV/BxHzm8Ph7Z/VKW/pSmj MNXoyLHR50/kU3WNwvDig90hYxpcB1DfBFDfE9VsJmwzR7CuhFq5+HKC61+M6/8Z 01rVMZyF50qav16eCiG5cQjR1n1hX7qAy0vfEUhnIG/bOxkeATF3ufe37+/3/LqP guB873E2qAOYY6Bjnp/on1qKER0B7YnG1reAGO+PDhnxMaM49WchOZXuQ6Q/Cds3 n/Pne6vRsRrjEOm0Im1Qx0L9wLf/zik1QX0fSfVtpNSXYvUVAWyfEOtfnFj/L7h2 jkEVzl++2r9vAdqD+r8Jj3hz/yowPwrHjyWYZffu7kChHdIfA12W6EOi4/AJax59 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 ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=style.css Content-Type: text/css; name=style.css Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/style.css Content-Transfer-Encoding: 8bit /* Theme Name: Celadon Theme URI: http://www.themesboutique.com/ Description: Free theme from the Themes Boutique. Elegant theme focusing on usability and great looks. Widgetized 2 column layout with tabbed page navigation. Custom settings page included under the Appearance menu. Version: 1.0.3 Author: Dmitry Fadeyev Author URI: http://www.themesboutique.com */ /*------------------------------------------------ Reset - by Eric Meyer --------------------------------------------------*/ html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}:focus{outline:0;}body{line-height:1;color:black;background:white}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0}caption,th,td{text-align:left;font-weight:normal}blockquote:before,blockquote:after,q:before,q:after{content:""}blockquote,q{quotes:""""} /*------------------------------------------------ General --------------------------------------------------*/ body { font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-size: 12px; color: #222; background: url(/hp/bg.gif) top #2f3f4e; background-attachment: fixed; line-height: 1.45em; } p { padding-bottom: 1.5em; } h1 { font-size: 34px; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-weight: bold; letter-spacing: -1px; margin-bottom: 0.7em; } h2 { font-size: 28px; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-weight: bold; line-height: 1em; color: #418873; margin-bottom: 0.8em; width: 500px; } h2 a { text-decoration: none; color: #418873; } h2 a:hover { color: #2A5A4C; } h3 { line-height: 1em; font-size: 20px; font-weight: bold; margin-bottom: 0.85em; } h4 { line-height: 1.1em; font-size: 17px; font-weight: bold; margin-bottom: 0.9em; } h5 { font-size: 15px; font-weight: bold; margin-bottom: 1em; } h6 { font-size: 14px; font-weight: bold; margin-bottom: 1em; } a { color: #207CE6; } a:hover { color: #124D91; } strong { font-weight: bold; } em { font-style: italic; } code { font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; } hr { border: 0; border-top: dashed 1px #CCC; } /*------------------------------------------------ Containers --------------------------------------------------*/ #container { width: 978px; margin: 0 auto; background: url(images/container.png) repeat-y; } /*------------------------------------------------ Header --------------------------------------------------*/ #header { height: 115px; background: url(images/header.png) no-repeat; position: relative; } #header_home_link { position: absolute; width: 600px; height: 100px; top: 7px; left: 0; } #logo, #logo_with_tagline { text-decoration: none; color: #FFF; font-family: 'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-size: 28px; font-weight: bold; position: absolute; top: 48px; left: 80px; } #logo_with_tagline { top: 38px; } #tagline { color: #AABBC8; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-size: 17px; font-weight: bold; font-style: italic; position: absolute; top: 70px; left: 80px; text-shadow: #17222C 1px 1px 1px; } #titlelogoimage { letter-spacing: -1px; position: absolute; top: 35px; left: 25px; } /*------------------------------------------------ Search --------------------------------------------------*/ #header_search { width: 210px; height: 45px; position: absolute; top: 40px; right: 25px; } #search_input { position: absolute; left: 13px; top: 13px; width: 160px; font-size: 14px; border: solid 1px #FFF; } .overlabel { position: absolute; top: 16px; left: 17px; z-index: 1; color: #888; } .overlabel-apply { position: absolute; top: 16px; left: 17px; z-index: 1; color: #888; } /*------------------------------------------------ Navigation --------------------------------------------------*/ #navigation { height: 54px; background: url(images/navigation.png) no-repeat; position: relative; } #navigation ul { position: absolute; left: 18px; top: 9px; } #navigation ul li { float: left; margin-right: 2px; background: url(images/tab_right.png) top right; } #navigation ul li a { display: block; float: left; height: 40px; line-height: 40px; padding: 0 15px; text-decoration: none; color: #FFF; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-size: 14px; font-weight: bold; text-shadow: #10161C 0 -1px 1px; background: url(images/tab_left.png) no-repeat top left transparent; } #navigation ul li a:hover { text-decoration: underline; } #navigation ul .active_tab { background: url(images/active_tab_right.png) top right; } #navigation ul .active_tab a { background: url(images/active_tab_left.png) no-repeat top left transparent; } #navigation ul .active_tab a:hover { text-decoration: none; } .navigation a { padding: 4px 8px; font-weight: bold; background-color: #4C8CD6; color: #FFF; text-decoration: none; } .navigation a:hover { background-color: #34639A; } /*------------------------------------------------ RSS and Email subscription --------------------------------------------------*/ #subscribe { color: #FFF; position: absolute; height: 25px; width: 239px; top: 17px; right: 20px; text-align: center; } #subscribe a { text-decoration: none; font-weight: bold; background-color: #852F32; padding: 2px 4px; color: #FFF; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: #3D1618 0 1px 1px; border-top: solid 1px #3D1618; border-bottom: solid 1px #BB4C46; position: relative; top: 1px; } #subscribe #rss_icon_link { position: absolute; width: 40px; height: 40px; top: -12px; right: 232px; border: none; background: none; } #subscribe a:hover { background-color: #000; } .after_post_rss { margin-top: 20px; padding: 20px 20px 20px 75px; background: url(images/after_post_rss.png) no-repeat 17px 17px #FFFCD5; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; border: solid 1px #F2E0AC; } /*------------------------------------------------ Content --------------------------------------------------*/ .alignleft { float: left; margin-right: 20px; margin-bottom: 10px; } .alignright { float: right; margin-left: 20px; margin-bottom: 10px; } #content { width: 584px; padding: 28px 28px 28px 44px; float: left; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; } #content ol { list-style-type: decimal; margin: 0 0 20px 30px; } #content ul { list-style-type: disc; margin: 0 0 20px 30px; } #content blockquote { padding: 20px 10px 10px 50px; background: url(images/blockquote.png) no-repeat left top; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-style: italic; font-size: 14px; line-height: 1.4em; color: #494949; } #content pre { padding: 20px; background-color: #E8FBF3; border-left: solid 2px #D0E5DB; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-size: 14px; margin-bottom: 25px; line-height: 1.5em; color: #233235; } #content .post table tr td, #content .entry table tr td, #content table tr th { padding: 10px; background-color: #EBF5FF; border-top: solid 1px #FFF; border-left: solid 1px #FFF; } #content .post table tr th, #content .entry table tr th { padding: 10px; border-bottom: solid 1px #ABC6DA; background-color: #D4EAFF; } /*------------------------------------------------ Post --------------------------------------------------*/ .post { position: relative; padding-bottom: 25px; } .post .post_title { position: relative; left: 82px; margin-bottom: 0.4em; font-size: 20px; font-family: 'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; } .date_label { position: absolute; top: -8px; left: -44px; width: 117px; height:66px; background: url(images/date_label.png) no-repeat; } .date_day { color: #FFF; font-weight: bold; font-size: 20px; position: absolute; left: 9px; top: 12px; width: 40px; text-align: center; text-shadow: #284D43 0 -1px 1px; } .date_month { color: #FFF; font-weight: bold; text-transform: uppercase; position: absolute; left: 9px; top: 29px; width: 40px; text-align: center; text-shadow: #284D43 0 -1px 1px; } .comments_label { position: absolute; left: 55px; top: 10px; width: 42px; height: 37px; font-size: 13px; font-weight: bold; text-align: center; line-height: 36px; } .comments_label a { display: block; text-decoration: none; height: 37px; line-height: 36px; } .comments_label a:hover { text-decoration: underline; } .post_author { font-style: italic; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; margin-top: -4px; font-size: 14px; color: #8e8e8e; position: relative; left: 84px; margin-bottom: 1.3em; } #comments_heading { font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; color: #6eae9d; font-size: 17px; font-weight: bold; padding: 0.3em 0 1em 0; } .more-link { display: block; } /*------------------------------------------------ Comments --------------------------------------------------*/ .comment { position: relative; background: url(images/comment_center.png) repeat-y right; margin-bottom: 14px; } .commentlist li { list-style: none; } .comment .avatar { position: absolute; left: -30px; top: 7px; } .comment_meta { background: url(images/comment_top.png) no-repeat right top; padding: 15px 30px 10px 50px; } .comment_author { font-weight: bold; font-size: 13px; } .comment_date { margin-left: 5px; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-style: italic; font-size: 13px; color: #A3A3A3; } .comment_content { background: url(images/comment_bottom.png) no-repeat right bottom; padding: 0 30px 0 50px; } #respond { margin-left: 60px; font-size: 14px; font-weight: bold; padding-top: 10px; } #comments_table { margin-left: 10px; } #comments_table td { padding: 5px 0; } #comment { width: 500px; } #comments_table tr td input { padding: 5px; font-size: 13px; } #comments_table tr td textarea { padding: 5px; font-size: 13px; } /*------------------------------------------------ Sidebar --------------------------------------------------*/ #sidebar { float: left; width: 303px; padding-top: 20px; } #sidebar #sidebar_ads { padding: 0 0 20px 20px; } #sidebar .widget { background: url(images/sidebar_heading.png) no-repeat; margin-bottom: 20px; } #sidebar .widget h3 { padding: 10px 5px 15px 4px; color: #FFF; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; font-size: 15px; text-shadow: #265146 0 -1px 0; } #sidebar .widget h3 a { color: #FFF; text-decoration: none; } #sidebar .widget h3 a:hover { color: #FFF; text-decoration: none; } #sidebar .widget h3 a img { position: relative; padding: 0; top: 2px; } #sidebar .widget { padding: 0 35px 0 35px; line-height: 1.2em; } #sidebar .widget a { display: block; border-bottom: solid 1px #D2D2D2; color: #444; text-decoration: none; padding: 7px; } #sidebar .widget a:hover { background-color: #EDEDED; color: #000; } #sidebar .widget ul { background: 0; } #sidebar .widget ul li { padding: 0; } /*------------------------------------------------ Widgets --------------------------------------------------*/ .textwidget { padding: 10px 5px 5px 5px; line-height: 1.45em; color: #333; } .widget #wp-calendar { border-collapse: collapse; margin: 5px 0 0 15px; } .widget #wp-calendar caption { font-weight: bold; font-size: 14px; color: #659099; text-align: center; padding-bottom: 10px; border-bottom: solid 1px #CDCDCD; margin-bottom: 10px; } .widget #wp-calendar tr th { text-align: center; font-weight: bold; color: #809099; } .widget #wp-calendar tr td { padding: 4px 6px; text-align: center; } .widget #wp-calendar tr td a { display: inline; border: 0; padding: 0; margin: 0; color: #196FBC; font-weight: bold; border: 0; } #sidebar .widget_search { background: none; } #sidebar .widget_rss a { display: inline; padding: 0; border: 0; } #sidebar .widget_rss a:hover { background: none; text-decoration: underline; } #sidebar a.rsswidget { display: block; padding-top: 12px; } #sidebar .widget h3 a.rsswidget { display: inline; } .rss-date { color: #A3A3A3; font-style: italic; font-family:'ヒラギノ丸ゴ','Hiragino Maru Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; } #sidebar .widget cite { color: #6F6F6F; } .rssSummary { font-size: 11px; padding: 6px 0; } #sidebar #recentcomments { padding: 0 5px; } #sidebar .recentcomments { padding: 5px 0 7px 0; } #sidebar .recentcomments a { border: 0; text-decoration: underline; } /*------------------------------------------------ Footer --------------------------------------------------*/ #footer { clear: both; height: 80px; background: url(images/footer.png) no-repeat; position: relative; } #copyright { color: #AEC0C9; position: absolute; top: 20px; left: 40px; } #copyright a { text-decoration: none; font-weight: bold; color: #FFF; text-shadow: #2D3D4D 0 1px 1px; } #copyright a:hover { text-decoration: underline; } #copyright .copyright_owner { color: #DDEEF3; } #site_map { position: absolute; width: 500px; height: 25px; top: 20px; right: 40px; text-align: right; color: #424F62; } #site_map a { text-decoration: none; color: #FFF; font-weight: bold; text-shadow: #2D3D4D 0 1px 1px; margin-left: 12px; } #site_map a:hover { text-decoration: underline; } /*------------------------------------------------ Credits --------------------------------------------------*/ #credits { clear: both; text-align: center; position: relative; top: -5px; padding-bottom: 20px; font-size: 11px; color: #5C6D7C; background: #2f3f4e; margin: 0 auto; width: 978px; } #credits a { text-decoration: none; color: #9AABB9; } #credits a:hover { text-decoration: underline; color: #FFF; } ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/date_label_black.png Content-Transfer-Encoding: Base64 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 TgAAAABJRU5ErkJggg== ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/sidebar_heading_black.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAS8AAABfCAMAAACOVbGfAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMBQTFRF9fX19/f3/Pz8+Pj4/f39+vr6 +/v7+fn59vb2/v7+PDw8Nzc3ODg4MTExPj4+MjIyNDQ0Pz8/Ozs7OTk5Ly8vQUFB NTU1QkJCRERELi4u9PT0SEhI8fHxRUVFKysrRkZGTU1NLCws8PDwSUlJKSkpXl5e S0tL6urq5+fn7+/v5ubm7u7uKCgoWVlZ4eHh3d3d2dnZUlJS1tbW7Ozs0dHRJycn VlZWPkNBYWFh5Ojmz8/PQUVE4uXk39/f4+Pj5ujo/FnDzgAADKtJREFUeNrsnHtb 4kgWh93e3otAyAUIBEFEXJTWFVvtcXpmdL7/t9o6dS51qlIS5tmn/2nrkAugSSpv fudSlejJ9fXtbjGfn4jN5/NFnuUwgRVmclY765tX3Wcb9AdgIzOBVTBV8Kbqmbnq VT2YtA1bb8SqHm5gt7NLMLtXsYFYH6Y+NcU0rICGmRW01jYaziHHJVqWZTCTjcfZ GJZsDZhZjZuTiIW8ANcu/xrYL8bsQtt/A/sPTOYFE68i9uuvZoaJ1riSH+EP3jG7 V/tyk7Nf7GxeyqDxXzvt4usFTryG+Uhei91tNhGbwjydwgw2wyXYcmkmYyszrZZn bBszgW032y3MsNpuL8xre2GNVlHbup+aN7AD+MruwuyQDI+BR1udraxhQ2ZLaJdt nW2jbaxt/3QSWDkph8bsgqxnF6z3qtcYLvMOXgbX5e11bnbniE1xyQbNmJEtyUyL oe0EDJFt8SwJl4JG4ITN1uelP24vzH7MaoO0zogX4loRrqUYsUJgtqGa1RSvvjm3 oYFlSJVlQMwik7DQ7CLA2rxur28ysys2fVEcM0bmNHammNklq0HEJnah1xfylkhu mSqIk6TKuxJUcCg44AoOvVxxOxQt1BbKy0KyU2lQlR4iAiVhdEjqMryCyB7hBd74 dP1GvIYlHaYNDKGJzGZWYygz9BKrMTszMvAox+2C5Xex9c2S2jCrLW6LlDZmx5sV 4tK6EidEWXH7SE7kfgALfLBUigpzjU0yPZtpTJJprm8vW8A8XnMrry/3Ge2vVDor J6S1KYe0mXjmUvnlinS2Yv+0DqrF5hRj/YwDHfLkb4n2ZnOmzUoK1yvnhEutKnMV 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 ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=black.css Content-Type: text/css; name=black.css Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/colors/black.css Content-Transfer-Encoding: 8bit h2 { color: #333; } h2 a { color: #333; } h2 a:hover { color: #000; } .date_label { background: url(../images/date_label_black.png) no-repeat; } #sidebar .widget { background: url(../images/sidebar_heading_black.png) no-repeat; } .date_day { text-shadow: #000 0 -1px 1px; } .date_month { text-shadow: #000 0 -1px 1px; } #sidebar ul li h3, #sidebar ul li h3 a { text-shadow: #000 0 -1px 0; } ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=scripts.js Content-Type: application/javascript; name=scripts.js Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/scripts.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gaW5pdE92ZXJMYWJlbHMgKCkgewogIGlmICghZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQpIHJldHVybjsgIAkKCiAgdmFyIGxhYmVscywgaWQsIGZpZWxk OwoKICAvLyBTZXQgZm9jdXMgYW5kIGJsdXIgaGFuZGxlcnMgdG8gaGlkZSBhbmQg c2hvdyAKICAvLyBMQUJFTHMgd2l0aCAnb3ZlcmxhYmVsJyBjbGFzcyBuYW1lcy4K ICBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGFiZWwn KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7IGkrKykgewoK ICAgIGlmIChsYWJlbHNbaV0uY2xhc3NOYW1lID09ICdvdmVybGFiZWwnKSB7Cgog ICAgICAvLyBTa2lwIGxhYmVscyB0aGF0IGRvIG5vdCBoYXZlIGEgbmFtZWQgYXNz b2NpYXRpb24KICAgICAgLy8gd2l0aCBhbm90aGVyIGZpZWxkLgogICAgICBpZCA9 IGxhYmVsc1tpXS5odG1sRm9yIHx8IGxhYmVsc1tpXS5nZXRBdHRyaWJ1dGUoJ2Zv cicpOwogICAgICBpZiAoIWlkIHx8ICEoZmllbGQgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChpZCkpKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAg IC8vIENoYW5nZSB0aGUgYXBwbGllZCBjbGFzcyB0byBob3ZlciB0aGUgbGFiZWwg CiAgICAgIC8vIG92ZXIgdGhlIGZvcm0gZmllbGQuCiAgICAgIGxhYmVsc1tpXS5j bGFzc05hbWUgPSAnb3ZlcmxhYmVsLWFwcGx5JzsKCiAgICAgIC8vIEhpZGUgYW55 IGZpZWxkcyBoYXZpbmcgYW4gaW5pdGlhbCB2YWx1ZS4KICAgICAgaWYgKGZpZWxk LnZhbHVlICE9PSAnJykgewogICAgICAgIGhpZGVMYWJlbChmaWVsZC5nZXRBdHRy aWJ1dGUoJ2lkJyksIHRydWUpOwogICAgICB9CgogICAgICAvLyBTZXQgaGFuZGxl cnMgdG8gc2hvdyBhbmQgaGlkZSBsYWJlbHMuCiAgICAgIGZpZWxkLm9uZm9jdXMg PSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaGlkZUxhYmVsKHRoaXMuZ2V0QXR0cmli dXRlKCdpZCcpLCB0cnVlKTsKICAgICAgfTsKICAgICAgZmllbGQub25ibHVyID0g ZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnJykgewog ICAgICAgICAgaGlkZUxhYmVsKHRoaXMuZ2V0QXR0cmlidXRlKCdpZCcpLCBmYWxz ZSk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgLy8gSGFuZGxlIGNsaWNrcyB0 byBMQUJFTCBlbGVtZW50cyAoZm9yIFNhZmFyaSkuCiAgICAgIGxhYmVsc1tpXS5v bmNsaWNrID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBpZCwgZmllbGQ7CiAg ICAgICAgaWQgPSB0aGlzLmdldEF0dHJpYnV0ZSgnZm9yJyk7CiAgICAgICAgaWYg KGlkICYmIChmaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkpIHsK ICAgICAgICAgIGZpZWxkLmZvY3VzKCk7CiAgICAgICAgfQogICAgICB9OwoKICAg IH0KICB9Cn07CgpmdW5jdGlvbiBoaWRlTGFiZWwgKGZpZWxkX2lkLCBoaWRlKSB7 CiAgdmFyIGZpZWxkX2ZvcjsKICB2YXIgbGFiZWxzID0gZG9jdW1lbnQuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2xhYmVsJyk7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBs YWJlbHMubGVuZ3RoOyBpKyspIHsKICAgIGZpZWxkX2ZvciA9IGxhYmVsc1tpXS5o dG1sRm9yIHx8IGxhYmVsc1tpXS5nZXRBdHRyaWJ1dGUoJ2ZvcicpOwogICAgaWYg KGZpZWxkX2ZvciA9PSBmaWVsZF9pZCkgewogICAgICBsYWJlbHNbaV0uc3R5bGUu dGV4dEluZGVudCA9IChoaWRlKSA/ICctODAwMHB4JyA6ICcwcHgnOwogICAgICBy ZXR1cm4gdHJ1ZTsKICAgIH0KICB9Cn0KCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlv biAoKSB7CiAgc2V0VGltZW91dChpbml0T3ZlckxhYmVscywgNTApOwp9Ow== ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline Content-Type: image/png Content-Location: http://cmf.ohtanz.com/blog/wp-content/themes/celadon/images/text_header.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA9IAAABzCAMAAABD5co6AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBQTFRFLz9O////MEBPQlZoMEFQMkNS SFxtWmp7RlpsLDlFQFJkQVRmN0hY2traOEpaNEVVPE5fOkxdPlFiRFZpNUZWt7e3 MD1KPU9gQlRmRFhqLTxJNkZWQVNkLj5MRVlrQ1ZmP1JjiYmJP1FkMEJROk1eM0JQ PVBgKjZCM0RTNURSRVpsQVJiM0RSJS86L0BPPk9gOkhVRFdoOUtbLTtHQ1VoR1xu O01eOEZTNEVTQVBfRllqOEhYRlttRFlsRlhq8/PzRFlrOEhZM0NRRFZnLj1LQ1dp RlhsRVhqRFhrPVBhQlRkcHFxOktZPU1bRVlqN0ZUNEJOOEdWMkBOSl5vO0pYRFlq 6OjoRlprMj9MNkdXRVdrQ1dqPEpYO0xaMkBPOUxcUllfP05dhISErq6uQ1NiNUVU MUJROUlYMD9NLz5NRFdnNUVVPENLMD9PQlVn/v7+en6CQ1Vl+/v7M0NTLj9NLT1L /f39NUNQRllpO01dMUFRQFNlRVdsQlZpP1FhRVRk2xPcDgAAVp1JREFUeNrsnYtD U1e28BkC3JQgj4ADUQwpVyiNU2lQaIspjY80xEeqRUoptU5rxaq3maHcOy3kk/nX v/XYj7X32eckQewMdjYKi/BKzjm/s95r97z3Jtc78MYCLSP46wosI5B4Ra4/X/nz n+kjL/z8a1j0yddfa/Hr+7Dos/v3tXj/V1j3v4T1K60v4fFf3//oo49+xe/49SNc KH0kpA/hjaQPYX2EP/X60vuwoo8Zqf1voWfFEi6U8GXQj7IEz1k/Zl7br770K/wA SfiEWKJlJT5q5vjddyV7nL1j/7U4IXyOzpmTpc7bFX0Kr4SWPed8IbzTxXpPX1n2 YtPX3x9w9bwesprUBCmO3nfM+VNnUsF7hU45XRDnmGax1GXz5/Yc/6o4xit3bm6O r/U5fdV3xuK3H36Il/6H38I6hvT0qZWePoXfBr8PH3tAj33xxRfv02MP6Pto0c+2 l8QdQt4rnLuGfZUBSR0D5x7wviXfoxyPJN8b7V0SpS/NsceD/2WUbX22vHVOn9Qr 9s05+YJtIb1z7PXHgrvnmCC/F8ts4rpCJ+kdTw3rM6k51vf1c+fOCY6FTsCL7Gtz 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 RU5ErkJggg== ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=wpp.css Content-Type: text/css; name=wpp.css Content-Location: http://cmf.ohtanz.com/blog/wp-content/plugins/wordpress-popular-posts/style/wpp.css?ver=3.0.3 Content-Transfer-Encoding: 8bit /* Wordpress Popular Posts plugin stylesheet Developed by Hector Cabrera Use the following classes to style your popular posts list as you like. */ .wpp-list { /* UL element */ } .wpp-list li { /* LI - post container */ /*display:inline-block;*/ /* <-- uncommenting this line is recommended when using post thumbnails */ float:none; clear:left; } /* title styles */ .wpp-post-title { } /* thumbnail styles */ .wpp-thumbnail { display:inline; float:left; margin:0 5px 0 0; border:none; } /* excerpt styles */ .wpp-excerpt { } /* Stats tag styles */ .post-stats { display:block; font-size:9px; font-weight:bold; } .wpp-comments { } .wpp-views { } .wpp-author { } .wpp-date { } /* WP-PostRatings styles */ .wpp-rating { } ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=prototype.js Content-Type: text/javascript; charset=UTF-8; name=prototype.js Content-Location: http://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js?ver=1.7.1 Content-Transfer-Encoding: 8bit /* Prototype JavaScript framework, version 1.7.1 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7.1', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: ']*>([\\S\\s]*?)<\/script\\s*>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = (function(method) { return function() { return method.valueOf.call(method); }; })(method); value.toString = (function(method) { return function() { return method.toString.call(method); }; })(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, _hasOwnProperty = Object.prototype.hasOwnProperty, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; var DONT_ENUMS = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key]; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } var type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError("Cyclic reference to '" + value + "' in object"); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (_hasOwnProperty.call(object, property)) results.push(property); } if (IS_DONTENUM_BUGGY) { for (var i = 0; property = DONT_ENUMS[i]; i++) { if (_hasOwnProperty.call(object, property)) results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; if (!Object.isFunction(this)) throw new TypeError("The object is not callable."); var nop = function() {}; var __method = this, args = slice.call(arguments, 1); var bound = function() { var a = merge(args, arguments), c = context; var c = this instanceof bound ? this : context; return __method.apply(c, a); }; nop.prototype = this.prototype; bound.prototype = new nop(); return bound; } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } var extensions = { argumentNames: argumentNames, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize }; if (!Function.prototype.bind) extensions.bind = bind; return extensions; })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script); }); } function escapeHTML() { return this.replace(/&/g,'&').replace(//g,'>'); } function unescapeHTML() { return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { try { this._each(iterator, context); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index, this); if (!result) throw $break; }, this); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index, this)) throw $break; }, this); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index, this)); }, this); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index, this)) { result = value; throw $break; } }, this); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index, this)) results.push(value); }, this); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index, this)); }, this); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index, this); }, this); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index, this); if (result == null || value >= result) result = value; }, this); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index, this); if (result == null || value < result) result = value; }, this); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index, this) ? trues : falses).push(value); }, this); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index, this)) results.push(value); }, this); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index, this) }; }, this).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.indexOf(item) !== -1; }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { if (this == null) throw new TypeError(); var array = Object(this), length = array.length >>> 0; if (length === 0) return -1; i = Number(i); if (isNaN(i)) { i = 0; } else if (i !== 0 && isFinite(i)) { i = (i > 0 ? 1 : -1) * Math.floor(Math.abs(i)); } if (i > length) return -1; var k = i >= 0 ? i : Math.max(length - Math.abs(i), 0); for (; k < length; k++) if (k in array && array[k] === item) return k; return -1; } function lastIndexOf(item, i) { if (this == null) throw new TypeError(); var array = Object(this), length = array.length >>> 0; if (length === 0) return -1; if (!Object.isUndefined(i)) { i = Number(i); if (isNaN(i)) { i = 0; } else if (i !== 0 && isFinite(i)) { i = (i > 0 ? 1 : -1) * Math.floor(Math.abs(i)); } } else { i = length; } var k = i >= 0 ? Math.min(i, length - 1) : length - Math.abs(i); for (; k >= 0; k--) if (k in array && array[k] === item) return k; return -1; } function concat(_) { var array = [], items = slice.call(arguments, 0), item, n = 0; items.unshift(this); for (var i = 0, length = items.length; i < length; i++) { item = items[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) { if (j in item) array[n] = item[j]; n++; } } else { array[n++] = item; } } array.length = n; return array; } function wrapNative(method) { return function() { if (arguments.length === 0) { return method.call(this, Prototype.K); } else if (arguments[0] === undefined) { var args = slice.call(arguments, 1); args.unshift(Prototype.K); return method.apply(this, args); } else { return method.apply(this, arguments); } }; } function map(iterator) { if (this == null) throw new TypeError(); iterator = iterator || Prototype.K; var object = Object(this); var results = [], context = arguments[1], n = 0; for (var i = 0, length = object.length >>> 0; i < length; i++) { if (i in object) { results[n] = iterator.call(context, object[i], i, object); } n++; } results.length = n; return results; } if (arrayProto.map) { map = wrapNative(Array.prototype.map); } function filter(iterator) { if (this == null || !Object.isFunction(iterator)) throw new TypeError(); var object = Object(this); var results = [], context = arguments[1], value; for (var i = 0, length = object.length >>> 0; i < length; i++) { if (i in object) { value = object[i]; if (iterator.call(context, value, i, object)) { results.push(value); } } } return results; } if (arrayProto.filter) { filter = Array.prototype.filter; } function some(iterator) { if (this == null) throw new TypeError(); iterator = iterator || Prototype.K; var context = arguments[1]; var object = Object(this); for (var i = 0, length = object.length >>> 0; i < length; i++) { if (i in object && iterator.call(context, object[i], i, object)) { return true; } } return false; } if (arrayProto.some) { var some = wrapNative(Array.prototype.some); } function every(iterator) { if (this == null) throw new TypeError(); iterator = iterator || Prototype.K; var context = arguments[1]; var object = Object(this); for (var i = 0, length = object.length >>> 0; i < length; i++) { if (i in object && !iterator.call(context, object[i], i, object)) { return false; } } return true; } if (arrayProto.every) { var every = wrapNative(Array.prototype.every); } var _reduce = arrayProto.reduce; function inject(memo, iterator) { iterator = iterator || Prototype.K; var context = arguments[2]; return _reduce.call(this, iterator.bind(context), memo); } if (!arrayProto.reduce) { var inject = Enumerable.inject; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, map: map, collect: map, select: filter, filter: filter, findAll: filter, some: some, any: some, every: every, all: every, inject: inject, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2); if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator, context) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator.call(context, pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; var value = String.interpret(value); value = value.gsub(/(\r)?\n/, '\r\n'); value = encodeURIComponent(value); value = value.gsub(/%20/, '+'); return key + '=' + value; } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator, context) { var value = this.start; while (this.include(value)) { iterator.call(context, value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator, context) { this.responders._each(iterator, context); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; try { json = decodeURIComponent(escape(json)); } catch(e) { } try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); (function(GLOBAL) { var UNDEFINED; var SLICE = Array.prototype.slice; var DIV = document.createElement('div'); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } GLOBAL.$ = $; if (!GLOBAL.Node) GLOBAL.Node = {}; if (!GLOBAL.Node.ELEMENT_NODE) { Object.extend(GLOBAL.Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } var ELEMENT_CACHE = {}; function shouldUseCreationCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement(''); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var oldElement = GLOBAL.Element; function Element(tagName, attributes) { attributes = attributes || {}; tagName = tagName.toLowerCase(); if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!ELEMENT_CACHE[tagName]) ELEMENT_CACHE[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCreationCache(tagName, attributes) ? ELEMENT_CACHE[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); } GLOBAL.Element = Element; Object.extend(GLOBAL.Element, oldElement || {}); if (oldElement) GLOBAL.Element.prototype = oldElement.prototype; Element.Methods = { ByTag: {}, Simulated: {} }; var methods = {}; var INSPECT_ATTRIBUTES = { id: 'id', className: 'class' }; function inspect(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); var attribute, value; for (var property in INSPECT_ATTRIBUTES) { attribute = INSPECT_ATTRIBUTES[property]; value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); } return result + '>'; } methods.inspect = inspect; function visible(element) { return $(element).style.display !== 'none'; } function toggle(element, bool) { element = $(element); if (Object.isUndefined(bool)) bool = !Element.visible(element); Element[bool ? 'show' : 'hide'](element); return element; } function hide(element) { element = $(element); element.style.display = 'none'; return element; } function show(element) { element = $(element); element.style.display = ''; return element; } Object.extend(methods, { visible: visible, toggle: toggle, hide: hide, show: show }); function remove(element) { element = $(element); element.parentNode.removeChild(element); return element; } var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = ""; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "test"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = ""; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in INSERTION_TRANSLATIONS.tags) { while (element.firstChild) element.removeChild(element.firstChild); var nodes = getContentFromAnonymousElement(tagName, content.stripScripts()); for (var i = 0, node; node = nodes[i]; i++) element.appendChild(node); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf(' -1) { while (element.firstChild) element.removeChild(element.firstChild); var nodes = getContentFromAnonymousElement(tagName, content.stripScripts(), true); for (var i = 0, node; node = nodes[i]; i++) element.appendChild(node); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } function replace(element, content) { element = $(element); if (content && content.toElement) { content = content.toElement(); } else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; } var INSERTION_TRANSLATIONS = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; var tags = INSERTION_TRANSLATIONS.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); function replace_IE(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (tagName in INSERTION_TRANSLATIONS.tags) { var nextSibling = Element.next(element); var fragments = getContentFromAnonymousElement( tagName, content.stripScripts()); parent.removeChild(element); var iterator; if (nextSibling) iterator = function(node) { parent.insertBefore(node, nextSibling) }; else iterator = function(node) { parent.appendChild(node); } fragments.each(iterator); } else { element.outerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } if ('outerHTML' in document.documentElement) replace = replace_IE; function isContent(content) { if (Object.isUndefined(content) || content === null) return false; if (Object.isString(content) || Object.isNumber(content)) return true; if (Object.isElement(content)) return true; if (content.toElement || content.toHTML) return true; return false; } function insertContentAt(element, content, position) { position = position.toLowerCase(); var method = INSERTION_TRANSLATIONS[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { method(element, content); return element; } content = Object.toHTML(content); var tagName = ((position === 'before' || position === 'after') ? element.parentNode : element).tagName.toUpperCase(); var childNodes = getContentFromAnonymousElement(tagName, content.stripScripts()); if (position === 'top' || position === 'after') childNodes.reverse(); for (var i = 0, node; node = childNodes[i]; i++) method(element, node); content.evalScripts.bind(content).defer(); } function insert(element, insertions) { element = $(element); if (isContent(insertions)) insertions = { bottom: insertions }; for (var position in insertions) insertContentAt(element, insertions[position], position); return element; } function wrap(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) { $(wrapper).writeAttribute(attributes || {}); } else if (Object.isString(wrapper)) { wrapper = new Element(wrapper, attributes); } else { wrapper = new Element('div', wrapper); } if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; } function cleanWhitespace(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType === Node.TEXT_NODE && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; } function empty(element) { return $(element).innerHTML.blank(); } function getContentFromAnonymousElement(tagName, html, force) { var t = INSERTION_TRANSLATIONS.tags[tagName], div = DIV; var workaround = !!t; if (!workaround && force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = ' ' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) div = div.firstChild; } else { div.innerHTML = html; } return $A(div.childNodes); } function clone(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); if (!HAS_UNIQUE_ID_PROPERTY) { clone._prototypeUID = UNDEFINED; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) descendants[i]._prototypeUID = UNDEFINED; } } return Element.extend(clone); } function purgeElement(element) { var uid = getUniqueElementID(element); if (uid) { Element.stopObserving(element); if (!HAS_UNIQUE_ID_PROPERTY) element._prototypeUID = UNDEFINED; delete Element.Storage[uid]; } } function purgeCollection(elements) { var i = elements.length; while (i--) purgeElement(elements[i]); } function purgeCollection_IE(elements) { var i = elements.length, element, uid; while (i--) { element = elements[i]; uid = getUniqueElementID(element); delete Element.Storage[uid]; delete Event.cache[uid]; } } if (HAS_UNIQUE_ID_PROPERTY) { purgeCollection = purgeCollection_IE; } function purge(element) { if (!(element = $(element))) return; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } Object.extend(methods, { remove: remove, update: update, replace: replace, insert: insert, wrap: wrap, cleanWhitespace: cleanWhitespace, empty: empty, clone: clone, purge: purge }); function recursivelyCollect(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType === Node.ELEMENT_NODE) elements.push(Element.extend(element)); if (elements.length === maximumLength) break; } return elements; } function ancestors(element) { return recursivelyCollect(element, 'parentNode'); } function descendants(element) { return Element.select(element, '*'); } function firstDescendant(element) { element = $(element).firstChild; while (element && element.nodeType !== Node.ELEMENT_NODE) element = element.nextSibling; return $(element); } function immediateDescendants(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === Node.ELEMENT_NODE) results.push(Element.extend(child)); child = child.nextSibling; } return results; } function previousSiblings(element) { return recursivelyCollect(element, 'previousSibling'); } function nextSiblings(element) { return recursivelyCollect(element, 'nextSibling'); } function siblings(element) { element = $(element); var previous = previousSiblings(element), next = nextSiblings(element); return previous.reverse().concat(next); } function match(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); } function _recursivelyFind(element, property, expression, index) { element = $(element), expression = expression || 0, index = index || 0; if (Object.isNumber(expression)) { index = expression, expression = null; } while (element = element[property]) { if (element.nodeType !== 1) continue; if (expression && !Prototype.Selector.match(element, expression)) continue; if (--index >= 0) continue; return Element.extend(element); } } function up(element, expression, index) { element = $(element); if (arguments.length === 1) return $(element.parentNode); return _recursivelyFind(element, 'parentNode', expression, index); } function down(element, expression, index) { element = $(element), expression = expression || 0, index = index || 0; if (Object.isNumber(expression)) index = expression, expression = '*'; var node = Prototype.Selector.select(expression, element)[index]; return Element.extend(node); } function previous(element, expression, index) { return _recursivelyFind(element, 'previousSibling', expression, index); } function next(element, expression, index) { return _recursivelyFind(element, 'nextSibling', expression, index); } function select(element) { element = $(element); var expressions = SLICE.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); } function adjacent(element) { element = $(element); var expressions = SLICE.call(arguments, 1).join(', '); var siblings = Element.siblings(element), results = []; for (var i = 0, sibling; sibling = siblings[i]; i++) { if (Prototype.Selector.match(sibling, expressions)) results.push(sibling); } return results; } function descendantOf_DOM(element, ancestor) { element = $(element), ancestor = $(ancestor); while (element = element.parentNode) if (element === ancestor) return true; return false; } function descendantOf_contains(element, ancestor) { element = $(element), ancestor = $(ancestor); if (!ancestor.contains) return descendantOf_DOM(element, ancestor); return ancestor.contains(element) && ancestor !== element; } function descendantOf_compareDocumentPosition(element, ancestor) { element = $(element), ancestor = $(ancestor); return (element.compareDocumentPosition(ancestor) & 8) === 8; } var descendantOf; if (DIV.compareDocumentPosition) { descendantOf = descendantOf_compareDocumentPosition; } else if (DIV.contains) { descendantOf = descendantOf_contains; } else { descendantOf = descendantOf_DOM; } Object.extend(methods, { recursivelyCollect: recursivelyCollect, ancestors: ancestors, descendants: descendants, firstDescendant: firstDescendant, immediateDescendants: immediateDescendants, previousSiblings: previousSiblings, nextSiblings: nextSiblings, siblings: siblings, match: match, up: up, down: down, previous: previous, next: next, select: select, adjacent: adjacent, descendantOf: descendantOf, getElementsBySelector: select, childElements: immediateDescendants }); var idCounter = 1; function identify(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; } function readAttribute(element, name) { return $(element).getAttribute(name); } function readAttribute_IE(element, name) { element = $(element); var table = ATTRIBUTE_TRANSLATIONS.read; if (table.values[name]) return table.values[name](element, name); if (table.names[name]) name = table.names[name]; if (name.include(':')) { if (!element.attributes || !element.attributes[name]) return null; return element.attributes[name].value; } return element.getAttribute(name); } function readAttribute_Opera(element, name) { if (name === 'title') return element.title; return element.getAttribute(name); } var PROBLEMATIC_ATTRIBUTE_READING = (function() { DIV.setAttribute('onclick', Prototype.emptyFunction); var value = DIV.getAttribute('onclick'); var isFunction = (typeof value === 'function'); DIV.removeAttribute('onclick'); return isFunction; })(); if (PROBLEMATIC_ATTRIBUTE_READING) { readAttribute = readAttribute_IE; } else if (Prototype.Browser.Opera) { readAttribute = readAttribute_Opera; } function writeAttribute(element, name, value) { element = $(element); var attributes = {}, table = ATTRIBUTE_TRANSLATIONS.write; if (typeof name === 'object') { attributes = name; } else { attributes[name] = Object.isUndefined(value) ? true : value; } for (var attr in attributes) { name = table.names[attr] || attr; value = attributes[attr]; if (table.values[attr]) name = table.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; } function hasAttribute(element, attribute) { attribute = ATTRIBUTE_TRANSLATIONS.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } GLOBAL.Element.Methods.Simulated.hasAttribute = hasAttribute; function classNames(element) { return new Element.ClassNames(element); } var regExpCache = {}; function getRegExpForClassName(className) { if (regExpCache[className]) return regExpCache[className]; var re = new RegExp("(^|\\s+)" + className + "(\\s+|$)"); regExpCache[className] = re; return re; } function hasClassName(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; if (elementClassName.length === 0) return false; if (elementClassName === className) return true; return getRegExpForClassName(className).test(elementClassName); } function addClassName(element, className) { if (!(element = $(element))) return; if (!hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; } function removeClassName(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( getRegExpForClassName(className), ' ').strip(); return element; } function toggleClassName(element, className, bool) { if (!(element = $(element))) return; if (Object.isUndefined(bool)) bool = !hasClassName(element, className); var method = Element[bool ? 'addClassName' : 'removeClassName']; return method(element, className); } var ATTRIBUTE_TRANSLATIONS = {}; var classProp = 'className', forProp = 'for'; DIV.setAttribute(classProp, 'x'); if (DIV.className !== 'x') { DIV.setAttribute('class', 'x'); if (DIV.className === 'x') classProp = 'class'; } var LABEL = document.createElement('label'); LABEL.setAttribute(forProp, 'x'); if (LABEL.htmlFor !== 'x') { LABEL.setAttribute('htmlFor', 'x'); if (LABEL.htmlFor === 'x') forProp = 'htmlFor'; } LABEL = null; function _getAttr(element, attribute) { return element.getAttribute(attribute); } function _getAttr2(element, attribute) { return element.getAttribute(attribute, 2); } function _getAttrNode(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ''; } function _getFlag(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; } DIV.onclick = Prototype.emptyFunction; var onclickValue = DIV.getAttribute('onclick'); var _getEv; if (String(onclickValue).indexOf('{') > -1) { _getEv = function(element, attribute) { var value = element.getAttribute(attribute); if (!value) return null; value = value.toString(); value = value.split('{')[1]; value = value.split('}')[0]; return value.strip(); }; } else if (onclickValue === '') { _getEv = function(element, attribute) { var value = element.getAttribute(attribute); if (!value) return null; return value.strip(); }; } ATTRIBUTE_TRANSLATIONS.read = { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } }; ATTRIBUTE_TRANSLATIONS.write = { names: { className: 'class', htmlFor: 'for', cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; ATTRIBUTE_TRANSLATIONS.has = { names: {} }; Object.extend(ATTRIBUTE_TRANSLATIONS.write.names, ATTRIBUTE_TRANSLATIONS.read.names); var CAMEL_CASED_ATTRIBUTE_NAMES = $w('colSpan rowSpan vAlign dateTime ' + 'accessKey tabIndex encType maxLength readOnly longDesc frameBorder'); for (var i = 0, attr; attr = CAMEL_CASED_ATTRIBUTE_NAMES[i]; i++) { ATTRIBUTE_TRANSLATIONS.write.names[attr.toLowerCase()] = attr; ATTRIBUTE_TRANSLATIONS.has.names[attr.toLowerCase()] = attr; } Object.extend(ATTRIBUTE_TRANSLATIONS.read.values, { href: _getAttr2, src: _getAttr2, type: _getAttr, action: _getAttrNode, disabled: _getFlag, checked: _getFlag, readonly: _getFlag, multiple: _getFlag, onload: _getEv, onunload: _getEv, onclick: _getEv, ondblclick: _getEv, onmousedown: _getEv, onmouseup: _getEv, onmouseover: _getEv, onmousemove: _getEv, onmouseout: _getEv, onfocus: _getEv, onblur: _getEv, onkeypress: _getEv, onkeydown: _getEv, onkeyup: _getEv, onsubmit: _getEv, onreset: _getEv, onselect: _getEv, onchange: _getEv }); Object.extend(methods, { identify: identify, readAttribute: readAttribute, writeAttribute: writeAttribute, classNames: classNames, hasClassName: hasClassName, addClassName: addClassName, removeClassName: removeClassName, toggleClassName: toggleClassName }); function normalizeStyleName(style) { if (style === 'float' || style === 'styleFloat') return 'cssFloat'; return style.camelize(); } function normalizeStyleName_IE(style) { if (style === 'float' || style === 'cssFloat') return 'styleFloat'; return style.camelize(); } function setStyle(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { elementStyle.cssText += ';' + styles; if (styles.include('opacity')) { var opacity = styles.match(/opacity:\s*(\d?\.?\d*)/)[1]; Element.setOpacity(element, opacity); } return element; } for (var property in styles) { if (property === 'opacity') { Element.setOpacity(element, styles[property]); } else { var value = styles[property]; if (property === 'float' || property === 'cssFloat') { property = Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat'; } elementStyle[property] = value; } } return element; } function getStyle(element, style) { element = $(element); style = normalizeStyleName(style); var value = element.style[style]; if (!value || value === 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style === 'opacity') return value ? parseFloat(value) : 1.0; return value === 'auto' ? null : value; } function getStyle_Opera(element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(getStyle(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; return Element.measure(element, style); default: return getStyle(element, style); } } function getStyle_IE(element, style) { element = $(element); style = normalizeStyleName_IE(style); var value = element.style[style]; if (!value && element.currentStyle) { value = element.currentStyle[style]; } if (style === 'opacity' && !STANDARD_CSS_OPACITY_SUPPORTED) return getOpacity_IE(element); if (value === 'auto') { if ((style === 'width' || style === 'height') && Element.visible(element)) return Element.measure(element, style) + 'px'; return null; } return value; } function stripAlphaFromFilter_IE(filter) { return (filter || '').replace(/alpha\([^\)]*\)/gi, ''); } function hasLayout_IE(element) { if (!element.currentStyle.hasLayout) element.style.zoom = 1; return element; } var STANDARD_CSS_OPACITY_SUPPORTED = (function() { DIV.style.cssText = "opacity:.55"; return /^0.55/.test(DIV.style.opacity); })(); function setOpacity(element, value) { element = $(element); if (value == 1 || value === '') value = ''; else if (value < 0.00001) value = 0; element.style.opacity = value; return element; } function setOpacity_IE(element, value) { if (STANDARD_CSS_OPACITY_SUPPORTED) return setOpacity(element, value); element = hasLayout_IE($(element)); var filter = Element.getStyle(element, 'filter'), style = element.style; if (value == 1 || value === '') { filter = stripAlphaFromFilter_IE(filter); if (filter) style.filter = filter; else style.removeAttribute('filter'); return element; } if (value < 0.00001) value = 0; style.filter = stripAlphaFromFilter_IE(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; } function getOpacity(element) { return Element.getStyle(element, 'opacity'); } function getOpacity_IE(element) { if (STANDARD_CSS_OPACITY_SUPPORTED) return getOpacity(element); var filter = Element.getStyle(element, 'filter'); if (filter.length === 0) return 1.0; var match = (filter || '').match(/alpha\(opacity=(.*)\)/); if (match[1]) return parseFloat(match[1]) / 100; return 1.0; } Object.extend(methods, { setStyle: setStyle, getStyle: getStyle, setOpacity: setOpacity, getOpacity: getOpacity }); if ('styleFloat' in DIV.style) { methods.getStyle = getStyle_IE; methods.setOpacity = setOpacity_IE; methods.getOpacity = getOpacity_IE; } var UID = 0; GLOBAL.Element.Storage = { UID: 1 }; function getUniqueElementID(element) { if (element === window) return 0; if (typeof element._prototypeUID === 'undefined') element._prototypeUID = Element.Storage.UID++; return element._prototypeUID; } function getUniqueElementID_IE(element) { if (element === window) return 0; if (element == document) return 1; return element.uniqueID; } var HAS_UNIQUE_ID_PROPERTY = ('uniqueID' in DIV); if (HAS_UNIQUE_ID_PROPERTY) getUniqueElementID = getUniqueElementID_IE; function getStorage(element) { if (!(element = $(element))) return; var uid = getUniqueElementID(element); if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; } function store(element, key, value) { if (!(element = $(element))) return; var storage = getStorage(element); if (arguments.length === 2) { storage.update(key); } else { storage.set(key, value); } return element; } function retrieve(element, key, defaultValue) { if (!(element = $(element))) return; var storage = getStorage(element), value = storage.get(key); if (Object.isUndefined(value)) { storage.set(key, defaultValue); value = defaultValue; } return value; } Object.extend(methods, { getStorage: getStorage, store: store, retrieve: retrieve }); var Methods = {}, ByTag = Element.Methods.ByTag, F = Prototype.BrowserFeatures; if (!F.ElementExtensions && ('__proto__' in DIV)) { GLOBAL.HTMLElement = {}; GLOBAL.HTMLElement.prototype = DIV['__proto__']; F.ElementExtensions = true; } function checkElementPrototypeDeficiency(tagName) { if (typeof window.Element === 'undefined') return false; var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random() + '').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } return false; } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkElementPrototypeDeficiency('object'); function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var EXTENDED = {}; function elementIsExtended(element) { var uid = getUniqueElementID(element); return (uid in EXTENDED); } function extend(element) { if (!element || elementIsExtended(element)) return element; if (element.nodeType !== Node.ELEMENT_NODE || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); EXTENDED[getUniqueElementID(element)] = true; return element; } function extend_IE8(element) { if (!element || elementIsExtended(element)) return element; var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } return element; } if (F.SpecificElementExtensions) { extend = HTMLOBJECTELEMENT_PROTOTYPE_BUGGY ? extend_IE8 : Prototype.K; } function addMethodsToTagName(tagName, methods) { tagName = tagName.toUpperCase(); if (!ByTag[tagName]) ByTag[tagName] = {}; Object.extend(ByTag[tagName], methods); } function mergeMethods(destination, methods, onlyIfAbsent) { if (Object.isUndefined(onlyIfAbsent)) onlyIfAbsent = false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } function addMethods(methods) { if (arguments.length === 0) addFormMethods(); if (arguments.length === 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) { Object.extend(Element.Methods, methods || {}); } else { if (Object.isArray(tagName)) { for (var i = 0, tag; tag = tagName[i]; i++) addMethodsToTagName(tag, methods); } else { addMethodsToTagName(tagName, methods); } } var ELEMENT_PROTOTYPE = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { mergeMethods(ELEMENT_PROTOTYPE, Element.Methods); mergeMethods(ELEMENT_PROTOTYPE, Element.Methods.Simulated, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; mergeMethods(klass.prototype, ByTag[tag]); } } Object.extend(Element, Element.Methods); Object.extend(Element, Element.Methods.Simulated); delete Element.ByTag; delete Element.Simulated; Element.extend.refresh(); ELEMENT_CACHE = {}; } Object.extend(GLOBAL.Element, { extend: extend, addMethods: addMethods }); if (extend === Prototype.K) { GLOBAL.Element.extend.refresh = Prototype.emptyFunction; } else { GLOBAL.Element.extend.refresh = function() { if (Prototype.BrowserFeatures.ElementExtensions) return; Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); EXTENDED = {}; }; } function addFormMethods() { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } Element.addMethods(methods); })(this); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getRawStyle(element, style) { element = $(element); var value = element.style[style]; if (!value || value === 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style === 'opacity') return value ? parseFloat(value) : 1.0; return value === 'auto' ? null : value; } function getRawStyle_IE(element, style) { var value = element.style[style]; if (!value && element.currentStyle) { value = element.currentStyle[style]; } return value; } function getContentWidth(element, context) { var boxWidth = element.offsetWidth; var bl = getPixelValue(element, 'borderLeftWidth', context) || 0; var br = getPixelValue(element, 'borderRightWidth', context) || 0; var pl = getPixelValue(element, 'paddingLeft', context) || 0; var pr = getPixelValue(element, 'paddingRight', context) || 0; return boxWidth - bl - br - pl - pr; } if ('currentStyle' in document.documentElement) { getRawStyle = getRawStyle_IE; } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = getRawStyle(element, property); } if (value === null || Object.isUndefined(value)) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value), whole = null; var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) return number; return number + 'px'; } function isDisplayed(element) { while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._isPrepared()) return; var element = this.element; if (isDisplayed(element)) { this._setPrepared(true); return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = getRawStyle(element, 'position'), width = element.offsetWidth; if (width === 0 || width === null) { element.style.display = 'block'; width = element.offsetWidth; } var context = (position === 'fixed') ? document.viewport : element.parentNode; var tempStyles = { visibility: 'hidden', display: 'block' }; if (position !== 'fixed') tempStyles.position = 'absolute'; element.setStyle(tempStyles); var positionedWidth = element.offsetWidth, newWidth; if (width && (positionedWidth === width)) { newWidth = getContentWidth(element, context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getContentWidth(element, context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._setPrepared(true); }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._setPrepared(false); }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, _isPrepared: function() { return this.element.retrieve('prototype_element_layout_prepared', false); }, _setPrepared: function(bool) { return this.element.store('prototype_element_layout_prepared', bool); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getHeight(element) { return Element.getDimensions(element).height; } function getWidth(element) { return Element.getDimensions(element).width; } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { var valueT = 0, valueL = 0, docBody = document.body; var element = $(forElement); do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } function scrollTo(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos.left, pos.top); return element; } function makePositioned(element) { element = $(element); var position = Element.getStyle(element, 'position'), styles = {}; if (position === 'static' || !position) { styles.position = 'relative'; if (Prototype.Browser.Opera) { styles.top = 0; styles.left = 0; } Element.setStyle(element, styles); Element.store(element, 'prototype_made_positioned', true); } return element; } function undoPositioned(element) { element = $(element); var storage = Element.getStorage(element), madePositioned = storage.get('prototype_made_positioned'); if (madePositioned) { storage.unset('prototype_made_positioned'); Element.setStyle(element, { position: '', top: '', bottom: '', left: '', right: '' }); } return element; } function makeClipping(element) { element = $(element); var storage = Element.getStorage(element), madeClipping = storage.get('prototype_made_clipping'); if (Object.isUndefined(madeClipping)) { var overflow = Element.getStyle(element, 'overflow'); storage.set('prototype_made_clipping', overflow); if (overflow !== 'hidden') element.style.overflow = 'hidden'; } return element; } function undoClipping(element) { element = $(element); var storage = Element.getStorage(element), overflow = storage.get('prototype_made_clipping'); if (!Object.isUndefined(overflow)) { storage.unset('prototype_made_clipping'); element.style.overflow = overflow || ''; } return element; } function clonePosition(element, source, options) { options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, options || {}); source = $(source); element = $(element); var p, delta, layout, styles = {}; if (options.setLeft || options.setTop) { p = Element.viewportOffset(source); delta = [0, 0]; if (Element.getStyle(element, 'position') === 'absolute') { var parent = Element.getOffsetParent(element); if (parent !== document.body) delta = Element.viewportOffset(parent); } } if (options.setWidth || options.setHeight) { layout = Element.getLayout(source); } if (options.setLeft) styles.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) styles.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) styles.width = layout.get('border-box-width') + 'px'; if (options.setHeight) styles.height = layout.get('border-box-height') + 'px'; return Element.setStyle(element, styles); } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) { if (Element.getStyle(element, 'position') == 'absolute') break; } element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getWidth: getWidth, getHeight: getHeight, getDimensions: getDimensions, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize, scrollTo: scrollTo, makePositioned: makePositioned, undoPositioned: undoPositioned, makeClipping: makeClipping, undoClipping: undoClipping, clonePosition: clonePosition }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); (function() { var IS_OLD_OPERA = Prototype.Browser.Opera && (window.parseFloat(window.opera.version()) < 9.5); var ROOT = null; function getRootElement() { if (ROOT) return ROOT; ROOT = IS_OLD_OPERA ? document.body : document.documentElement; return ROOT; } function getDimensions() { return { width: this.getWidth(), height: this.getHeight() }; } function getWidth() { return getRootElement().clientWidth; } function getHeight() { return getRootElement().clientHeight; } function getScrollOffsets() { var x = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft; var y = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; return new Element.Offset(x, y); } document.viewport = { getDimensions: getDimensions, getWidth: getWidth, getHeight: getHeight, getScrollOffsets: getScrollOffsets }; })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); /*! * Sizzle CSS Selector Engine * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true, rBackslash = /\\/g, rNonWord = /\W/; [0, 0].sort(function() { baseHasDuplicate = false; return 0; }); var Sizzle = function( selector, context, results, seed ) { results = results || []; context = context || document; var origContext = context; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var m, set, checkSet, extra, ret, cur, pop, i, prune = true, contextXML = Sizzle.isXML( context ), parts = [], soFar = selector; do { chunker.exec( "" ); m = chunker.exec( soFar ); if ( m ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } } while ( m ); if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) { selector += parts.shift(); } set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray( set ); } else { prune = false; } while ( parts.length ) { cur = parts.pop(); pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { Sizzle.error( cur || selector ); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function( results ) { if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort( sortOrder ); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[ i - 1 ] ) { results.splice( i--, 1 ); } } } } return results; }; Sizzle.matches = function( expr, set ) { return Sizzle( expr, null, null, set ); }; Sizzle.matchesSelector = function( node, expr ) { return Sizzle( expr, null, null, [node] ).length > 0; }; Sizzle.find = function( expr, context, isXML ) { var set; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var match, type = Expr.order[i]; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice( 1, 1 ); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace( rBackslash, "" ); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( "*" ) : []; } return { set: set, expr: expr }; }; Sizzle.filter = function( expr, set, inplace, not ) { var match, anyFound, old = expr, result = [], curLoop = set, isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { var found, item, filter = Expr.filter[ type ], left = match[1]; anyFound = false; match.splice(1,1); if ( left.substr( left.length - 1 ) === "\\" ) { continue; } if ( curLoop === result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr === old ) { if ( anyFound == null ) { Sizzle.error( expr ); } else { break; } } old = expr; } return curLoop; }; Sizzle.error = function( msg ) { throw "Syntax error, unrecognized expression: " + msg; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function( elem ) { return elem.getAttribute( "href" ); }, type: function( elem ) { return elem.getAttribute( "type" ); } }, relative: { "+": function(checkSet, part){ var isPartStr = typeof part === "string", isTag = isPartStr && !rNonWord.test( part ), isPartStrNotTag = isPartStr && !isTag; if ( isTag ) { part = part.toLowerCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function( checkSet, part ) { var elem, isPartStr = typeof part === "string", i = 0, l = checkSet.length; if ( isPartStr && !rNonWord.test( part ) ) { part = part.toLowerCase(); for ( ; i < l; i++ ) { elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; } } } else { for ( ; i < l; i++ ) { elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var nodeCheck, doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !rNonWord.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; } checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); }, "~": function( checkSet, part, isXML ) { var nodeCheck, doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !rNonWord.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; } checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); } }, find: { ID: function( match, context, isXML ) { if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m && m.parentNode ? [m] : []; } }, NAME: function( match, context ) { if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName( match[1] ); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function( match, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( match[1] ); } } }, preFilter: { CLASS: function( match, curLoop, inplace, result, not, isXML ) { match = " " + match[1].replace( rBackslash, "" ) + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { if ( !inplace ) { result.push( elem ); } } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function( match ) { return match[1].replace( rBackslash, "" ); }, TAG: function( match, curLoop ) { return match[1].replace( rBackslash, "" ).toLowerCase(); }, CHILD: function( match ) { if ( match[1] === "nth" ) { if ( !match[2] ) { Sizzle.error( match[0] ); } match[2] = match[2].replace(/^\+|\s*/g, ''); var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } else if ( match[2] ) { Sizzle.error( match[0] ); } match[0] = done++; return match; }, ATTR: function( match, curLoop, inplace, result, not, isXML ) { var name = match[1] = match[1].replace( rBackslash, "" ); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function( match, curLoop, inplace, result, not ) { if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function( match ) { match.unshift( true ); return match; } }, filters: { enabled: function( elem ) { return elem.disabled === false && elem.type !== "hidden"; }, disabled: function( elem ) { return elem.disabled === true; }, checked: function( elem ) { return elem.checked === true; }, selected: function( elem ) { if ( elem.parentNode ) { elem.parentNode.selectedIndex; } return elem.selected === true; }, parent: function( elem ) { return !!elem.firstChild; }, empty: function( elem ) { return !elem.firstChild; }, has: function( elem, i, match ) { return !!Sizzle( match[3], elem ).length; }, header: function( elem ) { return (/h\d/i).test( elem.nodeName ); }, text: function( elem ) { var attr = elem.getAttribute( "type" ), type = elem.type; return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); }, radio: function( elem ) { return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; }, checkbox: function( elem ) { return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; }, file: function( elem ) { return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; }, password: function( elem ) { return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; }, submit: function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && "submit" === elem.type; }, image: function( elem ) { return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; }, reset: function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && "reset" === elem.type; }, button: function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && "button" === elem.type || name === "button"; }, input: function( elem ) { return (/input|select|textarea|button/i).test( elem.nodeName ); }, focus: function( elem ) { return elem === elem.ownerDocument.activeElement; } }, setFilters: { first: function( elem, i ) { return i === 0; }, last: function( elem, i, match, array ) { return i === array.length - 1; }, even: function( elem, i ) { return i % 2 === 0; }, odd: function( elem, i ) { return i % 2 === 1; }, lt: function( elem, i, match ) { return i < match[3] - 0; }, gt: function( elem, i, match ) { return i > match[3] - 0; }, nth: function( elem, i, match ) { return match[3] - 0 === i; }, eq: function( elem, i, match ) { return match[3] - 0 === i; } }, filter: { PSEUDO: function( elem, match, i, array ) { var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var j = 0, l = not.length; j < l; j++ ) { if ( not[j] === elem ) { return false; } } return true; } else { Sizzle.error( name ); } }, CHILD: function( elem, match ) { var type = match[1], node = elem; switch ( type ) { case "only": case "first": while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) { return false; } } if ( type === "first" ) { return true; } node = elem; case "last": while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) { return false; } } return true; case "nth": var first = match[2], last = match[3]; if ( first === 1 && last === 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first === 0 ) { return diff === 0; } else { return ( diff % first === 0 && diff / first >= 0 ); } } }, ID: function( elem, match ) { return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function( elem, match ) { return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; }, CLASS: function( elem, match ) { return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function( elem, match ) { var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value !== check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function( elem, match, i, array ) { var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS, fescape = function(all, num){ return "\\" + (num - 0 + 1); }; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); } var makeArray = function( array, results ) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; } catch( e ) { makeArray = function( array, results ) { var i = 0, ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( ; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder, siblingCheck; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; return 0; } if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { return a.compareDocumentPosition ? -1 : 1; } return a.compareDocumentPosition(b) & 4 ? -1 : 1; }; } else { sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; return 0; } else if ( a.sourceIndex && b.sourceIndex ) { return a.sourceIndex - b.sourceIndex; } var al, bl, ap = [], bp = [], aup = a.parentNode, bup = b.parentNode, cur = aup; if ( aup === bup ) { return siblingCheck( a, b ); } else if ( !aup ) { return -1; } else if ( !bup ) { return 1; } while ( cur ) { ap.unshift( cur ); cur = cur.parentNode; } cur = bup; while ( cur ) { bp.unshift( cur ); cur = cur.parentNode; } al = ap.length; bl = bp.length; for ( var i = 0; i < al && i < bl; i++ ) { if ( ap[i] !== bp[i] ) { return siblingCheck( ap[i], bp[i] ); } } return i === al ? siblingCheck( a, bp[i], -1 ) : siblingCheck( ap[i], b, 1 ); }; siblingCheck = function( a, b, ret ) { if ( a === b ) { return ret; } var cur = a.nextSibling; while ( cur ) { if ( cur === b ) { return -1; } cur = cur.nextSibling; } return 1; }; } Sizzle.getText = function( elems ) { var ret = "", elem; for ( var i = 0; elems[i]; i++ ) { elem = elems[i]; if ( elem.nodeType === 3 || elem.nodeType === 4 ) { ret += elem.nodeValue; } else if ( elem.nodeType !== 8 ) { ret += Sizzle.getText( elem.childNodes ); } } return ret; }; (function(){ var form = document.createElement("div"), id = "script" + (new Date()).getTime(), root = document.documentElement; form.innerHTML = ""; root.insertBefore( form, root.firstChild ); if ( document.getElementById( id ) ) { Expr.find.ID = function( match, context, isXML ) { if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function( elem, match ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function( match, context ) { var results = context.getElementsByTagName( match[1] ); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = ""; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function( elem ) { return elem.getAttribute( "href", 2 ); }; } div = null; })(); if ( document.querySelectorAll ) { (function(){ var oldSizzle = Sizzle, div = document.createElement("div"), id = "__sizzle__"; div.innerHTML = "

"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function( query, context, extra, seed ) { context = context || document; if ( !seed && !Sizzle.isXML(context) ) { var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { if ( match[1] ) { return makeArray( context.getElementsByTagName( query ), extra ); } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { return makeArray( context.getElementsByClassName( match[2] ), extra ); } } if ( context.nodeType === 9 ) { if ( query === "body" && context.body ) { return makeArray( [ context.body ], extra ); } else if ( match && match[3] ) { var elem = context.getElementById( match[3] ); if ( elem && elem.parentNode ) { if ( elem.id === match[3] ) { return makeArray( [ elem ], extra ); } } else { return makeArray( [], extra ); } } try { return makeArray( context.querySelectorAll(query), extra ); } catch(qsaError) {} } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { var oldContext = context, old = context.getAttribute( "id" ), nid = old || id, hasParent = context.parentNode, relativeHierarchySelector = /^\s*[+~]/.test( query ); if ( !old ) { context.setAttribute( "id", nid ); } else { nid = nid.replace( /'/g, "\\$&" ); } if ( relativeHierarchySelector && hasParent ) { context = context.parentNode; } try { if ( !relativeHierarchySelector || hasParent ) { return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); } } catch(pseudoError) { } finally { if ( !old ) { oldContext.removeAttribute( "id" ); } } } } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; })(); } (function(){ var html = document.documentElement, matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; if ( matches ) { var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), pseudoWorks = false; try { matches.call( document.documentElement, "[test!='']:sizzle" ); } catch( pseudoError ) { pseudoWorks = true; } Sizzle.matchesSelector = function( node, expr ) { expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); if ( !Sizzle.isXML( node ) ) { try { if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { var ret = matches.call( node, expr ); if ( ret || !disconnectedMatch || node.document && node.document.nodeType !== 11 ) { return ret; } } } catch(e) {} } return Sizzle(expr, null, null, [node]).length > 0; }; } })(); (function(){ var div = document.createElement("div"); div.innerHTML = "
"; if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { return; } div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) { return; } Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function( match, context, isXML ) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var match = false; elem = elem[dir]; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName.toLowerCase() === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var match = false; elem = elem[dir]; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } if ( document.documentElement.contains ) { Sizzle.contains = function( a, b ) { return a !== b && (a.contains ? a.contains(b) : true); }; } else if ( document.documentElement.compareDocumentPosition ) { Sizzle.contains = function( a, b ) { return !!(a.compareDocumentPosition(b) & 16); }; } else { Sizzle.contains = function() { return false; }; } Sizzle.isXML = function( elem ) { var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; var posProcess = function( selector, context ) { var match, tmpSet = [], later = "", root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); Prototype._original_property = window.Sizzle; ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { value = value.gsub(/(\r)?\n/, '\r\n'); value = encodeURIComponent(value); value = value.gsub(/%20/, '+'); return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + value; } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'); var element, results = [], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { if (serializers[element.tagName.toLowerCase()]) results.push(Element.extend(element)); } return results; }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function(GLOBAL) { var DIV = document.createElement('div'); var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45 }; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { return Element.extend(_element(event)); } function _element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = _element(event), match = Prototype.Selector.match; if (!expression) return Element.extend(element); while (element) { if (Object.isElement(element) && match(element, expression)) return Element.extend(element); element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } var EVENT_TRANSLATIONS = { mouseenter: 'mouseover', mouseleave: 'mouseout' }; function getDOMEventName(eventName) { return EVENT_TRANSLATIONS[eventName] || eventName; } if (MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) getDOMEventName = Prototype.K; function getUniqueElementID(element) { if (element === window) return 0; if (typeof element._prototypeUID === 'undefined') element._prototypeUID = Element.Storage.UID++; return element._prototypeUID; } function getUniqueElementID_IE(element) { if (element === window) return 0; if (element == document) return 1; return element.uniqueID; } if ('uniqueID' in DIV) getUniqueElementID = getUniqueElementID_IE; function isCustomEvent(eventName) { return eventName.include(':'); } Event._isCustomEvent = isCustomEvent; function getRegistryForElement(element, uid) { var CACHE = GLOBAL.Event.cache; if (Object.isUndefined(uid)) uid = getUniqueElementID(element); if (!CACHE[uid]) CACHE[uid] = { element: element }; return CACHE[uid]; } function destroyRegistryForElement(element, uid) { if (Object.isUndefined(uid)) uid = getUniqueElementID(element); delete GLOBAL.Event.cache[uid]; } function register(element, eventName, handler) { var registry = getRegistryForElement(element); if (!registry[eventName]) registry[eventName] = []; var entries = registry[eventName]; var i = entries.length; while (i--) if (entries[i].handler === handler) return null; var uid = getUniqueElementID(element); var responder = GLOBAL.Event._createResponder(uid, eventName, handler); var entry = { responder: responder, handler: handler }; entries.push(entry); return entry; } function unregister(element, eventName, handler) { var registry = getRegistryForElement(element); var entries = registry[eventName]; if (!entries) return; var i = entries.length, entry; while (i--) { if (entries[i].handler === handler) { entry = entries[i]; break; } } if (!entry) return; var index = entries.indexOf(entry); entries.splice(index, 1); return entry; } function observe(element, eventName, handler) { element = $(element); var entry = register(element, eventName, handler); if (entry === null) return element; var responder = entry.responder; if (isCustomEvent(eventName)) observeCustomEvent(element, eventName, responder); else observeStandardEvent(element, eventName, responder); return element; } function observeStandardEvent(element, eventName, responder) { var actualEventName = getDOMEventName(eventName); if (element.addEventListener) { element.addEventListener(actualEventName, responder, false); } else { element.attachEvent('on' + actualEventName, responder); } } function observeCustomEvent(element, eventName, responder) { if (element.addEventListener) { element.addEventListener('dataavailable', responder, false); } else { element.attachEvent('ondataavailable', responder); element.attachEvent('onlosecapture', responder); } } function stopObserving(element, eventName, handler) { element = $(element); var handlerGiven = !Object.isUndefined(handler), eventNameGiven = !Object.isUndefined(eventName); if (!eventNameGiven && !handlerGiven) { stopObservingElement(element); return element; } if (!handlerGiven) { stopObservingEventName(element, eventName); return element; } var entry = unregister(element, eventName, handler); if (!entry) return element; removeEvent(element, eventName, entry.responder); return element; } function stopObservingStandardEvent(element, eventName, responder) { var actualEventName = getDOMEventName(eventName); if (element.removeEventListener) { element.removeEventListener(actualEventName, responder, false); } else { element.detachEvent('on' + actualEventName, responder); } } function stopObservingCustomEvent(element, eventName, responder) { if (element.removeEventListener) { element.removeEventListener('dataavailable', responder, false); } else { element.detachEvent('ondataavailable', responder); element.detachEvent('onlosecapture', responder); } } function stopObservingElement(element) { var uid = getUniqueElementID(element), registry = getRegistryForElement(element, uid); destroyRegistryForElement(element, uid); var entries, i; for (var eventName in registry) { if (eventName === 'element') continue; entries = registry[eventName]; i = entries.length; while (i--) removeEvent(element, eventName, entries[i].responder); } } function stopObservingEventName(element, eventName) { var registry = getRegistryForElement(element); var entries = registry[eventName]; if (!entries) return; delete registry[eventName]; var i = entries.length; while (i--) removeEvent(element, eventName, entries[i].responder); } function removeEvent(element, eventName, handler) { if (isCustomEvent(eventName)) stopObservingCustomEvent(element, eventName, handler); else stopObservingStandardEvent(element, eventName, handler); } function getFireTarget(element) { if (element !== document) return element; if (document.createEvent && !element.dispatchEvent) return document.documentElement; return element; } function fire(element, eventName, memo, bubble) { element = getFireTarget($(element)); if (Object.isUndefined(bubble)) bubble = true; memo = memo || {}; var event = fireEvent(element, eventName, memo, bubble); return Event.extend(event); } function fireEvent_DOM(element, eventName, memo, bubble) { var event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); event.eventName = eventName; event.memo = memo; element.dispatchEvent(event); return event; } function fireEvent_IE(element, eventName, memo, bubble) { var event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; event.eventName = eventName; event.memo = memo; element.fireEvent(event.eventType, event); return event; } var fireEvent = document.createEvent ? fireEvent_DOM : fireEvent_IE; Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (GLOBAL.Event) Object.extend(window.Event, Event); else GLOBAL.Event = Event; GLOBAL.Event.cache = {}; function destroyCache_IE() { GLOBAL.Event.cache = null; } if (window.attachEvent) window.attachEvent('onunload', destroyCache_IE); DIV = null; docEl = null; })(this); (function(GLOBAL) { /* Code for creating leak-free event responders is based on work by John-David Dalton. */ var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; function isSimulatedMouseEnterLeaveEvent(eventName) { return !MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === 'mouseenter' || eventName === 'mouseleave'); } function createResponder(uid, eventName, handler) { if (Event._isCustomEvent(eventName)) return createResponderForCustomEvent(uid, eventName, handler); if (isSimulatedMouseEnterLeaveEvent(eventName)) return createMouseEnterLeaveResponder(uid, eventName, handler); return function(event) { var cacheEntry = Event.cache[uid]; var element = cacheEntry.element; Event.extend(event, element); handler.call(element, event); }; } function createResponderForCustomEvent(uid, eventName, handler) { return function(event) { var cacheEntry = Event.cache[uid], element = cacheEntry.element; if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } function createMouseEnterLeaveResponder(uid, eventName, handler) { return function(event) { var cacheEntry = Event.cache[uid], element = cacheEntry.element; Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); } } GLOBAL.Event._createResponder = createResponder; docEl = null; })(this); (function(GLOBAL) { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var TIMER; function fireContentLoadedEvent() { if (document.loaded) return; if (TIMER) window.clearTimeout(TIMER); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.detachEvent('onreadystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch (e) { TIMER = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.attachEvent('onreadystatechange', checkReadyState); if (window == top) TIMER = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(this); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return $(parentElement || document.body).getElementsByClassName(className); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator, context) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator, context); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); ------------9ijr7HVovTDUXUccioAL6i Content-Disposition: inline; filename=scriptaculous.js Content-Type: text/javascript; charset=UTF-8; name=scriptaculous.js Content-Location: http://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js?ver=1.9.0 Content-Transfer-Encoding: 8bit // script.aculo.us scriptaculous.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // 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. // // For details, see the script.aculo.us web site: http://script.aculo.us/ var Scriptaculous = { Version: '1.9.0', require: function(libraryName) { try{ // inserting via DOM fails in Safari 2.0, so brute force approach document.write('